Netzwerk-Programmiermodelle und I/O Optimierungen für Unix Betriebssyteme

Größe: px
Ab Seite anzeigen:

Download "Netzwerk-Programmiermodelle und I/O Optimierungen für Unix Betriebssyteme"

Transkript

1 Netzwerk-Programmiermodelle und I/O Optimierungen für Unix Betriebssyteme Aktuelle Themen der Informatik WS 2006/2007 Prof. Dr. Friedbert Kaspar Furtwangen, 14. November 2006 Hagen Paul Pfeifer Florian Westphal Hochschule Furtwangen Studiengang Computer Networking Fakultät Informatik

2 Inhaltsverzeichnis 1 Client/Server Programmiermodelle Ein Prozess pro Client Ein Thread pro Client Ein Prozess/Thread, mehrere Clients Readiness Notification mit select select: Einschränkungen und Probleme Readiness Notification mit poll Vorteile gegenüber select poll: Einschränkungen und Probleme Das alternative poll-interface /dev/poll Linux 2.6: epoll Readiness Notification mit epoll Change Notification mit epoll BSD: kqueue kevent libevent Effizientere TCP-Behandlung Zero-Copy Speicher Abbildungen - Die Funkion mmap Sendfile TCP-Cork writev Splice und Tee splice Tee Literaturverzeichnis 23 2

3 Die vorliegende Arbeit ist die im Rahmen des Seminars Aktuelle Themen der Informatik im Wintersemester 2006/2007 angefertigte Ausarbeitung zum Thema: Skalierbare Unix Netzwerkprogrammierung Die Ausarbeitung wurde mit Hilfe von Subversion und L A TEX 2ε erstellt.

4 1 Client/Server Programmiermodelle 1.1 Ein Prozess pro Client Der klassische Unix-Ansatz verwendet einen neuen Prozess pro Client. Der Server-Task blockiert im accept() Syscall, beim Eintreffen einer Verbindung wird ein neuer Prozess erzeugt, der die Verbindung bearbeitet. Dieser Ansatz hat vorallem den Vorteil, das Fehler durchaus mit einer Beendigung des Prozesses behandelt werden können der Server-Prozess läuft unabhängig von seinen Kindprozessen. Die Behandlung von Timeouts ist ebenfalls einfach: Aufruf von alarm(timeout), falls danach Daten empfangen werden, kann der Timer durch erneutes aufrufen von alarm aufgehoben (und neu gesetzt) werden. Das Programm inetd nimmt dem Programmierer sogar einen großteil der Arbeit ab, da inetd die Client Verbindung aktzeptiert, und danach ein Programm in einem eigenen Kontext startet. Das Design hat aber auch Nachteile: Bei Last-spitzen wird die Erzeugung neuer Prozesse zum Flaschenhals. Zwar können bereits im Vorfeld neue Prozesse erzeugt werden (sog. preforking) dies ist aber mehr ein entlastender Notbehelf statt eine wirkliche Lösung (wenn zehn Kindprozesse vorgehalten werden, aber mehr als 10 Clients gleichzeitig verbinden, muss eben der Rest warten). Falls generell sehr viele Clients gleichzeitig zu erwarten sind, so hängt die Gesamtperformance sehr vom Scheduler ab 1. Ein solches Design ist eine gute Wahl, wenn nur wenige Clients gleichzeitig zu erwarten sind oder die Verbindungen nur von sehr kurzer Dauer sind. 1.2 Ein Thread pro Client Dies ist dem fork- basierten Ansatz ähnlich; jedoch ist die Erzeugung von Threads schneller, besonders unter Linux: pthread_create verbraucht nur etwa ein Sechzehntel der CPU-Zyklen 2. 1 Linux 2.4: O(n), Linux 2.6: O(1) 2 Linux 2.4: ca. ein Drittel 4

5 KAPITEL 1. CLIENT/SERVER PROGRAMMIERMODELLE CPU - Zyklen Min. Max. Durchschnitt fork pthread_create Tabelle 1.1: CPU-Zyklenzeit fork vs. pthread create. Linux , Native Posix Threads, CPU: Athlon XP, MHz Nachteilig ist zusätzlicher Synchronisationsaufwand, falls geteilte Daten manipuliert werden Ein Prozess/Thread, mehrere Clients Typischerweise handelt es sich um einen Event Loop, der alle vorhandenen Netzwerk- Sockets überwacht und abhängig von den Anfragen/Ereignisse, welche auf den Sockets eingehen Aktionen durchführt. Ein solches Design ist fast unabhängig vom Scheduler, erfodert aber einen deutlich höheren Design und Programmieraufwand, da keine einzige Operation blockieren darf. Dies ist umso Problematischer, da viele Häufig verwendeten Programmierschnittstellen in dieser Hinsicht ungeeignet sind z.b. blockiert gethostbyaddr() solange, bis eine Antwort eintrifft in dieser Zeit ist das Gesamte Programm blockiert! Sogar jeder Dateizugriff kann blockieren 4 für Platten-I/O muss generell auf asynchrone Schnittstellen (aio_read, aio_write... ) ausgewichen werden (alternativ können derartige Aufgaben auch in einen eigenen Thread ausgelagert werden). Da sich jede Verbindung aus sicht des Applikationsprotokolls in einem anderen Zustand befindet (oder zumindest kann), muss dieser auch seperat für jeden Client mitgeführt werden. Zur Ereignisüberwachung stehen zwei Designs zur Auswahl: 1. Level-Triggered: ( Readiness Notification ) 2. Edge-Triggered: ( Change Notification ) Bei einem Level-Triggered-Ansatz werden ein oder mehrere Dateideskriptoren (sockets) beim Kern registriert. Der Kern meldet die Deskriptoren, solange sie sich in diesem Zustand befinden. Beispiel: Ereignis: Von Socket 42 kann gesessen werden Applikation liest einen Teil der Eingetroffenen Daten Ereignis wird dann erneut gemeldet 3 Dies gilt auch für Prozesse, falls diese gemeinsam auf mit IPC-Mitteln geteilten Ressourcen operieren 4 Das Attribut O NONBLOCK ist hier bedeutungslos 5

6 KAPITEL 1. CLIENT/SERVER PROGRAMMIERMODELLE Die bekanntesten Vertreter dieses Designs ist das select()-interface. Im Gegensatz werden bei einem Edge-Triggered-Verfahren nur Änderungen des Zustandes gemeldet. Beispiel: Ereignis: Von Socket 42 kann gelesen werden Applikation liest einen Teil der Eingetroffenen Daten Ereignis wird erst dann erneut gemeldet, wenn die Applikation alle Daten gelesen hat (genauer: read meldet EAGAIN). 1.4 Readiness Notification mit select select ist der am weitesten Verbreitete und auch älteste Vertreter der Unix Multiplexing- Mechanismen 5. int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); Der Programmierer deklariert fd_sets 6, für die zu überwachenden Sockets. Anschlïesend werden mit dem FD_SET()-makro Sockets zu diesem Set hinzugefügt. Danach können diese Sets an select() übergeben werden. Ein Aufruf von select kehrt zurück, wenn Das Timeout abläuft (der Wert NULL als Timeout verhindert dies) Mindestens einer der in einem Set befindlichen sockets ein Ereignis aufweist. In diesem Fall weist der Rückgabewert die Anzahl an Ereignisbehafteten Deskriptoren aus. Nachdem select Ereignisse meldet, kann nun mit dem FD_ISSET Makro getestet werden, ob ein bestimmter Deskriptor für die gewünschte Operation verfügbar ist (Deskriptoren, die nicht verfügbar sind, werden von select aus dem set entfernt!). Beispiel: fd_set readers, writers; /* sets initialisieren */ FD_ZERO(&readers); FD_ZERO(&writers); 5 seit 4.2 BSD (1983) 6 Meist eine Struktur, welche ein Array aus longs enthält 6

7 KAPITEL 1. CLIENT/SERVER PROGRAMMIERMODELLE FD_SET(sock, &readers); /* melde wenn socket daten enth"alt */ FD_SET(sock, &readers); /* melde wenn Schreiboperation auf socket Moeglich ist */ fd_set readers_tmp = readers; fd_set writers_tmp = writers; int ret = select(select_maxfd + 1, &readers_tmp, &writers_tmp, NULL, NULL); if (ret < 0) /* Fehlerbehandlung */ for (i=0; i <= select_maxfd; i++) { if (FD_ISSET(i, &readers_tmp)) lese_daten(i); if (FD_ISSET(i, &writers_tmp)) schreibe_daten(i); Da select Grundsätzlich Level-Triggered ist, werden Ereignisse auch dann erneut gemeldet, wenn lese_daten() nicht alle verfügbaren Daten aus dem Socket-Empfangspuffer liest select: Einschränkungen und Probleme Die von select Verwendeten fd_sets sind gewöhnlich mittels Bitvektoren implementiert und müssen jeweils linear abgesucht werden. Der Erste Parameter zur Funktion gibt das Höchste zu Untersuchende Bit an und entspricht daher dem höchsten Deskriptor plus eins. Applikationen, die select für mehrere Sockets einsetzen, führen daher für gewöhnlich die höchste aktuelle Deskriptornummer in einer Variable mit. Wird der höchste Deskriptor geschlossen, muss der nächstkleinere neu ermittelt werden. Dies ist zwar vergleichsweise einfach lösbar, stellt aber dennoch einen zusätzlichen Aufwand dar. Die Verwendung von Bitvektoren ist in anderer Hinsicht von viel Größerem Nachteil: Sie sind in ihrer Größe beschränkt: So können in fd_sets nur Deskriptoren verwaltet werden, die kleiner sind als die Konstante FD_SETSIZE. 1.5 Readiness Notification mit poll poll ist eine 1986 in SystemV Release 3 eingeführter Schnittstelle zur Ereignisüberwachung von Dateideskriptoren 7. Im Gegensatz zu select gibt es keine direkte Beschränkung der maximal verwenbaren Deskriptornummer: int poll(struct pollfd *fds, nfds_t nfds, int timeout); 7 select stand 1986 in SystemV nicht zur Verfügung 7

8 KAPITEL 1. CLIENT/SERVER PROGRAMMIERMODELLE struct pollfd { int fd; /* file descriptor */ short events; /* requested events */ short revents; /* returned events */ ; Abbildung 1.1: pollfd - Strukur poll erhält einen Zeiger auf ein Array aus pollfd-strukturen (siehe 1.1, in diesen werden die jeweiligen Sockets im fd-feld mit den jeweils gewünschten Ereignissen (events)eingetragen. Wie select kehrt poll dann zurück, wenn mindestens ein Deskriptor Ereignisse hatte, in diesem Fall kann der entsprechende Zustand aus revents-feld gelesen werden. Der Timeout- Parameter (in Millisekunden) spezifiziert die maximale Wartezeit, bei negativen Werten wird solange gewartet, bis Ereignisse auftreten. Beispiel: struct pollfds[2]; pollfds[0].fd = 0; pollfds[1].fd = 1; pollfds[0].events = POLLIN; /* melde wenn auf fd 0 Daten verfuegbar sind */ pollfds[1].events = POLLOUT; /* melde wenn Schreiboperation auf fd 1 moeglich ist * int ret = poll(pollfds, 2, 0); if (ret < 0) /* Fehlerbehandlung */ for (i=0; i < 2; i++) { if (pollfds[i].revents & POLLIN) lese_daten(i); if (pollfds[i].revents & POLLOUT) schreibe_daten(i); poll ist ebenfalls Level-Triggered Vorteile gegenüber select pollkönnen beliebige Deskriptornummern übergeben werden 8. 8 Solange die entsprechenden Deskriptoren existieren, d.h. einen vorhanden I/O Kanal darstellen 8

9 KAPITEL 1. CLIENT/SERVER PROGRAMMIERMODELLE poll: Einschränkungen und Probleme Als Datenstruktur verwendet poll ein einziges Array für alle Deskriptoren. Falls man die Obergrenze der gleichzeitig offenen Verbindungen nicht kennt und dies ist der Normalfall muss das pollfds-array zur Laufzeit (re-)organisiert werden (z.b. mit realloc). Dies ist aber nur mit linearem Zeitaufwand möglich und daher bei größeren Deskriptorenmengen (> 1000) nicht akzeptabel. Falls es aus Designgründen nicht möglich ist, die Deskriptoren linear sortiert im Array zu halten (d.h.: pollfds[x].fd= X), muss sogar jeder einzelne Deskriptor linear gesucht werden! Ein weiterer Grund, der poll für große Sets disqualifiziert, ist der Kopieraufwand: Das pollfds- Array muss bei jedem Aufruf der poll-funktion vom User in den Kernelspace transferriert werden (und nach Aktualisierung aller reventsfelder wieder zurück). Da aber im Normallfall nur an einem geringen Anteil der Deskriptoren auch tatsächlich I/O durchgeführt wird, ist ein großteil dieses Aufwandes nutzlos. Das der Anwender wie beiselect selbst alle Deskriptoren verwalten muss, fällt dabei kaum noch ins Gewicht. 1.6 Das alternative poll-interface /dev/poll Sun versucht mit einer alternativen Schnittstelle die Nachteile von poll zu umgehen. /dev/poll löst die beiden größten Designschwächen: Kein Userspace-Array mehr notwendig Kopieraufwand Kernelspace Userspace entfällt Dabei wird die von poll bekannte pollfd-struktur weiter verwendet. Dazu werden anstatt ein Deskriptoren-Array zu verwenden jeweils ein (oder mehrere) pollfd-strukturen mittels der Gerätedatei /dev/poll an den Kernel übergeben. Dabei wird der Systemaufruf poll nicht mehr verwendet; an seine stelle treten die Systemaufrufe open, write und ioctl. Beispiel: int pollfd = open("/dev/poll", O_RDWR); struct pollfd p = {.events = POLLIN,.fd = 0 ; write(pollfd, &p, sizeof p); /* fd struktur dem kernel-set hinzufuegen */ struct pollfds p[100]; 9

10 KAPITEL 1. CLIENT/SERVER PROGRAMMIERMODELLE struct epoll_event { uint32_t events; /* Epoll events */ epoll_data_t data; /* User data variable */ Abbildung 1.2: pollfd - Strukur struct dvpoll dvp = {.dp_timeout = -1;.dp_nfds = 100;.dp_fds = p; ; ret = ioctl(io_masterfd, DP_POLL, &dvp); if (ret < 0) /* Fehlerbehandlung */ for (i=0; i < ret ; i++) { if (p[i].revents & POLLIN) lese_daten(i); if (pollfds[i].revents & POLLOUT) schreibe_daten(i); Der ioctl Aufruf wartet dann analog zu poll() auf Ereignisse und legt die Resultate in einen vom Programmierer angegebenen Speicherbereich. Da nur die Deskriptoren, die für die gewünschten I/O-Operationen zu verfügung stehen kopiert werden, entfällt sowohl die lineare Suche nach Ereignissen als auch der unnötige Kopieraufwand für das vollständige Set. Damit ist /dev/poll auch für die Verwendung bei einer hohen Anzahl an Verbindungen geeignet. Ein weiter Vorteil ist, das eine Portierung von poll auf /dev/poll schnell möglich ist. Gegen die Verwendung spricht, das dieses Interface derzeit nur unter SunOS (ab 5.8, Updates für 5.7 verfügbar) und aktuellem HP/UX zu verfügung steht. 1.7 Linux 2.6: epoll Das erstmals in Linux (2002) integrierte epoll ist /dev/poll ähnlich, verwendet allerdings ausschließlich neu Systemaufrufe (epoll_create, epoll_ctl, epoll_wait). Anstelle der pollfdstruktur tritt struct epoll_event ( 1.2. epoll_data_t ist ein union, in dem der Anwender eine beliebige Information mit dem Ereignis verbinden kann. Normalerweise ist dies der Dateideskriptor, es kann aber auch beispielsweise ein Zeiger auf eine Datenstruktur mit Zustandsinfomationen übergeben werden 9. epoll ist wahlweise Level oder Edge-Triggered. 9 Der Kernel verwendet diese Informationen nicht; sie dient ausschließlich dem Entwickler 10

11 KAPITEL 1. CLIENT/SERVER PROGRAMMIERMODELLE typedef union epoll_data { void *ptr; int fd; uint32_t u32; uint64_t u64; epoll_data_t; Abbildung 1.3: pollfd - Strukur Readiness Notification mit epoll Normalerweise verhält sich epolllevel-triggered und ist in der Anwendung mit /dev/poll vergleichbar. Beispiel: int epollfd = epoll_create(100); struct epoll_event ev = {.events = EPOLLIN ; ev.data.fd = 0; epoll_ctl(epollfd,epoll_ctl_add, fd, &ev); /* zum kernel set hinzufuegen */ struct epoll_event epoll_ev[100]; int ret = epoll_wait(epollfd, epoll_ev, 100, timeout); if (ret < 0) /* Fehlerbehandlung */ for (i=0; i < ret ; i++) { if (epoll_ev[i].events & (EPOLLIN EPOLLPRI)) lese_daten(i); if (epoll_ev[i].events & EPOLLOUT) schreibe_daten(i); Change Notification mit epoll Epoll unterstützt auch ein auf Change Notification -aufsetzendes Design. Dazu wird das EPOLLET-Flag im event-feld der epoll_event-struktur gesetzt. Bei Verwendung des Edge- Triggered-Mode muss vor dem nächsten epoll_wait-aufruf sicher gestellt sein, das der Deskriptor seinen Zustand geändert hat, z.b. in dem alle im Empfangspuffer befindliche Daten 11

12 KAPITEL 1. CLIENT/SERVER PROGRAMMIERMODELLE gelesen wurden. Bei mehreren tausend Deskriptoren ist dies aber nicht in einem akzeptablen Zeitfenster möglich, da andere Verbindungen nicht mehr bedient werden können. Daher muss stattdessen eine Datenstruktur mit aktiven Dateideskriptoren mitgeführt werden. Ein von epoll_wait geliefertes Ereignis wird dann in diese Datenstruktur eingefügt. Der Vorteil des Change-Notification Ansatzes ist, das die Applikation nicht mehr über gleichbleibende Ereignisse Informiert werden muss und somit bei vielen aktiven Deskriptoren weniger überflüssige Zustände zwischen Kernel- und Userspace ausgetauscht werden müssen. Der Nachteil besteht in der erhöhten Komplexität für den Anwendungsentwickler, da die Warteschlange bereiter Verbindungen nicht nur aktuell gehalten werden muss ein Deskriptor, der in der Datenstruktur nicht mehr verzeichnet ist, aber seinen Zustand nicht verändert hat, bleibt im Gegensatz zum Konzept der Readiness Notification hängen und wird nicht mehr bedient sondern sie muss auch sicherstellen, das alle Elemente der Struktur (d.h. alle Clients) in regelmässigen Abständen an die Reihe kommen und es zu keiner Benachteiligung kommt. 1.8 BSD: kqueue Das ursprünglich unter FreeBSD 10, inzwischen aber auch unter OpenBSD, NetBSD (und MacOS X) verfügbare Event-Interface stellt einen allumfassenden filterbasierten Ansatz dar. Im Gegensatz zu allen anderen gängigen Event-Handlern ermöglicht kqueue z.b. auch die Überwachung von Signalhandlern und Timern, bietet also eine einheitliche Schnittstelle für alle Arten von Ereignissen an. struct kevent { uintptr_t ident; /* identifier for this event */ short filter; /* filter for event */ u_short flags; /* action flags for kqueue */ u_int fflags; /* filter flag value */ intptr_t data; /* filter data value */ void *udata; /* opaque user data identifier */ ; int kfd = kqueue(); struct kevent kev; struct kevent res[100]; EV_SET(&kev, fd, EVFILT_READ,EV_ADD EV_ENABLE, 0, 0, 0); 10 Version 4.1 (2000) 12

13 KAPITEL 1. CLIENT/SERVER PROGRAMMIERMODELLE ret = kevent(kfd, &kev, 1, res, 100, NULL); if (ret < 0) /* Fehlerbehandlung */ for (i = 0; i < ret; i++) { switch (res[i].filter) { case EVFILT_READ: handle_read((int)res[i].ident); break; case EVFILT_WRITE: handle_read((int)res[i].ident); break; case EV_ERROR: /* Fehlerbehandlung */ 1.9 kevent Auch unter Linux gibt es inzwischen Bestrebungen, die verschiedenen Event-Handling Mechanismen zusammenzufassen. Evgeny Polyakov stellt diese neue Schnittstelle kevent als Patch für aktuelle 2.6-Kernel zur Verfügung. Sie kombiniert Ideen aus AIO und BSD kqueue und ersetzt die zahlreichen verschiedenen Ereignis-Subsysteme: Deskriptoren-Handling (select, poll,epoll): KEVENT_POLL Socket-Handling: KEVENT_SOCKET Ereignisse im DAteisystem: (inotify()): KEVENT_INODE Asynchrone I/O Ereignisse auf NEtzwerkebene: KEVENT_NAIO Timer: KEVENT_TIMER Polyakov gibt für aktive http-verbindungen folgende Daten an: kevent: req/s epoll: req/s Derzeit ist aber noch nicht abzusehen, ob und wann das kevent-system in den offiziellen Kernel einfliessen wird, obwohl der kevent-autor inzwischen die Integration empfiehlt ( consider for inclusion ) libevent Die Libevent-Bibliothek von Niels Provos ([Pro06]) stellt ein API bereit, welches den genauen Event-Mechanismus kapselt. Derzeit unterstützt libevent folgende Systemschnittstellen: 13

14 KAPITEL 1. CLIENT/SERVER PROGRAMMIERMODELLE select, poll /dev/poll epoll kqueue Zusätzlich bietet libevent seit Release 1.2 auch Funktionen für asynchrone DNS-Anfragen. Die von libevent bereitgestellte Abstraktionsschicht ist callback-basiert, d.h. libevent führt bei auftreten bestimmter Ereignisse wie z.b. Timeouts oder neue Daten in einem Socketpuffer zuvor durch den Nutzer der Bibliothek registrierte Funktionen aus. Diese haben den Prototyp void cbfunc(int fd, short eventmask, void *arg); eventmaskist ein Bitfeld, in dem Ereignisabhängige Flags gesetzt werden. Vorgehen: 1. Bibliothek initialisieren: +event_init()+ 2. struct event initialisieren (event_set) 3. Zu aktiven Events hinzufügen (event_add) 4. Event-Verarbeitung starten: +event_dispatch()+ event_init(); struct event ev; event_set(&ev, sock, EV_READ, cbfunc, &ev); event_add(&evfifo, NULL); event_dispatch(); void cbfunc(int fd, short mask, void *arg) { struct event *e = arg; ssize_t len; char buf[1024]; event_add(ev, NULL); 14

15 KAPITEL 1. CLIENT/SERVER PROGRAMMIERMODELLE len = read(fd, buf, sizeof buf); if (len < 0) perror("read"); else verarbeite(buf, len); Eine Besonderheit sollte nicht unerwähnt bleiben: Ein callback wird nicht erneut ausgeführt; falls dieselbe Funktion bei erneutem auftreten desselben Ereignisses wieder aufgerufen werden soll, muss der Callback-Handler die Eventstruktur erneut in das aktive Set übernehmen (event_add). 15

16 2 Effizientere TCP-Behandlung In den vorherigen Kapitel wurden Optimierungsmodelle vorgstellt um mehrerer Verbindungen effizient zu behandeln. Dieses Kapitel geht speziell darauf ein wie ein separierter TCP-Flow optimiert werden kann. Spezielle Socketoperationen via setsockopt() sollen an dieser Stelle nicht betrachtet werden es geht viel mehr um das Vermeiden von unnötigen Kopieroperationen. Dies wird in der Regel Zero-Copy betitelt. 2.1 Zero-Copy Die typische Lehrbuch herangehensweise eine Datei zu kopieren ist ungefähr die folgende: while((cnt = read(filefd, buf, buflen)) > 0) { char *bufptr = buf; do { ssize_t written = write(socket, bufptr, cnt); /* handle errors, if any... */ cnt -= written; bufptr += written; while (cnt > 0); Positiv daran anzumerken ist das es relativ einfach zu implementieren und auch für den unbegabten Programmierer einfach zu verstehen ist. Negativ ist das es für das Betriebssytem einige Hürden in den Weg stellt da es eine wichtige Optimierungsmethode nicht erkennen kann. Was in den Beispielcode passiert ist folgendes: Daten werden vom der Festplatte in den Kerneigenen Cache geschrieben. Dies ist in aller Regel als DMA 1 implementiert. Die CPU ist nur insoweit involviert das es Vor- und Nacharbeiten erledigt. Denn eigentlichen Kopierprozeß übernimmt dedizierte Hardware. 1 Direct Memory Access 16

17 KAPITEL 2. EFFIZIENTERE TCP-BEHANDLUNG Von diesem Kernelspeicher werden die Daten in den vorher allokieren Puffer (Variablenname: buf) kopiert. Dies wird dieses mal von der CPU direkt ausgeführt. Anschließend werden diese Daten mit dem write() Funktionsaufruf an den Socket kopiert. Der etwas flapsig verwendete Begriff Socket mein in diesem Fall einen Speicherbereich im Kern welche die Nutzdaten für das Paket enthält. Nachdem alle Vorbereitungsarbeiten abgeschloßen sind, dass sind zum großen Teil Protokoll spezifische Aufgaben 2, werden die Daten an die Netzwerkkarte übergeben. In der Regel auch eine DMA-Operation. Abbildung 2.1: Read - Write Kopiereschema Abbildung 2.1 visualisiert den Prozeß des Kopieres sofort wird die Redundanz deutlich. Die Erkentniss, welche aus dieser Kopierorgie gezogen werden kann ist das dass unnötige Kopieren in den Userspace Puffer vermieden werden sollte, sowie das ein nicht unbedeutende Anzahl an Syscalls involviert ist. Dies ist ein nicht zu unterschätzender Perfomanceverlusst! 2.2 Speicher Abbildungen - Die Funkion mmap Ein nicht primär für diesen Zweck, den Einsparen von Kopieraufrufen, entworfene Funktion kommt den Programmierer aber Zuhilfe. Die Funktion mmap() mapped eine Datei in den Speicherbereich. Der Speicherbereich ab wo auf die Datei zugegriffen werden kann wird von mmap() als Rückgabewert geliefert. Positiver Nebeneffekt ist das bei dieser Aufrufsemantik die Daten nicht in den Userspace- Adressraum kopiert werden muss. Auch wenn mehrer Prozeße auf diesem Bereich lesend verwenden muss dieser Bereich nur einmal in gesammten physikalischen Arbeitsspeicher vorgehalten werden. Abbildung 2.2 auf der nächsten Seite zeigt den eingesparten Kopieraufruf. Es sind aber troztalledem noch vier Kontext-Switche nötig. 2 Segmentierung auf MSS Größe sowie Prüfsummenberechnung, etc 17

18 KAPITEL 2. EFFIZIENTERE TCP-BEHANDLUNG Ein Problem ergibt sich aus der Tatsache falls ein anderer Prozeß die Datei kürzt! Dabei wird als Standardbehandlung das Signal SIGBUS geliefert worauf der Prozeß sich ohne besondere Vorkehrung beendet dies muss verhindert werden! Abbildung 2.2: Mmap - Speichermappings anlegen 2.3 Sendfile Speichermappings sind nur eine Karte um diesen entgegenzuwirken, ideal ist es nicht. Dieser Umstand war und ist bekannt und es wurden Gegenmaßnahmen getroffen um diesen entegenzuwirken. Die Funktion sendfile() welchen folgenden Prototypen unter Linux besitzt geht einen speziellen, aber wirkungsvollen Weg: ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count); Sendfile verlangt einen Ausgabedeskriptor, einen Socket. Als Eingabedeskriptor muss eine geöffnete Datei angegeben werden und als verbleibende Argumente die Stelle ab wo die Daten kopiert werden sollen, sowie die Länge. Drei entscheidende Vorteile ergeben sich aus der Verwendung von Sendfile: 1. Nur ein Systemaufruf für die gesammte Datei wird beötigt 2. Es muss kein Puffer im Userspace allokiert werden 3. Keine Daten müssern in den Userspace kopiert werden Trotz all den Vorteilen verbleibt ein CPU: vom Dateisystem-Cache in dem Socketpuffer. Abbildung 2.3 auf der nächsten Seite zeigt die Kopieraufrufe grafisch. Leider ist sendfile alles anderer portabel zwar ist es unter fast allen gängigen Unix- Deriaten vorhanden, doch der Funktionsprototyp ist nicht einheitlich eventuell liegt darin die mangelde Verwendung dieser netten Funktion begründet. So erwartet sendfileunter *BSD zusätzlich ein (optionales) iovec-array diese Daten werden vor der Datei an den Client geschickt. Dies ist nützlich, wenn wie z.b. bei http vor den eigentlichen Nutzdaten ein Header vorangestellt werden muss. 18

19 KAPITEL 2. EFFIZIENTERE TCP-BEHANDLUNG Abbildung 2.3: Filetransfer mit sendfile 2.4 TCP-Cork Unter Linux kann dieses Problem mit der Socket-Option TCP_CORK gelöst werden: int one = 1, zero = 0; socklen_t len = sizeof(one); setsockopt(socket,ipproto_tcp,tcp_cork, &one, &len); write(socket,...); write(socket,...); setsockopt(socket,ipproto_tcp,tcp_cork, &zero, &len); Falls diese Socket-Option gesetzt ist, werden alle Daten im Socket-Puffer akkumuliert und erst gesendet wenn Der Puffer voll ist Ein Timeout-Grenze überschritten ist Die Option wieder entfernt wird Unter *BSD existiert die Option TCP_NOPUSH, die verlgeichbar mit TCP_CORK ist. Für UDP- Verbindungen bietet Linux UDP_CORK. 2.5 writev Eine Portablere Lösung ist die Verwendung von gather write ([Ste04]): struct iovec { void *iov_base;size_t iov_len; ; ssize_t writev(int fd, const struct iovec *vector, int count); 19

20 KAPITEL 2. EFFIZIENTERE TCP-BEHANDLUNG Zwei Eigenschaften erschweren die Verwendung von writev(): Erstens ist die Anzahl der maximal Verwendbaren Vektoren ist auf IOV_MAX Vektoren beschränkt, es ist also notwendig vor einem writev-aufruf zu testen, ob mehr IOV_MAX Vektoren vorhanden sind wenn ja, müssen diese Vektoren auf mehrere writev-aufrufe verteilt werden. Zweitens muss falls der Rückgabewert positiv ist, aber kleiner als die Summe aller Puffergrößen des Vektors alle Elemente des Vektors durchgezählt werden, um zu ermitteln welche Vektoren nicht geschrieben wurden und ggf. die Pufferinhalte und Längen zu korrigieren. struct iovec iovecs[10]; int iov_total = sizeof iovecs / sizeof iovecs[0]; ssize_t bytes_total = 0; iovecs[0].iov_len = 23; iovecs[0].iov_base = buffer_1; iovecs[1].iov_len = 42; iovecs[1].iov_base = buffer_2; do { ssize_t ret; int iovlen = iov_total > IOV_MAX? IOV_MAX : iov_total; for (i=0; i < iovlen; i++) bytes_total += iovecs[i].iov_len; ret = writev(sock, iovecs, iovlen); if (ret < 0) { if (errno == EINTR errno == EAGAIN) continue; break; if (ret < bytes_total) { ssize_t written = 0; for (i=0; i < iovlen; i++) { ssize_t leftover; written += iovecs[i].iov_len; if (written < ret) continue; written -= iovecs[i].iov_len; leftover = ret - written; if (leftover) { char *buf = iovecs[i].iov_base + iovecs[i].iov_len; iovecs[i].iov_base = buf - leftover; iovecs[i].iov_len = leftover; 20

21 KAPITEL 2. EFFIZIENTERE TCP-BEHANDLUNG iovlen -= i; if (!leftover && iovlen < iov_total) iovlen++; break; iov_total -= iovlen; while (iov_total); 2.6 Splice und Tee Splice und Tee sind die Newcomer im Linux Betriebssytem, sie generalisieren das Konzept von einer Userspacefreien Kopierfunktion splice long splice(int, loff t, int, loff t, size t, unsigned int); ist der aktuelle Protoyp für splice(). Als Ein- und Ausgabedeskriptor kann jeder Deskriptor dienen welcher sys_splice Implenetiert. Aktuell ist dies jede Datei im Dateisystem sowie die Sockets, damit ist ein großes Anwendungsgebiet abgedeckt. Abstrakt kann man sich Splice als eine Funktion vorstellen welche Zugriff auf den Kernelspeicher liefert. Implementiert ist splice als eine In-Kernel-Pipe auf welcher zugegriffen werden kann. Eingeführt wurde splice ab Kernelversion in rc1. Anwendungen sind unter anderen folgende: Socket zu Socket (redirect) kopieren Datei nach Datei kopieren Messungen habe ergeben das eine Steigerung der Datentransferrate um bis 70% möglich ist. Dies bei einer Reduktion der CPU-Last um bis zu 50%! Eine einfache Implentierung welche vom Autor von splice() vorgeschlagen wurde könnte wie folgt implementiert sein: [...] in_fd = open(argv[index], O_RDONLY); if (in_fd < 0) return error("open input"); 21

22 KAPITEL 2. EFFIZIENTERE TCP-BEHANDLUNG if (fstat(in_fd, &sb) < 0) return error("stat input"); out_fd = open(argv[index + 1], O_WRONLY O_CREAT O_TRUNC, 0644); if (out_fd < 0) return error("open output"); if (pipe(pfds) < 0) return error("pipe"); do { int this_len = min((off_t) BS, sb.st_size); int ret = splice(in_fd, NULL, pfds[1], NULL, this_len, 0); if (ret <= 0) return error("splice-in"); sb.st_size -= ret; while (ret > 0) { int written = splice(pfds[0], NULL, out_fd, NULL, ret, splice_flags); if (written <= 0) return error("splice-out"); ret -= written; while (sb.st_size); close(in_fd); close(pfds[1]); close(out_fd); close(pfds[0]); [...] Tee Tee kann man sich als memcpy() von Kernelpuffer zu Kernelpuffer vorstellen. Es kopiert Daten im KS-Puffer. Eine Anwendung die Linus Torvalds vorgeschlagen hat war des Streamen von einen Hardware MPEG-Encoders zu einer Datei sowie an einen Socket. Wer das Userspace Programm tee kennt ist mit der Semantik schnell vertraut. 22

23 Literaturverzeichnis [Dre00] Ulrich Drepper. Asynchronous hostname lookup api a proposal [Dre06] [Mau03] Ulrich Drepper. The need for asynchronous, zero-copy network i/o problems and possible solutions Wolfgang Mauerer. Linux Kernelarchitektur Konzepte, Strukturen und Algorithmen von Kernel 2.6. Hanser, 1st edition, [MNN04] Marshall Kirk McKusick and George V. Neville-Neil. The Design and Implementation of the FreeBSD Operating System. Addison Wesley, 2nd edition, [Pro06] Niels Provos. libevent asynchronous event notification library. provos/libevent/, November [SR05] W. Richard Stevens and Stephan A. Rago. Advanced Programming in the Unix Environment. Addison Wesley, 2nd edition, [Ste04] W. Richard Stevens. UNIX Network Programming (The Sockets Networking). Prentice Hall, 2nd edition,

Netzwerk-Programmiermodelle und I/O Optimierungen für Unix Betriebssyteme

Netzwerk-Programmiermodelle und I/O Optimierungen für Unix Betriebssyteme Netzwerk-Programmiermodelle und I/O Optimierungen für Unix Betriebssyteme Hagen Paul Pfeifer Florian Westphal hagen@jauu.net fw@strlen.de http://www.protocol-laboratories.net 14. Oktober 2006 Vortragsfahrplan

Mehr

Grundlagen verteilter Systeme

Grundlagen verteilter Systeme Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 3 12.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: a)

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Die allerwichtigsten Raid Systeme

Die allerwichtigsten Raid Systeme Die allerwichtigsten Raid Systeme Michael Dienert 4. Mai 2009 Vorbemerkung Dieser Artikel gibt eine knappe Übersicht über die wichtigsten RAID Systeme. Inhaltsverzeichnis 1 Die Abkürzung RAID 2 1.1 Fehlerraten

Mehr

Technische Dokumentation SilentStatistikTool

Technische Dokumentation SilentStatistikTool Technische Dokumentation SilentStatistikTool Version 1.0 Marko Schröder 1115063 Inhalt Einleitung... 3 Klasse Program... 3 Klasse ArgumentHandler... 3 Bereitgestellte Variablen... 3 Bereitgestellte Methoden...

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

1. Einschränkung für Mac-User ohne Office 365. 2. Dokumente hochladen, teilen und bearbeiten

1. Einschränkung für Mac-User ohne Office 365. 2. Dokumente hochladen, teilen und bearbeiten 1. Einschränkung für Mac-User ohne Office 365 Mac-User ohne Office 365 müssen die Dateien herunterladen; sie können die Dateien nicht direkt öffnen und bearbeiten. Wenn die Datei heruntergeladen wurde,

Mehr

Avira Management Console 2.6.1 Optimierung für großes Netzwerk. Kurzanleitung

Avira Management Console 2.6.1 Optimierung für großes Netzwerk. Kurzanleitung Avira Management Console 2.6.1 Optimierung für großes Netzwerk Kurzanleitung Inhaltsverzeichnis 1. Einleitung... 3 2. Aktivieren des Pull-Modus für den AMC Agent... 3 3. Ereignisse des AMC Agent festlegen...

Mehr

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version 2.0.1 Deutsch 01.07.2014

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version 2.0.1 Deutsch 01.07.2014 Konfiguration VLAN's Version 2.0.1 Deutsch 01.07.2014 In diesem HOWTO wird die Konfiguration der VLAN's für das Surf-LAN der IAC-BOX beschrieben. Konfiguration VLAN's TITEL Inhaltsverzeichnis Inhaltsverzeichnis...

Mehr

Windows 8 Lizenzierung in Szenarien

Windows 8 Lizenzierung in Szenarien Windows 8 Lizenzierung in Szenarien Windows Desktop-Betriebssysteme kommen in unterschiedlichen Szenarien im Unternehmen zum Einsatz. Die Mitarbeiter arbeiten an Unternehmensgeräten oder bringen eigene

Mehr

EasyWk DAS Schwimmwettkampfprogramm

EasyWk DAS Schwimmwettkampfprogramm EasyWk DAS Schwimmwettkampfprogramm Arbeiten mit OMEGA ARES 21 EasyWk - DAS Schwimmwettkampfprogramm 1 Einleitung Diese Präsentation dient zur Darstellung der Zusammenarbeit zwischen EasyWk und der Zeitmessanlage

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Architektur Verteilter Systeme Teil 2: Prozesse und Threads Architektur Verteilter Systeme Teil 2: Prozesse und Threads 21.10.15 1 Übersicht Prozess Thread Scheduler Time Sharing 2 Begriff Prozess und Thread I Prozess = Sequentiell ablaufendes Programm Thread =

Mehr

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift. Briefe Schreiben - Arbeiten mit Word-Steuerformaten Ab der Version 5.1 stellt die BüroWARE über die Word-Steuerformate eine einfache Methode dar, Briefe sowie Serienbriefe mit Hilfe der Korrespondenzverwaltung

Mehr

Logging, Threaded Server

Logging, Threaded Server Netzwerk-Programmierung Logging, Threaded Server Alexander Sczyrba Michael Beckstette {asczyrba,mbeckste@techfak.uni-bielefeld.de 1 Übersicht Logging Varianten für concurrent server 2 current working directory

Mehr

Speicher in der Cloud

Speicher in der Cloud Speicher in der Cloud Kostenbremse, Sicherheitsrisiko oder Basis für die unternehmensweite Kollaboration? von Cornelius Höchel-Winter 2013 ComConsult Research GmbH, Aachen 3 SYNCHRONISATION TEUFELSZEUG

Mehr

Dienstspezifikation nach RFC 2396 193

Dienstspezifikation nach RFC 2396 193 Dienstspezifikation nach RFC 2396 193 Für die Kombination aus Rechnernamen (oder alternativ einer IP-Adresse) und einer Portnummer gibt es mit RFC 2396 einen Standard: hostport host [ : port ] host hostname

Mehr

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Bevor Sie die Platte zum ersten Mal benutzen können, muss sie noch partitioniert und formatiert werden! Vorher zeigt sich die Festplatte

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

FastViewer Remote Edition 2.X

FastViewer Remote Edition 2.X FastViewer Remote Edition 2.X Mit der FastViewer Remote Edition ist es möglich beliebige Rechner, unabhängig vom Standort, fernzusteuern. Die Eingabe einer Sessionnummer entfällt. Dazu muß auf dem zu steuernden

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

infach Geld FBV Ihr Weg zum finanzellen Erfolg Florian Mock

infach Geld FBV Ihr Weg zum finanzellen Erfolg Florian Mock infach Ihr Weg zum finanzellen Erfolg Geld Florian Mock FBV Die Grundlagen für finanziellen Erfolg Denn Sie müssten anschließend wieder vom Gehaltskonto Rückzahlungen in Höhe der Entnahmen vornehmen, um

Mehr

Monitoring-Service Anleitung

Monitoring-Service Anleitung Anleitung 1. Monitoring in CrefoDirect Wie kann Monitoring über CrefoDirect bestellt werden? Bestellung von Monitoring beim Auskunftsabruf Beim Auskunftsabruf kann das Monitoring direkt mitbestellt werden.

Mehr

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) 1 Einleitung... 2 2 Download und Installation... 3 2.1 Installation von WindowsXPMode_de-de.exe... 4 2.2 Installation von Windows6.1-KB958559-x64.msu...

Mehr

ec@ros2-installer ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg 7 64331 Weiterstadt

ec@ros2-installer ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg 7 64331 Weiterstadt ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Download des ecaros2-installer...3 2 Aufruf des ecaros2-installer...3 2.1 Konsolen-Fenster (Windows)...3 2.2 Konsolen-Fenster

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen

Mehr

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert: Firewall für Lexware professional konfigurieren Inhaltsverzeichnis: 1. Allgemein... 1 2. Einstellungen... 1 3. Windows XP SP2 und Windows 2003 Server SP1 Firewall...1 4. Bitdefender 9... 5 5. Norton Personal

Mehr

20. Algorithmus der Woche Online-Algorithmen: Was ist es wert, die Zukunft zu kennen? Das Ski-Problem

20. Algorithmus der Woche Online-Algorithmen: Was ist es wert, die Zukunft zu kennen? Das Ski-Problem 20. Algorithmus der Woche Online-Algorithmen: Was ist es wert, die Zukunft zu kennen? Das Ski-Problem Autor Susanne Albers, Universität Freiburg Swen Schmelzer, Universität Freiburg In diesem Jahr möchte

Mehr

Qt-Projekte mit Visual Studio 2005

Qt-Projekte mit Visual Studio 2005 Qt-Projekte mit Visual Studio 2005 Benötigte Programme: Visual Studio 2005 Vollversion, Microsoft Qt 4 Open Source s. Qt 4-Installationsanleitung Tabelle 1: Benötigte Programme für die Qt-Programmierung

Mehr

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

Mehr

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele: 2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Configuring Terminal Services o Configure Windows Server 2008 Terminal Services RemoteApp (TS RemoteApp) o Configure Terminal Services Gateway

Mehr

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten Das große x -4 Alles über das Wer kann beantragen? Generell kann jeder beantragen! Eltern (Mütter UND Väter), die schon während ihrer Elternzeit wieder in Teilzeit arbeiten möchten. Eltern, die während

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst. 40-Tage-Wunder- Kurs Umarme, was Du nicht ändern kannst. Das sagt Wikipedia: Als Wunder (griechisch thauma) gilt umgangssprachlich ein Ereignis, dessen Zustandekommen man sich nicht erklären kann, so dass

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Tipps und Tricks zu Netop Vision und Vision Pro

Tipps und Tricks zu Netop Vision und Vision Pro Tipps und Tricks zu Netop Vision und Vision Pro Anwendungen auf Schülercomputer freigeben und starten Netop Vision ermöglicht Ihnen, Anwendungen und Dateien auf allen Schülercomputern gleichzeitig zu starten.

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Prozessarchitektur einer Oracle-Instanz

Prozessarchitektur einer Oracle-Instanz 6. Juni 2008 Inhaltsverzeichnis Oracle Instanz 1 Oracle Instanz 2 3 Redo Log Buffer Shared Pool Java Pool & Large Pool Oracle Instanz Eine Oracle-Instanz ist Hauptbestandteil des Oracle Datenbank Management

Mehr

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Wie kann ein PDF File angezeigt werden? kann mit Acrobat-Viewern angezeigt werden auf jeder Plattform!! (Unix,

Mehr

Tutorial - www.root13.de

Tutorial - www.root13.de Tutorial - www.root13.de Netzwerk unter Linux einrichten (SuSE 7.0 oder höher) Inhaltsverzeichnis: - Netzwerk einrichten - Apache einrichten - einfaches FTP einrichten - GRUB einrichten Seite 1 Netzwerk

Mehr

ICS-Addin. Benutzerhandbuch. Version: 1.0

ICS-Addin. Benutzerhandbuch. Version: 1.0 ICS-Addin Benutzerhandbuch Version: 1.0 SecureGUARD GmbH, 2011 Inhalt: 1. Was ist ICS?... 3 2. ICS-Addin im Dashboard... 3 3. ICS einrichten... 4 4. ICS deaktivieren... 5 5. Adapter-Details am Server speichern...

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

FastBill Automatic. Dokumentation Versand. FastBill GmbH. Holteyer Straße 30 45289 Essen Telefon 0201 47091505 Telefax 0201 54502360

FastBill Automatic. Dokumentation Versand. FastBill GmbH. Holteyer Straße 30 45289 Essen Telefon 0201 47091505 Telefax 0201 54502360 FastBill GmbH Holteyer Straße 30 45289 Essen Telefon 0201 47091505 Telefax 0201 54502360 FastBill Automatic Dokumentation Versand 1 Inhaltsverzeichnis: 1. Grundlegendes 2. Produkteinstellungen 2.1. Grundeinstellungen

Mehr

Guide DynDNS und Portforwarding

Guide DynDNS und Portforwarding Guide DynDNS und Portforwarding Allgemein Um Geräte im lokalen Netzwerk von überall aus über das Internet erreichen zu können, kommt man um die Themen Dynamik DNS (kurz DynDNS) und Portweiterleitung(auch

Mehr

Kommunikations-Management

Kommunikations-Management Tutorial: Wie kann ich E-Mails schreiben? Im vorliegenden Tutorial lernen Sie, wie Sie in myfactory E-Mails schreiben können. In myfactory können Sie jederzeit schnell und einfach E-Mails verfassen egal

Mehr

Kostenstellen verwalten. Tipps & Tricks

Kostenstellen verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Kostenstellen erstellen 3 13 1.3 Zugriffsberechtigungen überprüfen 30 2 1.1 Kostenstellen erstellen Mein Profil 3 1.1 Kostenstellen erstellen Kostenstelle(n) verwalten 4

Mehr

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine PhotoLine S/W mit PhotoLine Erstellt mit Version 16.11 Ich liebe Schwarzweiß-Bilder und schaue mir neidisch die Meisterwerke an, die andere Fotografen zustande bringen. Schon lange versuche ich, auch so

Mehr

Alle Schlüssel-Karten (blaue Rückseite) werden den Schlüssel-Farben nach sortiert und in vier getrennte Stapel mit der Bildseite nach oben gelegt.

Alle Schlüssel-Karten (blaue Rückseite) werden den Schlüssel-Farben nach sortiert und in vier getrennte Stapel mit der Bildseite nach oben gelegt. Gentlemen", bitte zur Kasse! Ravensburger Spiele Nr. 01 264 0 Autoren: Wolfgang Kramer und Jürgen P. K. Grunau Grafik: Erhard Dietl Ein Gaunerspiel für 3-6 Gentlemen" ab 10 Jahren Inhalt: 35 Tresor-Karten

Mehr

Projektmanagement in der Spieleentwicklung

Projektmanagement in der Spieleentwicklung Projektmanagement in der Spieleentwicklung Inhalt 1. Warum brauche ich ein Projekt-Management? 2. Die Charaktere des Projektmanagement - Mastermind - Producer - Projektleiter 3. Schnittstellen definieren

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Synchronisierung. Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 73

Synchronisierung. Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 73 Synchronisierung Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 73 Übertragungsprozeduren Die Übertragung einer Nachricht zwischen Sender und Empfänger erfordert die Übertragung des Nutzsignals

Mehr

Connecting Content. User Manual. Version: 1.2

Connecting Content. User Manual. Version: 1.2 Connecting Content User Manual Version: 1.2 09.09.2015 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einleitung 3 2 Installation 4 3 Konfiguration 5 3.1 Allgemeine Einstellungen 6 3.2 Jobs anlegen 6 3.3 Tasks

Mehr

Firewalls für Lexware Info Service konfigurieren

Firewalls für Lexware Info Service konfigurieren Firewalls für Lexware Info Service konfigurieren Inhaltsverzeichnis: 1. MANUELLER DOWNLOAD 1 2. ALLGEMEIN 1 3. EINSTELLUNGEN 1 4. BITDEFENDER VERSION 10 2 5. GDATA INTERNET SECURITY 2007 4 6. ZONE ALARM

Mehr

Jederzeit Ordnung halten

Jederzeit Ordnung halten Kapitel Jederzeit Ordnung halten 6 auf Ihrem Mac In diesem Buch war bereits einige Male vom Finder die Rede. Dieses Kapitel wird sich nun ausführlich diesem so wichtigen Programm widmen. Sie werden das

Mehr

icloud nicht neu, aber doch irgendwie anders

icloud nicht neu, aber doch irgendwie anders Kapitel 6 In diesem Kapitel zeigen wir Ihnen, welche Dienste die icloud beim Abgleich von Dateien und Informationen anbietet. Sie lernen icloud Drive kennen, den Fotostream, den icloud-schlüsselbund und

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen) 1. Einführung: Über den ODBC-Zugriff können Sie bestimmte Daten aus Ihren orgamax-mandanten in anderen Anwendungen (beispielsweise Microsoft Excel oder Microsoft Access) einlesen. Dies bietet sich beispielsweise

Mehr

KURZANLEITUNG CLOUD OBJECT STORAGE

KURZANLEITUNG CLOUD OBJECT STORAGE KURZANLEITUNG CLOUD OBJECT STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung... Seite 03 2. Anmelden am Cloud&Heat Dashboard... Seite 04 3. Anlegen eines Containers... Seite 05

Mehr

Video Unlimited -Nutzungsbeschränkungen

Video Unlimited -Nutzungsbeschränkungen Video Unlimited -Nutzungsbeschränkungen In diesem Dokument werden Beschränkungen erklärt, die für die Verwendung von Videos gelten, die Sie über Video Unlimited -Dienste gekauft oder ausgeliehen haben

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

ARAkoll 2013 Dokumentation. Datum: 21.11.2012

ARAkoll 2013 Dokumentation. Datum: 21.11.2012 ARAkoll 2013 Dokumentation Datum: 21.11.2012 INHALT Allgemeines... 3 Funktionsübersicht... 3 Allgemeine Funktionen... 3 ARAmatic Symbolleiste... 3 Monatsprotokoll erzeugen... 4 Jahresprotokoll erzeugen

Mehr

Handbuch PCI Treiber-Installation

Handbuch PCI Treiber-Installation Handbuch PCI Treiber-Installation W&T Release 1.0, September 2003 09/2003 by Wiesemann & Theis GmbH Microsoft und Windows sind eingetragene Warenzeichen der Microsoft Corporation Irrtum und Änderung vorbehalten:

Mehr

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11 Kurzanleitung MEYTON Aufbau einer Internetverbindung 1 Von 11 Inhaltsverzeichnis Installation eines Internetzugangs...3 Ist mein Router bereits im MEYTON Netzwerk?...3 Start des YAST Programms...4 Auswahl

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

Proxy. Krishna Tateneni Übersetzer: Stefan Winter Krishna Tateneni Übersetzer: Stefan Winter 2 Inhaltsverzeichnis 1 Proxy-Server 4 1.1 Einführung.......................................... 4 1.2 Benutzung.......................................... 4 3 1

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Verschlüsseln Sie Ihre Dateien lückenlos Verwenden Sie TrueCrypt, um Ihre Daten zu schützen.

Verschlüsseln Sie Ihre Dateien lückenlos Verwenden Sie TrueCrypt, um Ihre Daten zu schützen. HACK #39 Hack Verschlüsseln Sie Ihre Dateien lückenlos Verwenden Sie TrueCrypt, um Ihre Daten zu schützen.»verschlüsseln Sie Ihren Temp-Ordner«[Hack #33] hat Ihnen gezeigt, wie Sie Ihre Dateien mithilfe

Mehr

-Virtuelle Jagdfliegerschule- Teamspeak Seite 1 von 6

-Virtuelle Jagdfliegerschule- Teamspeak Seite 1 von 6 Seite 1 von 6 Einstellen von Teamspeak 2.0 RC2 ( Nach der Installation wollen wir nun damit beginnen, Teamspeak 2.0 RC2 optimal auf ihr System abzustimmen. Sie sollten ein Fenster wie hier sehen. Falls

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

Acceptor-Connector. Acceptor-Connector

Acceptor-Connector. Acceptor-Connector Acceptor-Connector Das Acceptor-Connector Pattern trennt den Verbindungsaufbau zwischen zwei Peer-Services und der Verarbeitung, welche bei bestehender Verbindung durchgeführt wird. Kontext Ein Netzwerksystem

Mehr

Wie oft soll ich essen?

Wie oft soll ich essen? Wie oft soll ich essen? Wie sollen Sie sich als Diabetiker am besten ernähren? Gesunde Ernährung für Menschen mit Diabetes unterscheidet sich nicht von gesunder Ernährung für andere Menschen. Es gibt nichts,

Mehr

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern 1 Einleitung Lernziele Symbolleiste für den Schnellzugriff anpassen Notizenseiten drucken eine Präsentation abwärtskompatibel speichern eine Präsentation auf CD oder USB-Stick speichern Lerndauer 4 Minuten

Mehr

GeoPilot (Android) die App

GeoPilot (Android) die App GeoPilot (Android) die App Mit der neuen Rademacher GeoPilot App machen Sie Ihr Android Smartphone zum Sensor und steuern beliebige Szenen über den HomePilot. Die App beinhaltet zwei Funktionen, zum einen

Mehr

Partitionieren in Vista und Windows 7/8

Partitionieren in Vista und Windows 7/8 Partitionieren in Vista und Windows 7/8 Windows Vista und Windows 7 können von Haus aus Festplatten partitionieren. Doch die Funktion ist etwas schwer zu entdecken, denn sie heißt "Volume verkleinern".

Mehr

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern Dateiname: ecdl_p2_02_03_documentation.doc Speicherdatum: 08.12.2004 ECDL 2003 Professional Modul 2 Tabellenkalkulation

Mehr

Einleitung: Frontend Backend

Einleitung: Frontend Backend Die Internetseite des LSW Deutschland e.v. hat ein neues Gesicht bekommen. Ab dem 01.01.2012 ist sie in Form eines Content Management Systems (CMS) im Netz. Einleitung: Die Grundlage für die Neuprogrammierung

Mehr

Web Sockets mit HTML5. Quelle: www.html5rocks.com/de

Web Sockets mit HTML5. Quelle: www.html5rocks.com/de Web Sockets mit HTML5 Quelle: www.html5rocks.com/de Intensive Client-Server-Kommunikation: Beispiele Online-Spiele mit mehreren Mitspielern Chat-Anwendungen Live-Sport-Ticker Echtzeit-Aktualisierungen

Mehr

ABB i-bus KNX. Software-Information. Melde- und Bedientableau. Typ: MT 701.2

ABB i-bus KNX. Software-Information. Melde- und Bedientableau. Typ: MT 701.2 Produkt: Melde- und Bedientableau Typ: MT 701.2 Aktuelles Anwendungsprogramm Plug-In für ETS 2 MT_701_2_ETS2_SOW_xx_V1-12a_de_en.exe Plug-In für ETS 3 MT_701_2_ETS3_SOW_xx_V1-12a_de_en.exe EIBTAB: MT_701_2_EIBTAB_SOW_de_V2-08-00A_EibTab+Firmware.EXE

Mehr

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper 1. Der Prozess beginnt im Zustand Erzeugt, nachdem sein Vaterprozess den Systemaufruf fork() (s.u.) abgesetzt hat. In diesem Zustand wird der Prozess-Kontext initialisiert. 2. Ist diese Aufbauphase abgeschlossen,

Mehr

CMS.R. Bedienungsanleitung. Modul Cron. Copyright 10.09.2009. www.sruttloff.de CMS.R. - 1 - Revision 1

CMS.R. Bedienungsanleitung. Modul Cron. Copyright 10.09.2009. www.sruttloff.de CMS.R. - 1 - Revision 1 CMS.R. Bedienungsanleitung Modul Cron Revision 1 Copyright 10.09.2009 www.sruttloff.de CMS.R. - 1 - WOZU CRON...3 VERWENDUNG...3 EINSTELLUNGEN...5 TASK ERSTELLEN / BEARBEITEN...6 RECHTE...7 EREIGNISSE...7

Mehr

Über Arrays und verkettete Listen Listen in Delphi

Über Arrays und verkettete Listen Listen in Delphi Über Arrays und verkettete Listen Listen in Delphi Michael Puff mail@michael-puff.de 2010-03-26 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einführung 3 2 Arrays 4 3 Einfach verkettete Listen 7 4 Doppelt verkettete

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

Mehr

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen Alexander Schunk Henry Trobisch Inhalt 1. Vergleich der Unit-Tests... 2 2. Vergleich der Codeabdeckungs-Tests... 2 3. Vergleich

Mehr

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com

Mehr

Inkrementelles Backup

Inkrementelles Backup Inkrementelles Backup Im Gegensatz zu einer kompletten Sicherung aller Daten werden bei einer inkrementellen Sicherung immer nur die Dateien gesichert, die seit der letzten inkrementellen Sicherung neu

Mehr

Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb

Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb CashPro basiert auf Accesstechnologie 2003 und ist auch unter den aktuellen Accessversionen 2007 bis 2013 einsetzbar und Mehrbenutzerfähig.

Mehr

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung Anleitung zur Daten zur Datensicherung und Datenrücksicherung Datensicherung Es gibt drei Möglichkeiten der Datensicherung. Zwei davon sind in Ges eingebaut, die dritte ist eine manuelle Möglichkeit. In

Mehr

PHPNuke Quick & Dirty

PHPNuke Quick & Dirty PHPNuke Quick & Dirty Dieses Tutorial richtet sich an all die, die zum erstenmal an PHPNuke System aufsetzen und wirklich keine Ahnung haben wie es geht. Hier wird sehr flott, ohne grosse Umschweife dargestellt

Mehr

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken Betriebliche Datenverarbeitung Wirtschaftswissenschaften AnleitungzurEinrichtungeinerODBC VerbindungzudenÜbungsdatenbanken 0.Voraussetzung Diese Anleitung beschreibt das Vorgehen für alle gängigen Windows

Mehr

Netzwerk einrichten unter Windows

Netzwerk einrichten unter Windows Netzwerk einrichten unter Windows Schnell und einfach ein Netzwerk einrichten unter Windows. Kaum ein Rechner kommt heute mehr ohne Netzwerkverbindungen aus. In jedem Rechner den man heute kauft ist eine

Mehr

Grundfunktionen und Bedienung

Grundfunktionen und Bedienung Kapitel 13 Mit der App Health ist eine neue Anwendung in ios 8 enthalten, die von vorangegangenen Betriebssystemen bislang nicht geboten wurde. Health fungiert dabei als Aggregator für die Daten von Fitness-

Mehr