Systemprogrammierung

Description

C-Programme (Ausführung) und Pipes
Patricia Steves
Flashcards by Patricia Steves, updated more than 1 year ago
Patricia Steves
Created by Patricia Steves over 8 years ago
17
0

Resource summary

Question Answer
Programmausführung Shell-Programmierung Quellcode, Eingabe > Interpreter > Ausgabe
Programmausführung C-Quellcode: Detail Quellcode > Compiler > Maschinencode Maschinencode > Linker > Executable Eingabe > Executable > Ausgabe
Programmausführung C-Quellcode: Einzelschritte 1. Kompilieren: gcc -c main.c 2. Linken: gcc main.o -o my_prog 3. Ausführen: ./my_prog
Makefile Dient zu einfacherem Übersetzen von Programmdateien (automatisch). Liest und interpretiert Inhalt der "Makefile" Konsolenkommando 'make' verarbeitet Datei Makefile im aktuellen Verzeichnis
Was ist ein Pointer? Variable, die die Startadresse von Daten im RAM kennt
Operatoren für Pointer in C &: Liefert Speicheradresse eines Datenobjekts *: liefert/ändert den Inhalt einer Speicheradresse
Was bedeutet Datentyp *pointer = Speicheradresse; ? pointer = Adresse, worauf Pointer zeigt &pointer = Speicheradresse auf Heap *pointer = Wert, der an Pointer-Adresse abgelegt ist (= "Dereferenzierung")
Bei Programmstart sind gewöhnlich 3 Zugriffe geöffnet. Wofür stehen jeweils 0, 1, 2? 0: Standard-Eingabe 1: Standard-Ausgabe 2: Standard-Fehler
Was soll die Standard-I/O-Bibliothek mit der Header-File stdio.hdarstellen? Interface zu Low-Level-Systemaufrufen. Zugang zur Datei "filename", Stream als Pointer auf FILE * zuordnen. auch: fclose
Wozu dient die Fork-Funktion? (!) Erzeugt einen Klon des aufrufenden Prozesses. Bis auf Datenraum, Umgebung, File-Handles ist Klon identisch zu Original. => Kindprozess kennt alle vor fork() definierten Größen und fährt an gleicher Stelle fort
Was machen die Funktionen 'wait' und 'waitpid'? Prozesse, die mit fork erzeugt werden, laufen unabhängig voneinander weiter. Mit den Funktionen wait und waitpid kann der Originalprozess warten, bis ein Kindprozess beendet ist. wait: beliebig, waitpid: nur pid-Prozess
Macros zur Ermittlung des Beendigungsstatus mittels status_loc? WIFEXITED(status_loc) = true, wenn Kindprozess sich normal beendete WEXITSTATUS(status_loc) = Exit-Code, fallse WIFEXITED true WIFSIGNALED(status_loc) = true, wenn Kindprozess anormal beendet wurde
Was sind die Eigenschaften von Pipes? Können nur zwischen Prozessen mit gleichen Vorfahren eingerichtet werden. Pipes sind halbduplex, d.h. Daten können immer nur in eine Richtung fließen.
Wie wird eine Pipe im Kernel eingerichtet? #include <unistd.h> int pipe(int fd[2]); Rückgabewerte: 0 (Erfolg), -1 (Fehler) fd[0]: Lesen aus der Pipe fd[1]: Schreiben in die Pipe
(Normale) Pipes können nur zwischen Prozessen verwendet werden, wenn ein gemeinsamer Vorfahr die Pipe erzeugt hat. Wie können Daten zwischen beliebigen Prozess ausgetauscht werden? Mit FIFOs oder named pipes. mkfifo legt eine Datei mit gegebenem Pfadnamen an. Fkt.: open, read, ... Oft zum Datenaustausch zwischen Clients und einem Server verwendet.
Was sind Semaphoren? Semphoren sind postive, ganze Zahlen, deren Wert mittels atomarer Operationen (up, down) geändert wird. Sie steuern den Zugang zu kritischen Regionen im Programm.
Show full summary Hide full summary

Similar

Klausurvorbereitung Betriebssysteme
Sergej Seifert
Betriebssystem Zusammenfassung
Sophia S
Dezimalzahlen addieren
Puschel2theLimit
Quiz Betriebssysteme
Marc Faulhaber
Betriebssysteme
Patricia Steves
Latein
Luisa Müller
Software Grundlagen
Dynamia Verlag
Betriebssysteme I
Dennis Weller
Betriebssysteme
Robin Schlünsen
Untitled
ChrisS