Bsys2 - Funktionen

Bsys2 - Funktionen

Bsys2 - Funktionen


S. N.
Diese Lernkarten behandeln fortgeschrittene Funktionen im Bereich der Informatik, insbesondere Prozesse, Threads, Speicherverwaltung und Signalhandhabung. Sie decken Themen wie Dateioperationen, Shared Memory, Message Queues und Synchronisationsmechanismen wie Mutexes und Semaphore ab. Die Karteikarten sind ideal für Studierende, die sich mit Systemprogrammierung und paralleler Verarbeitung beschäftigen, da sie praktische Funktionen und deren Anwendung in der Praxis erläutern.
Flashcards
77
Students
5
Language
German
Category
Computer Science
Level
University
Created / Updated
25.08.2018 / 26.08.2019

Flashcards

char * getenv(const char * key)

Gibt Wert von Umgebungsvariable key zurück

int setenv(const char *key, const char *value, int overwrite)

wenn key schon vorhanden und overwrite !=0 überschreiben von bestehendem Wert, sonst neue Umgebungsvariable erstellen und key / value kopieren

int unsetenv(const char* key);

Entfernt Umgebungsvariable mit Key key

int putenv(char *kvp)

Fügt den Pointer kvp zum Umgebungsvariablen Array dazu, String wird nicht kopiert

pid_t fork(void) 

erzeugt exakte Kopie von Prozess ausser eigene Prozess-ID und Parent-Prozess-ID und führt Code bei beiden Prozessen am gleichen Ort (nach fork) fort In Parent wird bei Erfolg die Prozess-ID des Childs zurückgegeben und im Child gibt die Funktion 0 zurück

pid_t wait (int *status)

Unterbricht den Prozess bis einer seiner Child-Prozessen beendet wurde (Out Parameter mit Statusparametern)

pid_t waitpid(pid_t pid, int *status, int options)

Wie wait() aber es kann spezifiziert werden auf welchen Child-Prozess gewartet werden soll (pid == -1 auf irgendeinen => wait)

unsigned int sleep(unsignet int seconds)

Unterbricht den Prozess für Anzahl Sekunden

void exit (int code) 

Beendet Prozess mit in code definiertem Wert

int atexit(void (*function)(void)) 

Registriert Funktion zum Ausführen bevor Prozess beendet wird (Aufräumarbeiten)

nt pthread_create(pthread_t *thead_id, pthread_attr_t const * attributes, void * (*start_function) (void *), void *argument) 

Erzeugt Thread und gibt bei Erfolg 0 zurück, Out Parameter thread_id

Attributes 0 für default attributes, start_function muss die Adresse der auszuführenden Funktion übergeben werden, als Argument kann ein Struct auf dem Heap übergeben werden

Um Attribute zu setzen muss man ein pthread_attr_t erstellen und dieses übergeben, um dem Attribut Funktion zu übergeben müssen diverse Funktionen auf dem Attribut aufgerufen werden (z.B pthread_attr_setstacksize(&attr, 2)

void pthread_exit(void *exit_code) 

Beendet Thread und gibt den exit_code zurück

int pthread_cancel(pthread_t thread_id) 

Sendet Anforderung um Thread zu beenden aber überprüft nicht ob er geschlossen wurde

int pthread_detach(pthread_t thread_id) 

Entfernt den von einem Thread verwendeten Speicher, falls der Thread noch läuft wird nichts unternommen

int pthread_join(pthread_t thread_id) 

Wartet bis der Thread mit thread_id beendet wurde und ruft anschliessend pthread_detach auf

int pthread_key_create(pthread_key_t *key, void (*destructor)(void*)) 

Erzeugt Key im Out-Parameter Key

int pthread_key_delete(pthread_key_t key) 

Entfernt den Key und die Werte aus allen Threads => Programm muss zusätzlich allozierter Speicher freigeben

int pthread_setspecific(pthread_key_t key, const void *value)

Schreibt den Wert in den Thread Local Storage

void * pthread_getspecific(pthread_key_t key)

Liest wert aus Thead Local Storage

int sem_init(sem_t *sem, int pshared, unsigned int value) 

Initialisiert Semaphor mit einem Value, ist pshared = 0 kann er nur innerhalb eines Prozesses verwendet werden

int sem_wait(sem_t *sem) & int sem_post(sem_t *sem) 

Implementieren Post & Wait, geben 0 zurück wenn ok sonst -1 und Fehlercode in errno

int sem_destroy(sem_t *sem) 

Entfernt zusätzlicher Speicher den das OS mit sem assoziiert hat

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t * attr)

The pthread_mutex_init() function initializes a mutex with the specified attributes for use. The new mutex may be used immediately for serializing critical resources. If attr is specified as NULL, all attributes are set to the default mutex attributes for the newly created mutex.

int pthread_mutex_lock(pthread_mutex_t *mutex)

Lockt den Mutex

int pthread_mutex_unlock(pthread_mutex_t *mutex)

Gibt Mutex frei

Priority Inversion

Thread mit hoher Priorität muss auf Ressource warten die von Thread mit tiefer Priorität gehalten wird, Priorität von hohem Thread wird runtergesetzt

Priority Inheritance

Thread der eine Ressource hält bekommt die höchste Priorität aller Threads die auf die Ressource warten

int sigaction(int signal, struct sigaction *new, struct *sigaction old)

Signal ist die Nummer des Signal, definiert Signal Handler für signal wenn new != 0, gibt bestehenden Signal-Handeler zurück

stuct sigaction { void (*sa_handler)(int); sigset_t sa_mask; int sa_flags: }; 

sa_handler ist die Handler-Funktion, sa_mask gibt an welche Signale blockiert werden sollen, sa_flags verschiedene zusätzliche Eigenschaften

SIGFPE 

Programmfehler (z.b 1/0)

SIGILL

Programmfehler ungültige Instruktion

SIGSEGV

Programmfehler ungültiger Speicherzugriff

SIGSYS

Programmfehler ungültiger Systemaufruf

SIGTERM 

Prozess beenden (normal, höflich)

SIGINT

Prozess beenden (nachdrückliche Aufforderung)

SIGQUIT

Prozess beenden (nachdrücklich, als abnormale Terminierung gewertet)

SIGABRT 

Prozess beenden (nachdrücklich, abnormal, bevorzugt von Prozess an sich selbst)

SIGKILL

Prozess beenden (kann nicht ignoriert oder überschrieben werden)

SIGTSTP 

versetzt Prozess in Zustand stopped

SIGSTOP

versetzt Prozess in Zustand stopped aber kann nicht ignoriert werden

Study