Systemprogrammierung.: unter Linux :.

Ähnliche Dokumente
Systemprogrammierung unter Linux eine Einführung S. 1

Einführung in die Systemprogrammierung unter Linux

Einführung in die Systemprogrammierung unter Linux

2. Prozesssynchronisation

Systemsoftware Praktikum Hochschule Ravensburg-Weingarten

Tafelübung zu BSRvS 1 2. Prozesssynchronisation

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

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

Systemnahe Programmierung in C/C++

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

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/Linux-SYSTEMAUFRUFEN

critical sections und Semaphore

Systemprogrammierung unter UNIX System V / Linux

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

PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes

3. Grundlagen der Systemprogrammierung

Interprozesskommunikation

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

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

Installationsanleitung

Vorlesung Betriebssysteme II

UNIX/Linux Lösung. Mär 14, 17 20:40 Seite 1/6. Prozeßsynchronisation (was ist das?, wo kommt es vor?, Beispiel?):

Linux Prinzipien und Programmierung

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

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

Martin Gräfe. С und Linux. Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen HANSER

Bash-Skripting Linux-Kurs der Unix-AG

Unix-Grundkurs 1. Thema heute: Shell-Skripten

Prozesse, Logs und Systemverwaltung

Programmierwerkzeuge unter Unix

Merkblatt System-C Installation Linux

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

Prozesse, Logs und Systemverwaltung

Systemprogrammierung I - Aufgaben zur Erlangung der Klausurzulassung für Informatiker und Wirtschaftsinformatiker

Lab 13: Multi Processor Systems II

Technische Infor matik 2 C/C++-Kurs. Arbeitsumgebung AG Rechner netze 1.1

Okt 02, 17 12:28 UNIX/Linux Lösung

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

UNIX Grundlagen. Sascha Frank SS August 2006 UNIX I. Sascha Frank. Einführung. Basic Befehle. Quellen

Bash-Scripting Linux-Kurs der Unix-AG

Kommunikation von Prozessen: Signale und Pipes

fork () Hans-Georg Eßer, Hochschule München Betriebssysteme I, SS Prozesse (2/2) Folie 4

Prozesse. Netzwerk - Programmierung. Alexander Sczyrba Madis Rumming

GNU/Hurd. ... ein Mach basiertes Multi Server Betriebssystem. Manuel Gorius. . p.1/33

Grundlagen der Informatik Vorlesungsskript

C und Linux HANSER. Martin Gräfe. Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen. Z., erweiterte Auflage

Bedienungshinweise für XEmacs, make und GNU Debugger

Allgemeines. Shell Programmierung Unix. Kommentar. Vorgangsweise. Mag. Thomas Griesmayer

Systemprogrammierung (37-023)

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2014

Arbeiten in der Unix-Kommandozeile. PeP et al. Toolbox Workshop

Praktikumstermin B-07: make & Makefiles

Shell-Scripting Linux-Kurs der Unix-AG

Tafelübung zu BSRvS1. 3. Philosophen. Fortsetzung Grundlagen C-Programmierung

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

Shell-Scripting Linux-Kurs der Unix-AG

Betriebssysteme (BTS)

Systemprogrammierung

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

Shell-Scripting Linux-Kurs der Unix-AG

4.5 Prozess-Kommunikation/Synchronisation

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme

Workshop: ASURO-Programmieren in C

Bash-Skripting Linux-Kurs der Unix-AG

2 UNIX Interprozesskommunikation

5.4 Segmentierung. Einfachstes Beispiel: 1 Code-Segment + 1 Datensegment. 0 codelength 0 datalength. bs-5.4 1

Netzwerk-Programmierung. Prozesse. Alexander Sczyrba Michael Beckstette.

Betriebssysteme (BTS)

Skripte. Beispiel. M. Fyta Computergrundlagen 73/93

Vom Client zum Server

U7 POSIX-Prozesse U7 POSIX-Prozesse

UNIX Shell und Hello World. Lennart Almstedt, 08. Oktober 2018

U1 3. Übung U1 3. Übung. Die Kommandos auf den folgenden Folien dienen der Veranschaulichung. Sind nicht direkt auf die Übungsaufgabe übertragbar

DWx2r XSD/XML-Processing. Testversion

Systemverwaltung mittels Skripts

f) Welcher UNIX-Systemaufruf wird bei der Verwendung von Sockets auf keinen Fall gebraucht? (1 Punkt) close() bind() listen() open()

Institut für Informatik der Ludwig-Maximilians-Universität München Systempraktikum Wintersemester 2009/2010 Prof. Dr. Dieter Kranzlmüller Dr. Thomas S

A Kompilieren des Kernels B Lineare Listen in Linux C Glossar Interessante WWW-Adressen Literaturverzeichnis...

Tafelübung zu BS 3. Die Bibliothek

Lösung zur Praktikumsaufgabe 1

Tafelübung zu BSRvS 1 3. Kreuzung

d) Welche Aussage zum Thema Adressräume ist richtig?

Interprozesskommunikation (IPC)

Was ist ein Prozess?

Praktischer Einstieg in Linux

pwd mkdir Zeigt das aktuelle Verzeichnis an Beispiel: pwd

Fachhochschule Frankfurt am Main Fachbereich 2: Informatik WS 2008/2009. Grundkurs Unix. Teil 1: Die Essenz von UNIX. Dr.

Dämon-Prozesse ( deamon )

Installation & Usage. Version 1.0. estickflashtool

4. Interprozeßkommunikation in UNIX

Linux-Einführung Übung

Embedded So)ware. Einrichten der Arbeitsumgebung

Inhaltsverzeichnis. Carsten Vogt. Nebenläufige Programmierung. Ein Arbeitsbuch mit UNIX/Linux und Java ISBN:

Systemnahe Programmierung in C Übungen Jürgen Kleinöder, Michael Stilkerich Universität Erlangen-Nürnberg Informatik 4, 2011 U7.fm

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

Transkript:

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 Dateien Peripherie über Filedescriptor behandelbar Zwei Arten von Dateien: binär und ASCII Auch Systeminformationen sind Dateien im Verz. /proc

1.2 Ordner Sind Dateien vom Typ Ordner Enthalten die Namen der Dateien im Verzeichnis Enthalten immer./ Verweis auf aktuelles Verzeichnis Enthalten immer../ Verweis auf übergeordnetes Verzeichnis

1.3 Links zwei Arten von Links symbolic links und hard links symbolic links sind Verweise auf einen Verweis ( Datei ) hard links sind Verweise auf eine Speicherstelle symbolic links funktionieren auch über Partitionsgrenzen

2. Prozesse root Prozess init ist parent aller Prozesse Jeder Prozess hat einen parent Prozesse erben ihre Zugriffsrechte vom aufrufenden Benutzer Wenn der parent stirbt dann stirbt das child mit ihm

3. Unix Tools Unix Tools haben eine Hilfe die mit -h help aufgerufen wird Ausführliche Beschreibung unter man <toolname> Jedes Unix Tool tut 1 Sache Unix Tools sind zur Zusammenarbeit konzipiert worden

4. Die Shell 4.1 Eigenschaften 4.2 Shellscript

4.1 Eigenschaften Shell ist Kommandointerface zum Kernel bietet einen Scriptinterpreter ( je nach Shell unterschiedlich ) hält Umgebungsvariablen wie $PATH äußerst mächtig

4.2 Shellscript Ist in jeder Shell unterschiedlich Enthält grundsätzliche Arithmetische Logik ( for while usw..) Kann in Dateien gespeichert werden ( Header #!/bin/sh ) sehr leicht zu erlernen, mächtig

Programmierung unter Linux 1. Werkzeuge 2. System calls

1. Werkzeuge 1.1. gcc 1.2 make 1.3 vim

1.1 gcc GNU compiler collection Aufruf: gcc -o <binaryname> <sourcecodefile> In Kombination mit gdb sehr mächtig Enthält Compiler für viele gängige Programmiersprachen ( C / C++ / Java usw..)

1.2 make Aufruf: make <option> Bsp.: make clean od. make Sucht beim Aufruf nach makefile od. Makefile Ist Regelinterpreter ruft im Makefile definierte Kommandos auf Erleichtert mehrfache Programmkompilierung

1.3 vim Aufruf: vim <dateiname> Einer der mächtigsten Editoren überhaupt Unterstützung für fast jede Art von Textdatei ( Highlighting ) Besitzt 3 Modi ( Insert / Editor / Command )

2. System calls 2.1 Grundliegende SC 2.2 IPC

2.1 Grundliegende SC 2.1.1 getpid() 2.1.2 getppid() 2.1.3 fork() 2.1.4 execl() 2.1.5 ftok()

2.1.1 getpid() Aufruf: getpid() Liefert: pid des Prozesses vom Typ pid_t

2.1.2 getppid() Aufruf: getppid() Liefert: pid des parent Prozesses vom Typ pid_t

2.1.3 fork() Aufruf: fork() Liefert: pid des childs im Erzeuger im child immer 0 Typ pid_t Erzeugt identische Kopie vom Aufrufer ( Programmdaten, alles)

2.1.4 execl() Aufruf: execl( &filename, &arg) Liefert: -1 bei Fehler Startet eine binary innerhalb des Aufrufers

2.1.5 ftok() Aufruf: ftok(../keyfile, 1) Liefert: liefert key vom Typ key_t

2.2 IPC 2.2.1 Signal Handler 2.2.2 Message Queue 2.2.3 Shared Memory 2.2.4 Semaphore

2.2.1 Signal Handler Aufruf: signal( SIGTERM, functionpointer) Richtet einen Signalhandler ein für die übergebene Funktion Wird ausgelöst wenn ein Signal vom Typ SIGTERM ankommt

2.2.2 Message Queue 2.2.2.1 Erzeugen 2.2.2.2 Senden 2.2.2.3 Abholen 2.2.2.4 Löschen

2.2.2.1 Erzeugen Aufruf: msgget( key, IPC_CREAT IPC_EXCL 0600 ) Liefert: ID der erzeugten MSQ Erwartet: eindeutigen key ( am besten mit ftok() erzeugen )

2.2.2.2 Senden Aufruf: msgsnd( id, &message, sizeof(message), 0) Liefert: 0 bei Erfolg Erwartet: id von existenter MSQ, Adresse von message struct, Größe der message sowie flags

2.2.2.3 Abholen Aufruf: msgrcv( id, &message, sizeof(message), type, 0) Liefert: bei Erfolg die tatsächliche Größe der message sonst -1 Erwartet: type = 0 dann FIFO ansonsten wird geholt was dem type entspricht

2.2.2.4 Löschen Aufruf: msgctl( id, IPC_RMD, &buffer) Liefert: 0 bei Erfolg sonst -1 Erwartet: Kommando ob Status Überprüfung oder Löschen der Message Queue gefragt ist, falls IPC_STAT dann wird die Antwort in buffer geschrieben

2.2.3 Shared Memory 2.2.3.1 Erzeugen 2.2.3.2 Anbinden 2.2.3.3 Lösen 2.2.3.4 Löschen

2.2.3.1 Erzeugen Aufruf: shmget( key, sizeof(element) * 100, IPC_CREAT 0600) Liefert: bei Erfolg die ID der SHM Erwartet: Die Größe des gewünschten SHM Segments

2.2.3.2 Anbinden Aufruf: shmat( id, 0, 0) Liefert: Die Referenz auf das SHM Segment

2.2.3.3 Lösen Aufruf: shmdt( &address) Liefert: 0 bei Erfolg Erwartet: Referenz auf das SHM Segment

2.2.3.4 Löschen Aufruf: shmctl( id, IPC_RMD, &buffer) Liefert: 0 bei Erfolg sonst -1 Erwartet: Kommando ob Status Überprüfung oder Löschen des SHM gefragt ist, falls IPC_STAT dann wird die Antwort in buffer geschrieben

2.2.4 Semaphore 2.2.4.1 Erzeugen 2.2.4.2 Operationen 2.2.4.3 Löschen

2.2.4.1 Erzeugen Aufruf: semget( key, amount, IPC_CREAT IPC_EXCL 0600) Liefert: bei Erfolg ID der SEMM sonst -1 Erwartet: eindeutigen key_t, Menge der Semaphore

2.2.4.2 Operationen Aufruf: semop( id, list, amount ) Liefert: bei Erfolg die ID der Semaphormenge sonst -1 Erwartet: die eine Liste vom Typ sembuf, sowie die Anzahl der list elemente

2.2.4.3 Löschen Aufruf: semctl( id, IPC_RMD, &buffer) Liefert: 0 bei Erfolg sonst -1 Erwartet: Kommando ob Status Überprüfung oder Löschen des SEM gefragt ist, falls IPC_STAT dann wird die Antwort in buffer geschrieben

Vielen Dank für eure Aufmerksamkeit? :o) Diese Präsentation wurde erstellt und gehalten mit GNU Software DANKE RMS, Linus und alle Free Software Entwickler