PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

Größe: px
Ab Seite anzeigen:

Download "PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN"

Transkript

1 PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN UNIX/Linux-Interprozesskommunikation ( Nachrichtenwarteschlangen ) Wintersemester 201/17

2 Message Queues: Systemaufrufe msgget(...) legt neue Message Queue an oder greift auf existierende Message Queue zu msgsnd(...) fügt Nachricht in Message Queue ein ( message send ) msgrcv(...) entnimmt Nachricht aus einer Message Queue ( message receive ) msgctl(...) [ cotrol ] führt verschiedene Operationen (insbesondere an Verwaltungsstruktur) einer Message Queue aus; u.a. auch Löschen der gesamten Message Queue Wäscheleinen -Modell msgget erzeugt Wäscheleine hängt Wäschestücke auf msgsnd msgrcv entnimmt Wäschestücke ws 201/17 H.-A. Schindler Folie: 5-2

3 Message Queues: msgget(..) legt neue Message Queue an oder greift auf existierende Message Queue zu Verwendung im Programm (Prinzip): int <id_q>; <id_q> = msgget(<key>, <flag>); Konkretes Beispiel: int id; id = msgget(ipc_private, IPC_CREAT 044); Variable Symbol Typ Bedeutung Wert Interpretation <id_q> int Rückkehrwert 0 O.K. auf <id_q>: Identifikator der Warteschlange -1 Feh- Systemaufruf fehlgeschlagen ler <key> long numerischer bei Eintrag: IPC_PRIVATE wird Schlüssel Schlüssel durch UNIX/L. selbst erzeugt (siehe auch nachfolgende Hinweise) ws 201/17 H.-A. Schindler Folie: 5-3

4 Message Queues: msgget(..) legt neue Message Queue an oder greift auf existierende Message Queue zu Verwendung im Programm (Prinzip): int <id_q>; <id_q> = msgget(<key>, <flag>); Konkretes Beispiel: int id; id = msgget(20, IPC_CREATE 044); Variable Symbol Typ Bedeutung Wert Interpretation <flag> int Parameterwerte Beispieleintrag: IPC_CREAT 044 Anlegen neuer Warteschlange mit Zugriffsrechten: rw r--r-- wichtig: Zugriffsrechte unbedingt spezifizieren!!! Beispieleintrag: 0 (Null) Zugriff auf vorhandene Warteschlange ws 201/17 H.-A. Schindler Folie: 5-4

5 Schlüssel <key> Bei jedem Erzeugen einer Verwaltungsstruktur msqid_ds durch msgget(..) muss im Parameter <key> ein Schlüssel angegeben werden. Dieser hat Systemdatentyp key_t, der meist in der Header-Datei <sys/types.h> als long int definiert ist. Schlüssel wird vom Betriebssystemkern in Bezeichner umgewandelt. Hinweise: <key> ist Identifikator für Warteschlange bei Festlegung durch Nutzer: z.b. ganzzahligen Wert eintragen Für Arbeit mehrerer Prozesse mit gleicher Warteschlange: gleichen <key> verwenden! ws 201/17 H.-A. Schindler Folie: 5-5

6 Message Queues: msgsnd(..) fügt Nachricht in Message Queue ein ( SENDEN ) Verwendung im Programm (Prinzip): Konkretes Beispiel: int <result>; <result>= msgsnd(<id_q>, <ptr>, <size>, <flag>); int x; x = msgsnd(idq, &msg, MSGSIZE, IPC_NOWAIT); Variable Symbol Typ Bedeutung Wert <result> int Interpretation Rückkehrwert > 0 O.K. Systemaufruf erfolgreich -1 Feh- Systemaufruf fehlgeschlagen ler <id_q> int Identifikator der Warteschlange (= Rückkehrwert von msgget(..) ) ws 201/17 H.-A. Schindler Folie: 5 -

7 Message Queues: msgsnd(..) fügt Nachricht in Message Queue ein ( SENDEN ) Verwendung im Programm (Prinzip): Int <result>; <result> = msgsnd(<id_q>, <ptr>, <size>, <flag>); Variable Symbol Typ <ptr> *struct Bedeutung Zeiger (pointer) auf die Nachricht <size> int Länge der Nachricht (ohne Typfeld) <flag> int Steuerparameter für Nachrichten- Einfügevorgang Konkretes Beispiel: int x; x = msgsnd(idq, &msg, MSGSIZE, IPC_NOWAIT); Interpretation bzw. Parameterwerte Beispieleintrag:IPC_NOWAIT bei voller Warteschlange kehrt Auftrag sofort zurück (asynchrones Verhalten) Beispieleintrag:0 (Null) bei voller Warteschlange Blockierung bis wieder Platz vorhanden (synchrones Verhalten) ws 201/17 H.-A. Schindler Folie: 5-7

8 Message Queues: msgrcv(..) entnimmt Nachricht aus Message Queue ( Empfangen receive ) Verwendung im Programm (Prinzip): int <result>; <result>= msgrcv(<id_q>, <ptr>, <size>, <type>, <flag>); Konkretes Beispiel: int x; x = msgrcv(idq, &msg, MSGSIZE, 5, IPC_NOWAIT); Variable Symbol Typ Bedeutung Wert Interpretation <result> int Rückkehrwert > 0 O.K. Systemaufruf erfolgreich <id_q> int Identifikator der Warteschlange (= Rückkehrwert von msgget(..) ) -1 Feh- Systemaufruf fehlgeschlagen ler ws 201/17 H.-A. Schindler Folie: 5-8

9 Message Queues: msgrcv(..) entnimmt Nachricht aus Message Queue ( Empfangen receive ) Verwendung im Programm (Prinzip): Konkretes Beispiel: int <result>; <result> = msgrcv(<id_q>, <ptr>, <size>, <type>, <flag>); Variable Symbol Typ <ptr> *struct Bedeutung Zeiger zu Aufnahmebereich für Nachricht <size> int Länge der Nachricht (ohne Typfeld) <type> int Steuerparameter für Nachrichten- Entnahmevorgang int x; x = msgrcv(idq, &msg, MSGSIZE, 5, IPC_NOWAIT); Interpretation bzw. Parameterwerte mögliche Einträge: 0 erste Nachricht >0 erste Nachricht dieses Typs <0 erste Nachricht des niedrigsten Typs <= type ws 201/17 H.-A. Schindler Folie: 5-9

10 Message Queues: msgrcv(..) entnimmt Nachricht aus Message Queue ( Empfangen receive ) Verwendung im Programm (Prinzip): int <result>; <result> = msgrcv(<id_q>, <ptr>, <size>, <type>, <flag>); Konkretes Beispiel: int x; x = msgrcv(idq, &msg, MSGSIZE, 5, IPC_NOWAIT); Variable Symbol Typ Bedeutung <flag> int Steuerparameter für Nachrichten- Entnahmeprozess Interpretation bzw. Parameterwerte Beispieleintrag:IPC_NOWAIT wenn keine passende Nachricht, kehrt Auftrag sofort zurück (asynchrones Verhalten) Beispieleintrag:0 (Null) wenn keine passende Nachricht, Blockierung bis passende Nachricht eintrifft (synchrones Verhalten) Hinweise: Message-<type> kann z.b. genutzt werden, um an unterschiedliche Klienten zu senden (allgemein: Trennen von Nachrichten verschiedener Typen ) ws 201/17 H.-A. Schindler Folie: 5-10

11 Beispielprogramm send.c #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #define MSGSIZE 40 struct message{ long msgtype; char msgtext[msgsize]; }; charmessagetext[]="this is my message: Winter is coming now."; ws 201/17 H.-A. Schindler Folie: 5-11

12 Beispielprogramm send.c 9 main() { int id_q; struct message msg_snd; int result_snd; int i; id_q = msgget(10, IPC_CREAT 0700 ); printf("id_q = %d\n", id_q); msg_snd.msgtype = 5; for (i=0; i<=40; i++) msg_snd.msgtext[i]=messagetext[i]; } result_snd = imsgsnd( d_q, &msg_snd, MSGSIZE, IPC_NOWAIT ); printf("result_snd = %d\nnachricht:\n%40s\n", result_snd, \ msg_snd.msgtext); ws 201/17 H.-A. Schindler Folie: 5-12

13 #include-dateien Message Queues benötigen: #include <stdio.h> // zur Ausführung von E/A-Operationen #include<sys/types.h> // wegen der Definition spezieller Datentypen // siehe z.b. in den Datenstrukturen semid_ds // und sem #include<sys/ipc.h> // allgemeine Definitionen für UNIX-IPC #include <sys/msq.h> // spezielle Definitionen zu Message Queues ws 201/17 H.-A. Schindler Folie: 5-13

14 Beispielprogramm receive.c #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #define MSGSIZE 40 struct message{ long msgtype; char msgtext[msgsize]; }; ws 201/17 H.-A. Schindler Folie: 5-14

15 Beispielprogramm receive.c 9 main() { } int id_q; struct message msg_rcv; int result_rcv; id_q= msgget( 10, 0 ); printf("id_q = %d\n", id_q); result_rcv = msgrcv(id_q, &msg_rcv, MSGSIZE, 5, IPC_NOWAIT); printf("result_rcv = %d\nnachricht:\n%40s\n", result_rcv, \ msg_rcv.msgtext); ws 201/17 H.-A. Schindler Folie: 5-15

16 Struktur msqid_ds zu jeder Message Queue gehört Verwaltungsstruktur msqid_ds enthält alle Meta-Daten der Message Queue struct msqid_ds{ structipc_perm msg_perm; /* Zugriffsberechtigungen, Eigentümer, Gruppe etc. */ structmsg *msg_first; /* Zeiger auf erste Nachricht */ structmsg *msg_last; /* Zeiger auf letzte Nachricht */ unsignedlongmsg_cbytes; /* Anzahl der Bytes in der Warteschlange */ unsigned long msg_qnum; /* Anzahl der Nachrichten in der Warteschlange */ unsignedlongmsg_qbytes; /* Maximalzahl an Byte in der Warteschlange */ pid_t msg_lspid; /* Prozess-Nr. für letztes msgsnd(..) */ pid_t msg_lrpid; /* Prozess-Nr. für letztes msgrcv(..) */ }; time_t msg_stime; /* Zeit des letzten msgsnd(..) */ time_t msg_rtime; /* Zeit des letzten msgrcv(..) */ time_t msg_ctime; /* Zeit, zu der diese Struktur zuletzt geändert wurde */ ws 201/17 H.-A. Schindler Folie: 5-1

17 Struktur ipc_perm ( ipc permissions ) spezifiziert Zugriffsrechte struct ipc_perm{ uid_t uid; /* effektive Benutzernummer des Eigentümers */ gid_t gid; /* effektive Gruppennummer des Eigentümers */ uid_t cuid; /* effektive Benutzernummer des Erzeugers */ gid_t cgid; /* effektive Gruppennummer des Erzeugers */ }; mode_t mode; /* Zugriffsmodus */ unsignedlong seq; /* Zähler der Verwendung der IPC-Struktur */ key_t key; /* Schlüssel */ ws 201/17 H.-A. Schindler Folie: 5-17

18 Message Queues: msgctl(..) ( control ) Ausführung verschiedener Operationen auf Message Queue Verwendung im Programm (Prinzip): int <result>; <result>= msgctl(<id_q>, <cmd>, *<buf>); Konkretes Beispiel: int x; x = msgctl(idq, IPC_SET, &Puffer); Variable Symbol Typ Bedeutung Wert <result> int Interpretation Rückkehrwert > 0 O.K. Systemaufruf erfolgreich -1 Feh- Systemaufruf fehlgeschlagen ler <id_q> int Identifikator der Warteschlange (= Rückkehrwert von msgget(..) ) ws 201/17 H.-A. Schindler Folie: 5-18

19 Message Queues: msgctl(..) ( control ) Ausführung verschiedener Operationen auf Message Queue Verwendung im Programm (Prinzip): int <result>; <result> = msgctl(<id_q>, <cmd>, *<buf>); Konkretes Beispiel: int x; x = msgctl(idq, IPC_SET, &Puffer); Variable Symbol Typ <cmd> int Bedeutung Kommando Interpretation bzw. Parameterwerte Befehl zur Ausführung auf durch <id_q> definierter Message Queue Möglichkeiten: IPC_STAT: kopiert msqid_ds-struktur aus dem UNIX/Linux- Kern in Puffer im Anwenderprogramm, welcher durch <buf>-parameter spezifiziert IPC_SET: kopiert aus Puffer im Anwenderprogramm in Struktur im UNIX/L.-Kern; damit Setzen (Festlegen) der im Kern gültigen Werte IPC_RMID: Löschen der Message Queue und aller darin enthaltenen Nachrichten ws 201/17 H.-A. Schindler Folie: 5-19

20 Message Queues: msgctl(..) ( control ) Ausführung verschiedener Operationen auf Message Queue Verwendung im Programm (Prinzip): int <result>; <result> = msgctl(<id_q>, <cmd>, *<buf>); Konkretes Beispiel: int x; x = msgctl(idq, IPC_SET, &Puffer); Variable Symbol Typ *<buf> *struct Bedeutung Puffer Interpretation bzw. Parameterwerte Zeiger auf eine structurevom Typ msqid_dsim Adressraum des Nutzerprozesses. Deren Inhalt wird je nach Kommando mit Inhaltder äquivalenten Struktur im UNIX/Linux-Kern getauscht. D.h. IPC_SETschreibt Inhalt der Struktur im Nutzerbereich in äquivalente Kernstruktur, IPC_STATholt im Kern gesetzte Werte in den Nutzerprozess und ermöglicht so Auswertung im Nutzerprozess. ws 201/17 H.-A. Schindler Folie: 5-20

21 Beispielprogramm ctl.c #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #define MSGSIZE 40 struct message{ long msgtype; char msgtext[msgsize]; }; char MESSAGETEXT[ ]="This is my message: Winter is coming now."; ws 201/17 H.-A. Schindler Folie: 5-21

22 Beispielprogramm ctl.c 9 main() { int id_q; struct message msg_snd; int result_snd; struct msqid_ds puffer; int result_ctl; int i; id_q = msgget(10, IPC_CREAT 0700); printf("id_q = %d\n", id_q); msg_snd.msgtype = 5; for (i=0; i<=40; i++) msg_snd.msgtext[i]=messagetext[i]; result_snd= msgsnd(id_q, &msg_snd, MSGSIZE, IPC_NOWAIT); printf("result_snd = %d\nnachricht:\n%40s\n", result_snd, \ msg_snd.msgtext); ws 201/17 H.-A. Schindler Folie: 5-22

23 Beispielprogramm ctl.c 9 } result_ctl = msgctl(id_q, IPC_STAT, &puffer); printf("\nresult_ctl = %d\n\n", result_ctl); printf("anzahl Bytes: %d\n", puffer.msg_cbytes); printf("anzahl Nachrichten: %d\n", puffer.msg_qnum); printf("maximalzahl Bytes: %d\n\n", puffer.msg_qbytes); printf("prozess-id letztes Send: %d, laufender Prozess: %d\n", puffer.msg_lspid, getpid()); printf("prozess-id letztes Receive: %d\n\n", puffer.msg_lrpid); ws 201/17 H.-A. Schindler Folie: 5-23

24 Aufgabenstellung (Anregungen) 1. Analysieren Sie die C-Programme send.cund receive.cund kompilieren Sie diese. 2. Führen Sie sendeinmal aus und informieren Sie sich mit ipcs qüber das Ergebnis. 3. Führen Sie sendmindestens noch einmal aus und informieren Sie sich wiederum mit ipcs q über das Ergebnis. 4. Führen Sie jetzt mehrmals receiveaus und studieren Sie Rückkehrwerte und Ergebnis. 5. Beschäftigen Sie sich mit dem Programm ctl.c in der vorliegenden Form werden genauere Informationen über die angelegte Message Queue ausgegeben. ws 201/17 H.-A. Schindler Folie: 5-24

25 Aufgabenstellung (Anregungen). Jetzt können Sie experimentieren, z.b. - Weglassen der Zugriffsrechte beim Erzeugen einer message queue - receive mit anderem msgtype - mehrere Sender (mit unterschiedlichen Nachrichten und msgtype s) - unterschiedliche Empfänger (für unterschiedliche Nachrichtentypen) Beschäftigen Sie sich auch mit den Optionen beim ipcs-aufruf. Untersuchen Sie insbesondere auch die Ausgaben für -u und -l. 8. Versuchen Sie dem Rückkehrwert von msgrcv(..) eine Bedeutung zuzuordnen. 9. In welcher Header-Datei (*.h-datei) sind IPC_PRIVATE, IPC_NOWAITund IPC_CREAT jeweils definiert? 10. Löschen Sie am Ende bitte alle von Ihnen angelegten Message Queues! ws 201/17 H.-A. Schindler Folie: 5-25

26 Informationen über Message Queues: Kommando ipcs Formen : ipcs-q messagequeues (allgemeine Angaben) ipcs-qt t: time (alle Zeitangaben) ipcs-qc c: creator (Erzeuger und Eigentümer der Strukturen) ipcs-qp p: pid (lspid und lrpid siehe Struktur msqid_ds) ipcs-qu u: summary (zusammenfassende Informationen) ipcs-ql l: limits (Maximalwerte für diese UNIX-Implementation) ipcs-q -i <id> Ausg. nur für durch Identifizierer <id> spez. Ressource ipcs -h -h help (Infos über Kommandobenutzung) ws 201/17 H.-A. Schindler Folie: 5-2

27 Löschen von Message Qeues: Kommando ipcrm Formen : ipcrm-q<id_q> ipcrm-q<key> durch Angabe des Identifizierers (Rückkehrwert) durch Angabe des Schlüssels (key) ENDE 5 ws 201/17 H.-A. Schindler Folie: 5-27

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN UNIX/Linux-Interprozesskommunikation 6. UNIX/Linux Shared Memory ( gemeinsame Speicherbereiche ) Wintersemester 2016/17 UNIX/Linux-IPC-Mechanismen Nachrichtenbasierter

Mehr

PROGRAMMIEREN MIT UNIX/Linux-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/Linux-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/Linux-SYSTEMAUFRUFEN UNIX/Linux-Interprozesskommunikation, zugehörige Systemaufrufe und Kommandos 7. UNIX/Linux-Shared Memory 8. (Benannte) Pipes UNIX/Linux-IPC-Mechanismen Nachrichtenbasierter

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 11. UNIX/Linux-Semaphore Wintersemester 2016/17 Semaphore * wurden 1965 von E.W. DIJKSTRA (NL) als BS-gestützter Mechanismus zur Realisierung von Koordinationsaufgaben

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN UNIX/Linux-Interprozesskommunikation 7. UNIX/Linux Pipes Wintersemester 2016/17 UNIX/Linux-IPC-Mechanismen Nachrichtenbasierter Informationsaustausch: 5. 1.

Mehr

Einführung in die Systemprogrammierung unter Linux

Einführung in die Systemprogrammierung unter Linux Einführung in die Systemprogrammierung unter Linux - 1 - Einführung in die Systemprogrammierung unter Linux Einführung in die Systemprogrammierung unter Linux - 2 - Inhalt 1. Übersicht über benötigte Systemfunktionen...

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 2. UNIX/Linux-Prozessverwaltung und zugehörige Systemaufrufe Wintersemester 2016/17 2. Die UNIX/LINUX-Prozessverwaltung Aufgaben: 1. Erzeugen neuer Prozesse

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 3. UNIX/Linux-Dateisysteme und zugehörige Systemaufrufe und Kommandos (Teil I) Wintersemester 206/7 UNIX/Linux-Dateisystem(e) Systemaufrufe zur Dateiarbeit:

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

Einführung in die Systemprogrammierung unter Linux

Einführung in die Systemprogrammierung unter Linux Einführung in die Systemprogrammierung unter Linux Systemsoftware Praktikum Inhalt Übersicht über benötigte Systemfunktionen Programmieren unter Linux Grundlegendes Message-Queue Shared Memory Semaphore

Mehr

Besprechung 6. Aufgabe (timed) Semaphore. Prozess 1 Prozess 2 0x Schlüssel=IPC_PRIVATE: Segment ist prozesslokal

Besprechung 6. Aufgabe (timed) Semaphore. Prozess 1 Prozess 2 0x Schlüssel=IPC_PRIVATE: Segment ist prozesslokal Überblick über die 9. Übung Überblick über die 9. Übung. Anlegen des Segments: shmget Besprechung 6. Aufgabe (timed)... /* Schlüssel */ int shmflg; /* Flags */ int shmid; /* ID des Speichersegments */

Mehr

Ganze Arrays von Semaphoren können auf einmal angelegt werden. In einer Operation können mehrere Semaphore auf einmal modifiziert werden.

Ganze Arrays von Semaphoren können auf einmal angelegt werden. In einer Operation können mehrere Semaphore auf einmal modifiziert werden. Übungen zur Vorlesung Betriebssysteme I Studiengang Informatik SS 05 AG Betriebssysteme FB3 Kirsten Berkenkötter Allerlei Nützliches 1 Semaphore 1.1 Allgemein Semaphore sind unter System V IPC erweitert:

Mehr

Systemprogrammierung.: unter Linux :.

Systemprogrammierung.: unter Linux :. Systemprogrammierung.: unter Linux :. Einführung in Linux 1. Das Filesystem 2. Prozesse 3. Unix Tools 4. Die Shell 1. Das Filesystem 1.1 Dateien 1.2 Ordner 1.3 Links 1.1 Dateien Alles im Filesystem sind

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 10. UNIX/Linux: Reaktion auf Fehler Wintersemester 2016/17 Reaktion auf Fehler: Übersicht Systemaufrufe: 1. Rückkehrwert: in den meisten (aber nicht in allen!)

Mehr

Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren (P)

Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren (P) Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom 26.11. Foliensatz 5 Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren

Mehr

J.1 Überblick. Prototyp. Besprechung 6. Aufgabe (timed) (die 5. Aufgabe wird erst in der nächsten Woche besprochen) select. Shared Memory.

J.1 Überblick. Prototyp. Besprechung 6. Aufgabe (timed) (die 5. Aufgabe wird erst in der nächsten Woche besprochen) select. Shared Memory. J 8. Übung J 8. Übung J. Überblick Besprechung 6. Aufgabe (timed) (die 5. Aufgabe wird erst in der nächsten Woche besprochen) Prototyp #include #include select Shared Memory Semaphore

Mehr

Interprozesskommunikation

Interprozesskommunikation Interprozesskommunikation Radu Prodan Institut für Informatik, Universität Innsbruck Verteilte und Parallele Systeme http://dps.uibk.ac.at 19.04.2012 R. Prodan, Betriebssysteme, Sommersemester 2012 1 Prozesse

Mehr

U5 Verzeichnisse und Sortieren

U5 Verzeichnisse und Sortieren U5 Verzeichnisse und Sortieren U5 Verzeichnisse und Sortieren Linux-Benutzerumgebung Fehlerbehandlung POSIX-Verzeichnis-Systemschnittstelle Datei-Attribute in Inodes U5.1 Verzeichnisse öffnen: opendir(3)

Mehr

Lösung zur Praktikumsaufgabe 1

Lösung zur Praktikumsaufgabe 1 Lösung zur Praktikumsaufgabe 1 Thema: Semaphore 1. Das Programm in Listing 1 zeigt eine beispielhafte Implementierung. Listing 1: Lösung der Aufgabe 1 (5children-unsync.c) #include #include

Mehr

Systemsoftware Praktikum Hochschule Ravensburg-Weingarten

Systemsoftware Praktikum Hochschule Ravensburg-Weingarten Systemsoftware Praktikum Hochschule Ravensburg-Weingarten Erste Schritte Systemkontrolle Bibliotheken Quelltext und Doku Erste Schritte - Übersicht ssh-zugang Anjuta CVS make / gcc Erste Schritte ssh-zugang

Mehr

Systemnahe Programmierung in C/C++

Systemnahe Programmierung in C/C++ Systemnahe Programmierung in C/C++ Interprozesskommunikation (IPC) Knut Stolze stolze@informatik.uni-jena.de Lehrstuhl für Datenbanken und Informationssysteme Fakultät für Mathematik und Informatik 2006

Mehr

Interprozesskommunikation in Unix. WS 08/09 Universität Innsbruck

Interprozesskommunikation in Unix. WS 08/09 Universität Innsbruck Interprozesskommunikation in Unix Betriebssysteme WS 08/09 Universität Innsbruck Unix-Standardisierung (kurzer Einschub) Erste Unix-Version 1969 (Ken Thompson) Im Laufe der Zeit bildete sich eine Vielzahl

Mehr

Vorlesung Betriebssysteme II

Vorlesung Betriebssysteme II 1 / 15 Vorlesung Betriebssysteme II Thema 3: IPC Robert Baumgartl 20. April 2015 2 / 15 Message Passing (Nachrichtenaustausch) Prinzip 2 grundlegende Operationen: send(), receive() notwendig, wenn kein

Mehr

Systemprogrammierung unter Linux eine Einführung S. 1

Systemprogrammierung unter Linux eine Einführung S. 1 Systemprogrammierung unter Linux eine Einführung S. 1 Inhaltsverzeichnis 1 Übersicht der Systemfunktionen ( system calls )...2 1.1 Grundliegende Systemcalls...2 Erfragen der PID des laufenden Prozesses...2

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 2. UNIX/Linux-Prozessverwaltung und zugehörige Systemaufrufe Wintersemester 2015/16 2. Die UNIX/LINUX-Prozessverwaltung Aufgaben: 1. Erzeugen neuer Prozesse

Mehr

Tafelübung zu BSRvS 1 2. Prozesssynchronisation

Tafelübung zu BSRvS 1 2. Prozesssynchronisation Tafelübung zu BSRvS 1 2. Prozesssynchronisation 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

7.1 Gegenseitiger Ausschluss. 7.1 Gegenseitiger Ausschluss (3) 7.1 Gegenseitiger Ausschluss (3) 7.1 Gegenseitiger Ausschluss (2) Semaphor

7.1 Gegenseitiger Ausschluss. 7.1 Gegenseitiger Ausschluss (3) 7.1 Gegenseitiger Ausschluss (3) 7.1 Gegenseitiger Ausschluss (2) Semaphor 7.1 Gegenseitiger Ausschluss 7.1 Gegenseitiger Ausschluss (3) Semaphor eigentlich reicht ein Semaphor mit zwei Zuständen: binärer Semaphor void P( int *s ) { while( *s == 0 ); *s= 0; atomare Funktion Problem

Mehr

2. Prozesssynchronisation

2. Prozesssynchronisation Tafelübung zu BSRvS1 2. Prozesssynchronisation 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

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!

Mehr

Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden

Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden Dokument: gns_ipc_server.c, 1 - Seite 1 - - 1: 1 von 1 - Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden int main(int argc,

Mehr

Klausur Betriebssysteme I

Klausur Betriebssysteme I Prof. Dr. Michael Jäger FB MNI Klausur Betriebssysteme I 18.3.2011 Bitte bearbeiten Sie die Aufgaben auf den Aufgabenblättern. Die Benutzung von Unterlagen oder Hilfsmitteln ist nicht erlaubt. Die Bearbeitungszeit

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

Betriebssysteme (BTS)

Betriebssysteme (BTS) 13.Vorlesung Betriebssysteme (BTS) Christian Baun cray@unix-ag.uni-kl.de Hochschule Mannheim Fakultät für Informatik Institut für Betriebssysteme 31.5.2007 Wiederholung vom letzten Mal Deadlocks und Verhungern

Mehr

Hydroinformatik I: Referenzen und Zeiger

Hydroinformatik I: Referenzen und Zeiger Hydroinformatik I: Referenzen und Zeiger Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 06. Januar

Mehr

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free() Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten

Mehr

Übungspaket 14 Eindimensionale Arrays

Übungspaket 14 Eindimensionale Arrays Übungspaket 14 Eindimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung eindimensionaler Arrays Kapitel: 33 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 8: Felder und Zeichenketten Prof. Dr. Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen 3. Variable und Datentypen

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 11 Dynamische Feldvereinbarung... 11-2 11.1 Dynamische Vereinbarung von Vektoren... 11-3 11.2 Dynamische Vereinbarung von Matrizen... 11-5 11.3 Die Kommandozeile... 11-8 Propädeutikum 11-1/8 11

Mehr

Klausur Betriebssysteme

Klausur Betriebssysteme Prof. Dr. Michael Jäger FB MNI Klausur Betriebssysteme 5.2.2016 Die Dauer der Klausur beträgt 90 Minuten. Es sind keine Unterlagen und Hilfsmittel erlaubt. Bitte bearbeiten Sie die Aufgaben soweit wie

Mehr

Arrays (Felder/Vektoren)

Arrays (Felder/Vektoren) Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff

Mehr

Kapitel 13. Definition von Klassen. OOP Thomas Klinker 1

Kapitel 13. Definition von Klassen. OOP Thomas Klinker 1 Kapitel 13 Definition von Klassen OOP Thomas Klinker 1 OOP Thomas Klinker 2 Datenabstraktion Der Mensch abstrahiert, um komplexe Sachverhalte darzustellen. Dinge und Vorgänge werden auf das wesentliche

Mehr

4. Interprozeßkommunikation in UNIX

4. Interprozeßkommunikation in UNIX 4. Interprozeßkommunikation in UNIX Kommunikation zwischen Unix-Prozessen (System V IPC) Pipes System V IPC Werkzeuge 1. Semaphore 2. Shared Memory 3. Message-Queues Gemeinsame Eigenschaften der System

Mehr

Exkurs: Paralleles Rechnen

Exkurs: Paralleles Rechnen Münster Exkurs: Paralleles Rechnen Münster Exkurs: Paralleles Rechnen 2 /21 Konzepte für Parallelrechner P P P C C C Gemeinsamer Speicher Verteilter Speicher Verbindungsnetzwerk Speicher M, Münster Exkurs:

Mehr

Praxis der Programmierung

Praxis der Programmierung Arrays, Pointerarithmetik, Konstanten, Makros Institut für Informatik und Computational Science Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Arrays (Felder/Vektoren) 2 Arrays: Motivation

Mehr

C- Kurs 09 Dynamische Datenstrukturen

C- Kurs 09 Dynamische Datenstrukturen C- Kurs 09 Dynamische Datenstrukturen Dipl.- Inf. Jörn Hoffmann jhoffmann@informaak.uni- leipzig.de Universität Leipzig InsAtut für InformaAk Technische InformaAk Flexible Datenstrukturen Institut für

Mehr

================================================= System V spezifische lokale Prozesskommunikation: 4. Systemrufe für die lokale Prozesskommunikation

================================================= System V spezifische lokale Prozesskommunikation: 4. Systemrufe für die lokale Prozesskommunikation UNIX Schnittstelle ================== 4. Systemrufe für die lokale Prozesskommunikation ================================================= j p bell Seite 1 System V spezifische lokale Prozesskommunikation:

Mehr

Hinweise zur Prüfung Programmieren WS0304 Seite 1. Schreiben Sie folgende For-Schleife in eine äquivalente While-Schleife um.

Hinweise zur Prüfung Programmieren WS0304 Seite 1. Schreiben Sie folgende For-Schleife in eine äquivalente While-Schleife um. Hinweise zur Prüfung Programmieren WS0304 Seite 1 Aufgabe 1 1.1 (5 Punkte) Vervollständigen Sie die Funktion testnums()... Eine mögliche Lösung lautet: int testnums(int numbers[], int factor, int max){

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

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! 5.4 Arrays Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! Feld: Index: 17 3-2 9 0 1 0 1 2 3 4 5 Harald Räcke 114/656

Mehr

Klausur. 2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben.

Klausur. 2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben. Programmieren bei Dr. Robert Heß TM&M1, IST1 und ET1 Anfang SS 2003 Klausur 1. Aufgabe (2 Punkte) Kodieren Sie folgende Dezimalzahlen in Binärzahlen um. Zeigen Sie den Rechenweg, die negative Zahl soll

Mehr

8. Referenzen und Zeiger

8. Referenzen und Zeiger 8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen

Mehr

Zeiger in C und C++ Zeiger in Java und C/C++

Zeiger in C und C++ Zeiger in Java und C/C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für Referenztypen (Klassen und Arrays) verwendet,

Mehr

Übungspaket 20 Zeiger und Zeigervariablen

Übungspaket 20 Zeiger und Zeigervariablen Übungspaket 20 Zeiger und Zeigervariablen Übungsziele: Skript: 1. Definition von Zeigervariablen 2. Verwendung von Zeigern 3. Arrays und Adressberechnungen Kapitel: 45 und 46 Semester: Wintersemester 2017/18

Mehr

9.3 Virtuelle FS Linux VFS Windows IFS 9.4 Dateizugriff in Linux-Programmen

9.3 Virtuelle FS Linux VFS Windows IFS 9.4 Dateizugriff in Linux-Programmen 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

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Advanced Programming in C

Advanced Programming in C Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer

Mehr

Übung zur Vorlesung Programmieren in C

Übung zur Vorlesung Programmieren in C Übung zur Vorlesung Programmieren in C 10 Structs & Unions Marvin Gülker Ruhruniversität Bochum Wintersemester 2015/2016 Marvin Gülker (Ruhruniversität Bochum) 10 Structs & Unions Wintersemester 2015/2016

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC)

Übungen zu Systemnahe Programmierung in C (SPiC) Übungen zu Systemnahe Programmierung in C (SPiC) Peter Wägemann, Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 8 Sommersemester 2015 Inhalt POSIX Verzeichnisschnittstelle opendir, closedir,

Mehr

4.4 Prozesse. H. Weber, HS RM SS 2010 Systemprogrammierung Kap. 4.4 Seite 1 von 22

4.4 Prozesse. H. Weber, HS RM SS 2010 Systemprogrammierung Kap. 4.4 Seite 1 von 22 H. Weber, HS RM SS 2010 Systemprogrammierung Kap. 4.4 Seite 1 von 22 getpid Prozeß-Id ermitteln getppid Parent-Prozeß-Id ermitteln fork Duplizieren eines Prozesses exec-familie Prozeß-Überlagerung durch

Mehr

Strukturierte Datentypen (struct) 2006 Pearson Education, Inc. All rights reserved.

Strukturierte Datentypen (struct) 2006 Pearson Education, Inc. All rights reserved. 1 8 Strukturierte Datentypen (struct) 2 8.1 Einführung 8.2 Definition von Strukturen 8.2.1 Selbstbezügliche Strukturen 8.2.2 Definition von Variablen strukturierter Datentypen 8.2.3 Bezeichner für Strukturen

Mehr

Eine Mini-Shell als Literate Program

Eine Mini-Shell als Literate Program Eine Mini-Shell als Literate Program Hans-Georg Eßer 16.10.2013 Inhaltsverzeichnis 1 Eine Mini-Shell 1 1.1 Einen Befehl parsen......................... 2 1.2 Was tun mit dem Kommando?...................

Mehr

C für Java-Programmierer

C für Java-Programmierer Carsten Vogt C für Java-Programmierer ISBN-10: 3-446-40797-9 ISBN-13: 978-3-446-40797-8 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-40797-8 sowie im

Mehr

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Informatik Vorlesung 08 Pointer (Dynamisch) 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Pointer (Zeiger) Dynam. Speicher Bisher: Speicherbedarf muss

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

Dynamischer Speicher

Dynamischer Speicher Dynamischer Speicher C-Kurs 2012, 3. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 13. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

C für Java- Programmierer

C für Java- Programmierer Carsten Vogt C für Java- Programmierer mit 59 Bildern, 36 Tabellen und 35 Aufgaben HANSER Inhalt 1 Einführung 13 Schnelleinstieg 14 1.1 C und Java von den Anfängen bis heute 15 1.1.1 Die Entwicklung von

Mehr

Hans-Georg Eßer, FH München Betriebssysteme I, WS 2006/07, 2007/01/24 Zusammenfassung (2/2) Folie 2

Hans-Georg Eßer, FH München Betriebssysteme I, WS 2006/07, 2007/01/24 Zusammenfassung (2/2) Folie 2 /home/esser/daten/dozent/folien/bs-esser-24.odp 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

Mehr

Übung zu Betriebssystemtechnik

Übung zu Betriebssystemtechnik Übung zu Betriebssystemtechnik Nachrichtenaustausch und Copy-on-Write 11. Juni 28 Andreas Ziegler Bernhard Heinloth Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl

Mehr

10. Foliensatz Betriebssysteme

10. Foliensatz Betriebssysteme Prof. Dr. Christian Baun 10. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 1/62 10. Foliensatz Betriebssysteme Prof. Dr. Christian Baun Frankfurt University of Applied Sciences

Mehr

critical sections und Semaphore

critical sections und Semaphore Kapitel 4 critical sections und Semaphore Programme, die sich Resourcen teilen, müssen Codeabschnitte allein (exklusiv) ausführen, diese codeteile nennt man critical section. Um dies zu erreichen werden

Mehr

USBCAN.DLL. Manual. Microcomputersysteme. Version 1.2

USBCAN.DLL. Manual. Microcomputersysteme. Version 1.2 USBCAN.DLL Microcomputersysteme Manual Version 1.2 August 2004 Die in diesem Manual verwendeten Beschreibungen für Erzeugnisse, die ein eingetragenes Warenzeichen darstellen können, wurden nicht separat

Mehr

Projekt 3 Variablen und Operatoren

Projekt 3 Variablen und Operatoren Projekt 3 Variablen und Operatoren Praktisch jedes Programm verarbeitet Daten. Um mit Daten programmieren zu können, muss es Möglichkeiten geben, die Daten in einem Programm zu verwalten und zu manipulieren.

Mehr

Aufgabenblatt 5 Musterlösung

Aufgabenblatt 5 Musterlösung Prof. Dr. rer. nat. Roland Wismüller Aufgabenblatt 5 Musterlösung Vorlesung Betriebssysteme I Wintersemester 2017/18 Aufgabe 1: Implementierung von Threads (Bearbeitung zu Hause) Der größte Vorteil ist

Mehr

Zusammenfassung des Handzettels für Programmieren in C

Zusammenfassung des Handzettels für Programmieren in C Zusammenfassung des Handzettels für Programmieren in C In der handschriftlichen Kopie werden mehr Abkürzungen verwendet. Alles Grün markierte dient zum lernen und wird nicht auf den Handzettel übertragen.

Mehr

Tafelübung zu BS 1. Prozesse, Shell

Tafelübung zu BS 1. Prozesse, Shell Tafelübung zu BS 1. Prozesse, Shell 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/ss2012/bs/

Mehr

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit Aufgabenblätter erreichbare Punktzahl zugelassene Hilfsmittel, 0800 1000 Uhr (120 min) 16 Seiten (einschl. Deckblatt)

Mehr

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren Prof. Dr. H. Voos, Prof. Dr. M. Zeller Datum, Zeit Aufgabenblätter zugelassene Hilfsmittel, 08:00 10:00 Uhr (120 min) 15 Seiten (einschl. Deckblatt)

Mehr

Nachdem die VM gestartet ist und sich darin angemeldet wurde, starten wir Eclipse.

Nachdem die VM gestartet ist und sich darin angemeldet wurde, starten wir Eclipse. Starten der Umgebung Nachdem die VM gestartet ist und sich darin angemeldet wurde, starten wir Eclipse. Wir wählen links ein Projekt aus öffnen dann unser Projekt und dort das Programm intro.c Sicherheitshalber

Mehr

Threads. Foliensatz 8: Threads Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015

Threads. Foliensatz 8: Threads 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

Tafelübung zu BSRvS 1 1. Prozesse, at

Tafelübung zu BSRvS 1 1. Prozesse, at Tafelübung zu BSRvS 1 1. Prozesse, at 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/ss2009/bsrvs1/

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

4.2 Programmiersprache C

4.2 Programmiersprache C 4.2.1. Elementare Datentypen (signed) int, unsigned int, (signed) short (int), unsigned short (int), (signed) long (int), unsigned long (int) Elementare Datentypen für ganze Zahlen mit oder ohne Vorzeichen.

Mehr

6. Foliensatz Betriebssysteme und Rechnernetze

6. Foliensatz Betriebssysteme und Rechnernetze Prof. Dr. Christian Baun 6. Foliensatz Betriebssysteme und Rechnernetze FRA-UAS SS2018 1/63 6. Foliensatz Betriebssysteme und Rechnernetze Prof. Dr. Christian Baun Frankfurt University of Applied Sciences

Mehr

Programmierkurs C++ Variablen und Datentypen

Programmierkurs C++ Variablen und Datentypen Programmierkurs C++ Variablen und Datentypen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Überblick Welche Datentypen gibt es in

Mehr

C/C++-Programmierung

C/C++-Programmierung 1 C/C++-Programmierung Speicherverwaltung, 0, const Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Speicherverwaltung

Mehr

C-Programmierkurs Mathematik

C-Programmierkurs Mathematik Mathematik WS 2018/2019 Dr. Bodo Kalthoff Speicher für Werte Variablen Über Variablennamen ansprechbar Sprechende Namen vergeben! Variablen können Zahlen, Buchstaben oder komplexere Werte enthalten Der

Mehr

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

Tafelübung zu BSRvS 1 3. Kreuzung

Tafelübung zu BSRvS 1 3. Kreuzung Tafelübung zu BSRvS 1 3. Kreuzung 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/ss2009/bsrvs1/

Mehr

Hydroinformatik I: Referenzen und Zeiger

Hydroinformatik I: Referenzen und Zeiger Hydroinformatik I: Referenzen und Zeiger Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 08. Januar

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

Klausur Betriebssysteme I

Klausur Betriebssysteme I Prof. Dr. Michael Jäger FB MNI Klausur Betriebssysteme I 14.3.2008 Bitte bearbeiten Sie die Aufgaben auf den Aufgabenblättern. Die Benutzung von Unterlagen oder Hilfsmitteln ist nicht erlaubt. Die Bearbeitungszeit

Mehr

Verbessertes Konzept: Monitore

Verbessertes Konzept: Monitore Verbessertes Konzept: Monitore Ein Nachteil von Semaphoren ist die Notwendigkeit zur expliziten Anforderung P und Freigabe V des kritischen Bereiches durch den Programmierer Vergißt der Entwickler z.b.

Mehr

Klausur Programmieren 2 WS 2017/18

Klausur Programmieren 2 WS 2017/18 Klausur Programmieren 2 WS 2017/18 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweise: Formulieren Sie Ihre Lösungen auf dem Aufgabenblatt

Mehr

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin Fakutltät IV Technische Universität Berlin 5. Mai 2014 Inhaltsverzeichnis 1 2 3 4 5 6 7 Überblick Beispielprogramm in Java Beispielprogramm in C 1 2 3 4 5 6 7 Beispielprogramm in Java Beispielprogramm

Mehr

Übungspaket 20 Zeiger und Zeigervariablen

Übungspaket 20 Zeiger und Zeigervariablen Übungspaket 20 Zeiger und Zeigervariablen Übungsziele: Skript: 1. Definition von Zeigervariablen 2. Verwendung von Zeigern 3. Arrays und Adressberechnungen Kapitel: 45 und 46 Semester: Wintersemester 2017/18

Mehr

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch darstellung Arbeiten mit darstellung werden im Computer durch (kleine) Zahlen dargestellt in C können im Datentyp char gespeichert werden, dieser umfasst ein Byte und gilt als Ganzzahltyp darstellung Arbeiten

Mehr

4.3 Directories / Filesysteme

4.3 Directories / Filesysteme I-Node H. Weber, FH Wiesbaden WS 2008/09 Systemprogrammierung Kap. 4.3 Seite 1 von 32 Hierfür gibt es eine ganze Reihe von Systemaufrufen und Subroutines. Wir beginnen mit chroot Root Directory ändern

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:

Mehr