Betriebssysteme Flashcards

1
Q

Welche Aufgaben hat ein Betriebssystem /

A
  • Eine abstraktionschicht zwischen Hardware und Software aufzubauen
  • Verwaltung der Ressourcen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was sind Caches ? Warum sind die wichtig ?

A

Caches sind kleine, aber schnelle Speicher in das CPU, dass Copien von die Haufig verwendeten Daten des Haupspeichers speichern, um Haupspeicheranrufe zu vermeiden

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was passiert bei Systemaufrufen ? (Trap, Parameterubergabe)

A

Systemaufrufen bilden eine Interface sodass Anwendungen an Funktionen des BS zugreifen koennen.

  • Bei Trap Befehle oder Trap Interrupts wirds das BS ins Kernelmodus eingehen.
  • Parameterubergabe erfolgt mittels (fkt. args, Tabellen oder von der Call Stack poppen)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Nenne mich 15 Unix systemaufrufe

A
  • fork()
  • exit()
    -wait()
    -open()
    -read()
    -write()
    -close()
    -pipe()
    -shmget()
    -mmap()
    –ioctl()
    -read()
    -write()
    -chmod()
    -umask()
    chown()
    -getpid()
    -alarm()
    -sleep()
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was sind Shells ? Was ist ihre Funktion ins BS ?

A

Shells sind Kommandozeileninterpreter CLI, setzen Texteingaben in Aufrufe von BS Apis, und stellen die Ausgaben des BS dar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist der Unterschied zwischen ein Prozess und ein Program ? (4)

A
  • Ein PR ist ein Satz von Anweisungen, bei der Ausfuerhrung wird er als Prozess bezeichnet
  • PS sind aktiv, PR passiv
  • PS haben begrenzte Lebensdauer
  • PR sind in der FS gespeichert, erfordern keine weitere ressourcen. PS enthalten CP, Speicher, EA…
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was ist ein PCB ?

A

Process Control Block. Sind Datenstrukturen dass die notwendige Informationen zur Steuerung eine Prozesses enthaelt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was macht der Syscall execve() ?

A

Ersetzt das Speicherbild des aufrufenden Prozesses mit den Inhalt des Pfades “name” erstezen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wie kann einen Prozess auf einen Kind prozess warten ? Wie erzeugt und terminiert man prozesse ? (code)

A
while (TRUE) {
type_prompt();
read_command (command, parameters); /* Befehl einlesen */
if ( fork() != 0 ) {
// parent
waitpid (-1, &status, 0);
} else {
// child
execve (command, parameters, 0);
}
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Welche Prozesszustaende gibt es ? (5)

A
  • Neu = Prozess wird erstellt
  • Beendet = Der prozess wurde beendet
  • Laufend = Der Prozess wird ausgefuerht
  • Ready = Der prozess wartet um ausgefuerht zu werden
  • Wartend/Blocked = Der prozess wartet auf einen Ereignis
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was kann die Prozesszustaende Beeinflussen ?

A
  • Seine Zulassung, terminierung, oder eigene Fehlern
  • Interrupts von andere Prozesse
  • Der Scheduler
  • Das warten auf einen Ereignis
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Welche arten von IPC gibt es ?

A
  • Message Passing:
    • Synchrone oder Asynchrone Nachrichtuebermittlung
    • Vorteile: - Sender kann weiterhin arbeiten
    • Nachteile: Sender muss ein handle schicken zum Fragen ob der Nachrit zugestellt wurde, und noch eine Zusaetzliche Nachricht ist fuer die Bestaetigung notig
    • Bsp: Sockets, Remote Procedure Calls, Web services
  • Shared Memory:
    • Erstellung eines Segment des gem. Speichers, wo die Prozesse sich wie Saugetieren attachen.
    • Schreiben lesen mittels Kopieren der Speicher
    • Trennung mittels detach (shmdt(memory))
    • Vorteilen: Schreibzugriffe mussen nicht sofort an die FS geschrieben werden, und nach der Terminierung alle veranderung werden an die FS geschrieben.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was ist ein Memory Mapped Datei ?

A

Eine Art von IPC des Typs shared Memory wo einer Dateipfad als Segment id geteilt wird, stets der gem. Speichersegment

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Wie sieht eine Implementierung von shared Memory aus ?

A
segment_id = shmget (IPC_PRIVATE, size,
S_IRUSR | S_IWUSR);
shared_memory =(char *) shmat
(segment_id, NULL, 0);
sprintf(shared_memory, "Writing here...");
char read_value = *shared_memory;
shmdt (shared memory);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was sind Pipes ? Wie verwendet man den unter linux ?

A

Pipes sind Mechanismen die erlauben die Ausgabe von einen Prozess in der Eingabe von einen anderen Prozess umzuwandeln. In linux mit | geschrieben ls -la | grep

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Wie werden pipes in C behandelt ?

A
Pipes in C werden als eine weitere Datei behandelt
int main(void){
int pipe_verbindung[2];
pipe (pipe_verbindung);
if ( fork()==0 ) {
dup2 (pipe_verbindung[1], 1);
close (pipe_verbindung[0]);
execlp ("who","who",NULL);
} else if ( fork()==0 ) {
dup2 (pipe_verbindung[0], 0);
close (pipe_verbindung[1]);
execlp ("sort","sort",NULL);
}}
17
Q

Was ist ein Dateideskriptor unter POSIX ?

A

Der Index einer Geoffneten Date in der File struct. 0 stdin (tastatur), 1 stdout (konsole), 2 stderr

Konnen mittels DUP2 verandert werden

18
Q

Wie sieht sich eine PIPE in C aus ?

A

int main(void) {
int fd[2], nbytes; pid_t childpid;
char string[] = “Hello!\n”; char readbuffer[80];
pipe (fd);
if( (childpid = fork()) == -1) {
perror(“fork”); exit(1);
}
if(childpid == 0) {
close (fd[0]);
/* Child process closes up input side of pipe /
/
Send string through the output side of pipe /
write (fd[1], string, (strlen(string)+1));
exit(0);
} else {
close (fd[1]);
/
Parent process closes up output side of pipe /
/
Read in a string from the input side of pipe */
nbytes = read (fd[0], readbuffer, sizeof(readbuffer));
printf (“Received string: %s”, readbuffer); }
return(0); }

19
Q

Was ist die Beziehung zwischen Threads und Prozessen ? Welche Vorteilen hat die Verwendung von Threads ? (3)

A
  • Dass Threads innerhalb von ein Prozess laufen, und auf das ganze Speicherbild des Prozesses zugreifen kann.
  • Threads sind leichter und schneller zu erzeugen und terminieren (hohere Responsiveness)
  • Mehrere threads konnen das selbe Prozessspeicherbild gleichzeitig teilen (dh, kommunikation zwischen Threads einfacher)
  • Threads sind gut fuer E/A intensive Aktivitaeten geeignet (nuetzliche Paralelisierung, skalierbar)
20
Q

Unterschiede zwischen Kernel und Userthreads ? (3)

A

User level:

 - Schnelles Welchsel da kein Sys Interrupt notig
 - Nachteile:
   - Thread kann das Program blockieren mittels syscall. Da das BS nicht weiss das dass Prozess mehrere Threads hat
  - Multi Core Cpus nicht effizient verwentet (1 core x Prozess)

Kernel Level:

 - Preemptives Scheduling Moglich da, Threads konnen andere Threads nicht blockieren
 - Langsamer als user Threads, da Sprungs in BS notig.
21
Q

Welche sind die Grundaufrufe zur Threadverwaltung in POSIX ? (6)

A
  • pthread_create
  • pthread_exit
  • pthread_join (wartet auf beedingung eines Threads)
  • pthread_yield (Gibt CPU frei)
  • pthread_attr_init (init von Attr. struktur)
  • pthread_attr_destroy (loscht die Attributsstruktur)
22
Q

Warum ist threadprogrammierung schwierig ?

A

Dass wenn jeder Thread auf zb. Globale Variablen zugreift, dann kann die Veranderung von diese Variable einen Anderen Thread beeinflussen.
Loesung: Priv. Variablen pro thread

23
Q

Was ist eine Race Condition ?

A

Ist ein Software Problem, wo das Ergebnis einer Programausfuerhrung von der Reihenfolge oder dem Timing von Ereignissen abhaengt.

24
Q

Geben sie ein Program wo der Lost Update Problem auftritt

A
- Producer Consumer Problem
// producer
while(count == buffer_size) 
    // puffer voll
buffer[in] = nextProduced // eingabe
in = (in + 1) % buffer_size)
count++
//consumer
while (count == 0)
     // puffer leer
nextConsumed = buffer[out]
out = (out + 1) % buffer_size
count--
// ausgabe in nextConsumed

//Lost update in var. count

25
Q

Wie kann man Race Conditions verhindern ?

A
  • Mittels MUTEX (mutual exclusion), dh. verhindern dass zwei Prozesse gleichzeitig in eine Kritische Region auftreten waerhrend dass sie auf Ressourcen zugreifen.
26
Q

Welcher sind die Mutex Bedingungen (4)

A
  • Keine zwei PR durfen max. in der Krit. Reg. sein
  • Keine Annahmen ueber Geschwindigkeit und # von CPUs gemacht werden
  • Kein Prozess ausserhalb der Krit. Reg darf andere PR blockieren
  • Kein PR sollte viel warten um seine Krit. Reg. zu besuchen
27
Q

Wie lautet die Loesung von Peterson fuer Mutex ?

A
  • Unter der Annhahmen dass es Zwei Prozesse gibt mit nicht unterbrechbarer CPU Befehle Load und Store kann man:
  • Gem. Var. interested[i], besagt der PR i in der Krit. Reg. eintreten mochte
  • int turnWait: gibt der nachster Prozess dass warten muss.
28
Q

Wie lautet der Code von die Loesung von Peterson?

A
void enter_region(int Process) {
    int other = 1 - process;
    interested[process] = true;
    turnwait = process
    while(turnWait == process && interested[other] == true)
      // warten
}

void leave_region(int process) { interested[process] = false;}

29
Q

Welche Hardware befehle Ermoeglichen Locks ?, wie funktioniert das genau ?

A
  • LOAD und STORE assembler befehle
  • while(1) {
    enter_region() // block access (blockierend)
    // code in critical region
    leave_region() // free access
    }