Ruud- 4 - Communicatie tussen threads Flashcards
Waarom bevat de implementatie van een message queue een semafoor (minmaal 1)?
Een semafoor is nodig om te voorkomen dat meerdere threads “gelijktijdig” toegang tot de
mailbox zouden kunnen krijgen (gevaar van race-conditions)
Noem een belangrijk verschil tussen een message queue en message passing
- Message queue: De communicatie verloopt via een stuk geheugen (mailbox) van het
operatingsysteem. - Message passing: De data worden gelijk geplaatst in het geheugen van het doelproces.
Leg uit wat een time-out bij het verzenden en ontvangen van data naar een message queue voor een functie heeft
- Bij verzenden: Een tijdsinterval waarin gewacht wordt totdat de mailbox weer vrije ruimte heeft
voor het te versturen bericht. - Bij ontvangen: Een tijdsinterval waarin gewacht wordt totdat de mailbox weer een nieuw bericht
bevat
Welke POSIX system calls zijn er benodigd voor communicatie m.b.v. een pipe? Geef bij elke system call een toelichting.
pipe(): voor het creëren van een pipe
read(): voor het lezen uit een pipe
write(): voor het schrijven naar een pipe
Welke POSIX system calls zijn er benodigd voor shared memory communicatie? Geef bij elke system call een toelichting.
shmget(): voor het creëren van een hoeveelheid gemeenschappelijk geheugen
shmat(): voor het verkrijgen van een pointer naar het gemeenschappelijk geheugen
Bij veel real-time operating systemen kan communicatie tussen threads ook plaatsvinden d.m.v. “signals”. Hoe kun je – in POSIX – een signaal (signal) versturen en hoe kun je een signaal afvangen?
Versturen: int kill (pid_t pid, int sig); bij pid= ─1 een broadcast.
Ontvangen: sighandler_t signal(int signum, sighandler_t handler);