Oplossingen van de opgaven van hoofdstuk 13
- Een operating system heeft de volgende taken:
- Het regelt de communicatie met randapparaten.
- Het verdeelt, regelt en organiseert de systeem-resources.
- Het legt op de hardware een software-laag, waardoor de gebruiker
de mogelijkheid heeft op een hardware onafhankelijke manier van het systeem
gebruik te maken.
- Een process is een programma in uitvoering. Multitasking is te
realiseren door processen telken een korte tijd te geven om te te runnen
en aldus de CPU-tijd over de beschikbare processen te verdelen.
- Als er een garantie moet zijn dat een operating system binnen zekere
tijd op een gebeurtenis reageert, dan is een real-time operating system nodig.
- Bij paging wordt het geheugenbeheer ten behoeve van processen gedaan
op basis van vaste stukken geheugen, de zogenoemde pages. Een process
bestaat uit een of meer pages en toewijzing van geheugen vind plaats op basis van
pages. Als een process actief is (running), worden de bijbehorende pages
door de MMU naar de juiste adressen gemapped.
Paging biedt de mogelijkheid van virtueel geheuegen. Van een process hoeven niet
alle pages echt in het werkgeheugen aanwezig te zijn. Op deze wijze is het
mogelijk processen te runnen die niet in het geheugen zouden passen als
ze in hun geheel geladen moeten worden.
- In onderstaande figuur is de optelling van het Codesegment register (CS)
en de Program Counter (PC of IP genoemd) in zijn werk gaat. Het resultaat is
een twintig bits adres.
- User-mode is een werktoestand van de CPU waarin niet alle instructies
mogelijk zijn. In kernel-mode mogen alle instructies uitgevoerd worden.
Dit is nodig om een goede bescherming tussen gebruikers en hun processen
te bewerkstelligen. Userprocessen draaien in user-mode.
Na een systeemreset of startup verkeert de CPU in kernel-mode. Met een
speciale code kan de CPU overgaan in user-mode. Is een CPU eenmaal in user-mode
dan kan alleen een exception de CPU weer in kernel-mode brengen. In de
praktijk betekent dit meestal dat de kernel de exception afhandelt, waardoor de
user niet direct vat heeft op de acties die in kernel-mode worden uitgevoerd.
- Bij een pre-emptive scheduler zal een process als gevolg van een hardware timer
interrupt afgebroken worden en de scheduler kiest een nieuw process. Bij een
non-pre-emptive scheduler geeft een process zelf aan wanneer het tijdelijk
afstand wil doen van de CPU. Aan de laatste benadering kleeft het grote
nadeel dat van elk programma verwacht wordt dat het zich netjes gedraagt en
andere processen ook tijd gunt. Een enkel asociaal process kan alle CPU-tijd
opslokken. Ook een programmafout in een toepassing kan het hele systeem
ophangen.
- Bij het client-server model hanteert men de volgende benadering:
Een server stelt diensten aan een client (klant) beschikbaar. En client kan
van deze diensten gebruik maken. Tussen client en server vindt een
uitwisseling van berichten plaats op het moment dat de client een van de diensten
van de server wil gebruiken.
- Porcessen kennen een aantal mogelijkheden om data uit te wisselen:
- Via het filesysteem. Een process kan gegevens van een ander process ontvangen via
een file.
- Via een FIFO mechanisme (pipe). Een process kan via een communicatiekanaal
data van een ander process ontvangen. We hebben hier te maken met een datastroom.
- Via gemeenschappelijk geheugen (shared memory). En process kan data ontvangen van een ander process
door data in het geheugen te lezen die door het andere process geschreven zijn.
Hiervoor is het noodzakelijk dat beide processen een gemeenschappelijk stuk
geheugen hebben.
- Via signals. Een process kan een korte code naar een ander process sturen.
- Via berichten (messages). Een process kan een hoeveelheid data van een
ander process in de vorm van een bericht ontvangen. Het bericht kan via een bepaald
protocol opgebouwd zijn.
- De drie in het boek besproken vormen zijn:
- RMS
- EDF
- LSF
- De vier taken van een devicedriver zijn:
- Initialisatie
- Herconfiguratie
- Aansturing
- Interrupt afhandeling