(I) Inleiding
1. WAT IS EEN BS
A. EEN COMPUTERSYSTEEM BESTAAT UIT :
Hardware: Basisvoorzieningen: CPU, Geheugen, Invoer/Uitvoer
Toepassingsprogramma’s: De manier waarop de voorzieningen worden gebruikt om de noden van de
gebruikers te voldoen (compilers, database, spelletjes, andere applicaties…)
Gebruikers: Mensen, machines, andere computers
BS = programma dat de hardware in een computer beheert, de basis vormt voor toepassingsprogramma’s
en een bemiddelende rol tussen de gebruiker en de hardware speelt
Resource Allocator
beheert bronnen en wijst ze toe aan degenen die ze nodig hebben
Control Program
controleert de uitvoering van applicaties en de werking van I/O apparaten
Eigenlijk BS = Kernel
het ene programma dat steeds uitvoert (al de rest zijn systeemprogramma’s of applicaties)
Afhankelijke van de context is een bs in min of meerdere mate gebruikvriendelijk (pc) of efficiënt (server)
2. MAINFRAME SYSTEMEN
A. BATCH-SYSTEMEN
gebruikers konden niet rechtstreeks communiceren met het computersysteem, maar moesten een taak
voorbereiden en deze aan de computeroperator geven.
Taak = programma + de gegevens + controlegegevens over de aard van de taak (controlekaarten)
meestal op ponskaarten
Na enkele minuten/uren/dagen verscheen de uitvoer = resultaat + dump van de uiteindelijke geheugen- en
registerinhoud
Belangrijkste taak bs: automatisch van de ene taak naar de andere taak overschakelen. Bs was permanent
aanwezig in het geheugen.
Kenmerkend: CPU vaak inactief omdat gegevensverwerking veel sneller was dan mechanische invoer en
uitvoer
B. MULTIPROGRAMMED BATCHSYSTEMEN
optimaliseren van CPU gebruik door taken in te delen, zodat er altijd wel één of andere taak kan uitgevoerd
worden door de CPU.
alle taken worden bijgehouden in een Pool.
indien CPU een bepaalde taak aan het uitvoeren is en er moet gewacht worden op de voltooiing van een
andere taak (bv I/O), dan begint de CPU met de uitvoering van een andere taak. Na voltooiing kan de CPU
verder doen met de eerste taak. Zolang er taken moeten worden uitgevoerd is de CPU nooit inactief.
pagina 1 van 56
,JOB scheduling:
OS moet beslissingen nemen: als er verschillende taken tegelijk in het geheugen kunnen worden geladen,
maar er onvoldoende ruimte is voor alle taken moet het OS kiezen welke taken worden geladen.
er wordt één of andere vorm van geheugenbeheer vereist aangezien er verschillende programma’s
tegelijkertijd in het geheugen worden geladen.
de keuze die het bs moet maken tussen de verschillende taken die tegelijkertijd kunnen worden uitgeroerd
wordt CPU-scheduling genoemd.
de mogelijkheid dat taken elkaar kunnen beïnvloeden moet worden beperkt tijdens alle fasen van het
proces.
C. TIMESHARINGSYSTEMEN /MULTYTASKING SYSTEMEN
stellen gebruikers ook in staat met het computersysteem te communiceren
CPU voert verschillende taken uit door voortdurend van taak te wisselen. Dit gebeurt zo snel dat de
gebruikers met de programma’s kunnen blijven communiceren terwijl ze worden uitgevoerd
een computer kan tegelijkertijd met meerder gebruikers worden gedeeld omdat elke actie of opdracht in
een timeshared systeem gewoonlijk erg kort is (voor iedere gebruiker nauwelijks CPU tijd vereist)
past CPU-sheduling en multiprogramming toe. Voor iedere gebruiker is er minstens 1 afzonderlijk
programma in het geheugen geladen. De programma’s die in het geheugen zijn geladen en worden
uitgevoerd worden processen genoemd;
om een aanvaardbare responstijd te kunnen waarborgen moet het systeem taken soms tijdelijk uit het
hoofdgeheugen verwijderen in op de schijf opslaan. Hiervoor wordt meestal gebruik gemaakt van virtueel
geheugen.
timesharing systemen moeten ook een bestandsysteem beschikbaar maken. Om dat dit bestandsysteem
zich op een verzameling schijven bevindt, moet een vorm van schijfbeheer worden ondersteund.
om te waarborgen dat de taken systematisch worden uitgevoerd is ook een mechanisme vereist om taken
te synchroniseren en communicatie mogelijk te maken
3. DESKTOP SYSTEMEN
Terwijl multitasking bs in de eerste plaats het gebruik van de CPU en de randapparaten moeten optimaliseren,
moeten bs, voor pc’s de gebruiker ook zoveel mogelijk comfort en een zo kort mogelijke responstijd bieden.
efficiënt gebruik van de CPU is bij systemen met 1 gebruiker veel minder belangrijk dan bij mainframes
4. MULTI-PROCESSOR SYSTEMEN ( PARALLELLE OF GEKOPPELDE SYSTEMEN)
bevatten meerdere processors die nauw met elkaar in contact staan en die de computerbus, de interne klok
en soms ook het geheugen en de randapparaten met elkaar delen.
Dit biedt 3 grote voordelen:
A. HOGERE DOORVOER
het grotere aantal processors maakt het mogelijk in minder tijd meer taken uit te voeren
5verzerkingssnelheid neemt NIET evenredig toe met het aantal processoren aangezien systemen moeten
worden ingebouwd die waarborgen dat alle onderdelen correct blijven werken; bovendien kunnen er conflicten
ontstaan met gedeelde bronnen.
B. EFFICIENTER HARDWAREGEBRUIK
multiprocessorsystemen zijn goedkoper dan het equivalente aantal singleprocessorsystemen omdat
randapparaten, apparaten voor massaopslag en energiebronnen worden gedeeld.
Nieuwe ontwikkeling = Blade servers servers waarin meerdere processor- I/O en netwerkboards kunnen
worden geïnstalleerd in één behuizing. Verschil met multiprocessorsystemen: elke blade processor start
zelfstandig op en heeft zijn eigen bs.
C. GOEDE BETROUWBAARHEID (DOOR GRACEFULL DEGRADATION / FOUTTOLERANTE SYSTEMEN)
Als functies op de juiste manier over verschillende processors zijn verdeeld en er valt één processor uit, loopt
het systeem niet vast maar wordt het alleen langzamer
dit vereist één of ander mechanisme dat het mogelijk maakt fouten op te sporen, te analyseren en zo
mogelijk te verhelpen.
pagina 2 van 56
, Asymmetrische multiprocessing: aan elke processor wordt een bepaalde taak toegewezen; het
systeem wordt beheerd door een hoofdprocessor, de andere processoren voeren ofwel de instructies
van de hoofprocessor uit, ofwel vooraf gedefinieerde taken
master/slave verhouding
(komen veel voor in extreem grote systemen)
Symmetrische multiprocessing (SMP):
– Alle processoren evenwaardig en delen centraal geheugen
– Vele processen kunnen tegelijk worden uitgevoerd zonder prestaties te verminderen
– De meeste moderne
Nadelen:
- belangrijk I/O in goede banen te leiden zodat de juiste gegevens de juiste processor bereiken
- het is mogelijk dat de ene CPU inactief is terwijl een andere overbelast is; dit kan worden
opgelost door de processoren bepaalde datastructuren te laten delen zodat processen en
bronnen dynamisch worden verdeeld onder de verschillende processors en de werklast
gelijkmatig kan worden gespreid
5. REALTIME SYSTEMEN
Harde realtime systemen:
– Alles gebeurt binnen bepaalde tijdsbeperking
– Secundaire opslag beperkt of afwezig (veroorzaakt teveel variabele vertragingen)
– Opslag in ROM
– Niet in timesharing systemen of gewone BS
Zachte realtime systemen
– Realtime processen krijgen voorrang op andere
– Tijdsbeperking niet gegarandeerd
– Gemakkelijker te implementeren in gewone BS
6. MIGRATIE VAN VOORZIENINGEN
VB: MULTIPLEXED INFORMATION AND COMPUTING SERVICES (MULTICS BS)
- 1965-1970 als computer-utility ontwikkeld aan MIT - Uitgevoerd op grote complexe
mainfraimcomputers
- 1970 ideeën van MULTICS overgenomen in het ontwerp van UNIX – ontworpen voor een minicomputer
- 1980 voorzieningen in UNIX gebruikt als basis voor varianten op UNIX voor microcomputers
- Zelfde voorzieningen vinden ze terug in nieuwe bs zoals Windows XP en Mac OS X
- Ondertussen zijn enkele van deze voorzieningen ook terug te vinden op Linux voor PDA’s
pagina 3 van 56
, (II) Structuur van Computersystemen
1. DE WERKING VAN EEN COMPUTERSYSTEEM
Een modern computersysteem bestaat uit een CPU en verschillende apparaatcontrollers en adapters. Al
deze hardwareonderdelen zijn verbonden met een gemeenschappelijke bus die toegang verschaft tot het
gedeelde geheugen. Om conflicten tussen CPU en de verschillende controllers (die gelijktijdig processen
kunnen uitvoeren en met elkaar wedijveren voor geheugencycli) te voorkomen wordt de toegang tot het
geheugen gesynchroniseerd met behulp van een geheugencontroller.
Een computer heeft een basisprogramma nodig om op te starten, het Bootstrap-programma. Dit is meestal
erg klein en vaak is het in ROM opgeslagen. initialiseert alle onderdelen van het systeem (CPU-register,
apparaatcontrollers, geheugeninhoud, …)
zoekt de kernel van het OS en laadt dit in het geheugen
OS voert eerste proces uit (bijvoorbeeld init)
wacht tot er een event plaatsvindt (meestal aangekondigd door een interrupt van de hardware via
systeembus of de software via system call)
Moderne bs zijn interuptgestuurd: als er geen processen zijn om uit te voeren, geen I/O-apparaten die om
services verzoeken en geen gebruikers die op een antwoord wachten, wacht een bs totdat er iets gebeurt.
Events worden gesignaleerd door een interrupt of trap (= uitzondering = software-gegenereerde interrupt
veroorzaakt door een fout, of door de gebruiker)
Voor elk type interrupt zijn er afzonderlijke codesegmenten beschikbaar in het OS die bepalen hoe het OS
reageert. Er is ook telkens een interruptserviceroutine beschikbaar om de interrupt af te handelen.
Methodes om overdracht aan juiste serviceroutine te regelen:
aanroepen van algemene routine die de interruptinformatie analyseert en vervolgens de juiste handler
aanroept
tabel met verwijzingadressen (pointers in interruptvector) via dewelke de juiste routine voor de
interrupt wordt aangeroepen (voordeel: geen tussenliggende routine vereist = dus sneller)
2. I/O STRUCTUUR
Op een apparaatcontroller kunnen vaak verschillende apparaten worden aangesloten.
Vb: Op een Small Computer Systems Interface-controller (SCSI) kunnen 7 of meer apparaten worden
aangesloten.
Apparaatcontroller is verantwoordelijk voor de overdracht van gegevens tussen randapparaten en lokale buffer
A. I/O-INTERRUPTS
I/O bewerking starten:
1. CPU laadt gegevens in de juiste registers van de apparaatcontroller
2. aparaatcontroller analyseert de inhoud van deze registers om te bepalen welke acties moeten
ondernomen worden
3. zodra acties zijn voltooid deelt de apparaatcontroller die mee aan de CPU d.m.v. een interrupt
pagina 4 van 56
,2 mogelijkheden:
SYNCHRONE I/O:
I/O wordt gestart en zodra voltooid, wordt besturing weer aan het gebruikersproces overgedragen.
2 manieren om te wachten op voltooiing I/O
1. via WAIT-instructie die ervoor zorgt dat de CPU inactief blijft tot de volgende interrupt.
2. via een wachtlus die voortdurend opnieuw wordt uitgevoerd totdat er een interrupt optreedt die
de besturing aan een ander deel van het OS overdraagt
ten hoogste 1 I/O aanvraag tegelijk, geen I/O tegelijk met uitvoer!
ASYNCHRONE I/O:
Na de start van I/O wordt de controle zonder te wachten op het einde van de I/O teruggegeven
aan de applicatie. Om talrijke I/O-aanvragen tegelijkertijd te kunnen bijhouden gebruikt BS een
device-status table, waarin voor elk I/O apparaat een afzonderlijke ingang is gereserveerd. Elke
tabelingang bevat informatie over het type apparaat; het adres en de status (buiten werking, inactief,
actief); het BS houdt ook een wachtrij bij voor elke I/O apparaat zodat andere processen aanvragen
kunnen verzenden naar hetzelfde apparaat.
B. DIRECT MEMORY ACCES (DMA) OVERDRACHT
Als de CPU 2 microseconden nodig heeft om op elke interrupt te reageren en als er bijvoorbeeld elke
microseconden interrupts worden gegenereerd, blijft er niet veel tijd over om processen uit te voeren.
- Gebruikt voor hogesnelheid I/O devices die informatie doorgeven aan een snelheid even groot als
geheugensnelheid
- Apparaatcontroller verplaatst blokken data van buffer rechtstreeks naar hoofdgeheugen, zonder
tussenkomst van de CPU
- Slechts 1 interrupt gegenereerd per blok, in plaats van normaal per byte data
3. HIËRARCHIE VAN OPSLAG
Opslagsystemen kunnen hiërarchisch worden ingedeeld volgens snelheid en prijs.
Bovenaan hiërarchie: duur maar snel toegankelijk
Lager in hiërarchie: lager kostprijs per bit, maar toenemende toegangstijd.
Tegenwoordig zijn magneetbanden en halfgeleidergeheugen zo snel en goedkoop geworden dat andere
systemen niet meer worden gebruikt.
Registers – cache – RAM-geheugen – elektronische schijf – Magneetschijf – Optische schijf – Magneetbanden
Eerste 3 opslagsystemen zijn vluchtig (= gegevens gaan verloren bij uitschakeling), een elektronische schijf
kan zowel vluchtig als niet-vluchtig zijn en alle andere zijn niet-vluchtig.
A. CACHING
Gegevens worden gewoonlijk op een specifieke opslaglocatie bewaard (bijvoorbeeld in het RAM). Als een
programma om deze gegevens vraagt worden ze tijdelijk naar een sneller opslagsysteem gekopieerd: de
cache.
Als de CPU gegevens nodig heeft controleert hij altijd of gegevens in de cache zitten. Indien ja, worden deze
gebruikt, indien nee worden we vanaf de langzamere bron gelezen maar wordt een kopie in de cache
opgeslagen voor eventueel later gebruik.
Beheer van de cache is heel belangrijk: als zowel grootte van de cache als algoritme voor de vervanging van
gegevens zorgvuldig zijn geselecteerd kan 80 tot 90% van alle gegevens rechtstreeks uit de cache worden
gehaald
Solid-state disks = elektronische RAM-schijven die gegevens snel toegankleijk maken via de bestandssysteem-
interface
pagina 5 van 56
,Caching introduceert een nieuw niveau in de opslag hiërarchie
– om consistent te blijven moet data simultaan bewaard worden op meerdere niveaus
– Cache moet coherent blijven, dus een aanpassing moet naar alle CPU's gepropageerd worden (bij
multiprocessor systemen)
4. AFSCHERMING VAN HARDWARE
Eerste OS = residente monitors programmeur kon vanaf zijn console het volledige systeem beheersen
sindsdien hebben OS geleidelijk aan allerlei taken overgenomen van de programmeur.
Sinds de introductie van multiprogramming en het uitvoeren van verschillende taken tegelijkertijd, kan een
bug in 1 programma de uitvoer van alle andere programma’s in de war sturen. Om dit op te lossen zonder
vorm van beveiliging zijn er maar 2 oplossingen:
1. De computer moet 1 proces tegelijkertijd uitvoeren
2. Alle uitvoer moet worden gecontroleerd
A. DUAL MODE
- Voor delen van systeembronnen moet het BS ervoor zorgen dat een foutieve applicatie of een “stoute”
gebruiker afgeschermd wordt van andere applicaties
- BS zorgt voor hardwareondersteuning voor minstens twee modi:
1. User mode – uitvoering door een gebruiker
2. Monitor mode (of kernel mode of systemmode) – uitvoering door BS
- Mode bit toegevoegd aan computer hardware om de huidige mode aan te duiden: monitor (0) of user (1)
- Als een interrupt of fout plaats vindt switcht de hardware naar monitor mode
Tijdens opstarten wordt de hardware in monitor mode geinisialiseerd OS wordt geladen en start
gebruikersprocessen in user mode telkens er een trap of interrupt optreedt schakelt de hardware van user
nar monitor mode voordat het beheer weer aan een gebruiksprogramma wordt overgedragen wordt er
overgeschakeld naar user mode.
Machine-instructies die schade kunnen aanrichten, worden gedefinieerd als geprivilegieerde instructies
worden uitsluitend in monitor mode uitgevoerd door de hardware.
Als een systeem een gepriviligeerde instructie in user mode probeert uit te voeren wordt dit niet toegestaan
en genereert de hardware een trap.
Indieen een gebruikerprogramma een geprivilegieerde instructie wil uitvoeren wordt dit aangevraagd bij het
OS d.m.v. een systeemaanroep (monitor call)
Een systeemaanroep wordt door de hardware als een software-interrupt behandelt.
B. I/O AFSCHERMING
Gebruikersprogramma kan de normale werking van het systeem verstoren door
- illegale I/O instructies te verwenden
- toegang te zoeken toe geheugenlocaties in het OS zelf
- door te weigeren de CPU vrij te geven
Oplossing:
- Door alle I/O –instructies als geprivilegieerde instructies te definiëren waardoor gebruikers altijd via een
systeemaanroep naar het OS moeten passeren.
- Om I/O volledig af te schermen moeten ze ervoor zorgen dat een gebruikersprogramma nooit de controle
kan krijgen over de computer in monitor.
Vb: computer die in user mode wordt uitgevoerd schakelt telkens over naar monitor mode als er een interrupt
of trap optreedt. Hierbij springt het systeem naar het adres dat op basis van de interruptvector is bepaald.
als een gebruikersprogramma een nieuw adres in de interruptvector opslaat terwijl het wordt uitgevoerd,
kan het vorige adres door een adres in het gebruikersprogramma overschreven worden hardware schakelt
naar monitor mode over en het beheer wordt via de gewijzigde interruptvector aan het gebruikersprogramma
overgedragen telkens er een overeenkomstige interrupt of trap optreedt!
pagina 6 van 56
, C. AFSCHERMING VAN HET GEHEUGEN
Tenminste het geheugen van de interrupt vector en de interrupt service routines moeten worden afgeschermd
afscherming van deze geheugenruimte moet door de hardware worden verzorgd
Om afscherming te verkrijgen, moeten er minstens twee registers worden gebruikt
om een “wettige adresreeks” te bepalen die mag gebruikt worden door een applicatie
– Basisregister (het kleinste wettige adres)
– Grensregister (de grootte van de reeks)
Geheugen buiten deze bepaalde reeks is beschermd
de CPU-hardware vergelijkt elk adres dat in user mode wordt gegenereerd met de inhoud van de registers.
Indien een programma toegang wil tot geheugenruimte buiten het bereik wordt er een trap gestuurd naar de
monitor die de toegangspoging als fatale fout behandelt.
Alleen het OS kan de basis- en limietregisters laden d.m.v. een geprivilegieerde instructie.
Gebruikersprogramma’s kunnen de inhoud van de registers niet wijzigen, maar het OS zelf wel (in monitor
mode)
D. AFSCHERMING VAN DE CPU
Naast afschermen van het geheugen en de I/O moeten we er ook voor zorgen dat het OS de controle over de
computer behoudt.
Vb; voorkomen dat een gebruikersprogramma vastloopt in een eindeloze lus waardoor het beheer niet meer
aan het OS wordt teruggegeven.
hiervoor kan een timer gebruikt worden die ervoor zorgt dat een programma na een bepaalde tijd wordt
onderbroken
meestal wordt gebruik gemaakt van een timer en een klok die met een vaste snelheid loopt om een
variabele timer te implementeren
- timer wordt door OS ingesteld en telkens als de klok tikt wordt de teller met een bepaalde waarde
verminderd
- zodra teller = 0: interrupt beheer wordt automatisch aan OS overgedragen (interrupt kan
beschouwd worden als fatale fout of programma kan meer uitvoeringstijd krijgen)
Timer wordt meestal gebruikt om Timesharing te implementeren:
timer ingesteld zodat zodra een bepaald tijdsinterval is verlopen het beheer van de CPU aan de volgende
gebruiker wordt doorgegeven context switch
pagina 7 van 56
, (III) De structuur van
besturingssystemen
1. SYSTEEM COMPONENTEN (LEZEN)
A. PROCESBEHEER
- Een proces is een applicatie in uitvoering
- Een proces heeft bronnen zoals CPU-tijd, geheugen, bestanden en I/O-apparaten nodig om zijn taak
te vervullen.
Deze bronnen worden
- toegewezen op het moment dat het proces wordt gestart
of
- toegewezen terwijl het proces wordt uitgevoerd
Een programma op zich in geen proces, maar een passieve entiteit, zoals de inhoud van een bestand op vaste
schijf. Een proces is een actieve entiteit
een single-threaded process heeft één programmateller die bepaald wat de volgende instructie is die het
proces moet uitvoeren. Een dergelijk proces wordt sequentieel uitgevoerd (ene instructie na de andere)
een multi-threaded proces heeft verschillende programmatellers. Elk van deze tellers bepaalt wat de volgende
instructie is die moet worden uitgevoerd voor een specifieke thread.
- Het BS moet volgende zaken kunnen ivm procesbeheer:
– creatie en verwijderen van processen
– opschorten en hernemen van processen
– synchronisatie van processen
– communicatie tussen processen
B. GEHEUGENBEHEER
Het RAM-geheugen is een grote array van woorden of bytes met een opslagcapaciteit van horderden tot
miljarden bytes het is een centrale opslagruimte met gegevens die snel toegankelijk zijn, zowel voor de CPU
als voor I/O apparaten.
Om zowel het CPU-gebruik als de responstijd van de computer te verbeteren, is het belangrijk dat er
meerdere programma’s tegelijk in het geheugen zijn geladen. Dit vereist een vorm van geheugenbeheer
er
bestaan verschillende algoritmen om het geheugen te beheren
Het OS is verantwoordelijk voor de volgende taken m.b.t. geheugenbeheer
- bijhouden welke delen van het geheugen momenteel in gebruik zijn en door wie
- specifieke processen in het geheugen laden zodra er geheugenruimte
- vrijgekomen geheugenruimte naar behoefte toewijzen en vrijgeven
C. BESTANDENBEHEER
Een bestand is een verzameling verwante gegevens die worden gedefinieerd door de auteur ervan
(kunnen programma’s/broncode of gegevens zijn)
Gegevensbestanden kunnen numeriek, alfabetisch, alfanumeriek en binair zijn.
Er kan ook een onderscheid gemaakt worden tussen niet-opgemaakte bestanden en bestanden met een
strikte opmaak
Het OS is verantwoordelijk voor de volgende taken m.b.t bestandenbeheer
- bestanden maken en verwijderen
- directory’s maken en verwijderen
- commando’s ondersteunen voor het manipuleren van bestanden en directory’s
- bestanden op secundaire opslagmedia mappen
- back-ups maken van bestanden op niet-vluchtige opslagmedia
pagina 8 van 56