Bsys 2
Alle Quizfragen aus den Vorlesungen von Prof. Stefan Richter/HSR.
Alle Quizfragen aus den Vorlesungen von Prof. Stefan Richter/HSR.
Set of flashcards Details
Flashcards | 59 |
---|---|
Students | 11 |
Language | Deutsch |
Category | Computer Science |
Level | University |
Created / Updated | 25.07.2018 / 22.01.2020 |
Weblink |
https://card2brain.ch/box/20180725_bsys_2
|
Embed |
<iframe src="https://card2brain.ch/box/20180725_bsys_2/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Wenn ein Prozess gestartet wird, kopiert das Betriebssystem Umgebungsvariablen und Programmargumente in den Adressraum des Prozesses.
Stimmt
Das Betriebssystem ruft für jedes Programmargument, das mit einem - beginnt, z.B. -c, eine vom Programm bereitestellte Handler-Funktion auf.
Stimmt nicht.
Das handlen von Argumenten ist dem Programm überlassen
Programmargumente und Umgebungsvariablen sind jeweils ein Array, das Zeichenketten erhält.
Sind jeweils ein Array, jedoch enthält dieses Array keine Ziechenkette, sondern einen Pointer auf die Zeichenkette
Um eine neue Umgebungsvariable einzufügen, muss das OS neuen Speicher anlegen und das gesamte Array dort hinein kopieren.
Stimmt
Jedes Programm hat einen eigenen virtuellen Adressraum
Nur die Prozesse haben einen eigenen Adressraum
Wenn ein Interrupt auftritt, speichert der Prozessor immer den gesamten Kontext auf dem Stack
Flasch. Der Prozessor speichert im Prinzip praktisch nichts, nur:
- Flags
- Instruction Pointer
Danach wird der Interrupt Handler aufgerufen. Der bestimmt dann, was gespeichert werden soll. Üblicherweise Register.
Wenn das OS von einem Prozess A zu einem Prozess B schaltet, speichert es den aktuellen Kontext im PCB für A und liest ihn aus dem PCB für B
Wahr
Die Funktion fork startet einen neuen Prozess anhand des angegebenen Dateipfads
Falsch. Es klont das Programm an der aktuellen Stelle im Programmfluss.
Wenn sich der Child-Prozess vor dem Parent-Prozess beendet, wird der dann zum Zombie oder zum Orphan?
Zombie, aber nur wenn kein wait() drin ist.
Jeder Thread hat seinen eigenen Stack und Heap
Falsch. Sie haben einen eigenen Stack, teilen sich aber den Heap
Jeder Thread kann auf jeden Stack jedes anderen Threads im selben Prozess zugreifen.
Stimmt. Threads sind nicht gegeneinander geschützt. Sie können aufeinander Zugreifen und jeglichen Mist machen, auf den man gerade lustig ist.
Ein Prozess kann erst regulär beendet werden, nachdem all seine Threads regulär beendet wurden.
Falsch. Wenn der Prozess beendet wird, werden alle Threads automatisch auch beendet.
Amdahls Regel besagt, dass man mit n Prozessoren nur 1/n-mal soviel Zeit benötigt, wie mit einem Prozessor
Geht nur, wenn wirklich alles parallelisiert werden kann. Dieses Szenario ist in der echten Welt aber praktisch unmöglich, nur Annäherungen sind möglich.
Thread-Local-Storage wird verwendet, um lokale Variablen auf Threads zu verteilen.
Stimmt nicht. TLS bezieht sich auch globale Variablen.
Lokale Variablen sind im Stack des jeweiligen Threads.
Ein Thread im Zustand running kann direkt in den Zustand waiting oder in den Zustand ready wechseln
Stimmt
Die Ready-Queue hält immer alle Threads, die im Zustand ready sind, als FIFO-Puffer vor
Falsch. Gibt auch andere Scheduler, es muss nicht immer FIFO sein.
Bei präemptivem Scheduling wird einem Thread sofort der Prozessor entzogen, wenn ein anderer Thread in den Zustand ready kommt.
Stimmt nicht. Es reicht nicht, dass ein Thread einfach ready ist. Es muss auch einen Grund geben, warum dieser nun ausgeführt werden soll. Z.B. höhere Priorität.
Solange wie ein Thread A läuft, kann kein anderer Thread B seinen Zustand wechseln
Stimmt nicht. Threads können von waiting in den Zustand ready wechseln, egal ob ein anderer Thread läuft.
Round-Robin-Scheduling ist ein präemptives Verfahren, bei dem jeder Thread spätestens nach einer festgelegten Zeit den Prozessor abgeben muss.
Er müsste abgeben, WENN ein anderer Thread kommt. Wenn nur ein Thread läuft, muss er nicht zwingend abgeben.
Eine normale Inkrement-Operation auf einer Speicherstelle wird auf gängigen Architekturen nicht atomar durchgeführt.
Stimmt
Synchronisationsmechanismen können auf modernen Computern nur mit Hardwareunterstützung implementiert werden.
Stimmt.
Moderne Prozessoren machen allerlei Unfug, darum kann man nicht davon ausgehen, dass die Befehle so ausgeführt werden, wie angedacht. Stichwort: Out-of-Order Execution.
Semaphore sind Zähler, die garantiert korrekt erhöht oder erniedrigt werden.
Stimmt
Die Anwendungsprogrammierer müssen dafür sorgen, dass Priority-Inversion nicht auftritt.
Stimmt nicht.
Das Verhindern von Priority-Inversion ist Aufgabe des Betriebssystems
Mutexe können durch binäre Semaphore implementiert werden.
Stimmt
Ein Prozess überschreibe den Signal-Handler für SIGINT und löse in diesem keinen Prozessabbruch aus. Wird der Prozess beendet, wenn Ctrl-C gedrückt wird?
Prozess wird nicht beendet.
Ein Prozess überschreibe den Signal-Handler für SIGKILL und löse in diesem keinen Prozessabbruch aus. Wird der Prozess beendet, wenn kill -KILL processid ausgeführt wird?
Dieser Handler kann nicht überschrieben werden, der Prozess wird beendet.
Zwei Prozesse P und Q kommunizieren über Message-Queues miteinander. Funktioniert folgendes Verhalten zuverlässig?
P sendet eine Nachricht an Q und wartet dann auf eine Nachricht von Q.
Q sendet eine Nachricht an P und wartet dann auf eine Nachricht von P.
Läuft s zuverlässig. Die Prozesse bleiben nie im waiting-state hängen, weil bevor man ins waiting wechselt, hat man was geschickt und der andere Prozess kann weiter machen and vice versa
Das Wurzelverzeichnis heisst /
Nö, das Wurzelverzeichnis hat keinen Namen
Jeder Prozess hat sein eigenens Arbeitsverzeichnis
Jeder Prozess hat sein eigenes ihm zugewiesenens Arbeitsverzeichnis, das er aber nicht exklusiv für sich benutzen kann.
rwxr---- bedeutet, dass der Owner alle Rechte hat und alle anderen Benutzer nur lesen dürfen
Falsch. Der Owner hat Vollzugriff, die Gruppe des Owners darf nur lesen, andere Benutzer dürfen gar nichts.
File-Deskriptoren sind Indizes in eine globale Tabelle über alle Prozesse
Die Tabelle ist pro Prozess, von dort geht es dann in eine globale Tabelle
Alle I/O-Funktionen, die einen File-Deskriptor erhalten, arbeiten auf einem Puffer, der über den File-Deskripter referenziert werden kann.
FD sind die direkt API, die direkt auf Geräte zugreifen.
Die C-API hat einen Pointer auf Datentyp File und darüber einen Puffer. Bei Write get es direkt in die Datei, ohne Puffer
Zu jeder Datei und jedem Verzeicnis in ext2/ext4 gibt es genau einen Inode, aber beliebig viele Pfade (ausser Wurzelverzeichnis)
Stimmt
Jeder Inode von ext2/ext4 wird im Programm durch genau einen File-Deskriptor repräsentiert
Stimmt nicht, es können mehrere File-Deskriptoren auf einen Inode geöffnet werden.
"Satz sollte so stimmen" - Prof Stefan Richter, 2018
Der Superblock ist ein Block mit Metadaten, der einmal pro Gruppe existiert
Stimmt nicht.
Es ist kein Block, sondern ist ein Teil eines Blocks
Journaling liefert auf Festplatten u.a. deshalb einen Vorteil, weil die Daten sehr schnell in einen zusammenhängenden vorläufigen Bereich geschrieben werden können und dann später mit grösserem Aufwand an ihre endgültige Position
Stimmt. Journaling sort nicht nur für die Integrität des Filesystems, sondern eben auch für die oben erwähnte Aussage.
Der Loader lädt Executables, so dass sie als Prozesse ausgeführt werden können.
Stimmt
Das ELF Format umfasst eine Linking und eine Execution View
Stimmt