Implementeren van het besturingssysteem als een verzameling

advertisement
1.
Overzicht van computersystemen
Een besturingssysteem gebruikt de hardwarebronnen van een of meer processors om een aantal
diensten te verzorgen voor de gebruikers van het systeem.
Het besturingssysteem beheert ook het secundaire geheugen en I/O-apparaten voor de gebruikers.
1.1. Basiselementen
Processor
De processor beheert de werking van de computer en voert de functies voor de gegevensverwerking
uit.
De processor heeft 2 interne registers:
1. Geheugenadresregister (Memory Address Register, MAR): bevat geheugenadres voor de volgende
lees- of schrijfbewerking
2. Geheugenbufferregister (Memory Buffer Register, MBR): bevat gegevens die naar het geheugen
worden geschreven of de gegevens ontvangt die uit het geheugen worden gelezen.
Overeenkomstig:
1. I/O-adresregister (I/O AR): bevat een bepaald I/O-apparaat
2. I/O-bufferregister (I/O BR): wordt gebruikt voor het uitwisselen van gegevens tussen een I/Omodule en de processor
Hoofdgeheugen
Hoofdgeheugen wordt ook wel reëel geheugen of primair geheugen genoemd.
Hoofdgeheugen is een vluchtig geheugen: wanneer de computer uitgeschakeld wordt, gaat de
inhoud van het geheugen verloren.
I/O-modules
De I/O-modules verplaatsen gegevens tussen de computer en en zijn externe omgeving:
- Harde schijven
- Communicatie-apparatuur
- Werkstations
Systeembus
De systeembus verzorgt de communicatie tussen de processors, het hoofdgeheugen en de I/Omodules
1.2. Processorregisters
Processorregisters zijn sneller en kleiner dan het hoofdgeheugen. De registers in de processor dienen
2 doelen:
- Registers die zichtbaar zijn voor de gebruiker: laat de programmeur toe verwijzingen naar het
hoofdgeheugen te minimaliseren door het registergebruik te optimaliseren.
- Stuur- statusregisters: worden gebruikt door
 de processor voor het besturen van de werking van de processor
 geprivilegieerde routine’s van het besturingssysteem voor het beheren van de uitvoering van
programma’s
1.2.1. Registers die zichtbaar zijn voor de gebruiker
Een register dat zichtbaar is voor de gebruiker is een register waarnaar kan worden verwezen in de
gebruikte machinetaal en dat doorgaans beschikbaar is voor alle programma’s, waaronder
toepassingsprogramma’s en systeemprogramma’s.
De beschikbare registertypen:
- Gegevensregisters
- Adresregisters
- Conditiecoderegisters
Gegevensregisters
Gegevensregisters kunnen gebruikt worden door de programmeur voor verschillende functies.
Soms is hun doel algemeen, maar vaak zijn er echter beperkingen. Er kunnen bijvoorbeeld speciale
reigsters zijn voor floating-pointbewerkingen.
Adresregisters
Adresregisters bevatten adressen van gegevens en instructies in het hoofdgeheugen.
Voorbeelden:
- Indexregister
- Segmentwijzer
- Stackwijzer
Conditiecoderegisters
1.2.2. Stuur- en statusregisters
- Programmateller (PC): bevat het adres van de volgende op te vragen instructie
- Instructieregister (IR): bevat de laatste opgevraagde instructie
- Programmastatuswoord (PSW): bevat statusinformatie
Conditiecodes
Conditiecodes (ook wel flags of vlaggen genoemd) zijn bits die worden ingesteld door de
processorhardware als het resultaat van bewerkingen.
Doorgaans maken ze deel uit van een stuurregister.
1.3. Uitvoering van instructies
Een programma bestaat uit een verzameling instructies die is opgeslagen in het geheugen.
Het uitvoeren van een instructie bestaat uit 2 stappen:
1. De processor haalt (fetches) instructies één voor één op uit het geheugen
2. De processor voert (executes) elke instructies uit
Instructiecyclus: tijd die nodig is om één instructie uit te voeren.
De processor haalt de instructie op uit het geheugen. De programmateller bevat het adres van de
volgende op te halen instructie. De teller wordt altijd verhoogd na het ophalen van een instructie,
zodat de daarop volgende instructie zal worden opgehaald.
De opgevraagde instructie is geladen in het instructieregister. De instructie bevat bits die aangeven
welke actie de processor moet uitvoeren. De processor interpreteert de instructie en voert de
gewenste actie uit. Hierbij zijn er 4 categorieën:
1. Processorgeheugen: gegevens worden overgebracht van de processor naar het geheugen of
omgekeerd
2. Processor-I/O: gegevens worden uitgewisseld tussen de processor en een I/O module.
3. Gegevensverwerking: rekenkundige of logische bewerking uitvoeren op gegevens
4. Besturing: de volgorde van uitvoering wijzigen
1.4. Interrupts
Interrupt is een mechanisme waarmee andere modules de normale verwerking door de processor
kunnen onderbreken. Interrupts worden vooral gebruikt om de verwerkingsefficiëntie te verhogen.
De meeste externe apparaten zijn langzamer dan de processor. Na elke schrijfbewerking moet de
processor pauzeren totdat het apparaat de instructie heeft verwerkt.
Verschillende klassen van interrupts:
Programma: gegenereerd door het resultaat van de uitvoering van een instructie, vb. een
rekenkundige berekening met een te grote waarde, delen door nul, een poging tot het uitvoeren
van een ongeldige machine-instructie en een verwijzing buiten de geheugenruimte waartoe een
gebruikersprogramma toegang heeft
Timer: gegenereerd door een timer binnen de processor. Hiermee kan het besturingssysteem
functies uitvoeren met een bepaalde regelmaat
I/O: gegenereerd door een I/O-controller om de normale voltooiing van een bewerking of
uiteenlopende foutcondities te melden
Hardwarefout: gegenereerd door fouten zoals het uitvallen van de stroom of een
geheugenpariteitsfout
1.4.1. Interrupts en de instructiecyclus
Voor interrupts wordt een interruptfase toegevoegd aan de instructiecyclus. In de interruptfase
controleert de processor of er interrupts zijn opgetreden. Als er een interrupt is, dan onderbreekt de
processor het huidige programma en voert hij een routine uit voor een interruptafhandeling.
Is de routine voor de interruptafhandeling voltooid, dan kan de processor de uitvoering van het
gebruikersprogramma hervatten op het punt van de onderbreking.
Er wordt verondersteld dat de tijd die nodig is voor de I/O-bewerking relatief kort is: korter dan de
tijd die nodig is voor het voltooien van de uitvoering van instructies tussen schrijfbewerkingen in het
gebruikersprogramma. Meestal echter zal de I/O-bewerking veel meer tijd kosten dan de uitvoering
van meerdere gebruikersinstructies.
1.4.2. Interruptverwerking
Eenvoudige interruptverwerking:
1. Apparaatcontroller of andere systeemhardware geeft een interrupt
2. Processor voltooit de uitvoering van de huidige instructie
3. Processor bevestigt de ontvangst van de interrupt
4. Processor plaatst het programmastatuswoord (PSW) en de programmateller (PC) op de
besturingsstack
5. Processor laadt nieuwe PC-waarde op basis van de interrupt
6. Sla het restant van de informatie over de processtatus op
7. Verwerk de interrupt
8. Herstel de informatie over de processtatus
9. Herstel het oude PSW en de oude PC
 1 te.m. 5: Hardware
 6 t.e.m. 9: Software
1.4.3. Meervoudige interrupts
Stel dat er een interrupt optreedt terwijl een andere interrupt wordt afgehandeld.
2 benaderingen:
1. Uitschakelen van interrupts terwijl een interrupt wordt verwerkt. Interrupts worden in strikt
sequentiële volgorde afgehandeld.
2. Het definiëren van prioriteiten voor interrupts en toestaan dat een interrupt met een hogere
prioriteit een interruptafhandeling met een lagere prioriteit onderbreekt
1.4.4. Multiprogrammering
- De processor wordt niet altijd erg efficiënt gebruikt, zelfs met interrupts.
- De processor kan meer dan één programma uitvoeren.
 De volgorde waarin de programma’s worden verwerkt is afhankelijk van hun relatieve prioriteit en
van het feit of ze wachten op I/O.
 Na het voltooien van de interruptafhandelings routine hoeft de besturing niet altijd onmiddellijk
te worden teruggegeven aan het gebruikersprogramma dat op dat moment wordt uitgevoerd.
1.5. De geheugenhiërarchie
De ontwerpbewerkingen voor het geheugen in drie vragen:
1. Hoeveel?
2. Hoe snel?
3. Hoe duur?
- Kortere toegangstijd: hogere kosten per
bit
- Hogere capaciteit: lagere kosten per bit
- Hogere capaciteit: lagere
toegangssnelheid
Dit kan allemaal opgelost worden door de
geheugen hiërarchie. Van boven naar onder
gebeurt het volgende:
a. De kosten per bit dalen
b. De capaciteit neemt toe
c. De toegangstijd neemt toe
d. De frequentie van de processortoegang
tot het geheugen neemt af.
Lokaliteit van verwijzingen
(locality of reference)
1.6. Cachegeheugen
- Cachegeheugen is onzichtbaar voor het besturingssysteem, het werkt samen met andere hardware
voor geheugenbeheer.
- Processor heeft minstens 1 keer toegang tot het geheugen per instructiecyclus
 Processorssnelheid is sneller dan de toegangssnelheid van geheugen
Grondbeginselen van cachegeheugen
De cache bevat een kopie van een deel van het hoofdgeheugen.
Als de processor een byte in het geheugen te lezen, dan wordt gecontroleerd of de byte zich in de
cache bevindt. Zo ja, dan wordt de byte doorgegeven aan de processor.
Zo nee, dan wordt eerst een blok uit het hoofdgeheugen naar de cache geschreven en wordt dan ook
doorgegeven aan de processor.
Door de lokaliteit van verwijzingen is het waarschijnlijk dat wanneer een blok gegevens in de cache
wordt geplaatst, toekomstige geheugenverwijzingen zullen verwijzen naar andere bytes in dat blok.
Bij het ontwerp van cachegeheugen kunnen we de volgende aandachtspunten onderscheiden:
- Cachegrootte:
 Kleine caches hebben een duidelijke invloed op prestaties
- Blokgrootte:
 De eenheid gegevens die wordt uitgewisseld tussen het cachegeheugen en het hoofdgeheugen
 Grotere blokken betekenen grotere hit-ratio
 Te grote blokken minimaliseren kansen om gegevens te hergebruiken die al in de cache staan
- Adresseringsfunctie:
 Bepaalt welke locatie het nieuwe blok zal innemen in de cache
 2 beperkingen:
1. Bij het inlezen van een nieuwe blok kan een andere blok worden vervangen
2. Flexibelere adresseringsfunctie vereist ingewikkeldere elektronische schakelingen voor het
doorzoeken van de cache
- Vervangingsalgoritme:
 Kiest het blok dat wordt vervangen
 Liefst een blok vervangen dat in de nabije toekomst niet nodig is
 onmogelijk te garanderen
 Effectieve strategie: het vervangen van een blok dat zich het langst in de cahce bevindt zonder
gebruikt te zijn = Least Recently Used (LRU)
- Schrijfstrategie:
 Bepaalt wanneer de geheugenschrijfbewerking plaatsvindt
o Elke keer dat het blok wordt bijgewerkt
o Als het blok wordt vervangen
 Minimaliseert schrijfbewerkingen
 Laat het hoofdgeheugen in een verouderde toestand
1.7. I/O-technieken
3 technieken die worden toegepast:
1. Geprogrammeerde I/O
2. Interruptgestuurde I/O
3. Directe geheugentoegang (DMA)
1.7.1. Geprogrammeerde I/O
De I/O-module voert eerst de gevraagde actie uit en plaatst vervolgens de juiste bits in het I/Ostatusregister, maar onderneemt verder geen actie om de processor te waarschuwen. De module
stuurt zelfs geen interrupt naar de processor.
Als de I/O-instructie is uitgevoerd, moet de processor zelf actie ondernemen om te bepalen wanneer
de I/O-instructie is voltooid.
De instructieset bevat de volgende categorieën I/O-instructies:
- Besturen: extern apparaat activeren en zeggen wat te doen
- Status controleren: diverse statuscondities testen
- Lezen en schrijven: overdracht van gegevens tussen de processorregisters en externe apparaten
1.7.2. Interruptgestuurde I/O
De processor geeft een opdracht aan een I/O-module en doet daarna ander nuttig werk.
De I/O-module zal de processor onderbreken met een interrupt als de module gereed is om gegevens
uit te wisselen met de processor.
1.7.3. Directe geheugentoegang (DMA)
De DMA-functie kan worden uitgevoerd door een aparte module op de systeembus.
Wil de processor een blok gegevens lezen of schrijven, dan geeft hij de DMA-module een opdracht
door de volgende informatie te verzenden naar de module:
- Of wordt gevraagd om te lezen of te schrijven
- Het adres van het betrokken I/O-apparaat
- De beginlocatie in het geheugen waaruit data moet worden gelezen of waarnaar data moet
worden geschreven
- Het aantal woorden dat moet worden gelezen of geschreven
De processor heeft deze I/O-bewerking gedelegeerd aan de DMA-module en die zal de bewerking
verder afhandelen.
De processor is alleen betrokken bij het begin en het einde van de overdracht.
2.
Overzicht van besturingssystemen
Besturingssysteem = programma dat de uitvoering van toepassingsprogramma’s regelt en de functie
vervult van een interface tussen de gebruikers en de computerhardware.
2.1. Doel en functies van besturingssystemen
Een besturingssysteem heeft 3 doelstellingen:
4. Gemak: een besturingssysteem maakt een computer makkelijk te gebruiken
5. Efficiëntie: dankzij een besturingssysteem kunnen de systeembronnen van een computer efficiënt
worden gebruikt
6. Flexibiliteit: een besturingssysteem moet zo zijn gemaakt dat het ontwikkelen, testen en
introduceren van nieuwe systeemfuncties goed mogelijk is, zonder dat bestaande diensten verstoord
worden
2.1.1. Het besturingssysteem als interface tussen gebruiker en computer
Het besturingssysteem verzorgt doorgaans diensten op de
volgende gebieden:
 Ontwikkelen van programma’s: het besturingssysteem biedt
uiteenlopende voorzieningen en diensten, zoals editors en
debuggers, die de programmeur helpen bij het maken van
programma’s
 Uitvoeren van programma’s: Instructies en gegevens moeten
in het hoofdgeheugen worden geladen. I/O-apparaten en
bestanden moeten worden geïnitialiseerd en andere bronnen
moeten worden voorbereid  besturingssysteem verzorgt
deze taken voor de gebruiker
 Toegang tot I/O-apparaten: Elk I/O-apparaat vereist voor een
correcte werking een eigen, specifieke verzameling instructies
of besturingssignalen. Het besturingssysteem voorziet in een
uniforme interface die alle details verbergt
 Beheerde toegang tot bestanden: bij bestanden moet het
besturingssysteem kennis hebben van de aard van het I/O-apparaat, maar ook van de
bestandsindeling op het opslagmedium. Bij een systeem dat meerdere gebruikers tegelijk
ondersteunt, kan het systeem daarnaast voorzien in beveiligingsmechanismen voor het beheren
de toegang tot bestanden.
 Toegang tot het systeem: de toegangsfunctie moet voorzien in de beveiliging van bronnen en
gegevens tegen ongeautoriseerd gebruik en moet bij te zware belasting conflicten oplossen
 Opsporen en afhandelen van fouten: interne en externe hardwarefouten, diverse softwarefouten.
Bij elk probleem moet het besturingssysteem zo reageren dat de fouttoestand wordt verwijderd
met zo min mogelijk invloed op de toepassingen die worden uitgevoerd
 Administratie: verzamelt gebruiksstatistieken, bewaakt prestatiemeters, informatie is nuttig voor
het anticiperen op de behoefte aan toekomstige verbeteringen en het bijstellen van het systeem
voor het verbeteren van de prestaties. Ook kan de informatie worden gebruikt voor het
toerekenen van kosten bij een systeem met meerdere gebruikers
2.1.2. Het besturingssysteem als beheerder van bronnen
Het besturingssysteem werkt hetzelfde als gewone
computersoftware. Het is een programma dat wordt
uitgevoerd door de processor.
Het besturingssysteem geeft de besturing veelvuldig uit
handen en is voor het terugkrijgen van de besturing
afhankelijk van de processor.
Een deel van het besturingssysteem bevindt zich in het
hoofdgeheugen. Daartoe behoren de kernel of nucleus, die
de meest gebruikte functies in het besturingssysteem
bevat, en andere delen van het besturingssysteem die op
dit moment worden gebruikt.
2.1.3. Ontwikkelingsmogelijkheden van een besturingssysteem
Een veelgebruikt besturingssysteem zal zich om een aantal redenen in de loop van de tijd
ontwikkelen:
 Hardwarevernieuwing en nieuwe typen hardware
 Nieuwe diensten
 Verbeteringen
2.2. Evolutie van besturingssystemen
2.2.1. Seriële verwerking
Besturingssystemen bestonden vroeger nog niet. Deze machines werden bestuurd via een
bedieningspaneel dat bestond uit lampjes, schakelaars, een invoerapparaat en een printer
2 problemen:
 Scheduling: via een inschrijflijst
 Insteltijden: het laden van de compiler in het geheugen en het bronprogramma, het opslaan van
het gecompileerde programma, en het laden en koppelen van het objectprogramma en algemene
functies. Trad er een fout op, dan moest de gebruiker teruggaan naar het begin van de
instelprocedure. Daardoor werd veel tijd besteed aan alleen al het instellen van het uit te voeren
programma
2.2.2. Eenvoudige batchsystemen
De eerste computers waren duur en daarom was het belangrijk om het gebruik van een machine te
maximaliseren. Belangrijkste gedachte: monitor.
Deze software combineerde jobs sequentieel tot een batch en de gehele batch in een invoerapparaat
plaatste voor gebruik door de monitor. Elk programma keert na het voltooien van de verwerking
terug naar de monitor.
De monitor bepaalt de volgorde van gebeurtenissen. Hiertoe
moet een groot deel van de monitor zich altijd in het
hoofdgeheugen bevinden en beschikbaar zijn voor de uitvoering
= resident monitor.
De monitor leest per keer één taak in. Na het inlezen, wordt deze
in het gebied van het gebruikersprogramma geplaatst en wordt
de besturing overgegevn aan deze taak. Na het voltooien van de
taak, wordt de besturing teruggegeven aan de monitor.
Jobbesturingstaal (job control language, JCL) is een speciaal soort
programmeertaal die wordt gebruikt voor het opgeven van
instructies aan de monitor.
-
-
Ook enkele andere mogelijkheden van de hardware zijn gewenst:
Geheugenbeveiliging: terwijl het gebruikersprogramma wordt
uitgevoerd, mag dit het geheugengebied met de monitor niet
wijzigen.
Timer: voorkomt dat één taak onbeperkt beslag legt op het hele
systeem
Geprivilegieerde instructies: deze kunnen uitsluitend uitgevoerd
worden door de monitor
Interrupts: verhogen de flexibiliteit van het besturingssysteem bij het afstaan en terugkrijgen van de
besturing aan en van gebruikersprogramma’s.
Werkingsmodi:
- Gebruikersmodus:
 Gebruikersprogramma wordt uitgevoerd in een gebruikersmodus
 Bepaalde gebieden in het geheugen zijn niet beschikbaar voor de gebruiker
 Bepaalde instructies mogen niet worden uitgevoerd
- Kernelmodus:
 Monitor wordt uitgevoerd in een systeemmodus (= kernelmodus)
 Bevoorrechte instructies kunnen worden uitgevoerd
 Beveiligde gebieden in het geheugen kunnen benaderd worden
2.2.3. Batchsystemen met multiprogrammering
Zelfs bij de automatische taakverwerking van een eenvoudig batchbesturingssysteem wordt de
processor vaak niet gebruikt. De I/Oapparaten zijn vergeleken met de processor
relatief langzaam.
Uniprogrammering = de processor moet
wachten tot de I/O-instructie is voltooid
voordat hij kan doorgaan.
Multiprogrammering = als een taak moet
wachten op I/O, dan kan de processor
overschakelen naar een andere taak, die
waarschijnlijk niet wacht op I/O.
2.2.4. Systemen met timesharing
Bij timesharing wordt multiprogrammering gebruikt voor het afhandelen van meerdere interactieve
taken. De processortijd wordt gedeeld door meerdere gebruikers. Meerdere gebruikers hebben via
werkstations tegelijkertijd toegang tot het systeem en het besturingssysteem geeft afwisselend elk
gebruikersprogramma een korte rekenperiode.
2.3. Belangrijke prestaties
Besturingssystemen behoren tot de meeste complexe stukken software die zijn ontwikkeld.
Er zijn vijf belangrijke intellectuele prestaties verricht op het gebied van:
 Processen
 Geheugenbeheer
 Bescherming en beveiliging van informatie
 Scheduling en beheer van bronnen
 Systeemstructuur
2.3.1. Processen
Een proces is essentieel voor de structuur van besturingssystemen.
 Een programma dat wordt uitgevoerd
 Een geactiveerd programma dat op een computer draait
 De entiteit die kan worden toegewezen aan en worden uitgevoerd door een processor
 Een eenheid van activiteit die wordt gekenmerkt door:
- een enkelvoudige sequentiële verwerking (thread)
- een actuele toestand
- een aantalbijbehorende systeembronnen
Het ontwerpen van systeemsoftware bleek uiterst moeilijk te zijn. In het algemeen worden 4
hoofdoorzaken onderscheiden voor de fouten:
7. Onjuiste synchronisatie
8. Mislukte wederzijdse uitsluiting (mutual exclusion)
9. Niet-vastomschreven programmawerking
10.Dodelijke omarming (deadlock
Een proces bestaat uit 3 onderdelen:
1. Een uitvoerbaar programma
2. De bijbehorende gegevens die het programma nodig heeft
3. De uitvoeringscontext van het programma: alle informatie die het besturingssysteem nodig heeft om
het proces te controleren en te regelen
2.3.2. Geheugenbeheer
Het besturingssysteem heeft 5 hoofdtaken bij het beheer van opslag:
1. Procesisolatie: voorkomen dat onafhankelijke processen elkaars geheugen, zowel gegevens als
instructies, verstoren
2. Automatische toewijzing en beheer: programma’s moeten waar nodig dynamisch worden verdeeld
over de geheugenhiërarchie. De toewijzing moet transparant zijn voor de programmeur. Het
besturingssysteem kan efficiënt werken door geheugen alleen toe te wijzen aan taken die het nodig
hebben
3. Ondersteuning van modulair programmeren: programmeurs moeten programmamodules kunnen
definiëren en modules dynamisch kunnen maken, verwijderen en vergroten en verkleinen
4. Bescherming en toegangsbeheer: toestaan dat gedeelten van het geheugen op verschillende
manieren toegankelijk zijn voor verschillende gebruikers
5. Langetermijnopslag: veel gebruikers en toepassingen vereisen middelen voor het opslaan van
informatie gedurende langere periodes
Meestal gebruiken
besturingssystemen virtueel
geheugen en bestandssystemen om
aan deze vereisten te voldoen. Het
bestandssysteem zorgt voor de
opslag op lange termijn.
Virtueel geheugen is een voorziening
waarmee programma’s geheugen op
logisch niveau kunnen adresseren.
Om grote processen op te delen in
een aantal blokken van vaste lengte,
werden pagineringssystemen
ontwikkeld. Een programma verwijst
naar een woord met behulp van een virtueel adres dat bestaat uit een paginanummer en een
relatieve locatie binnen de pagina (offset). Iedere pagina kan overal binnen het hoofdgeheugen
geplaatst worden. Het pagineringssysteem voorziet in een dynamische vertaling van het virtuele
adres binnen het programma naar een reëel of fysiek adres binnen het hoofdgeheugen.
2.3.3. Bescherming en beveiliging van informatie
Veel van het werk m.b.t. beveiliging en bescherming in besturingssystemen kan verdeeld worden in 4
categorieën:
1. Beschikbaarheid: het beveiligen van het systeem tegen onderbrekingen
2. Vertrouwelijkheid: garandeert dat gebruikers geen gegevens kunnen lezen waarvoor ze geen
toestemming hebben
3. Gegevensintegriteit: bescherming van gegevens tegen ongewenst wijzigen
4. Authenticiteit: hangt samen met de correcte verificatie van de identiteit van gebruikers en de
geldigheid van berichten of gegevens
2.3.4. Scheduling en beheer van bronnen
Het beheren van de verschillende bronnen die beschikbaar zijn is een hoofdverantwoordelijkheid van
het besturingssysteem.
Elke strategie voor de toewijzing en de scheduling van bronnen moet zijn gebaseerd op 3
overwegingen:
1. Rechtvaardigheid
2. Gedifferentieerd reactievermogen
3. Efficiëntie
Kortetermijnwachtrij: processen die zich in het
hoofdgeheugen bevinden en die gereed zijn om
te worden uitgevoerd.
Langetermijnwachtrij: lijst van nieuwe taken die
wachten om het systeem te gebruiken.
Voor elk I/O-apparaat is er een I/O-wachtrij. Alle
processen die wachten op het gebruik van het
apparaat, worden toegevoegd aan de wachtrij
van dat apparaat.
2.3.5. Systeemstructuur
Een systeem kan worden beschouwd als een reeks niveaus. Elk niveau voert een specifieke
deelverzameling uit van functies die het besturingssysteem moet uitvoeren. Elk niveau is afhankelijk
van het volgende, lagere niveau voor het uitvoeren van meer primitieve functies. Hierdoor is een
probleem gesplitst in enkele beter hanteerbare deelproblemen.
Ontwerphiërarchie van een besturingssysteem:
 Niveau 1: elektronische schakelingen. De objecten waarmee worden gewerkt zijn registers,
geheugencellen en logische poorten. De bewerkingen die voor deze objecten worden
gedefinieerd, zijn acties zoals het wissen van een register of het lezen van een geheugenlocatie
 Niveau 2: instructieset van de processor. Hier zijn het de bewerkingen die zijn toegestaan in de
instructieset van de machinetaal, zoals add, subtract, load en store
 Niveau 3: voegt het concept van een procedure of subroutine toe, plus de bewerkingen voor
aanroep en terugkeer
 Niveau 4: introduceert interrupts. Die zorgen ervoor dat de processor de huidige context opslaat
en een interruptafhandelingsroutine activeert
De 1e 4 lagen zijn geen onderdeel van het besturingssysteem maar vormen de processorhardware.
Op niveau 5 bereiken we echt het besturingssysteem en beginnen de concepten die samenhangen
met multiprogrammering te verschijnen
 Niveau 5: introduceert het concept van een proces als een programma dat wordt uitgevoerd. De
fundamentele vereiste waaraan een besturingssysteem moet voldoen om meerdere processen te
ondersteunen, is de mogelijkheid processen te onderbreken en voort te zetten
 Niveau 6: wordt gebruikt voor de secundaire opslagapparaten van de computer. Hier treden de
functies voor het positioneren van de lees- en schrijfkoppen en de feitelijke overdracht van
blokken gegevens op.
 Niveau 7: maakt logische adresruimte voor processen. Dit niveau verdeelt de virtuele adresruimte
in blokken die kunnen worden verplaatst tussen het hoofdgeheugen en het aanvullend geheugen
Tot en met niveau 7 heeft het besturingssysteem te maken met de bronnen van 1 processor. Vanaf
niveau 8 houdt het besturingssysteem zich bezig met externe objecten zoals randapparaten en
eventueel netwerken en computers die met het netwerk verbonden zijn.
 Niveau 8: verzorgt de communicatie van informatie en berichten tussen processen
 Niveau 9: ondersteunt de opslag voor lange termijn van benoemde bestanden
 Niveau 10: zorgt voor de toegang tot externe apparaten m.b. v. gestandaardiseerde interfaces
 Niveau 11: verantwoordelijk voor het onderhouden van de associatie tussen externe en interne
identifiers van de bronnen en objecten van het systeem
 Niveau 12: biedt een complete voorziening voor het ondersteunen van processen
 Niveau 13: vormt de interface tussen het besturingssysteem en de gebruiker
2.4. Ontwikkelingen in de aanloop naar moderne besturingssystemen
Er zijn tal van uiteenlopende benaderingen en ontwerpelementen toegepast in zowel experimentele
als commerciële besturingssystemen, maar de meeste daarvan kunnen worden ondergebracht in de
volgende categorieën.
Microkernelarchitectuur
De meeste besturingssystemen hadden één kolossale monolithische kernel. Deze grote kernels
verzorgen het overgrote deel van de functionaliteit van het besturingssysteem.
Bij een microkernel architectuur worden slechts enkele essentiële functies toegewezen aan de
kernel:
- Adresruimten
- Communicatie tussen processen (interprocess communication, IPC)
- Basisscheduling
Andere diensten van het besturingssysteem worden verzorgd door processen
Multithreading
Proces wordt verdeeld in draden (threads) die tegelijkertijd kunnen worden uitgevoerd
- Thread: inzetbare eenheid werk, wordt sequentieel uitgevoerd en kan worden onderbroken
- Proces: verzameling van 1 of meer threads en de bijbehorende bronnen
Symmetrische multiprocessing
- Meerdere processors
- Deze processors delen hetzelfde hoofdgeheugen en dezelfde I/O-voorzieningen
- Alle processors kunnen dezelfde functies uitvoeren
Het besturingssysteem van een SMP verdeelt processen of threads over alle processors.
Voordelen:
- Prestaties: meerdere processen tegelijkertijd actief
- Beschikbaarheid: het uitvallen van één processor stopt het systeem niet
- Stapsgewijze groei: de prestaties kunnen verbeteren door extra processoren toe te voegen
- Schaalbaarheid
Gedistribueerde besturingssystemen
- Verzameling computers die elk hun eigen geheugen en I/O-modules hebben
- Wekt de illusie van 1 hoofdgeheugenruimte, 1 secundaire geheugenruimte en andere
gelijkgeschakelde toegangsvoorzieningen
Objectgeoriënteerd ontwerp
Proces waarbij modulaire uitbreidingen worden toegevoegd aan een kleine kernel. Het geeft de
mogelijkheid een besturingssysteem aan te passen zonder de integriteit van het systeem in gevaar te
brengen
3.
Beschrijving en besturing van processen
Het besturingssysteem beheert de uitvoering van toepassingen ordelijk zodat:
- Bronnen beschikbaar gemaakt worden voor verschillende toepassingen
- De fysieke processor schakelt tussen verschillende toepassingen
- De processor en I/O-apparaten efficiënt kunnen worden gebruikt
3.1. Wat is een proces?
Verschillende definities:
- Programma in uitvoering
- Instantie van een programma die op een computer wordt uitgevoerd
- Entiteit die aan een processor kan worden toegewezen en op die processor kan worden
uitgevoerd
- Eenheid van activiteiten, die gekenmerkt wordt door de uitvoering van een reeks instructies, een
huidige toestand en een bijbehorende verzameling systeembronnen
Een proces is een entiteit die bestaat uit een aantal elementen:
- Programmacode (die met andere processen die hetzelfde programma uitvoeren gedeeld wordt)
- Verzameling gegevens
Tijdens de uitvoering van het programma, heeft het proces een aantal
elementen:
- Identificatienummer
- Toestand
- Prioriteit
- Programmateller
- Geheugenwijzers
- Contextgegevens
- I/O-toestandsinformatie
- Beheersinformatie
Al het voorgaande wordt opgeslagen in een procesbesturingsblok, die
door het besturingssysteem gecreëerd en beheerd wordt. Het bevat
voldoende informatie om een proces te onderbreken en er later mee
verder te gaan. Hierdoor wordt multiprocessing mogelijk.
3.2. Procestoestanden
Spoor (trace): volgorde van instructies die voor dat proces worden uitgevoerd
Dispatcher: wisselt de processor van 1 proces naar een ander
De belangrijkste taak van het besturingssysteem is het besturen van de procesuitvoering:
- Het bepalen van het patroon waarin de uitvoering ervan wordt verweven
- Het toewijzen van bronnen aan processen
3.2.1. Procesmodel met 2 toestanden
Een proces kan zich in 2 toestanden bevinden: actief (running) of niet-actief (not running)
3.2.2. Creëren en beëindigen van processen
Redenen voor het creëren van een proces:
- Nieuwe batchtaak
- Interactieve aanmelding
- Gecreëerd door het besturingssysteem om een dienst te verzorgen
- Verwekt door een bestaand proces
Redenen voor het beëindigen van een proces:
- Normale voltooiing
- Tijdslimiet overschreden
- Onvoldoende geheugen beschikbaar
- Overtreding geheugengrens
- Beschermingsfout
- Rekenkundige fout
- Tijd verstreken
-
I/O-fout
Ongeldige instructie
Geprivilegieerde instructie
Onjuist gebruik gegevens
Ingreep van de gebruiker of het besturingssysteem
Beëindiging van het ouderproces
Verzoek van het ouderproces
3.2.3. Procesmodel met 5 toestanden
- Actief (running): het proces dat op dit moment wordt uitgevoerd
- Gereed (ready): een proces dat direct kan worden uitgevoerd wanneer het daartoe de gelegenheid
krijgt
- Geblokkeerd (blocked): een proces dat niet kan worden uitgevoerd totdat een bepaalde gebeurtenis
optreedt
- Nieuw (new): een proces dat onlangs is gecreëerd maar nog niet door het systeem is toegevoegd aan
de verzameling met uitvoerbare processen
- Einde (exit): een proces dat door het besturingssysteem wordt ontslagen uit de groep uitvoerbare
processen, omdat het is beëindigd of omdat het om een bepaalde reden is afgebroken
Soorten overgangen:
- Niets  Nieuw: een nieuw proces wordt gecreëerd voor het uitvoeren van een programma
- Nieuw  Gereed: het besturingssysteem zal een proces verplaatsen van de toestand Nieuw naar de
toestand Gereed wanneer het toestaat dat nieuwe proces in uitvoering te nemen
- Gereed  Actief: als men een nieuw proces moet selecteren voor uitvoering, dan kiest het
besturingssysteem een van de processen met de toestand Gereed
- Actief  Einde: het proces dat op dat moment wordt uitgevoerd, wordt door het besturingssysteem
beëindigd als het proces aangeeft dat het is voltooid of als het wordt afgebroken
- Actief  Gereed: deze overgang treedt meestal op doordat het actieve proces de maximaal
toegestane tijd voor een ononderbroken uitvoering heeft bereikt
- Actief  Geblokkeerd: een proces wordt in de toestand Geblokkeerd geplaatst als het vraagt om iets
waarop het moet wachten
- Geblokkeerd  Gereed: een proces in de toestand Geblokkeerd wordt verplaatst naar de toestand
Gereed wanneer de gebeurtenis optreedt waarop het heeft gewacht
- Gereed  Einde: bij sommige processen kan een ouderproces een kindproces beëindigen.
Bovendien kunnen alle kindprocessen die aan een bepaald ouderproces zijn verbonden, worden
beëindigd wanneer de ouder wordt beëindigd
- Geblokkeerd  Einde: zelfde als voor de vorige overgang
3.2.4. Opgeschorte processen
Processor is zoveel sneller dan de I/O dat het vaak zal voorkomen dat alle processen in het geheugen
wachten op I/O.
Oplossing: wisselen (swapping): het verplaatsen van een deel of het geheel van een proces van het
hoofdgeheugen naar schijf.
Bevindt geen enkel proces in het hoofdgeheugen zich in de toestand Gereed, dan verplaatst het
besturingssysteem 1 van de geblokkeerde processen naar een wachtrij Opgeschort (suspend) =
wachtrij van bestaande processen die tijdelijk uit het hoofdgeheugen zijn verwijderd
 2 nieuwe toestanden:
- Geblokkeerd – opgeschort: het proces
bevindt zicht in het secundaire geheugen en wacht op een gebeurtenis
- Gereed – opgeschort: het proces bevindt zich in het secundaire geheugen maar is beschikbaar
voor uitvoering zodra het in het hoofdgeheugen is geladen
-
-
-
-
-
-
Nieuwe overgangen:
Geblokkeerd  Geblokkeerd-opgeschort: zijn er geen processen gereed, dan wordt ten minste 1
geblokkeerd proces uit het hoofdgeheugen geswapt om ruimte te maken voor een ander proces dat
niet geblokkeerd is
Geblokkeerd-opgeschort  Gereed-opgeschort: een proces in de toestand Geblokkeerd-opgeschort
wordt verplaatst naar de toestand Gereed-opgeschort als de gebeurtenis optreedt waarop het
proces heeft gewacht
Gereed-opgeschort  Gereed: bevindt zich geen proces in de rij Gereed, dan moet het
besturingssysteem een proces binnenhalen om de uitvoering te kunnen voortzetten
Gereed  Gereed-opgeschort: het kan noodzakelijk zijn een gereed proces te swappen als dat de
enige mogelijkheid is om een voldoende groot blok hoofdgeheugen vrij te maken
Nieuw  Gereed-opgeschort en Nieuw  Gereed: wordt een nieuw proces gecreëerd, dan kan het
worden toegevoegd aan de wachtrij Gereed of aan de wachtrij Gereed-opgeschort. In beide gevallen
moet het besturingssysteem enkele tabellen maken voor het beheren van het proces en een
adresruimte toewijzen aan het proces
Geblokkeerd-opgeschort  Geblokkeerd: er bevindt zich in de wachtrij Geblokkeerd-opgeschort
een proces dat een hogere prioriteit heeft dan alle andere processen in de wachtrij Gereedopgeschort en het besturingssysteem heeft een goede reden om aan te nemen dat de blokkade voor
dat proces binnenkort zal zijn opgeheven. Onder deze omstandigheden kan het zinvol zijn een
geblokkeerd proces in plaats van een gereed proces in het hoofgeheugen te laden
Actief  Gereed-opgeschort: behandelt het besturingssysteem een actief proces preëmptief omdat
een proces met een hogere prioriteit in de wachtrij Geblokkeerd-opgeschort zojuist niet-geblokkeerd
is geworden, dan kan het besturingssysteem het actieve proces rechtstreeks verplaatsen naar de
wachtrij Gereed-opgeschort om extra geheugen vrij te maken
Diverse toestanden  Einde: bij sommige besturingssystemen kan een proces worden beëindigd
door het ouderproces dat het proces heeft gecreëerd of door beëindiging van het ouderproces zelf.
Is dit toegestaan, dan kan een proces vanuit elke toestand worden verplaatst naar de toestand Einde
Definitie opgeschort proces
1. Het proces is niet onmiddellijk beschikbaar voor uitvoering
2. Het proces kan al of niet wachten op een gebeurtenis. Wacht het, dan is deze toestand Geblokkeerd
onafhankelijk van de toestand Opgeschort en zal het optreden van de blokkerende gebeurtenis het
proces niet automatisch geschikt maken voor uitvoering
3. Het proces werd in de toestand Opgeschort geplaatst door het proces zelf of door een ander
(ouderproces of besturingssysteem) om de uitvoering van het proces te verhinderen
4. Het proces kan deze toestand niet verlaten tenzij een ander hiervoor expliciet een opdracht geeft
Redenen voor het opschorten van processen:
- Swapping
- Andere reden van het besturingssysteem
- Verzoek van een interactieve gebruiker
- Timing
- Verzoek van het ouderproces
3.3. Beschrijving van processen
3.3.1. Beheersstructuren in het besturingssysteem
Als het besturingssysteem processen en bronnen wil kunnen beheren, dan moet het informatie
bezitten over de huidige status van elk proces en elke bron. Hiervoor maakt en onderhoudt het
besturingssysteem tabellen met informatie over elke entiteit die het beheert
Alle besturingssystemen werken in essentie met informatie over de volgende 4 categorieën:
Geheugentabellen (memory tables)
Geheugentabellen worden gebruikt voor het bijhouden van het hoofdgeheugen (het reële geheugen)
en het secundaire geheugen (het virtuele geheugen).
De geheugentabellen bevatten de volgende informatie:
- De toewijzing van hoofdgeheugen aan processen
- De toewijzing van secundair geheugen aan processen
- Beschermingsattributen voor welke processen toegang mogen krijgen tot bepaalde gedeelde
geheugengebieden
- Alle informatie die nodig is voor het beheren van het virtuele geheugen
I/O-tabellen (I/O tables)
I/O-tabellen worden door het besturingssysteem gebruikt voor het beheren van de I/O-apparaten en
I/O-kanalen van het computersysteem.
De I/O-tabellen bevatten de volgende informatie:
- Of een I/O-apparaat beschikbaar is of toegewezen is aan een bepaald proces
- Status van de I/O-bewerking
- Locatie in het hoofdgeheugen die wordt gebruikt als bron of bestemming van de I/O-overdracht
Bestandstabellen (file tables)
Deze tabellen verschaffen informatie over:
- Het bestaan van bestanden
- Hun locatie in het secundaire geheugen
- Hun huidige status
- Andere attributen.
Vaak wordt al deze informatie bijgehouden en gebruikt door het bestandsbeheersysteem (file
management system)
Procestabellen (process tables)
Voor het beheren en besturen van een proces, moet een besturingssysteem bepaalde dingen weten:
- Procesidentificatienummer
- Procestoestant
- Waar het proces zich bevindt
Het procesbeeld (process image) is de verzameling die bestaat uit het programma, de gegevens, de
stack en de attributen
3.3.2. Beheersstructuren voor processen
We kunnen de informatie in het procesbesturingsblok groeperen tot drie algemene categorieën:
1. Procesidentificatie
2. Processortoestandsinformatie
3. Procesbesturingsinformatie
Procesidentificatie
Aan elk proces is een unieke, numerieke identificatiecode toegewezen, wat niet meer hoeft te zijn
dan een eenvoudige index in de primaire procestabel.
Veel andere tabellen die worden beheerd door het besturingssysteem, kunnen procesidentificatie
gebruiken voor kruisverwijzing naar procestabellen.
Processortoestandsinformatie
Processortoestandsinformatie bestaat uit de inhoud van processorregisters:
- Registers die zichtbaar zijn voor de gebruiker
- Beheer- en statusregisters
- Stackwijzers
Voor belangrijk is dat alle processorontwerpen een register of verzameling registers bevatten waarin
statusinformatie is opgeslagen, het programmastatuswoord (program status word, PSW) genoemd.
Het PSW bevat statusinformatie.
Procesbesturingsinformatie
Dit is de aanvullende informatie die het besturingssysteem nodig heeft voor het beheren en
coördineren van de diverse actieve processen.
Rol van het procesbesturingsblok
Het procesbesturingsblok is de belangrijkste gegevensstructuur in een besturingssysteem.
Het verschaffen van toegang is niet moeilijk. Elke procesidentificatiecode kan worden gebruikt als
idex in een tabel.
De moeilijkheid zit hem in de bescherming:
- Een fout in één routine kan procesbesturingsblokken beschadigen, waardoor het systeem de
betreffende processen niet meer kan beheren
- Een aanpassing van het ontwerp van de structuur van het procesbesturingsblok kan invloed
hebben op meerdere modules in het besturingssysteem.
Deze problemen kunnen worden opgelost door alle routines in het systeem te laten werken via één
afhandelingsroutine.
3.4. Procesbesturing
3.4.1. Uitvoeringsmodi
Gebruikersmodus (user mode)
- Minder geprivilegieerde modus
- Gebruikersprogramma’s worden meestal in deze modus uitgevoerd
Systeemmodus (system mode)
- Meer geprivilegieerde modus
- Kernel van het besturingssysteem
- Synoniemen: besturingsmodus (control mode), kernelmodus (kernel mode)
3.4.2. Creëren van processen
1. Het besturingssysteem wijst een unieke procesidentificatie toe aan het nieuwe proces
2. Het besturingssysteem wijst ruimte toe aan het proces
3. Het procesbesturingsblok moet worden geïnitialiseerd
4. De juiste koppelingen moeten worden ingesteld
5. Soms moeten andere gegevensstructuren worden gemaakt of uitgebreid
3.4.3. Wisselen van processen
Wanneer moeten processen worden gewisseld:
- Klokinterrupt
- I/O-interrupt
- Geheugenfout
- Val (trap)
- Supervisor-aanroep
Wisseling van procestoestand:
1. Opslaan van de context van het proces, inclusief de
programmateller en andere registers
2. Bijwerken van het procesbesturingsblok van het afgebroken
proces. Dit omvat het wijzigen van de toestand Actief in 1 van de
andere toestanden (Gereed, Geblokkeerd, Gereed-opgeschort,
Einde)
3. Het verplaatsen van het betreffende procesbesturingsblok naar de
juiste wachtrij (Gereed, Geblokkeerd, Gereed-opgeschort)
4. Selecteren van een ander uit te voeren proces
5. Bijwerken van het procesbesturingsblok van het geselecteerde
proces
6. Bijwerken van de gegevensstructuren voor het geheugenbeheer
7. Terugbrengen van de context van dit proces naar de context zoals
deze was op het moment dat het geselecteerde proces het laatst
uit de toestand Actief werd gewisseld, door het laden van de
opgeslagen waarden van de programmateller en andere registers
3.4.4. Uitvoering van het besturingssysteem
Procesloze kernel
Het uitvoeren van de kernel van het besturingssysteem buiten alle processen. De code van het
besturingssysteem wordt uitgevoerd als een afzonderlijke entiteit die werkt in een geprivilegieerde
modus
Uitvoering binnen gebruikersprocessen
Diverse functies van het besturingssysteem worden uitgevoerd binnen de omgeving van het
gebruikersproces
Op processen gebaseerd besturingssysteem
Implementeren van het besturingssysteem als een verzameling systeemprocessen. Dit is nuttig in
een omgeving met meerdere processen of meerdere computers, waarbij een deel van de functies
van het besturingssysteem kan worden verplaatst naar speciale processors, hetgeen de prestaties
verbetert
4.
Bestandsbeheer
4.1. Overzicht
4.1.1. Bestanden en bestandssystemen
In de meeste toepassingen is het bestand het centrale element.
Vanuit het oogpunt van de gebruiker is het bestandssysteem een van de belangrijkste onderdelen
van een besturingssysteem.
Het bestandssysteem stelt gebruikers in staat bestanden met volgende eigenschappen te maken:
 Langdurig bestaand
 Deelbaar tussen processen
 Structuur
Functies die kunnen worden toegepast op bestanden:
 Maken, wissen
 Openen, sluiten
 Lezen, schrijven
Aantal attributen aan het bestand:
 Eigenaar
 Tijd waarop het bestand werd gemaakt
 Tijd waarop het bestand voor het laatst werd gewijzigd
 Toegangsrechten
Bestandsstructuur
Bij het bespreken van bestanden worden 4 begrippen algemeen gebruikt:
 Veld (field):
- Basiselement van gegevens
- Bevat 1 waarde, vb. achternaam van een werknemer, datum,...
- Onderscheid zich door de lengte en gegevenstype
 Record:
- Verzameling gerelateerde velden
- Kan als eenheid worden behandeld
 Bestand (file):
- Verzameling vergelijkbare records
- Wordt behandeld als 1 entiteit
- Hebben unieke bestandsnamen
- Toegangscontrole en restricties worden doorgaans toegepast
 Database:
- Verzameling gerelateerde gegevens
- Relaties bestaan tussen gegevenselementen
- Bestaat uit een of meer soorten bestanden
4.1.2. Systemen voor bestandsbeheer
Systeem voor bestandsbeheer (file management system) = verzameling systeemsoftware die
diensten verzorgt voor gebruikers en toepassingen bij het gebruiken van bestanden. De gebruiker of
programmeur moet geen speciale software ontwikkelen voor elke toepassing.
Een systeem voor bestandsbeheer moet voldoen aan de volgende doelstellingen:
- Voorzien in de behoeften en vereisten voor het gegevensbeheer van de gebruiker
- Garanderen dat de gegevens in de bestanden geldig zijn
- Prestaties optimaliseren
- Voorzien in I/O-ondersteuning voor diverse soorten opslagapparaten
- Minimaliseren of elimineren van de mogelijkheid dat gegevens verloren gaan of vernietigd
worden
- Voorzien in een gestandaardiseerde verzameling interfaceroutines voor I/O
- Ondersteuning van I/O bieden aan meerdere gebruikers bij systemen voor meerdere gebruikers
-
-
-
Minimale verzameling van eisen:
Elke gebruiker moet bestanden kunnen creëren, verwijderen en wijzigen
Elke gebruiker moet gecontroleerde toegang kunnen
krijgen tot bestanden van andere gebruikers
Elke gebruiker moet kunnen bepalen welke soorten
toegang zijn toegestaan voor zijn bestanden
Elke gebruiker moet de structuur van zijn bestanden
kunnen aanpassen tot een vorm die aansluit op het
op te lossen probleem
Elke gebruiker moet gegevens kunnen verplaatsen
tussen bestanden
Elke gebruiker moet een reservekopie van zijn
bestanden kunnen maken en de bestanden in geval
van schade kunnen herstellen
Elke gebruiker moet toegang kunnen krijgen tot zijn
bestanden via een symbolische naam
4.1.3. Architectuur van bestandssystemen
Apparaatstuurprogramma’s (device drivers)
-
Laagste niveau
Communiceert rechtstreeks met randapparaten
Verantwoordelijk voor het starten van I/O-bewerkingen op een apparaat
Verwerkt de voltooiing van een I/O-opdracht
Basisbestandssysteem (basic file system)
-
Fysieke I/O
Behandelt de gegevensblokken die worden uitgewisseld
Verzorgt de plaatsing van die blokken
Buffert de blokken in het hoofdgeheugen
Basis-I/O (basic I/O supervisor)
-
Verantwoordelijk voor het starten en beëindigen van alle bestand-I/O
Besturingsstructuren worden bijgehouden
Selecteert het apparaat waarop bestands-I/O wordt uitgevoerd
Verzorgt de scheduling van schijf- en tapetoegangen om de prestaties te optimaliseren
Onderdeel van het besturingssysteem
Logische I/O
- Verschaft gebruikers en
toepassingen toegang tot records
- Vormt een algemene voorziening
voor record-I/O
- Houdt basisgegevens over
bestanden bij
Toegangsmethode (access
methode)
- Verschillende toegangsmethoden
voor verschillende
bestandsstructuren
- Verschillende methoden om
gegevens te lezen en verwerken
4.2. Bestandsorganisatie en –toegang
De term bestandsorganisatie wordt gebruikt voor de logische structuur van de records zoals die
wordt bepaald door de manier waarop ze worden benaderd. De fysieke indeling van het bestand in
het secundaire geheugen is afhankelijk van de strategie voor blokvorming en bestandstoewijzing.
Diverse criteria zijn belangrijk:
- Korte toegangstijd
- Gemak van bijwerken
- Efficiënt gebruik van opslagruimte
- Onderhoudsgemak
- Betrouwbaarheid
4.2.1. Stapelbestand
- Gegevens worden verzameld in de volgorde waarin ze binnenkomen
- De gegevensmassa vergaren en opslaan
- Records kunnen verschillende velden hebben
- Geen structuur
- Recordtoegang vindt plaats via volledig zoeken
Stapelbestanden worden toegepast wanneer gegevens voorafgaan aan de verwerking worden
verzameld en opgeslagen, of wanneer gegevens niet gemakkelijk zijn in te delen.
Voordelen:
- Efficiënt gebruik van de ruimte als de grootte en structuur van de opgeslagen gegevens variëren
- Uitstekend geschikt voor volledige zoekbewerkingen
- Gemakkelijk bij te werken
Dit soort bestand is echte ongeschikt voor de meeste toepassingen
4.2.2. Sequentieel bestand
- Vaste indeling van records
- Alle records hebben dezelfde lengte
- Hetzelfde aantal velden met vaste lengte in een specifieke volgorde
- Veldnaam en lengte zijn attributen van het bestand
- Meestal 1 veld in elk record = sleutelveld (key field)
- Unieke identificatie van de record
- Records worden opgeslagen in sleutelvolgorde
Sequentiële bestanden worden gebruikt in batchtoepassingen of toepassingen die bij verwerking alle
records gebruiken.
Voordeel: kan gemakkelijk opgeslagen worden op tapes en schijven
Nadeel:
- Slechte prestaties bij afzonderlijke records
- Toevoegingen aan het bestand leiden tot problemen
4.2.3. Index-sequentieel bestand
- Behoudt de hoofdkenmerken van het sequentiële bestand
- Records zijn ingedeeld in volgorde op basis van het sleutelveld
- Een index naar het bestand voor het ondersteunen van willekeurige toegang
- Een overloopbestand (record kan worden gevonden door het volgen van een verwijzing in de
voorafgaande record)
Meerdere niveaus van indexering kunnen worden gebruikt.
Het index-sequentiêle bestand vermindert de tijd die nodig is voor de toegang tot een record sterk,
zonder dat dit ten koste gaat van het sequentiële karakter van het bestand.
4.2.4. Geïndexeerd bestand
- Gebruikt meerdere indexen voor verschillende velden:
 Volledige index bevat één ingang voor elke record in het hoofdbestand
 Gedeeltelijke index bevat ingangen voor records waarin het gewenste veld voorkomt
- Wordt een nieuwe record toegevoegd aan het hoofdbestand, dan moeten alle indexbestanden
worden bijgewerkt
Geïndexeerde bestanden worden vooral gebruikt in toepassingen waarbij snelle verwerking van
informatie cruciaal is en waarbij zelden alle gegevens worden verwerkt.
Vb.: reserveringssystemen voor luchtvaartmaatschappijen, systemen voor voorraadbeheer
De index zelf is voor het zoekgemak ingedeeld als sequentieel bestand.
Nadeel: records zijn uitsluitend toegankelijk via hun indexen.
4.2.5. Direct of hashed bestand
- Wordt gebruikt wanneer snelle toegang vereist is, wanneer records met vaste lengte worden
gebruikt en wanneer de toegang altijd beperkt blijft tot één record tegelijk
- Vb.: directory’s, prijstabellen, roosters en naamlijsten
- Directe toegang tot elk blok met een bekend adres
- Sleutelveld in elk record vereist
- Geen sequentiële volgorde
4.3. Bestandsdirectory’s
4.3.1. Inhoud
- Bevat informatie over bestanden zoals attributen, locatie en eigendom
- Een bestand dat door allerlei bestandsbeheerroutines kan worden benaderd
- Voert een vertaalslag uit tussen bestandsnamen en de bestanden zelf
Informatie-elementen van een bestandsdirectory:
Basisinformatie
- Bestandsnaam: naam gekozen door de maker, moet uniek zijn binnen een specifieke directory
- Bestandstype: vb. tekst, binair of laadmodule
- Bestandsorganisatie: voor systemen die verschillende bestandsorganisaties ondersteunen
Adresinformatie
-
Volume: geeft het apparaat aan waarop het bestand is opgeslagen
Beginadres: fysiek beginadres op secundaire opslag (vb. cilinder, spoor en bloknummer op schijf)
Gebruikte grootte: huidige bestandsgrootte in bytes, woorden of blokken
Toegewezen grootte: de maximale grootte van het bestand
Toegangscontrole-informatie
- Eigenaar: kan toegang toestaan of weigeren aan andere gebruikers en hun privileges veranderen
- Toegangsinformatie: kan de naam en het wachtwoord van iedere geautoriseerde gebruiker bevatten
- Toelaatbare acties: controleert het lezen, schrijven, uitvoeren en verzenden via een netwerk
Gebruiksinformatie
-
Datum gecreëerd: datum waarop het bestand voor het eerst in de directory werd geplaatst
Identiteit van de maker: meestal, maar niet noodzakelijk, de huidige eigenaar
Datum laatste leestoegang: datum waarop een record het laatst werd gelezen
Identiteit van laatste lezer: gebruiker die het lezen uitvoerde
Datum laatste wijziging: datum van de laatste bijwerking, invoeging of verwijdering
Identiteit voor laatste wijziging: gebruiker die de wijziging uitvoerde
Datum laatste reservekopie: datum waarop voor het laatst een reservekopie van het bestand werd
gemaakt op een ander medium
- Huidig gebruik: informatie over de huidige activiteit voor het bestand, zoals het proces dat het
bestand geopend heeft, of het bestand is vergrendeld door een proces en of het wel is bijgewerkt in
het hoofdgeheugen maar nog niet op schijf
4.3.2. Structuur
- De manier waarop de informatie wordt opgeslagen, verschilt sterk van systeem tot systeem
De eenvoudigste structuur
- Lijst van ingangen, met 1 ingang voor elk bestand
- Sequentieel bestand, waarbij de naam van het bestand dienst doet als sleutel
- Biedt geen hulp bij het ordenen van de bestanden
- Dwingt de gebruiker erop te letten dat hij niet dezelfde naam gebruikt voor 2 verschillende types
bestanden
Soorten bewerkingen die met de directory kunnen worden uitgevoerd:
- Zoeken
- Bestand creëren
- Bestand verwijderen
- Directory weergeven
- Directory bijwerken
De eenvoudige lijst is niet geschikt voor de ondersteuning van al deze bewerkingen.
Schema met 2 niveaus
-
1 directory voor iedere gebruiker en 1 hoofddirectory (masterdirectory)
Hoofddirectory bevat 1 ingang voor elke gebruikersdirectory
Heeft adres- en toegangscontrole-informatie
Elke gebruikersdirectory is een eenvoudige lijst met
bestanden van die gebruiker
- Geen middel om verzamelingen bestanden te structureren
- Namen hoeven alleen uniek te zijn binnen de verzameling
bestanden van één gebruiker
Hiërarchische of boomstructuurbenadering
- 1 hoofddirectory met daarin enkele gebruikersdirectory’s
- Elke gebruikersdirectory kan op zijn beurt subdirectory’s en
bestanden bevatten. Dit geldt voor elk niveau.
4.3.3. Naamgeving
- Gebruikers moeten met een naam naar een bestand kunnen verwijzen
- Elk bestand moet een unieke naam hebben
- Elk bestand in het systeem kan worden gevonden door een pad te volgen langs verschillende takken
totdat het bestand is bereikt
- Verschillende bestanden kunnen dezelfde bestandsnamen hebben, zolang ze maar een unieke
padnaam hebben
Werkdirectory
- De volldige padnaam uitspellen is lastig voor een gebruiker
- Een interactieve gebruiker of een proces is verbonden aan een huidige directory
4.4. Gemeenschappelijk gebruik van bestanden
Een systeem met meerdere gebruikers vereist bijna altijd dat bestanden gedeeld kunnen worden
door een aantal gebruikers. Hierbij spelen 2 kwesties een rol: toegangsrechten en het beheer van
gelijktijdige toegang
4.4.1. Toegangsrechten
- Geen: de gebruiker weet niet dat het bestand bestaat en krijgt geen toestemming voor het lezen van
de gebruikersdirectory waarin dit bestand voorkomt
- Kennis: de gebruiker kan vaststellen dat het bestand bestaat en wie de eigenaar is
- Uitvoeren: de gebruiker kan een programma laden en uitvoeren maar het niet kopiëren
- Lezen: de gebruiker kan het bestand voor elk doel lezen, onder andere om het te kopiëren of uit te
voeren
- Toevoegen: de gebruiker kan gegevens toevoegen aan het bestand, maar kan niets van de inhoud
van het bestand wijzigen of verwijderen
- Bijwerken: de gebruiker kan gegevens in het bestand wijzigen, verwijderen en toevoegen
- Beveiliging wijzigen: de gebruiker kan de toegangsrechten van andere gebruikers wijzigen
- Verwijderen: de gebruiker kan het bestand verwijderen uit het bestandssysteem
De eigenaar heeft alle toegangsrechten en kan rechten verlenen aan anderen:
- Specifieke gebruiker
- Gebruikersgroepen
- Alle
4.4.2. Gelijktijdige toegang
- Gebruiker kan het volledige bestand vergrendelen wanneer dat wordt bijgewerkt
- Vergrendelen van afzonderlijke records tijdens het bewerken
- Wederzijdse uitsluiting (mutual exclusion) en dodelijke omarming (deadlock) zijn problemen voor
gedeelde toegang
4.5. Blokvorming van records
- Records moeten worden ingedeeld als blokken
- Records zijn de logische eenheid bij toegang tot een bestand
- Blokken zijn de eenheid van I/O met secundaire opslag
3 methoden voor blokvorming (blocking):
1. Blokvorming met vaste lengte: hierbij worden records met vaste lengte gebruikt en wordt een
geheel aantal records opgeslagen in een blok. Er kan ongebruikte ruimte zijn aan het einde van elk
blok. Dit wordt aangeduid als interne fragmentatie
2. Gekoppelde blokvorming met variabele lengte: hierbij worden records met variabele lengte
gebruikt en samengepakt in blokken. Alle ruimte wordt gebruikt. Sommige records kunnen daarbij
meerdere blokken omspannen, waarbij het vervolg wordt aangegeven door een verwijzing naar
het volgende blok
3. Niet-gekoppelde blokvorming met variabele lengte: hierbij worden records met variabele lengte
gebruikt, maar deze worden niet gekoppeld opgeslagen. De meeste blokken bevatten loze ruimte,
omdat het onmogelijk is de rest van een blok te gebruiken als de volgende record groter is dan de
resterende, ongebruikte ruimte
Blokvorming met vaste lengte is de gebruikelijke vorm voor sequentiële bestanden.
Gekoppelde blokvorming met variable lengte gebruikt opslagruimte efficiënt en beperkt de grootte
van records niet. Dit is echter moeilijk te implementeren.
Niet-gekoppelde blokvorming met variabele lengte leidt tot verspilde ruimte.
4.6. Beheer van secundaire opslag
Het besturingssysteem is verantwoordelijk voor het toewijzen van blokken aan bestanden.
2 aandachtspunten:
- Ruimte op secundaire opslag moet worden toegewezen aan bestanden
- Noodzakelijk bij te houden welke ruimte beschikbaar is voor toewijzing
4.6.1. Bestandstoewijzing
Bij bestandstoewijzing spelen verschillende kwesties een rol:
- Als een nieuw bestand wordt gecreëerd, wordt de maximumruimte in één keer toegewezen?
- Ruimte wordt toegewezen aan een bestand als een of meer aaneengesloten porties. Welke
portiegrootte moet worden gebruikt bij de bestandstoewijzing?
- Welke gegevensstructuur wordt gebruikt voor het bijhouden van de porties?
Toewijzing vooraf of dynamisch
- De maximale grootte van een bestand wordt gedeclareerd bij de creatie van het bestand
- Bij veel toepassingen is het moeilijk de maximale grootte van het bestand te schatten
- Programmeurs hebben de neiging te overschatten om te voorkomen dat ze ruimte tekortkomen
Portiegrootte
Twee uitersten:
- Een portie wordt toegewezen die groot genoeg is voor het gehele bestand
- Ruimte wordt toegewezen op de schijf met één blok tegelijk
Bij het kiezen van de portiegrootte moet een balans worden gevonden tussen de efficiëntie, gezien
vanuit één bestand en de algehele systeemefficiëntie
4 aspecten die in overweging moet worden genomen:
- Aaneengesloten ruimte verbetert de prestaties
- Een groot aantal porties vergroten de tabellen die nodig zijn voor het beheren van de
toewijzingsinformatie
- Porties met een vaste grootte vereenvoudigen de toewijzing van ruimte
- Porties met variabele grootte minimaliseren de verspilling voor ongebruikte opslagruime
Twee alternatieven:
- Variabele, grote, aaneengesloten porties
 Betere prestaties
 Voorkomt verspilling
 Tabellen voor bestandstoewijzing zijn klein
 Hergebruiken van ruimte is lastig
- Blokken (kleine, vaste porties)
 Hogere flexibiliteit
 Kan grote tabellen vereisen
 Geen aaneensluiting (blokken worden toegewezen zodra ze nodig zijn)
Methoden van bestandstoewijzing
Aaneengesloten toewijzing (contiguous allocation):
- 1 aaneengesloten verzameling blokken toegewezen aan een bestand op het moment dat het
bestand wordt gecreëerd
- De tabel voor bestandstoewijzing hoeft slechts 1 ingang voor elk bestand te bevatten, die het
beginblok en de lengte van het bestand aangeeft
- Er kan externe fragmentatie optreden
- Nu en dan noodzakelijk een algoritme voor samenpakken (compaction) uit te voeren om
voldoende aanvullende ruimte op schijf vrij te maken
Kettingtoewijzing (chained allocation):
- De toewijzing vindt meestal plaats op basis van afzonderlijke blokken
- Elk blok bevat een wijzer naar het volgende blok in de ketting
- De tabel voor bestandstoewijzing hoeft slechts 1 ingang voor elk bestand te bevatten, die het
beginblok en de lengte van het bestand aanduidt
- Geen externe fragmentatie
- Meest geschikt voor sequentiële bestanden
- Selecteren van een afzonderlijk blok van een bestand vereist het volgen van de keten naar het
gewenste blok
Indextoewijzing (indexed allocation):
- Lost veel van de problemen op van aaneengesloten en kettingtoewijzing
- De tabel voor bestandstoewijzing bevat een afzonderlijke index van 1 niveau voor elk bestand
- De index heeft 1 ingang voor elke portie die aan het bestand is toegewezen
- De bestandsindex voor een bestand wordt bijgehouden in een apart blok en de bestandsingang
verwijst in de tabel voor bestandstoewijzing naar dat blok
Bootproces
Het besturingssysteem is een programma dat op extern geheugen staat en moet gekopieerd worden
naar het werkgeheugen (= inladen). Het besturingssysteem inladen is een speciale procedure, want
om iets in te laden moet er al programmatuur zijn.
Partities
Deel van de harde schijf: opeenvolgende cilinders.
- Maximum 4 primaire partities.
- In partities indelen gebeurt bij het begin van de installatie van het besturingssysteem.
- Eventueel kan men achteraf partities wijzigen, mits speciale tools.
In een partitie kan je een besturingssysteem installeren.
Er kan maximum 1 partitie actief zijn.
Bij opstarten zal het besturingssysteem starten in de actieve partitie.
MBR
= Master Boot Record (Record = sector).
MBR bevat:
- MBR-startprogramma (Initial Program Loader, IPL)
- Partitietabel
- Magisch getal
Bij het booten start het besturingssysteem in de actieve partitie
Partitietabel
De partitietabel kan 4 partitie-records bevatten die ieder een primaire partitie beschrijven. De
partitietabel bevat per partitie:
- Bootable flag : actief / niet actief
- Cylinder/Head/Sector van 1e sector
- Partitie-type : geeft aan welk bestandssysteem op de partitie staat
- Cylinder/Head/Sector van laatste sector
- LBA-nummer van 1e sector
- LBA-nummer van laatste sector
Logische partities
4 primaire partities is soms te weinig. Een primaire partitie kan onderverdeeld worden in logische
partities (= extended)
Medium
Schijf
Extended partitie
Verdeeld in
Primaire partities
Info staat in
MBR
Max aantal partities
4
Logische partities
EMBR
24
EMBR
= Extended Master Boot Record
EMBR voor de extended partities
EMBR voor elke logische partitie
Elke EMBR heeft 2 items:
- Info over de partitie zelf
- Info over de rest
Welke info?
- Type
- Chs 1e sector
- Chs laatste sector
- Grootte
PBR
Partitie wordt geformatteerd (bestandssysteem opgeven)
1e sector van de partitie is de Partition Boot Sector (sector = record; PBR = PBS)
PBR bevat:
- Sprongbevel (spring x aantal bytes verder, naar PBR-startprogramma)
- Info over de partitie
- PBR-startprogramma
Wat gebeurt als je computer start?
1. Interne voeding wordt geïnitialiseerd
- Testen van de geleverde spanningen
- Reset-signaal naar CPU sturen
2. Wanneer spanning O.K.: “Power Good” signaal naar moederbord (= stoppen met reset)
3. Processor begint bevelen uit te voeren
- Welke mode?
 Reële mode (Intel)
- Welk bevel?
 Op adres FFFF:0000
- Wat betekent dit?
FFFF0
segmentadres
+0000
verplaatsing
FFFF0
(in register CS staat FFFF)
FFFF0 is een adres in het werkgeheugen, toegewezen aan het BIOS (vroeger ROM, nu EEPROM).
BIOS EEPROM:
- Soms nog “CMOS” genoemd (Complementary Metal-Oxide Semiconductor)
- Eigenlijk is “de CMOS” 1 van de weinige chips in een computer die geen CMOS-technologie
gebruikt
- Vroeger CMOS-geheugen dat door batterijen onder spanning werd gehouden
- Bevat:
 Opstartvolgorde
 Informatie over randapparaten
 BIOS-paswoord
 …
Processor begint met BIOS-startprogramma (op adres FFFF0)
 Wat doet dit startprogramma?
4. Power on self test uitvoeren, POST controleert vitale systeemonderdelen :
- CPU
- Toetsenbord (verbonden, controller O.K.?)
- RAM (lezen, schrijven)
- Video,…
5.
6.
7.
8.
Bios-startprogramma gaat na wat het boot-apparaat is
MBR kopiëren naar werkgeheugen (bevat IPL)
Sprong naar 1e bevel in IPL
IPL :
- Leest partitietabel (gaat na welke de actieve partitie is)
- Kopieert PBR (met PBR-startprogramma) van deze partitie naar werkgeheugen
- Sprong naar bevel vanaf 1e byte van PBR
9. 1e bevel in PBR : sprong naar PBR-startprogramma
10.PBR-startprogramma : ntldr inladen
- Indien niet gevonden : “ntldr missing” op het scherm zetten
11.Ntldr : processor naar protected mode en Windows starten
Download