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.