WEEK 5 Flashcards

1
Q

Wat zijn pipes?

A

Een pipe is een operator die de stdout van een proces koppelt aan de stdin van een ander proces, bijvoorbeeld via een circulaire buffer.

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

Welke stappen moet je doorlopen om een bericht van een proces naar een
ander te sturen in Unix?

A

Proces A moet met msgget een message queue creëren en proces B moet dezelfde system call maken, maar zonder de optie om de queue te creëren. Deze functie geeft een queue id (die werkt als handle) terug. Proces A kan dan met msgsnd een bericht op de queue zetten, hetgeen proces B (en eventuele anderen die dezelfde queue gebruiken) kunnen lezen met msgrcv. Dit kan ook omgekeerd, de creator is niet noodzakelijk de (enige) sender. Verder is er nog de msgctl system call, die voor controle-commando’s gebruikt wordt, bijvoorbeeld om de queue te verwijderen.

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

Welke stappen moet je doorlopen om een shared memory segment op te zetten in Unix?

A

Een proces kan met shmget een handle krijgen voor het stuk shared memory. Met de shmat system call kan vervolgens dit stuk shared memory op een adres worden gemapt. Dit adres kan dan bepaalde data bevatten, die door alle processen waarmee geshared wordt kan gelezen en beschreven worden. Met shmdt wordt het shared memory ge-unmapt. Verder is er ook nog shmctl voor controle-commando’s.

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

Hoe kan het OS een deel geheugen delen tussen verschillende processen?

A

Door de page tables van de verschillende processen naar dezelfde frames te laten verwijzen.

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

Welke geheugensegmenten worden gedeeld door threads?

A

Het code-segment en het data-segment.

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

Wat is het verschil tussen een proces en een thread?

A

Een thread is een deel van een proces, dat functioneert als een soort light-weight proces. Threads delen code en data-segmenten, maar processen zijn volledig geïsoleerd.

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

Wat zijn de voor- en nadelen van threads?

A

Threads van eenzelfde proces kunnen elkaar vertrouwen, daardoor is er minder beveiliging nodig bij de contextswitchen. Ook moeten de geheugensegmenten niet opnieuw ingesteld worden, aangezien zij geshared zijn. Dit zorgt ervoor dat de context-switch tussen threads soms zelfs volledig in user-mode kan. Door het gesharede data-segment is de communicatie tussen threads veel eenvoudiger dan de communicatie tussen processen. Anderzijds moet er wel opgelet worden voor problemen met gelijktijdigheid. Bepaalde stukken code mogen immers niet gelijktijdig worden uitgevoerd, waarvoor extra functionaliteit moet voorzien worden.

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

Wat is het verschil tussen user-level thread en kernel-level thread? Wat zijn de
voor- en nadelen?

A

Bij user-level threads gebeurt de threading volledig buiten het oog van het OS. Elk proces dat met threads wil werken heeft zelf een scheduler voor threads.
Het voordeel is dat er dan geen switch naar kernel-mode nodig is voor de context-switch.
Nadelig is dat er meer logica in het proces moet staan en dat, wanneer het proces in de ready queue staat, alle threads moeten wachten.

Bij kernel-level threads doet het OS de scheduling van threads.
De voordelen zijn dat dit transparant is voor de processen en dat threads onafhankelijk van hun processen kunnen gescheduled worden.
Nadelig is dat er een switch naar kernel-mode voor nodig is.

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

Waarom worden lokale variabelen niet gedeeld tussen threads en globale wel?

A

Lokale variabelen staan op de stack en die worden niet gedeeld. Globale variabelen staan in het data-segment en dat wordt wel gedeeld.

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

Wat is load-balancing in een multiprocessor?

A

De load moet gelijk over de verschillende cores verdeeld worden.

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

Teken de architectuur van een multiprocessor machine?

A

Zie afbeelding in antwoorden p18

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

Wat is het verschil tussen een master-slave en een SMP multiprocessor OS?

A

Bij master-slave multi-processing is 1 processor de master en de anderen zijn de slave. De master draait de kernel, doet de scheduling en geeft dus taken aan de slave. Dit is redelijk eenvoudig te implementeren, maar de master kan wel een bottleneck worden.

Bij SMP (Symmetric Multi-processing) draait iedere processor zijn eigen kernel en doet iedere processor zijn eigen scheduling. Dit vereist grondige wijzigingen in de kernel om gelijktijdigheidsproblemen op te lossen.

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

Wat is een ‘critical section’?

A

Een stuk code dat maar door één proces tegelijkertijd mag worden uitgevoerd, bijvoorbeeld omdat het gebruik maakt van een shared resource? Er moet dus een manier zijn om deze resource te locken.

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

Leg uit wat een semafoor is? Welke operaties kan je erop uitvoeren en wat
doen deze?

A

Een semafoor is een nummer waaraan de betekenis wordt gegeven dat het bijhoudt hoeveel processen tegelijkertijd een bepaalde resource kunnen gebruiken. Meestal is dit 1, al kan het ook 0 zijn, voor communicatie tussen processen, of iets hoger dan 1, afhankelijk van de requirements. Om dit te beginnen gebruiken dient dan wait() uitgevoerd te worden. Hierna kan de resource gebruikt worden, waarna signal() dient uitgevoerd te worden om de resource opnieuw vrij te geven. Wait() vermindert de value van de semafoor. Zolang de value kleiner is dan 0 voegt het het proces toe aan een queue en laat het het wachten. Signal() verhoogt de value en zal, indien de value kleiner of gelijk is dan 0, het eerste process in de queue laten verder gaan.

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

Leg uit wat deadlocks zijn? Wanner treden ze op?

A

Een deadlock is een situatie waarbij verschillende processen geblokkeerd zitten doordat ze resources nodig hebben die door de andere processen (in deze groep van gedeadlockte processen) gelockt zijn, hetgeen ervoor zorgt dat geen van de processen nog verder kan.

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