Processor besturing: context switching

advertisement
Basisfuncties nader bekeken.
1.
2.
3.
4.
5.
Processor besturing
Geheugenbeheer
Randapparatuur besturing
Applicatie interface
Gebruikers interface
Processor besturing: Interrupt
Een interrupt is een wijziging in het verloop van het programma die
niet wordt veroorzaakt door het programma zelf.
•
•
•
•
Een programma kan bijvoorbeeld de harde schijf opdracht
geven met het overdragen van informatie.
De harde schijf genereert een interrupt (een signaal aan de
CPU) zodra de overdracht gereed is.
De interrupt onderbreekt het programma en geeft de besturing
over aan een interrupt handler, die een of andere actie
uitvoert.
Wanneer hij klaar is geeft de interrupt-handler de besturing
terug aan het onderbroken programma.
Het onderbroken proces moet opnieuw starten in precies dezelfde toestand
als waar het zich in bevond voordat de interrupt plaatsvond. Daarvoor zijn
alle registers opgeslagen in de interrupt stack.
Processor besturing: multitasking
Meerdere applicaties draaien “gelijktijdig” op een computer.
“Gelijktijdig”: iedere applicatie krijgt een deel van de processortijd.
Een draaiende applicatie kan beschouwd worden als een proces.
Wanneer twee applicaties draaien zal er tussen beide processen gewisseld
moeten worden, waarbij de status van het proces wordt bewaard: context
switching.
Processor besturing: context switching
Voorbeeld
Stel dat er twee applicaties draaien: A en B.
De CPU voert de instructies van programma A uit. Op een bepaald moment
wordt er data weggeschreven naar de harde schijf.
In plaats van de CPU te laten wachten totdat alle data is weggeschreven, is
het effectiever om de processor nu de instructies van programma B te laten
uitvoeren.
Processor besturing: context switching
Om te kunnen switchen moet het volgende gebeuren:
•
•
•
•
Het adres van de instructie die volgt na het datatransport staat in de
programcounter. Dit adres moet bewaard worden.
Vervolgens moet het adres waar programma B mee verder gaat in de
programcounter geplaatst worden.
Ook moet de inhoud van alle andere registers ook bewaard worden,
omdat hij hoort bij programma A.
De inhoud van alle andere registers van programma B moet worden
teruggezet.
We moeten de complete processor context van programma A opslaan en
de processor context van B terugzetten.
Processor besturing: context switching
Programma A
Operating System
save registers A
selecteer programma B
restore registers B
save registers B
selecteer programma A
restore registers A
Programma B
Geheugenbeheer
Een belangrijke taak van het OS is het toewijzen van het geheugen aan
verschillende programma’s.
Probleem
Ieder programma doet een eigen beroep op het geheugen en heeft eigen
verwijzingen naar geheugenadressen.
Andere programma’s mogen daar geen veranderingen in aanbrengen.
Oplossing
Zie de adressen in een programma niet als absolute adressen maar
relatieve adressen.
Dit vereist een aanpassing aan de hardware zodat die het verschil kent
tussen absolute adressen en relatieve adressen.
Geheugenbeheer
Hoe gaat dat in zijn werk?
Ieder programma krijgt een basisadres toegewezen, het absolute
startadres van het programma.
Het basisadres wordt bewaard in het basisregister.
Programma A krijgt bijvoorbeeld als basisadres 2000 toegewezen en
programma B 12000.
Vanaf dat punt worden het programma in het geheugen geladen.
In de hardware is een functie ABS ingebouwd die een relatief adres ar
omzet in een absolute adres aa:
ABS(ar) = ar + basisadres
aa = ABS(ar)
Geheugenbeheer
Behalve een absoluut startadres krijgt een programma ook een absoluut
eindadres toegewezen. Dit adres wordt opgeslagen in het limietregister.
Hiermee wordt de maximum geheugenruimte die een programma krijgt
toegewezen bepaald.
Wanneer een programma probeert data of een subroutine te adresseren die
buiten de grenzen van zijn geheugen valt zal de instructie niet worden
uitgevoerd en er zal een foutmelding gegenereerd worden.
Geheugenbeheer
2000
0
2100
100
2200
200
2300
300
12
<=
5000
limietregister
>=
1000
LOAD 100, r9
+
2000
basisregister
5000
foutmelding
Randapparatuur besturing
Een van de taken van het OS is de communicatie tussen de applicaties en
de randappatuur.
Daarvoor heeft het OS een speciaal programma nodig dat de informatie
bevat over de taal en het protocol dat een bepaald apparaat vereist:
een driver.
Applicatie Interface: API
Om in Java een venster voor een applet te creëren volgens de Windows
norm volstond het om een instantie van de klasse Applet te creëren. Je
hoefde niet zelf het venster te programmeren.
Hierbij maakt Java gebruik van de API (Application Programming
Interface), een onderdeel van het OS.
De API zorgt ervoor dat programmeurs op een identieke wijze gebruik
maken van de hardware en dat updates van de hardware of het
besturingssysteem niet tot problemen leidt.
Gebruikersinterface
We maken een onderscheid in twee soorten gebruikersinterfaces:
• commandline interface, bv MS-DOS
• Graphical User Interface (GUI), bv Windows, Mac-OS
Gebruikersinterface
De basis van het OS wordt gevormd door de kernel. De kernel vormt de
brug tussen de hardware en de rest van het OS.
Daarnaast bevat het OS nog een aantal programma’s voor verschillende
functies, zoals bijvoorbeeld voor het bestandsbeheer.
De gebruikersinterface is een schil rond het OS, waarmee de gebruiker
communiceert met het OS.
Tegenwoordig hebben bijna alle OS wel de mogelijkheid om een GUI als
gebruikersinterface in te zetten.
Download