Daniel Prokesch. 20. Oktober 2015

Größe: px
Ab Seite anzeigen:

Download "Daniel Prokesch. 20. Oktober 2015"

Transkript

1 1 Vortragsblock Vortragsblock Daniel Prokesch Institut für Technische Informatik Technische Universität Wien Betriebssysteme UE SS Oktober 2015

2 2 Vortragsblock Überblick Richtlinien zur Entwicklung eines s Erstes

3 für Programmerstellung: Wie erstellt man ein Programm aus den Quelldateien? Verwendung von Makefiles Übersetzen mit: gcc -std=c99 -pedantic -Wall -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -g -c filename.c Argumentbehandlung: Wie verwendet man das Programm? Verwenden von getopt(3) Hilfetext zum korrekten Programmaufruf (usage) Fehlerbehandlung: Wie reagiert das Programm auf einen Fehler (z.b. Datei nicht vorhanden)? Konsequentes Überprüfen von Rückgabewerten! Übliche Fehlerbehandlung: 1. Ausgabe einer Fehlermeldung 2. Beenden des Programms mit Exitcode 0 siehe Vortragsblock Entwicklung in C Formale Anforderungen an C-Programme beachten! 3

4 4 Vortragsblock Aufbau des s (Linux) Hierarchische Struktur von Dateien Verschiedenste Dateitypen in einer gemeinsamen Verzeichnisstruktur: everything is a file Gewöhnliche Dateien Verzeichnisse Character-, block special files (Geräte; z.b. Terminal, Festplatte) Named Pipes (z.b. TCP/IP sockets, UNIX domain sockets) Symbolic links (Verweise) /bin /dev /etc /usr /var commands devices startup and configura4on files /lib /man /local /

5 Filesystem Hierarchy Standard 1 Primäre Hierarchie (Auswahl) /bin: Wesentliche Befehle (für Benutzer) /etc: sdateien /dev: Gerätedateien /lib: Wesentliche Bibliotheken /home: Benutzerverzeichnisse /media: Einhängepunkte für Wechselmedien /opt: Zusatzsoftware /proc: Virtuelles um Kernel- und Prozessinformation abzufragen /sbin: Wesentliche Systemkommandos /usr: Zweite Hierarchie für nicht rechnerspezifische, unveränderliche Dateien /usr/local: Dritte Hierarchie für rechnerspezifische Dateien /var: Hierarchie für veränderliche Datendateien 1 5

6 Einhängen von en (mount) Zusammenfassen mehrerer File-Systeme in einer Verzeichnisstruktur Eingebundenes ist entweder: lokal verfügbar (z.b. Partition einer Festplatte, Wechseldatenträger) verfügbar via Netzwerk (z.b. über NFS), oder befindet sich selbst in einem File (z.b. loop device für ISO-Images) Vorteil: unterschiedliche e gleichzeitig verwendbar 6

7 7 Vortragsblock Virtuelles Filesystem (VFS) Mehrere e gleichzeitig in Verwendung Kompatibilität zu anderen Systemen (z.b. NTFS, FAT) Sicherheit, Zuverlässigkeit der Daten (z.b. Ext4, ReiserFS) Performance (z.b. XFS) Einführung einer zusätzlichen Abstraktionsebene Gemeinsame Terminologie: superblock, inode, Verzeichnisse, Dateien Einheitliche Schnittstelle transparentes Einbinden verschiedener physikalischer e (Partitionen) in eine Directory-Struktur

8 File Descriptor: (kleine) nicht-negative Zahl Verweis auf Eintrag (= Index) in Tabelle offener Dateien (file descriptor table, ist Teil des aktuellen Prozesses) Standard I/O: Per Konvention; sind bei Programmstart geöffnet File descriptor Zweck POSIX Name 2 stdio Stream 0 Standardeingabe STDIN_FILENO stdin 1 Standardausgabe STDOUT_FILENO stdout 2 Fehlerausgabe STDERR_FILENO stderr Tabelle : Standard file descriptors 2 Definiert in <unistd.h> 8

9 9 Vortragsblock File Operationen Universell, auf alle Typen von Files Schlüsselfunktionen (man 2 Funktion): fd = open(pathname, flags, mode) Öffnet eine existierende Datei oder erstellt und öffnet eine neue Datei Flags (mit verknüpft): Zugriffsmodus: O_RDONLY, O_WRONLY, O_RDWR Erstellungsflags: z.b. O_CREAT, O_EXCL numread = read(fd, buffer, count) Liest count Anzahl an Bytes von einer geöffneten Datei numwritten = write(fd, buffer, count) Schreibt count Anzahl an Bytes in eine geöffnete Datei status = close(fd) Schließt eine geöffnete Datei

10 in C Standard I/O Bibliothek (Portabilität) 3 #include <stdio.h> Low-level, an UNIX I/O orientiert Gepuffert Stream Datentyp: FILE, enthält u.a. File Descriptor, Zeiger auf Puffer, aktuelle Position, EOF und Error Flags Vordefinierte Streams stdin, stdout, stderr Konvention: Befehle beginnen mit f : fopen(3), fdopen(3), fwrite(3), fprintf(3),... Stream IO Puffer 3 The functionality descends from a portable I/O package written IO OS by Mike Lesk at Bell Labs in the early 1970s. (Quelle: Wikipedia) 10

11 fopen(3) Die Datei path wird geöffnet, und mit Stream (Rückgabewert) verbunden FILE *fopen(const char *path, const char *mode); Unterschiedliche Modi: "r" : nur lesen "w" : nur schreiben (existierenden Inhalt löschen) "a" : nur schreiben (am Ende anhängen) "r+" / "w+" / "a+" : lesen und schreiben 4 4 Am Dateianfang positioniert / Datei auf Länge 0 gekürzt / Output stets am Dateiende 11

12 12 Vortragsblock fdopen(3) Assoziiert einen Stream mit einem file descriptor FILE *fdopen(int fd, const char *mode); Beispiel fd: Dateideskriptor mode: I/O Modus FILE* f; int fd; int fd = socket(af_inet, SOCK_STREAM,0); /*... */ if( (f = fdopen(fd, "r+"))!= NULL) { fprintf(f, "Meine Prozess-ID ist: %d\n", getpid()); }

13 fflush(3), fclose(3) fflush erzwingt das Schreiben von gepufferten Daten int fflush(file *stream); fclose ruft fflush auf und schließt den Stream sowie den zugrundeliegenden Deskriptor. int fclose(file *stream); Rückgabewert: 0 bei Erfolg, EOF im Fehlerfall ( errno) 13

14 14 Vortragsblock Lesen/Schreiben Funktion Beschreibung fread Lesen von n Elementen von je s Bytes fgets Lesen einer Zeile fgetc Lesen eines Zeichens fwrite Schreiben von n Elementen von je s Bytes fputs Schreiben eines C-Strings fputc Schreiben eines Zeichens fprintf Formatiertes Schreiben fseek Positionieren des Dateipositionszeigers Tabelle : Lese- und Schreiboperationen

15 Stream Status ferror ergibt den Fehlerstatus des Streams zurück (0 = error flag nicht gesetzt). int ferror(file *stream); feof fragt ab, ob das End-Of-File Flag des Streams gesetzt ist (wird beispielsweise von fgets und fgetc gesetzt, wenn das Ende der Datei erreicht wird) int feof(file *stream); clearerr löscht Fehlerstatus und EOF Flag int clearerr(file *stream); fileno gibt den File Descriptor eines Streams zurück int fileno(file *stream); z.b. fileno(stdout) 1 15

16 Beispiel #define SIZE 512 void error_exit(const char *msg); int main(int argc, char **argv) { char buffer[size]; FILE *f; char *file_name =... ; if( (f = fopen(file_name, "r")) == NULL ) { error_exit("fopen failed"); } while (fgets(buffer, SIZE, f)!= NULL) { if( fputs(buffer, stdout) == EOF ) { error_exit("fputs failed"); } } if (ferror(f)) { error_exit("fgets failed"); } if (fclose(f)!= 0) { error_exit("fclose failed"); } return 0; } 16

17 17 Vortragsblock Was sind? 1. Methode der Interprozesskommunikation, auf einem Host (Computer) oder auf verschiedenen Hosts in einem Netzwerk 2. Kommunikationsendpunkt Typisches Client-Server Szenario; Prozesse kommunizieren durch Lesen von und Schreiben auf den Dateideskriptor, der dem Socket zugeordnet ist

18 Üblicherweise Schnittstelle zur Transportschicht eines Kommunikationsprotokolls Application Layer (HTTP, SMTP) Transport Layer (TCP, UDP) (Raw ) Network Layer (IP, ARP) Link Layer (Ethernet Driver) 18

19 19 Vortragsblock Kommunikationsdomains und Sockettypen Adressfamilie (Network Layer) Internet Protocol, version 4 (IPv4) AF_INET man 7 ip Internet Protocol, version 6 (IPv6) AF_INET6 (IPv6) man 7 ipv6 Unix Domain (Lokale Interprozesskommunikation) AF_UNIX man 7 unix Sockettypen Verbindungsorientierte SOCK_STREAM, Default für IP ist TCP Verbindung wird eindeutig durch zwei Endpunkte identifiziert Verbindungslose SOCK_DGRAM, Default für IP ist UDP

20 Stream TCP/IP Protokoll Client/Server Verbindungsorientierter, bidirektionaler und zuverlässiger Kommunikationskanal Client und Server kommunizieren über das von Bytefolgen (keine Nachrichtengrenzen) Endpunkte identifizieren die Verbindung: Endpunkt Serverseite: Server IP + bekannte Portnummer Endpunkt Clientseite: Client IP + freie Portnummer 20

21 21 Vortragsblock Client-Server Beispiel

22 22 Vortragsblock System Call: socket() Erstellt einen Kommunikationsendpunkt (Socket) #include <sys/socket.h> int socket(int family, int type, int protocol); family Adressfamilie type Sockettyp protocol zu verwendendes Kommunikationsprotokoll Protokollfamilie + Typ implizieren üblicherweise Protokoll 0 für Default-Protokoll Rückgabewert: File descriptor des neu erstellten, -1 im Fehlerfall ( errno) Ressourcenfreigabe: close() Beispiel: int sockfd = socket(af_inet, SOCK_STREAM, 0);

23 Client-Server Beispiel 23

24 24 Vortragsblock System Call: bind() Ordnet dem neu erstellten Socket eine bestimmte Adresse zu int bind(int socket, struct sockaddr *address, socklen_t addr_len); socket identifiziert den zuvor erstellten Socket address Datenstruktur mit lokaler Adresse (polymorph) addr_len Größe der Addressdatenstruktur Rückgabewert: 0 bei Erfolg, -1 im Fehlerfall ( errno)

25 Socket Generische Datenstruktur für Socket - Adressen struct sockaddr { unsigned short sa_family; /* protocol family */ char sa_data[14]; /* address data. */ }; Argument zu connect(), bind() und accept() 25

26 Socket IPv4 Socket Adresse #include <netinet/in.h> struct sockaddr_in { /* address family: AF_INET */ sa_family_t sin_family; /* port in network byte order */ in_port_t sin_port; /* internet address */ struct in_addr sin_addr; /* pad to sizeof(struct sockaddr), must be all-zero */ unsigned char sin_zero[8]; }; /* Internet address. */ struct in_addr { /* address in network byte order */ uint32_t s_addr; }; Muss auf (struct sockaddr *) gecastet werden Für IPv6: struct sockaddr_in6 26

27 Socket 59.2 Network Byte Order Network Byte Order IP addresses and port numbers are integer values. One problem we encounter when passing these values across a network is that different hardware architectures store the bytes of a multibyte integer in different orders. As shown in Figure 59-1, architectures that store integers with the most significant byte first (i.e., at the lowest memory address) are termed big endian; those that store the least significant byte first are termed little endian. (The terms derive from Jonathan Swift s 1726 satirical novel Gulliver s Travels, in which the terms refer to opposing political factions who open their boiled eggs at opposite ends.) The most notable example of a littleendian architecture is x86. (Digital s VAX architecture was another historically IP Adressen und Portnummern sind (multi-byte) Integerwerte Organisation ist abhängig von HW-Architektur Byte-Reihenfolge für Datenaustausch über Netzwerk im Protokoll spezifiziert (IP: Big-Endian) Zur Konversion important example, zwischen since BSD host was widely undused network on that machine.) Byte order: Most other htonl(3), architectures ntohl(3), are big endian. ntohs(3) A few hardware architectures are switchable between htons(3), the two formats. The byte ordering used on a particular machine is called the host byte order. Big-endian byte order Little-endian byte order 2-byte integer address N 1 (MSB) address N 0 (LSB) address N (LSB) address N (MSB) address N 3 (MSB) address N 0 (LSB) 4-byte integer address N + 1 Figure 59-1: Big-endian and little-endian byte order for 2-byte and 4-byte integers 2 address N address N + 2 address N (LSB) address N + 2 address N (MSB) MSB = Most Significant Byte, LSB = Least Significant Byte Quelle: Michael Kerrisk - The Linux Programming Interface, p Since port numbers and IP addresses must be transmitted between, and understood by, all hosts on a network, a standard ordering must be used. This ordering is 27

28 Socket Adresskonversion Konvertiert IPv4 und IPv6 Adressen von einer textuellen Repräsentation in Binärformat (network byte order): inet_pton(3) #include <arpa/inet.h> int inet_pton(int domain, const char *src_str, void *addrptr ); domain AF_INET oder AF_INET6 src_str Textuelle Repräsentation, z.b. " " addrptr Zeiger auf ein struct in_addr oder struct in6_addr (je nach Domain) Rückgabewert: 1 bei Erfolg, 0 falls src_str nicht im presentation format, -1 im Fehlerfall 28

29 29 Vortragsblock Socket Beispiel struct sockaddr_in sin; memset(&sin, 0, sizeof sin); sin.sin_family = AF_INET; sin.sin_port = htons(6699); /* automatically bind to local address (server) */ sin.sin_addr.s_addr = INADDR_ANY; /* or specify one (client) */ if (inet_pton(af_inet, " ", &sin.sin_addr) <= 0) /* ERROR */... ; /* use address, e.g. for binding in server */ bind(sockfd, (struct sockaddr *)&sin, sizeof sin); Alle Portnummern <1024 sind reserviert, Höchste Portnummer: (16 bit)

30 Protokollunabhängige Host und Service Konversion Der moderne Ansatz Erzeugen einer passenden Socket-Adresse mit getaddrinfo(3) int getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res); node Hostname (z.b. localhost, google.com ), IP-Addresse (z.b ), oder NULL (bei Verwendung für bind()) service ist Portnr. oder Servicename (z.b. 80, http ) hints Auswahlkriterien res Resultat ist verkettete Liste von struct addrinfo Berücksichtigt network byte order Siehe auch freeaddrinfo(3), gai_strerror(3) 30

31 Beispiel: getaddrinfo() Server struct addrinfo hints; struct addrinfo *ai, *aip; int fd, res; memset(&hints, 0, sizeof hints); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_PASSIVE; /* <-- */ res = getaddrinfo(null, "1280", &hints, &ai);... aip = ai; fd = socket(aip->ai_family, aip->ai_socktype, aip->ai_protocol);... /* Assign the address to the socket */ res = bind(fd, aip->ai_addr, aip->ai_addrlen);... freeaddrinfo(ai); 31

32 Beispiel: getaddrinfo() Client struct addrinfo hints; struct addrinfo *ai, *aip; int fd, res; memset(&hints, 0, sizeof hints); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; res = getaddrinfo("localhost", "1280", &hints, &ai);... aip = ai; fd = socket(aip->ai_family, aip->ai_socktype, aip->ai_protocol);... /* Connect the socket to the address */ res = connect(fd, aip->ai_addr, aip->ai_addrlen);... freeaddrinfo(ai); 32

33 Client-Server Beispiel 33

34 System Call: listen() Server ist bereit Verbindungen anzunehmen int listen(int socket, int backlog); socket identifiziert den zuvor erstellten Socket backlog Anzahl an Verbindungsanfragen, die vom Betriebssystem in einer Warteschlange verwaltet werden, bis der Server die Verbindungen annimmt (Richtwert: 5) Rückgabewert: 0 bei Erfolg, -1 im Fehlerfall ( errno) Für verbindungsorientierte Protokolle 34

35 Socket Optionen Nützlich um bei Restart des Servers den Address already in use (EADDRINUSE) bei bind() zu vermeiden: int optval = 1; setsockopt(serverfd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof optval); Sonst erneutes bind() erst nach Ablauf des TIME_WAIT Zustands im Socket möglich (ca. 1 min.) Siehe auch setsockopt(2), socket(7), ip(7) 35

36 Client-Server Beispiel 36

37 System Call: accept() Warten auf eingehende Verbindungen (passiver ) int accept(int socket, struct sockaddr *address, socklen_t *addr_len); address wird mit Addresse des Clients beschrieben (Tatsächlicher Typ ist verbindungsabhängig, z.b. sockaddr_in), NULL möglich addr_len Größe der Addressdatenstruktur in address Blockiert bis zu einer Verbindungsanfrage eines Clients Rückgabewert ist ein Socket für die aufgebaute Verbindung (ein Dateideskriptor), -1 im Fehlerfall ( errno) 37

38 System Call: connect() Aktiver (Client) int connect(int socket, const struct sockaddr *address, socklen_t addr_len); socket Der im Client erstellte Socket address spezifiziert die Adresse des Servers addr_len Größe der Addressdatenstruktur in address Kehrt nach dem Handshake zum Aufrufer zurück Das Betriebssystem des Clients wählt üblicherweise beliebigen, nicht verwendeten Port 38

39 Client-Server Beispiel 39

40 write() und read() Nach dem können Daten mittels file descriptor auf den Socket geschrieben (write()) und von ihm gelesen (read()) werden Mit fdopen() ist auch möglich (Pufferung beachten!) Möglicherweise weniger Bytes übertragen als angefordert Schleife notwendig, z.b.: ssize_t num; size_t total; char buf[buf_size]; for (total = 0; total < n; ) { num = read(fd, &buf[total], n - total); /*... error handling omitted here... */ total += num; } 40

41 41 Vortragsblock Spezialisierungen send() und recv() Spezialisierungen von write() und read() für Rückgabewert und ersten drei Argumente wie bei write() und read() Zusätzliches Argument: Bitmaske flags int send(int socket, const void *msg, size_t msg_len, int flags); int recv(int socket, void* buf, size_t buf_len, int flags); Beispiele für Flags: MSG_DONTWAIT Nichtblockierendes Senden/ MSG_WAITALL Blockieren bis alle Daten empfangen (Ausnahme: Fehler, Signal erhalten)

42 42 Vortragsblock Client-Server Beispiel

43 Signal = Benachrichtigung eines Prozesses über ein Ereignis (software interrupt) Hardware Exception, z.b. Speicherschutzverletzung (SIGSEGV), Division durch 0 (SIGFPE) Benutzer generiert Signal per Terminal, z.b. interrupt (SIGINT, <Ctrl>-C), suspend (SIGTSTP, <Ctrl>-Z) Software Event, z.b. Timer ist abgelaufen (SIGALRM, s. alarm(2)), Kindprozess ist beendet (SIGCHLD) Durch Nummer definiert, symbolische Namen: SIGxxxx siehe signal(7) Erzeugen von n u.a. kill(1), kill(2), raise(3), abort(3) Beispiele: kill 1521 (SIGTERM) kill (SIGKILL) 43

44 44 Vortragsblock Signalbehandlung Ereignis generiert Signal Signal ist pending Signal wird delivered Standardaktionen: ignorieren, terminieren, core dump (Speicherabbild), anhalten, fortsetzen Für die meisten kann Reaktion des Programms konfiguriert werden Standardaktion / Ignorieren / eigener Ausnahmen: SIGKILL und SIGSTOP über sigaction(2) Delivery kann über die Signalmaske des Prozesses blockiert werden

45 Invocation of a signal handler may interrupt the main program flow at an Signalbehandlungsroutinen time; the kernel calls the handler on the process s behalf, and when the handl Ablauf returns, execution of the program resumes at the point where the handler inte rupted it. This sequence is illustrated in Figure Main program start of program Kernel calls signal handler on behalf Delivery of process of signal 2 1 instruction m instruction m+1 exit() flow of execution Program resumes at point of interruption Figure 20-1: Signal delivery and handler execution 4 Signal handler Code of signal handler is executed return Although signal handlers can do virtually anything, they should, in general, b designed to be as simple as possible. Quelle: We Michael expand Kerrisk -on The this Linux Programming point Section Interface, p Listing 20-1: Installing a handler for SIGINT 45

46 Signalbehandlungsroutinen C-Funktion, Signalnummer als Parameter void handle_signal(int signal); Reaktion auf asynchrone Ereignisse sollte so einfach wie möglich sein Vorsicht bei Verwendung von statischen Variablen (Konsistenz) Nur bestimmte Funktionen sind zugelassen (async-signal-safe); u.a. nicht: malloc(), printf(), exit(),... Handler kann durch weiteres Signal unterbrochen werden (Blockieren von n über Maske) 46

47 Signalbehandlungsroutinen Handler-Design 1. Aufräumen und Terminieren (mittels _exit()) 2. Globales Flag setzen und Routine verlassen Spezieller ganzzahliger Datentyp: sig_atomic_t volatile sig_atomic_t want_quit = 0; void handle_signal(int signal) { want_quit = 1; } int main(int argc, char **argv) {... while (!want_quit) {... }... } 47

48 Signalbehandlungsroutinen Blockierende System- und Library-Calls unterbrechen Ausführung von Betriebssystemroutinen Option 1: Transparenter Neustart (BSD Semantik) Option 2: Fehlercode EINTR (SysV Semantik) while ((cnt = read(fd, buf, BUF_SIZE)) == -1 && errno == EINTR) /* NOP */; if (cnt == -1) { /* read failed with other than EINTR */ error_exit("read"); } bzw. Flag SA_RESTART bei 48

49 49 Vortragsblock Signalbehandlung konfigurieren #include <signal.h> struct sigaction { void (*sa_handler)(int); sigset_t sa_mask; int sa_flags;... }; sa_handler Signalbehandlungsroutine (s. Folie 46), oder SIG_DFL, oder SIG_IGN sa_mask Weitere, die im Handler geblockt werden sollen sa_flags Zusätzliche Optionen (verknüpft mit ), z.b.: SA_NODEFER, SA_RESETHAND, oder SA_RESTART

50 Signalbehandlung konfigurieren int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); Konfiguriert Behandlung für das Signal signum Falls act NULL, wird die Signalbehandlungskonfiguration übernommen Falls oldact NULL, wird die vorherige darin gespeichert 50

51 Signalbehandlung konfigurieren Beispiel struct sigaction s; /* Signalbehandlungsroutine */ s.sa_handler = handle_signal; /* Neustart unterbrochener Betriebssystemroutinen */ s.sa_flags = SA_RESTART; /* Blockieren von weiteren n (sigsetops(3)). Maske muss initialisiert werden! */ sigemptyset(&s.sa_mask); sigaddset(&s.sa_mask, SIGALRM); /* Signalbehandlung fuer SIGINT via sigaction(2) konfigurieren */ sigaction(sigint, &s, NULL); 51

52 Material OSUE-Wiki Operating_Systems_UE Erweiterungen, Verbesserungen und Korrekturen erwünscht The GNU C Library Reference Manual, Ch. 12 () und 24 () Beej s Guide to Network Programming singlepage/bgnet.html 52

53 1. 1a: Implementierung eines einfachen UNIX Tools Kennenlernen der Programmiersprache C Argumentbehandlung Kennenlernen von Makefiles 1b: Server und Client für mastermind Kommunikation via Implementierung eines einfachen, binären Protokolls Sourcecode für Server ist zum Teil vorgegeben Optional: Entwicklung einer Spielstrategie in C 53

54 Mastermind Beispiel 54

55 Abwicklung des Spiels 1 Server, 1 Client Kommunikation via TCP/IP Ziel: Erraten der geheimen Farbfolge Client übermittelt vermutete Folge (2 Byte) Server antwortet mit einem Byte Anzahl korrekt positionierter Farben Anzahl falsch positionierter Farben Statusflags (Ende des Spiels, Paritätsfehler) Einfaches binäres Protokoll 55

56 Ende des Spiels Spieler errät die Geheimfolge (Ausgabe Anzahl gespielter Runden) Erreichen der maximalen Anzahl von Runden (Server signalisiert Ende des Spiels) Paritätsfehler (z.b. falsch berechnet) Andere Fehler (z.b. Verbindungsfehler) 56

57 Bewertung: Korrekte Clients/Server Protokoll korrekt implementiert Einhalten der maximalen Antwortzeit (1 Sekunde) Korrekte Berechnung der Serverantwort Terminieren mit dem korrekten Exitcode Ausgabe der korrekten Anzahl gespielter Runden Korrekte Argumentbehandlung Korrekte Signalbehandlung Einhaltung der Richtlinien zu den n courses/osue/richtlinien 57

58 Formale Richtlinien Wichtig Nichteinhaltung der formalen Richtlinien führt zu Punkteabzügen oder keiner Abnahme des Beispiels (0 Punkte)! Häufigste Fehler Nicht im TI-Lab getestet ( Bei mir zuhause hat es aber funktioniert!!1! ) Rückgabewerte nicht überprüft (Fehler abfangen, defensive Programmierung) Ressourcen nicht explizit freigegeben Fehlende Usage-Meldung und mangelhafte Argumentbehandlung (auch Anzahl überprüfen!) Hinweis: Keine Rejectabgabe für Beispiel 1 58

59 Spielstrategien Optional: Implementierung von Spielstrategien Gewinnstrategie: Strategie, die jedes Spiel in maximal 34 Zügen gewinnt Bonuspunkte für gute und ausgezeichnete Implementierungen Gut (+5): Gewinnstrategie, im Schnitt 20 oder weniger Runden Ausgezeichnet (+10): Gewinnstrategie, im Schnitt 8 oder weniger Runden Viel Spaß! 59

Benedikt Huber. 9. Oktober 2012

Benedikt Huber. 9. Oktober 2012 Vortragsblock Benedikt Huber Institut für Technische Informatik Technische Universität Wien - 182.709 Betriebssysteme UE 2012W 9. Oktober 2012 Überblick Richtlinien zur Entwicklung eines s Programmerstellung

Mehr

Beispiel Block 1 Programmierrichtlinien und Fehlerbehandlung Argumentbehandlung Stream I/O Signale Sockets Übungsaufgaben. Benedikt Huber SS 2012

Beispiel Block 1 Programmierrichtlinien und Fehlerbehandlung Argumentbehandlung Stream I/O Signale Sockets Übungsaufgaben. Benedikt Huber SS 2012 Beispiel Block 1 Programmierrichtlinien und Fehlerbehandlung Argumentbehandlung Stream I/O Signale Sockets Übungsaufgaben Benedikt Huber SS 2012 1 Übungsbeispiel 1 Allgemeines Programmerstellung 2 Entwicklung

Mehr

Beispiel Block 1 Programmierrichtlinien und Fehlerbehandlung Argumentbehandlung Signale Sockets Übungsaufgaben. Benedikt Huber WS 2011/2012

Beispiel Block 1 Programmierrichtlinien und Fehlerbehandlung Argumentbehandlung Signale Sockets Übungsaufgaben. Benedikt Huber WS 2011/2012 Beispiel Block 1 Programmierrichtlinien und Fehlerbehandlung Argumentbehandlung Signale Sockets Übungsaufgaben Benedikt Huber WS 2011/2012 1 Organisatorisches Vorlesung am Dienstag den 18.10.2011 entfällt

Mehr

Operating Systems Principles. Event Queue

Operating Systems Principles. Event Queue Humboldt University Computer Science Department Operating Systems Principles Event Queue 1. Aufgabe 3 Wochen Zeit zum Lösen der Aufgaben Aufgabenstellung auf der SAR Website Abgabe über GOYA Abgabefrist:

Mehr

Ein-/Ausgabe, Dateisystem. Kapitel 9: Ein-/Ausgabe. Programmieren in C für Elektrotechniker. Programmieren in C. Dateisystem. Programmieren in C

Ein-/Ausgabe, Dateisystem. Kapitel 9: Ein-/Ausgabe. Programmieren in C für Elektrotechniker. Programmieren in C. Dateisystem. Programmieren in C für Elektrotechniker Kapitel 9: Dateisystem, Dateisystem E/A-Konzept in UNIX und C UNIX (und damit auch C) verwendet Datenströme (streams) als Konzept zur Verbindung von Programmen mit E/A-Geräten und

Mehr

Projekt: Web-Server. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2014

Projekt: Web-Server. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2014 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

J-1 Überblick. 1 Binden von Sockets. Besprechung 6. Aufgabe (jsh) Domain, z. B. (PF_ = Protocol Family) Byteorder bei Netzwerkkommunikation

J-1 Überblick. 1 Binden von Sockets. Besprechung 6. Aufgabe (jsh) Domain, z. B. (PF_ = Protocol Family) Byteorder bei Netzwerkkommunikation J 8. Übung J 8. Übung J-1 Überblick #include int socket(int domain, int type, int protocol); Besprechung 6. Aufgabe (jsh) Byteorder bei Netzwerkkommunikation Domain, z. B. (PF_ = Protocol

Mehr

System-Programmierung 9: Sockets. CC BY-SA, Thomas Amberg, FHNW (soweit nicht anders vermerkt)

System-Programmierung 9: Sockets. CC BY-SA, Thomas Amberg, FHNW (soweit nicht anders vermerkt) System-Programmierung 9: Sockets CC BY-SA, Thomas Amberg, FHNW (soweit nicht anders vermerkt) Ablauf heute ⅔ Vorlesung, ⅓ Hands-on, Feedback. Slides, Code & Hands-on: tmb.gr/syspr-9 Sockets Sockets sind

Mehr

Kommunikationsnetze. 2. Direkte TCP/IP-Verbindungen 2.1 Höhere Programmiersprachen

Kommunikationsnetze. 2. Direkte TCP/IP-Verbindungen 2.1 Höhere Programmiersprachen Kommunikationsnetze Gliederung 1. Socket-Programmierung unter C 2. Socket-Programmierung unter Java Gliederung Berkeley Sockets (Erste freie TCP/IP-Implementierung in Berkeley UNIX): SOCKET: Erzeugen eines

Mehr

7. Tafelübung. Socket - Erzeugung. Netzwerkkommunikation und Byteorder. Binden von Sockets. Lösung der jsh-aufgabe. Erläuterung der rshd-aufgabe

7. Tafelübung. Socket - Erzeugung. Netzwerkkommunikation und Byteorder. Binden von Sockets. Lösung der jsh-aufgabe. Erläuterung der rshd-aufgabe 7. Tafelübung Lösung der jsh-aufgabe Erläuterung der rshd-aufgabe Sockets Socket - Erzeugung s = socket(domain, type, protocol) Domain, z.b. AF_INET: Internet AF_UNIX: Unix Filesystem AF_APPLETALK: Appletalk

Mehr

1 Client-Server-Modell

1 Client-Server-Modell U1 Interprozesskommunikation mit Sockets U1 Interprozesskommunikation mit Sockets U1-1 Organisatorisches U1-1 Organisatorisches Organisatorisches IPC-Grundlagen Adressierung in IP-Netzwerken Betriebssystemschnittstelle

Mehr

U1 Interprozesskommunikation mit Sockets U1 Interprozesskommunikation mit Sockets

U1 Interprozesskommunikation mit Sockets U1 Interprozesskommunikation mit Sockets U1 Interprozesskommunikation mit Sockets U1 Interprozesskommunikation mit Sockets Organisatorisches Client-Server-Modell Kommunikation innerhalb eines Systems Kommunikation über Systemgrenzen hinweg Betriebssystemschnittstelle

Mehr

Rechnerübungen von Systemprogrammierung 1 und 2 finden gleichzeitig statt (Vgl. Univis "Rechnerübungen zu Systemprogrammierung 1&2") Organisatorisches

Rechnerübungen von Systemprogrammierung 1 und 2 finden gleichzeitig statt (Vgl. Univis Rechnerübungen zu Systemprogrammierung 1&2) Organisatorisches U1 Interprozesskommunikation mit Sockets U1 Interprozesskommunikation mit Sockets U1-1 Organisatorisches U1-1 Organisatorisches Organisatorisches Client-Server-Modell Kommunikation innerhalb eines Systems

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN UNIX/Linux-Interprozesskommunikation, zugehörige Systemaufrufe und Kommandos 12. UNIX/Linux-Sockets Wintersemester 2016/17 UNIX/Linux-IPC-Mechanismen Nachrichtenbasierter

Mehr

Übungen zu Systemprogrammierung I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2003 H-Uebung6.fm

Übungen zu Systemprogrammierung I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2003 H-Uebung6.fm H 6. Übung H 6. Übung H.1 Überblick Besprechung 4. Aufgabe (mysh) Signale (Fortsetzung) Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung - Sockets Duplizieren von Filedeskriptoren Netzwerkprogrammierung

Mehr

Systemnahe Programmierung in C/C++

Systemnahe Programmierung in C/C++ Systemnahe Programmierung in C/C++ Signalbehandlung & MMap Knut Stolze stolze@informatik.uni-jena.de Lehrstuhl für Datenbanken und Informationssysteme Fakultät für Mathematik und Informatik 2006 11 29

Mehr

Netzwerk-Programmierung in C

Netzwerk-Programmierung in C 1 / 26 Netzwerk-Programmierung in C Oliver Bartels Fachbereich Informatik Universität Hamburg 2 Juli 2014 2 / 26 Inhaltsverzeichniss 1 IPv4 und IPv6 Wie werden Daten verschickt? 2 3 Verbindungsaufbau ohne

Mehr

Michael Golm, Universität Erlangen-Nürnberg, IMMD 4, 1999/2000 1999-12-20 14.51 / Tafelübung 7. Netzwerkkommunikation und Byteorder

Michael Golm, Universität Erlangen-Nürnberg, IMMD 4, 1999/2000 1999-12-20 14.51 / Tafelübung 7. Netzwerkkommunikation und Byteorder 7. Tafelübung Lösung der jsh-aufgabe Erläuterung der rshd-aufgabe Sockets 83 Netzwerkkommunikation und Byteorder Wiederholung: Byteorder big endian little endian 0 1 2 3 11 aa bb cc cc bb aa 11 0x11aabbcc

Mehr

Protokolle und Schichten. Grundlagen der Rechnernetze Einführung 41

Protokolle und Schichten. Grundlagen der Rechnernetze Einführung 41 Protokolle und Schichten Grundlagen der Rechnernetze Einführung 41 Protokoll und Interface Host 1 Host 2 High Level Objekt High Level Objekt Service Interface Service Interface Protokoll Peer to peer Interface

Mehr

Beispiel Block 2 Stream I/O Parallele Prozesse: fork, exec und wait Interprozesskommunikation mit Unnamed Pipes

Beispiel Block 2 Stream I/O Parallele Prozesse: fork, exec und wait Interprozesskommunikation mit Unnamed Pipes File Descriptors Beispiel Block 2 Stream I/O Parallele Prozesse: fork, exec und wait Interprozesskommunikation mit Unnamed Pipes Verweis auf Eintrag in Tabelle offener Dateien (file descriptor table) Standard

Mehr

Übungen zu Systemprogrammierung 2 (SP2)

Übungen zu Systemprogrammierung 2 (SP2) Übungen zu Systemprogrammierung 2 (SP2) Ü2 IPC mit Sockets, Signale Andreas Ziegler, Stefan Reif, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität

Mehr

Michael Golm, Universität Erlangen-Nürnberg, IMMD 4, 1999/ / Tafelübung 5. Prozeß2 Prozeß3. Kernel

Michael Golm, Universität Erlangen-Nürnberg, IMMD 4, 1999/ / Tafelübung 5. Prozeß2 Prozeß3. Kernel 5. Tafelübung Lösung der ldir-aufgabe Erläuterung der jsh-aufgabe POSIX-Signale 46 IPC mit Signalen - Beispiele Ereignis ist eingetreten (SIGUSR1) Prozeß1 Prozeß2 Prozeß3 Prozeß4 kill-signal (SIGKILL)

Mehr

in Kommentaren, die sich auf einen bestimmten Übungsleiter beziehen, bitte dessen Namen jeder Zeile voranstellen Evaluation

in Kommentaren, die sich auf einen bestimmten Übungsleiter beziehen, bitte dessen Namen jeder Zeile voranstellen Evaluation U9 Interprozesskommunikation mit Sockets U9 Interprozesskommunikation mit Sockets U9-1 Hinweise zur Evaluation U9-1 Hinweise zur Evaluation Evaluation Byteorder bei Netzwerkkommunikation Sockets Verschiedenes

Mehr

Übungen zu Systemprogrammierung 2 (SP2)

Übungen zu Systemprogrammierung 2 (SP2) Übungen zu Systemprogrammierung 2 (SP2) Ü2 IPC mit Sockets, Signale Andreas Ziegler, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg

Mehr

Tafelübung zu BS 4. Interprozesskommunikation

Tafelübung zu BS 4. Interprozesskommunikation Tafelübung zu BS 4. Interprozesskommunikation Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/

Mehr

Computer and Communication Systems (Lehrstuhl für Technische Informatik) Socket-Programmierung

Computer and Communication Systems (Lehrstuhl für Technische Informatik) Socket-Programmierung Computer and Communication Systems (Lehrstuhl für Technische Informatik) Socket-Programmierung [RN] Sommer 2012 Socket - Programmierung 1 Überblick Allgemeine Grundlagen für die Socket-Programmierung Elementare

Mehr

Operating Systems Principles. Eventund. Threadbasierte Programmierung

Operating Systems Principles. Eventund. Threadbasierte Programmierung Humboldt University Computer Science Department Operating Systems Principles Eventund Threadbasierte Programmierung Aufgabe 2 Wochen Zeit zum Lösen der Aufgaben Aufgabenstellung auf der SAR Website Abgabe

Mehr

# Socketprogrammierung

# Socketprogrammierung # Socketprogrammierung Socketprogrammierung in C/C++ Christian Benjamin Ries 21.02.2008 Dipl.-Ing. (FH) Christian Benjamin Ries 1 # Agenda Ziel Einführung Netzwerkprotokolle Was sind Sockets? Funktionen

Mehr

Lösung Übungszettel 6

Lösung Übungszettel 6 Lösungen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik SS 03 AG Betriebssysteme FB3 Kirsten Berkenkötter Lösung Übungszettel 6 1 Aufgabe 1: Parallel-Server 1.1 Client #include

Mehr

Projekt: Web-Proxy. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015

Projekt: Web-Proxy. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

für IPv4 und IPv6 (Mitfinanziert durch die KTI)

für IPv4 und IPv6 (Mitfinanziert durch die KTI) Socketprogrammierung für IPv4 und IPv6 (Mitfinanziert durch die KTI) Andreas Hofmann, a.hofmann@fhbb.ch April, 2004 Inhaltsverzeichnis 1 Einleitung 4 1.1 Dokumenteninfo 4 1.2 Homepage 4 2 Daten-Strukturen

Mehr

Zusammenfassung für CS-Prüfung 3 Seite 1. CS-Zusammenfassung für Prüfung 3 vom Im Beispiel gibt es 3 Deadlocks

Zusammenfassung für CS-Prüfung 3 Seite 1. CS-Zusammenfassung für Prüfung 3 vom Im Beispiel gibt es 3 Deadlocks Zusammenfassung für CS-Prüfung 3 Seite 1 CS-Zusammenfassung für Prüfung 3 vom 24. 6. 2002 Deadlock Im Beispiel gibt es 3 Deadlocks Unterschied zwischen Blockieren, Verklemmen und Verhungenrn= -> Band 1

Mehr

Portieren von Anwendungen auf IPv6

Portieren von Anwendungen auf IPv6 Portieren von Anwendungen auf IPv6 Michael Stapelberg 2. IPv6-Kongress 20. Mai 2010 Über mich Student an der Uni Heidelberg seit über 10 Jahren im Internet Autor IPv6-fähiger Programme wie mxallowd, i3status

Mehr

C - Grundlagen und Konzepte

C - Grundlagen und Konzepte C - Grundlagen und Konzepte Networking in C Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg Vorgelegt von:

Mehr

U7-1 Hinweise zur Evaluation. U7-2 Netzwerkkommunikation und Byteorder. U7-3 Sockets. Evaluation. Frage "eigener Aufwand zur Vor- und Nachbereitung"

U7-1 Hinweise zur Evaluation. U7-2 Netzwerkkommunikation und Byteorder. U7-3 Sockets. Evaluation. Frage eigener Aufwand zur Vor- und Nachbereitung U7 Interprozesskommunikation mit Sockets U7 Interprozesskommunikation mit Sockets U7-1 Hinweise zur Evaluation U7-1 Hinweise zur Evaluation Evaluation Frage "eigener Aufwand zur Vor- und Nachbereitung"

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

Kommunikation von Prozessen: Signale und Pipes

Kommunikation von Prozessen: Signale und Pipes Netzwerk-Programmierung Kommunikation von Prozessen: Signale und Pipes Alexander Sczyrba Michael Beckstette {asczyrba,mbeckste}@techfak.uni-bielefeld.de Kommunikation von Prozessen Parent- und Child-Prozess

Mehr

Berkeley Sockets 187

Berkeley Sockets 187 Berkeley Sockets 187 Für TCP/IP gibt es zwei Schnittstellen, die beide zum POSIX-Standard gehören: Die Berkeley Sockets wurden 1983 im Rahmen von BSD 4.2 eingeführt. Dies war die erste TCP/IP-Implementierung.

Mehr

Rechnernetze II SS 2015. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404

Rechnernetze II SS 2015. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Rechnernetze II SS 2015 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 14. Juli 2015 Betriebssysteme / verteilte Systeme Rechnernetze

Mehr

Das Signalkonzept (T) Signale und Signalbehandlung (P)

Das Signalkonzept (T) Signale und Signalbehandlung (P) Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom 10.12. Foliensatz 6 Das Signalkonzept (T) (P) Thomas Schaaf, Nils gentschen Felde Lehr- und Forschungseinheit für Kommunikationssysteme

Mehr

Probeklausur zu Systemnahe Software II SS 2012 Dr. Andreas Borchert mit Markus Schnalke

Probeklausur zu Systemnahe Software II SS 2012 Dr. Andreas Borchert mit Markus Schnalke Probeklausur zu Systemnahe Software II SS 2012 Dr. Andreas Borchert mit Markus Schnalke 1 Aufgabe 1 (15 Punkte) Prozesse, Signale und Interprozesskommunikation (a) 3 Punkte Was wird von dem folgenden Programm

Mehr

Übungen zu Systemprogrammierung 2 (SP2)

Übungen zu Systemprogrammierung 2 (SP2) Übungen zu Systemprogrammierung 2 (SP2) Ü1 Interprozesskommunikation mit Sockets Christoph Erhardt, Jens Schedel, Jürgen Kleinöder Agenda 1.1 Organisatorisches 1.2 1.3 1.4 Ein-/Ausgabemechanismen 1.5 Gelerntes

Mehr

Parallelisierung mit Hilfe von Netzwerkdiensten 218

Parallelisierung mit Hilfe von Netzwerkdiensten 218 Netzwerkdienste 217 Ein Netzwerkdienst ist ein Prozess, der unter einer Netzwerkadresse einen Dienst anbietet. Ein Klient, der die Netzwerkadresse kennt, kann einen bidirektionalen Kommunikationskanal

Mehr

Internet Modell. Nothing stated. Bildquelle: Andrew S. Tanenbaum, Computer Networks, Fourth Edition, 2003 Grundlagen der Rechnernetze Einführung 50

Internet Modell. Nothing stated. Bildquelle: Andrew S. Tanenbaum, Computer Networks, Fourth Edition, 2003 Grundlagen der Rechnernetze Einführung 50 Internet Modell Nothing stated by TCP/IP model Bildquelle: Andrew S. Tanenbaum, Computer Networks, Fourth Edition, 2003 Grundlagen der Rechnernetze Einführung 50 Internet Protokolle Bildquelle: Andrew

Mehr

Dateien (1) Datenströme

Dateien (1) Datenströme Dateien (1) Datenströme Standardbibliothek bietet sogenannte Datenströme (engl. Streams) Objekte, in die Informationen geschrieben oder von denen Daten gelesen werden können Zum Arbeiten mit Dateien benötigt

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 9 I/O (2) Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät UNIX I/O UNIX I/O: ähnlich wie Standard-I/O, jedoch File-Deskriptoren

Mehr

Rechnernetze II WS 2012/2013. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404

Rechnernetze II WS 2012/2013. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Rechnernetze II WS 2012/2013 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 5. Mai 2014 Betriebssysteme / verteilte Systeme Rechnernetze

Mehr

IPv6 kompatible Programmierung unter Unix. Vortrag von Dipl. Inf. Matthias Scheler Paderborn, Juli 2004

IPv6 kompatible Programmierung unter Unix. Vortrag von Dipl. Inf. Matthias Scheler Paderborn, Juli 2004 1 IPv6 kompatible Programmierung unter Unix Vortrag von Dipl. Inf. Matthias Scheler Paderborn, Juli 2004 2 Was ist IPv6? Internet Protocol Version 6 (auch Internet Protocol Next Generation genannt) Nachfolger

Mehr

Attribute: Name (Zuweisung eines Namens durch Binding) Communication Domain Duplizieren von Filedeskriptoren. SoS I - Ü

Attribute: Name (Zuweisung eines Namens durch Binding) Communication Domain Duplizieren von Filedeskriptoren. SoS I - Ü U7 7. Übung U7 7. Übung U7-1 Überblick Endpunkte einer Kommunikationsverbindung Besprechung 4. Aufgabe (malloc) Arbeitsweise: FIFO, bidirektional Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung

Mehr

U7-2 Netzwerkkommunikation und Byteorder

U7-2 Netzwerkkommunikation und Byteorder U7 7. Übung U7 7. Übung U7-1 Überblick Besprechung 4. Aufgabe (malloc) Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung - Sockets Duplizieren von Filedeskriptoren Netzwerkprogrammierung - Verschiedenes

Mehr

Tafelübung zu BS 4. Dateioperationen

Tafelübung zu BS 4. Dateioperationen Tafelübung zu BS 4. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2013/bs/

Mehr

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam Aktuelle Fileposition ermitteln long pos; pos=ftell(fp); //aktuelle Bytenummer Filelaenge in Bytes fseek(fp,0,seek_end); pos=ftell(fp); Fileendeerkennung int rc; rc = feof (fp) //!= 0 bei Fileende // ==

Mehr

Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung - Sockets Netzwerkprogrammierung - Verschiedenes

Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung - Sockets Netzwerkprogrammierung - Verschiedenes U9 9. Übung U9 9. Übung Besprechung Aufgabe 7 (lash) Informationen zu Aufgabe 8 (simail) Byteorder bei Netzwerkkommunikation Netzwerkprogrammierung - Sockets Netzwerkprogrammierung - Verschiedenes U9.1

Mehr

Programmieren in C++

Programmieren in C++ Programmieren in C++ SS 2012 Vorlesung 7, Dienstag 19. Juni 2012 (Eingabe/Ausgabe, Optionen, ASSERT_DEATH) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen Institut für Informatik Universität

Mehr

Protokollgraph. Host 1. Host 2. Protokoll 2. Protokoll 1. Protokoll 3. Protokoll 4. Grundlagen der Rechnernetze Einführung 46

Protokollgraph. Host 1. Host 2. Protokoll 2. Protokoll 1. Protokoll 3. Protokoll 4. Grundlagen der Rechnernetze Einführung 46 Protokollgraph Host 1 Host 2 Protokoll 1 Protokoll 2 Protokoll 1 Protokoll 2 Protokoll 3 Protokoll 3 Protokoll 4 Protokoll 4 Grundlagen der Rechnernetze Einführung 46 Nachrichtenkapselung Host 1 Anwendung

Mehr

1 Communication Domain und Protokoll

1 Communication Domain und Protokoll U9 9. Übung U9 9. Übung U9-1 Netzwerkkommunikation und Byteorder U9-1 Netzwerkkommunikation und Byteorder Besprechung Aufgabe 7 (lash) Wiederholung: Byteorder Informationen zu Aufgabe 8 (simail) Byteorder

Mehr

Michael Dienert. 8. Dezember 2016

Michael Dienert. 8. Dezember 2016 C für Unverdrossene Michael Dienert 8. Dezember 2016 Vorbemerkung Natürlich könnte ich als erstes C-Programm Hello World nehmen. Um mit dem Kompiler zu spielen, kann man aber auch gleich einen sinnvolleren

Mehr

TCP-Sockets in Java und C. Verteilte Systeme Hochschule Regensburg Vorlesung 4, 25.04.2012 Universitätsstraße 31, 93053 Regensburg

TCP-Sockets in Java und C. Verteilte Systeme Hochschule Regensburg Vorlesung 4, 25.04.2012 Universitätsstraße 31, 93053 Regensburg TCP-Sockets in Java und C Hochschule Regensburg Vorlesung 4, 25.04.2012 Universitätsstraße 31, 93053 Regensburg Prof. Dr. Jan Dünnweber Ziel: Threads sollen unabhängig von ihrer Position kommunizieren

Mehr

182. stdio. 183. stdio. Eingabe. Ausgabe. Typisch für Zeileneingabe und Analyse: #include <stdio.h>

182. stdio. 183. stdio. Eingabe. Ausgabe. Typisch für Zeileneingabe und Analyse: #include <stdio.h> 182. stdio Eingabe int getchar (), getc (FILE * fp), fgetc (FILE * fp); char * gets (char * buf), * fgets (char * buf, int len, FILE * fp); int scanf (const char * fmt,...); int fscanf (FILE * fp, const

Mehr

Konsequenz für Forwarding Tabellen

Konsequenz für Forwarding Tabellen Konsequenz für Forwarding Tabellen Subnetznummer : 128. 96. 34. 0 Subnetzmaske : 255.255.255.128 128. 96. 34. 15 H1 128. 96. 34. 1 128. 96. 34.130 R1 Interface 1 Interface 2 128. 96. 34.128 255.255.255.128

Mehr

Beispiel / Übung: Prof. Dr. A. Christidis WS 2012/13

Beispiel / Übung: Prof. Dr. A. Christidis WS 2012/13 Beispiel / Übung: Erstellen Sie ein kurzes, plattform-unabhängiges C-Programm ( Konsolenanwendung ), das sich in die Reihe bereits gestarteter Kopien einordnet, sich nach 20 sec (Rechenzeit) abmeldet und

Mehr

Internetanwendungstechnik (Übung)

Internetanwendungstechnik (Übung) Internetanwendungstechnik (Übung) Sockets Stefan Bissell, Gero Mühl Technische Universität Berlin Fakultät IV Elektrotechnik und Informatik Kommunikations- und Betriebssysteme (KBS) Einsteinufer 17, Sekr.

Mehr

7.4 Kommunikation. großzügige Pufferung, sowohl Auftragsbeziehungen als auch Nachrichten- oder Byte-Ströme, sowohl lokal als auch übers Netz

7.4 Kommunikation. großzügige Pufferung, sowohl Auftragsbeziehungen als auch Nachrichten- oder Byte-Ströme, sowohl lokal als auch übers Netz 7.4 Kommunikation Kommunikation zwischen Benutzerprozessen (IPK) stellt andere Anforderungen als auftragsorientierte Kommunikation in mikrokernbasierten Betriebssystemen, vor allem großzügige Pufferung,

Mehr

Blatt 2, Kommunikationskanäle. Betriebssysteme. Deadlocks. Kommunikationskanäle. y=12; recv(k2, y); y = y+4; send(k1, y);

Blatt 2, Kommunikationskanäle. Betriebssysteme. Deadlocks. Kommunikationskanäle. y=12; recv(k2, y); y = y+4; send(k1, y); Blatt 2, Kommunikationskanäle Betriebssysteme Übung 7 Martin Alt Gruppe PVS Institut für Informatik Gegeben sind die beiden folgenden Prozesse: P 1 : P 2 : send(k2, x); recv(k1,z); recv(k2, y); send(k1,

Mehr

Input, Output, Dateien

Input, Output, Dateien Input, Output, Dateien C-Kurs 2013, 1. Tutorium Armelle Vérité http://wiki.freitagsrunde.org 8. September 2013 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. 1 / 21

Mehr

Device Management Schnittstellen. Referat von Peter Voser Embedded Development GmbH

Device Management Schnittstellen. Referat von Peter Voser Embedded Development GmbH Device Management Schnittstellen Referat von Peter Voser Embedded Development GmbH Device Management ist Gerätesteuerung Parametrisierung Zugang zu internen Messgrössen und Zuständen Software Upgrade www.embedded-development.ch

Mehr

E-/A-Funktionalität nicht Teil der Programmiersprache

E-/A-Funktionalität nicht Teil der Programmiersprache C Ein-/Ausgabe C Ein-/Ausgabe C.1 Überblick E-/A-Funktionalität nicht Teil der Programmiersprache Realisisierung durch "normale" Funktionen Bestandteil der Standard-Funktionsbibliothek einfache Programmierschnittstelle

Mehr

Ein- und Ausgabe mit Dateien

Ein- und Ausgabe mit Dateien Ein- und Ausgabe mit Dateien Edouard Lamboray Informatik I für D-ITET (2004) Ein- und Ausgabekonzepte in C und C++ fstream header Streamobjekt Files schreiben und lesen Argumente von main Vorbemerkungen

Mehr

Dateizugriff unter C

Dateizugriff unter C Begriffe Dateizugriff unter C Datei = sequentielle Ansammlung von Datenbytes, z.b. auf einer Festplatte Auch Bildschirm und Tastatur werden wie Dateien behandelt: Bildschirm ist die Datei stdout Tastatur

Mehr

Ein- und Ausgabe mit Dateien

Ein- und Ausgabe mit Dateien Ein- und Ausgabe mit Dateien Edouard Lamboray Informatik I für D-ITET (2004) Ein- und Ausgabekonzepte in C und C++ fstream header Streamobjekt Files schreiben und lesen Argumente von main 2 Vorbemerkungen

Mehr

Netzwerk-Programmierung. Netzwerke. Alexander Sczyrba Michael Beckstette.

Netzwerk-Programmierung. Netzwerke. Alexander Sczyrba Michael Beckstette. Netzwerk-Programmierung Netzwerke Alexander Sczyrba Michael Beckstette {asczyrba,mbeckste}@techfak.uni-bielefeld.de 1 Übersicht Netzwerk-Protokolle Protkollfamilie TCP/IP Transmission Control Protocol

Mehr

Netzwerkprogrammierung mit C++

Netzwerkprogrammierung mit C++ Netzwerkprogrammierung mit C++ Bernhard Trummer Linux User Group Graz für die Linuxtage03 bernhard.trummer@gmx.at 24. April 2003 Typeset by FoilTEX Übersicht System Calls: Wie erzeugt man Sockets? Wie

Mehr

Übungen zu Systemprogrammierung 2 (SP2)

Übungen zu Systemprogrammierung 2 (SP2) Übungen zu Systemprogrammierung 2 (SP2) Ü2 IPC mit Sockets, Signale C. Erhardt, J. Schedel, A. Ziegler, J. Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität

Mehr

Klausurdeckblatt. Name: Studiengang: Matrikelnummer:

Klausurdeckblatt. Name: Studiengang: Matrikelnummer: Klausurdeckblatt Name der Prüfung: Systemnahe Software II Datum und Uhrzeit: 21. Juli 2016, 10-12 Uhr Prüfer: Dr. Andreas F. Borchert Bearbeitungszeit: 120 Min. Institut: Numerische Mathematik Vom Prüfungsteilnehmer

Mehr

1 Fehler in Bibliotheksfunktionen. 1 Überblick. 2 Ziele der Aufgabe. Besprechung der 1. Aufgabe

1 Fehler in Bibliotheksfunktionen. 1 Überblick. 2 Ziele der Aufgabe. Besprechung der 1. Aufgabe U3 3. Übung U3 3. Übung U3-1 Fehlerbehandlung U3-1 Fehlerbehandlung Besprechung der 1. Aufgabe Fehlerbehandlung Infos zur Aufgabe 3: malloc-implementierung U3.1 Fehler können aus unterschiedlichsten Gründen

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 10: Arbeiten mit Prof. Dr. Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen 3. Variable und Datentypen in C 4. Bildschirm

Mehr

Übungen zu Systemprogrammierung 2 (SP2)

Übungen zu Systemprogrammierung 2 (SP2) Übungen zu Systemprogrammierung 2 (SP2) Ü1 Interprozesskommunikation mit Sockets C. Erhardt, J. Schedel, A. Ziegler, J. Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität

Mehr

U8-3 Netzwerkkommunikation und Byteorder. U8-2 Evaluation. U8-4 Sockets. U8-1 Überblick. Wiederholung: Byteorder. 0 1 2 3 14 a2 b5 c8 0x14a2b5c8

U8-3 Netzwerkkommunikation und Byteorder. U8-2 Evaluation. U8-4 Sockets. U8-1 Überblick. Wiederholung: Byteorder. 0 1 2 3 14 a2 b5 c8 0x14a2b5c8 U8 8. Übung U8 8. Übung U8-3 Netzwerkkommunikation und Byteorder U8-3 Netzwerkkommunikation und Byteorder U8-1 Überblick Wiederholung: Byteorder Besprechung der Miniklausur Online-Evaluation big endian

Mehr

Programmiertechnik 1. Unit 12: Programmiersprache C - Betriebssystemschnittstellen. Andreas Polze 1

Programmiertechnik 1. Unit 12: Programmiersprache C - Betriebssystemschnittstellen. Andreas Polze 1 Programmiertechnik 1 Unit 12: Programmiersprache C - Betriebssystemschnittstellen Andreas Polze 1 Ablauf Zugriff auf Betriebssystemdienste Dateideskriptoren low-level I/O read and write open, creat, close,

Mehr

Netzwerkprogrammierung mit Sockets und C. Ulrich Vogel

Netzwerkprogrammierung mit Sockets und C. Ulrich Vogel Netzwerkprogrammierung mit Sockets und C Ulrich Vogel Netzwerkprogrammierung mit Sockets und C von Ulrich Vogel Dieses Tutorial ist eine Einführung in die Netzwerkprogrammierung mit Hilfe von Sockets.

Mehr

Übungen zu Systemprogrammierung 2 (SP2)

Übungen zu Systemprogrammierung 2 (SP2) Übungen zu Systemprogrammierung 2 (SP2) Ü1 Interprozesskommunikation mit Sockets Christian Eichler, Andreas Ziegler, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität

Mehr

Programmieren mit sockets

Programmieren mit sockets Netzwerk - Programmierung Programmieren mit sockets Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de Madis Rumming mrumming@cebitec.uni-bielefeld.de Übersicht Datentypen und Konversionsfunktionen minimaler

Mehr

5. Dateioperationen. Tafelübung zu BSRvS1. Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund

5. Dateioperationen. Tafelübung zu BSRvS1. Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund Tafelübung zu BSRvS1 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/exercises/

Mehr

Dateioperationen Fachhochschule Würzburg-Schweinfurt Prof. Dr. Martin Ochs. Abspeichern und Einlesen von Texten (Strings) in Dateien

Dateioperationen Fachhochschule Würzburg-Schweinfurt Prof. Dr. Martin Ochs. Abspeichern und Einlesen von Texten (Strings) in Dateien Informatik I SS 2003 Dateioperationen 1 Textdateien, Öffnen Abspeichern und Einlesen von Texten (Strings) in Dateien 1. Das Öffnen einer Datei a) Deklaration eines Zeigers auf eine Datei FILE *pfile; b)

Mehr

Programmieren mit sockets

Programmieren mit sockets Netzwerk-Programmierung Programmieren mit sockets Sven Hartmeier shartmei@techfak.uni-bielefeld.de Übersicht Datentypen und Konversionsfunktionen minimaler Client minimaler Server Netzwerk-Programmierung

Mehr

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz Patrick Schulz patrick.schulz@paec-media.de 29.04.2013 1 Einführung Einführung 2 3 4 Quellen 1 Einführung Einführung 2 3 4 Quellen Hello World in Java Einführung 1 public class hello_ world 2 { 3 public

Mehr

Tafelübung zu BS 5. Dateioperationen

Tafelübung zu BS 5. Dateioperationen Tafelübung zu BS 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2014/bs/

Mehr

Dateien. INE2, Mittwoch / TE402 M. Thaler, Office TG208. ZHAW, M. Thaler, K. Rege, G.

Dateien. INE2, Mittwoch / TE402 M. Thaler, Office TG208.  ZHAW, M. Thaler, K. Rege, G. Dateien INE2, Mittwoch 8.00-9.35 / TE402 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was gehtes? Informationsaustausch Programme tauschen Information mit Umgebung über - Kommandozeilen-Argumente

Mehr

Kernel. Prototyp. Besprechung 3. Aufgabe. POSIX-Signale. tms Datenstruktur. Betriebssystem erfasst die Rechenzeit der Prozesse. Prozess3 (SIGUSR1)

Kernel. Prototyp. Besprechung 3. Aufgabe. POSIX-Signale. tms Datenstruktur. Betriebssystem erfasst die Rechenzeit der Prozesse. Prozess3 (SIGUSR1) 29 Überblick über die 6. Übung Überblick über die 6. Übung 30 Rechenzeiterfassung (2) Rechenzeiterfassung Besprechung 3. Aufgabe Rechenzeiterfassung #include POSIX- clock_t times(struct tms

Mehr

File I/O mit CRTL unter OpenVMS

File I/O mit CRTL unter OpenVMS DECUS München Symposium - Bonn File I/O mit CRTL unter OpenVMS Hartmut Becker März 2000 Seite 1 Themen Die Aufgabe Den Durchsatz erhöhen Die Feinheiten File I/O mit CRTL unter OpenVMS Seite 2 Die Aufgabe

Mehr

Einführung in die Netzwerkprogrammierung mit Sockets und C

Einführung in die Netzwerkprogrammierung mit Sockets und C Einführung in die Netzwerkprogrammierung mit Sockets und C 1 BrB/V0.1 1 Vorwort Dieses Tutorial ist eine Einführung in die Netzwerkprogrammierung mit Hilfe von Sockets und der Programmiersprache C. Als

Mehr

Verteilte Systeme. Überblick. IPC-Grundlagen Überblick (2) IPC-Grundlagen Überblick

Verteilte Systeme. Überblick. IPC-Grundlagen Überblick (2) IPC-Grundlagen Überblick Verteilte Systeme Überblick Jürgen Kleinöder Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) www4.cs.fau.de Sommersemester 2013 5 Interprozesskommunikation

Mehr