Besturingssystemen Intro Besturingssysteem: softwarelaag tussen gebruiker en hardware softwarelaag tussen toepassingssoftware en de uiteindelijke uitvoering van de machinebevelen 2 aspecten: hoe zit het in mekaar? hoe moet/kan ik het configureren? Bootproces Het besturingssysteem is een programma: staat op extern geheugen moet gekopieerd worden naar het werkgeheugen (inladen) Het inladen van het OS speciale procedure om iets in te laden moet er programmatuur zijn inladen harde schijf: partities, MBR PBR wat gebeurt er als je computer start? Partities Deel van de harde schijf opeenvolgende cilinders maximum 4 primaire partities indelen: o bij het begin van de installatie van het OS o eventueel achteraf wijzigen tools in een partitie kan je een OS installeren, maximum 1 partitie kan actief zijn bij opstarten starten van OS in de actieve partitie sporen en cilinders MBR (Master Boot Record) bevat: MBR-startprogramma (IPL Initial Program Loader) partitietabel magisch getal bij opstarten starten van het OS in de actieve partitie Partitietabel Kan 4 partitierecords bevatten die ieder een primaire partitie beschrijven, bevat per partitie: (1b) Bootable flag actief/niet actief (3b) Cylinder/Head/Sector van 1e sector (1b) Partitie-type geeft aan welk bestandssysteem op de partitie staat (4b) LBA-nummer van de 1e sector (4b) LBA-nummer van de laatste sector hoe groot is de partitietabel? Logische partities 4 primaire partities soms te weinig Primaire partitie kan onderverdeeld worden in logische partities extended partition info in "extended master boot record" EMBR (Extended MBR) voor de extended partitie voor elke logische partitie EMBR 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 1e sector van de partitie partition boot sector sector = record PBR = PBS PBR bevat: o sprongbevel o info over de partitie o PBR-startprogramma BIOS EEPROM Soms nog CMOS genoemd Complementary Metal-Oxide Semiconductor CMOS gebruikt geen CMOS-technologie vroeger CMOS-geheugen dat door batterij onder spanning werd gehouden bevat: o opstartvolgorde o informatie over randapparaten o BIOS-paswoord o ... BIOS kan geconfigureerd worden bv bootsequence (opstartvolgorde): o op welke apparaten zoeken naar OS en in welke volgorde: HDD CD USB Netwerk Wat gebeurt er als de computer start? 1. interne voeding wordt geïnitialiseerd a. testen van de geleverde spanningen b. reset-signaal naar de CPU sturen 2. wanneer spanning OK "Power good" signaal naar moederbord stop reset 3. processor begint met bevelen uit te voeren a. welke mode? b. reële mode c. welk bevel? d. op adres FFFF:0000 e. wat betekend dit? f. FFFF0(segmentadres) + 0000(verplaatsing) = FFFF0 g. FFFF0 is een adres in het werkgeheugen, toegewezen aan het BIOS 4. startprogramma POST Power On Self Test controleert vitale systeemonderedelen: 5. 6. 7. 8. 9. 10. 11. 12. 13. a. CPU b. toetsenbord c. RAM d. video e. ... indien niet OK: a. meeste fouten zijn fataal, vootproces kan niet verder gaan b. misschien gaan ledjes aan c. misschien horen we beeps d. misschien foutmelding op scherm indien POST succes: BIOS-startprogrammagaat na wat het boot-apparaat is, onderstel: de HDD MBR kopiëren naar werkgeheugen (bevat IPL) sprong naar 1e bevel in IPL IPL: a. leest partitietabel b. kopieert PBR van deze partitie naar werkgeheugen c. sprong naar bevel vanaf 1e byte v. PBR 1e bevel in PBR sprong naar PBR-startprogramma PBR-startprogramma NTLDR inladen a. NTLDR niet gevonden "NTLDR missing" op het serm wel gevonden NTLDR procesor naar protected mode en Windows starten Hoofdstuk 1: Overzicht van computersystemen 1.1 Basiselementen gebruikt de hardwarebronnen van een of meer processors verzorgt een aantal diensten voor de gebruikers van het systeem beheert het secundaire geheugen en invoer/uitvoerapparaten Basiselementen van een computer processor hoofdgeheugen I/O-modules systeembus Processor beheert de werking van de computer voert gegevensverwerking uit 2 interne registers: o geheugenadresregister (MAR) o geheugenbufferregister (MBR) I/O-adresregister I/O-bufferregister Hoofdgeheugen vluchtig o data is verloren wanneer de stroom wegvalt reëel geheugen of primair geheugen genoemd bestaat uit een set van locaties gedefinieerd door sequentiële adresnummers o ze bevatten data of instructies I/O-modules verplaatsen gegevens tussen computer en zijn externe omgeving: o opslag (HDD) o communicatieapparatuur o werkstations gespecificeerd door een I/O-adresregister o I/OAR Systeembus communicatie tussen de processors, het hoofdgeheugen en de I/O-modules 1.2 Processorregisters sneller en kleiner dan het hoofdgeheugen 2 soorten: Registers die zichtbaar zijn voor de gebruiker o bieden de programmeur de mogelijkheid om verwijzingen naar het hoofdgeheugen te minimaliseren door het registergebruik te optimaliseren o mag naar worden verwezen door een machinetaal beschikbaar voor alle programma's toepassingsprogramma's en systeemprogrammas o de registertypen die meetal beschikbaar zijn: dataregisters uiteenlopende functies er zijn beperkingen adresregisters indexregister segmentwijzer stackwijzer conditiecoderegisters stuur- en statusregisters o gebruikt door de processor voor het besturen van de werking van de processor o gebruikt door geprivilegieerde routines van het OS voor het beheren van de uitvoering van programma's o 3 registers: Program counter (PC) bevat het adres van de volgende op te vragen instructie Instructieregister (IR) bevat de laatst opgevraagde instructie Programmastatuswoord (PSW) bevat statusinformatie o Conditiecodes (flags of vlaggen) maken doorgaans deel uit van een stuurregister bits die worden ingesteld door de processorhardware als resultaat van bewerkingen alleen lezen, ze zijn bedoeld om feedback te geven bij uitvoering van een instructie 1.3 Uitvoering van instructies een programma bestaat uit een verzameling instructies opgeslagen in het geheugen 2 stappen: o processor leest de instructies uit het geheugen o processor voert elke instructie uit 1.3.1 Ophalen en uitvoeren van een instructie de processor haalt de instructie uit het geheugen. de programmateller (PC) heeft het adres van de volgende op te halen instructie: de programmateller wordt verhoogd na het ophalen van elke instructie Instructieregister de opgehaalde instructie wordt geladen in het instructieregister 4 categorieën: Processorgeheugen processor-I/O gegevensverwerking besturing 1.4 Interrups onderbreken de normale verwerking van de processor worden gebruikt als middel om verwerkingsefficiëntie te verhogen: de meeste I/O-apparaten zijn langzamer dan de processor de processor moet pauzeren en op het apparaat wachten Klassen interrupts Programma: o gegenereerd door het resultaat van de uitvoering van een instructie, bijvoorbeeld 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: o gegenereerd door een timer binnen de processor. hiermee kan het besturingssysteem functies uitvoeren met een bepaalde regelmaat I/O: o gegenereerd door een I/O-controller om de normale voltooiing van een bewerking of uiteenlopende foutcondities te melden Hardwarefout: o gegenereerd door fouten zoals het uitvallen van de stroom of geheugenpariteitsfout 1.4.3 Meervoudige interrupts veronderstel dat een interrupt zicht voordoet terwijl een andere interrups afgehandeld word: bv: een interrupt van de communicatie terwijl een interrupt van de printer wordt verwerkt 2 benaderingen: uitschakelen van interrupts terwijl een interrupt wordt verwerkt een prioriteitsschema gebruiken 1.4.4 Multiprogrammering de processor kan meerdere gebruikersprogramma's tegelijkertijd uitvoeren de volgorde waarin de programma's worden verwerkt is afhenkelijk van hun relatieve prioriteit en van het feit of ze wachten op I/O na het voltooien van de interruptafhandelingsroutine wordt de besturing niet altijd onmiddellijk teruggegeven aan het gebruikersprogramma dat op dat moment wordt uitgevoerd 1.5 De geheugenhiërarchie 3 hoofdkenmerken in het geheugen: kosten capaciteit toegangstijd de volgende relaties: kortere toegangstijd hogere kosten per bit hogere capaciteit lagere kosten per bit hogere capaciteit langere toegangssnelheid Hiërarchie van boven naar onder dan gebeurt er: de kosten per bit dalen de capaciteit neemt toe de toegangstijd neemt toe de frequentie van de processortoegang tot het geheugen neemt af Secundair geheugen aanvullend geheugen extern niet-vluchtig gebruikt voor de opslag van programma- en gegevensbestanden 1.6 Cachegeheugen onzichtbaar voor het OS o werkt samen met andere hardware voor geheugenbeheer per instructiecyclus heeft de processor ten minste 1 keer toegang tot het geheugen o de snelheid waarmee de processor instructies kan uitvoeren, wordt duidelijk beperkt door de lengte van het geheugen toepassen van het beginsel van lokaliteit door een klein snel geheugen tussen de processor en het hoofdgeheugen te plaatsen cache Cacheprincipes de cache bevat een kopie van een deel van het hoofdgeheugen de processor kijkt de cache eerst na o als de bytes niet gevonden zijn lees het blok uit het geheugen in in de cache wanneer een blok gegevens in de cache wordt geplaatst, zullen toekomstige geheugenverwijzingen verwijzen naar andere bytes in dat blok. Ontwerp van cachegeheugen categorieën: cachegrootte o kleine caches hebben een significantie invloed op prestaties blokgrootte o de eenheid gegevens die wordt uitgewisseld tussen het cachegeheugen en het hoofdgeheugen o grotere blokgrootte grotere hit-ratio o te grote blokgrootte verlaagt de kans van hergebruiking adresseringsfunctie o bepaald welke locatie het blok zal innemen in de cache o 2 beperkingen: bij het inlezen van een blok moet een ander blok worden vervangen hoe flexibeler de adresseringsfunctie is, des te meer ruimte hebben we om een vervangingsalgoritme te ontwerpen dat de hit-ratio maximaliseert vervangingsfunctie o kiest het blok dat vervangen wordt o liefst een blok vervangen waarvan de kans dat we het in de nabije toekomst nodig hebben, klein is onmogelijk om te garanderen o een effectieve strategie is het vervangen van het blok dat zich het langst in de cache bevind zonder dat ernaar verwezen is Least Recently Used (LRU) schrijfstrategie o bepaalt wanneer de geheugenschrijfbewerking plaatsvindt o kan optreden elke keer een blij wordt bijgewerkt o kan optreden wanneer het blok wordt vervangen minimaliseert de geheugenschrijfbewerkingen laat het hoofdgeheugen in een verouderde toestand 1.7 I/O-technieken wanneer de processor bij de uitvoering van een programma een instructie tegenkomt waarbij I/O nodig is o wordt de instructie uitgevoerd door een opdracht te verzenden naar de betreffende I/O-module 3 mogelijke technieken zijn mogelijk voor I/O-operaties: geprogrammeerde I/O interruptgestuurde I/O directe geheugentoegang (DMA) Geprogrammeerde I/O de I/O-module voert de gevraagde actie uit o zet de juiste bits in het I/O-statusregister o onderneemt verder geen actie om de processor te waarschuwen als er geen interrupts zijn, moet de processor zelf controleren wanneer de instructie voltooid is Geprogrammeerde I/O instructieset besturen gebruikt om een extern apparaat te activeren en te vertellen wat het moet doen status controleren statuscondities testen lezen en schrijven schrijven/lezen tussen de processorregisters en externe apparaten Geprogrammeerde I/O voorbeeld Gegevens worden met 1 woord tegelijk ingelezen zolang de processor leest houdt hij de statuscontrolelus aan. Interruptgestuurde I/O de processor geeft een opdracht aan een I/O-module o de processor gaat dan zelf ander nuttig werk doen de I/O-module zal de processor dan onderbreken met een interrupt als de module gereed is om gegevens uit te wisselen met de processor elimineert het onnodige wachten o maar alles gaat langs de processor Directe geheugentoegang (DMA) I/O-opdracht wordt uitgevoerd door een DMA-module de processor doet alleen mee bij het beginnen en eindigen van de overdracht veel efficiënter Hoofdstuk 2: overzicht van besturingssystemen 2.1 Doel en functies van OS OS een programma dat de uitvoering van toepassingsprogramma's regelt een interface tussen de gebruiker van de computer en de hardware 3 doelstellingen: gemak efficiëntie Flexibiliteit Diensten van het OS ontwikkelen van programma's voor editors en debuggers uitvoeren van programmas het OS regelt een aantal zaken die nodig zijn om een programma uit te voeren toegang tot I/O-apparaten elk I/O-apparaat heeft een unieke interface + OS voorziet een algemene interface voor de gebruikers beheerde toegang tot bestanden toegang tot verschillende media, maar het OS presenteert een algemene interface + beveiligingsmechanismen voor het beheren van de toegang tot bestanden toegang tot het systeem beheert de toegang tot het systeem en zijn systeembronnen opsporen en afhandelen van fouten o interne en externe hardwarefouten o softwarefouten o OS kan een verzoek van een programma niet toelaten administratie o verzamelt gebruiksstatistieken o bewaakt prestatieparameters De rol van een OS een computer is een verzameling van bronnen voor het verplaatsen, opslaan en verwerken van gegevens. Het OS is verantwoordelijk voor het beheer van deze bronnen OS als software het OS werkt hetzelfde als gewone computersoftware het is een programma dat wordt uitgevoerd door de processor het OS geeft de besturing veelvuldig uit handen en is voor het terugkrijgen van de besturing afhankelijk van de processor Ontwikkelingsmogelijkheden van het OS OS zullen zich in de loop van de tijd ontwikkelen: hardwarevernieuwingen en nieuwe typen hardware nieuwe diensten verbeteringen 2.2 Evolutie van besturingssystemen Seriële verwerking geen OS machines werden bestuurd via een bedieningspaneel dat bestond uit lampjes, schakelaars, een invoerapparaat en een printer enkele problemen: scheduling insteltijden Eenvoudige batchsystemen de eerste machines waren duur belangrijk om het gebruik te maximaliseren monitor o software dat de volgorde van gebeurtenissen controleert o combineert jobs bij elkaar tot een batch o programma geeft controle terug aan de monitor wanneer het klaar is vanuit de monitor gezien: software dat de volgorde van gebeurtenissen controleert resident monitor software dat altijd in het geheugen is de monitor leest een taak in en geeft controle de taakt geeft de controle terug aan de monitor Jobbesturingstaal speciaal type van programeertaal om taken te controleren. geeft instructies aan de monitor: welke compiler het moet gebruiken welke data het moet gebruiken Gewenste hardwaremogelijkheden geheugenbeveiliging taken kunnen niet overschrijven/veranderen timer voorkomen dat 1 taak onbeperkt beslag legt op het hele systeem geprivilegieerde instructies alleen uitgevoerd door de monitor interrupts werkingsmodi gebruikersmodus: gebruikersprogramma wordt uitgevoerd in gebruikersmodus bepaalde gebieden in het geheugen zijn niet beschikbaar voor de gebruiker bepaalde instructies mogen niet worden uitgevoerd kernelmodus: monitor wordt uitgevoerd in systeemmodus bevoorrechte instructies mogen niet worden uitgevoerd heel het geheugen kan benaderd worden Batchsystemen met multiprogrammering CPU is voor niets gebruikt: zelfs niet bij automatische taakverwerking I/O-apparaten zijn traag vergeleken met de processor wanneer een taak moet wachten voor I/O kan de processor veranderen naar een andere taak uniprogrammering de processor moet wachten to een I/O-instructie is voltooid voordat hij kan doorgaan Systemen met timesharing gebruiken van multiprogrammering om meerdere batchjobs tegelijk af te handelen de processortijd wordt gedeeld door de meerdere gebruikers meerdere gebruikers hebben toegang tot het systeem door terminals Vroeg voorbeeld: CTSS (Compatible Time Sharing System) ontwikkeld op MIT als project MAC (Machine-aided Cognition / Multiple Access Computers) Time slicing: de besturing werd overgedragen aan een gebruiker het programma van de gebruiker en de gegevens werden geladen de systeemklok genereerde interrupts met een snelheid van 1 per 0,2 seconden bij elke klokinterrupt kreeg het OS de besturing terug zodat het de processor kon toewijzen aan een andere gebruiker Problemen meerdere taken in het geheugen moesten beveiligd worden voor elkanders data het bestandssysteem moest worden beveiligd zodat uitsluitend geautoriseerde gebruikers toegang hebben tot een bepaald bestand conflicten die optreden wij het gelijktijdig gebruik van systeembronnen moeten worden afgehandeld (printers, opslag, etc) 2.3 Belangrijke prestaties OS'en behoren tot de meest complexe stukken software die tot dusver zijn ontwikkeld belangrijke prestaties zijn: processen geheugenbeheer bescherming en beveiliging van informatie scheduling en beheer van bronnen systeemstructuur Processen essentieel voor de structuur van OS een proces is: een programma dat uitgevoerd wordt 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, een actuele toestand en een aantal bijbehorende concepten oorzaken van fouten wanneer men een OS ontwerpt fouten in het ontwerp van een OS zijn vaak subtiel en moeilijk om te vinden fouten zijn vaak: o slechte synchronisatie o mislukte wederzijdse uitsluiting o niet-vastomschreven programmawerking o dodelijke omarming proces heeft 3 delen een uitvoerbaar programma de bijhorende gegevens die het programma nodig heeft de uitvoeringscontext van het programma De uitvoeringscontext is de verzameling interne informatie waardoor het besturingssysteem het proces kan controleren. Geheugenbeheer Het OS heeft 5 hoofdtaken bij het beheer van opslag: procesisolatie automatische toewijzing en beheer ondersteuning van modulair programmeren bescherming en toegangsbeheer langetermijnopslag Virtueel geheugen bestandssysteem zorgt voor de opslag op lange termijn virtueel geheugen is een voorziening waarmee programma's geheugen op logisch niveau kunnen adresseren, zonder rekening te houden met de hoeveelheid hoofdgeheugen dat fysiek aanwezig is. Paging laat toe om processen op te delen in een aantal blokken van vaste lengte pagina's virtueel adres bestaat uit een paginanummer en een relatieve locatie (offset) binnen de pagina elke pagina kan overal binnen het hoofdgeheugen geplaatst worden Bescherming en beveiliging van informatie het probleem kan algemeen worden geformuleerd als "het controleren van de toegang tot computersystemen en van de informatie die erop is opgeslagen" 4 categorieën: beschikbaarheid vertrouwelijkheid gegevensintegriteit authenticiteit Scheduling en beheer van bronnen hoofdverantwoordelijkheid OS beheren van de verschillende bronnen elke strategie voor de toewijzing en de scheduling van bronnen moet zijn gebaseerd op: rechtvaardigheid gedifferentieerd reactievermogen efficiëntie Systeemstructuur het systeem beschouwen als een reeks niveaus elk niveau voert een specifieke deelverzameling uit van de functies die het OS moet uitvoeren elk niveau verzorgt diensten voor het volgende, lagere niveau hiermee is het probleem gesplitst in enkele beter hanteerbare deelproblemen 2.4 Ontwikkeling in de aanloop naar modernere OS Microkernelarchitectuur de meeste OS hadden 1 kolossale monolithische kernel verzorgen het overgrote deel vande functionaliteit van het OS een microkernel wijst slechts enkele essentiële functies toe aan de kernel: adresruimten communicatie tussen processen basisscheduling Multithreading een proces is verdeeld in draden (threads) die tegelijkertijd kunnen worden uitgevoerd. een draad: inzetbare eenheid werk een draad wordt sequentieel uitgevoerd en kan worden onderbroken een proces verzameling van 1 of meerdere draden Symmetrische multiprocessing (SMP) een SMP heeft: meerdere processoren deze processors delen hetzelfde hoofdgeheugen en dezelfde I/O-voorzieningen alle processors kunnen dezelfde functies uitvoeren het OS van een SMP verdeelt processen of threads over alle processors. voordelen SMP: prestaties laat parallele uitvoering toe beschikbaarheid het uitvallen van 1 processor stop de machine niet stapsgewijze groei extra processors kunnen bijgevoegd worden schaalbaarheid Gedistribueerde OS'en geeft de illusie bij de gebruiker dat: er maar 1 hoofdgeheugen en 1 opslagplaats is vroeg stadium van ontwikkeling Objectgeoriënteerd ontwerp Gebruikt om modulaire uitbreidingen toe te voegen aan een kleine kernel Het laat programmeurs toe een OS aan te passen zonder de integriteit van het systeem in gevaar te brengen 2.5 Overzicht van MS Windows Multitasking voor 1 gebruiker de ontwikkeling van Windows werd gedreven door de noodzaak de enorme kracht te benutten van de moderne 32-bits microprocessor en 64-bit microprocessor ontworpen voor gebruikers die meerdere programma's tegelijk gebruiken voornaamste drivers zijn: o verhoogd geheugen en snelheid van microprocessors o ondersteuning voor virtueel geheugen Client/servermodel De executive, de beveiligde subsystemen en de toepassingen zijn gestructureerd volgens het client/servermodel een veel gebruikt model voor gedistribueerde verwerking toegepast op 1 systeem de processen communiceren via RPC Objecten in Windows Windows is in sterke mate ontwikkeld op basis van de concepten van OO-ontwerp. de belangrijkste OO-concepten van Windows zijn: inkapseling objectklasse en objectinstantie overerving polymorfie 2.6 Traditionale UNIX-systemen Beschrijving Traditionele UNIX kernel Moderne UNIX kernel 2.7 Linux Modulaire structuur de meeste UNIX-kernels zijn monolithisch, deze is gestructureerd als een collectie van modules: loadable modules een objectbestand waarvan de code tijdens bedrijf aan de kernel gekoppeld of waarvan de kernel losgekoppeld kan worden. karakteristieken: dynamisch koppelen stapelbare modules Hoofdstuk 3: Beschrijving en besturing van processen Benodigdheden van het OS fundamentele taak processen managen het OS moet: de uitvoering van meerdere processen verwerken bronnen toewijzen aan processen volgens een bepaalde strategie en tegelijkertijd een deadlock voorkomen communicatie tussen processen en het creëren van processen door de gebruiker ondersteunen synchronisatie tussen processen toelaten 3.1 Wat is een proces? van de vorige hoofdstukken: een computer bestaat uit een verzameling hardwarebronnen computertoepassingen zijn ontwikkeld om een bepaalde taak uit te voeren het is allerminst efficiënt om toepassingen te schrijven voor een specifiek computersysteem het OS werd ontwikkeld als veilige en consistente interface waar toepassingen gebruik van kunnen maken je kan het OS oorstellen als een uniforme, abstracte representatie van bronnen die door toepassingen benut kunnen worden Het OS beheert de uitvoering van programma's bronnen worden beschikbaar gemaakt voor verschillende toepassingen de fysieke processor schakelt tussen verschillende toepassingen de processor en I/O-apparaten kunnen efficiënt worden gebruikt Definitie proces een programma dat wordt uitgevoerd een instantie van een programma die op een computer wordt uitgevoerd de entiteit die aan een processor kan worden toegewezen en op die processor kan worden uitgevoerd een eenheid van activiteit, die gekenmerkt wordt door de uitvoering van een reeks instructies proces voorstellen als entiteit die bestaat uit een aantal elementen: programmacode verzameling gegevens een aantal elementen die de status van de uitvoering van het programma beschrijven: o indentificatienummer o toestand o prioriteit o o o o programmateller geheugenwijzers I/O-toestandinformatie beheersinformatie Procesbesturingsblok bevat de proceselementen gecreëerd en beheerd door het OS ondersteunt verschillende processen 3.2 Procestoestanden het gedrag van een individueel proces kan beschreven worden aan de hand van de vorlgorde van instructies die voor dat proces worden uitgevoerd zo een lijst wordt een "trace" (spoor) genoemd. de dispatcher is een klein programma dat de processor wisselend toewijst aan een ander proces. Uitvoeren van een proces veronderstel dat er 3 processen worden uitgevoerd ze zitten allemaal in het geheugen (+ de toedeler (dispatcher)) negeer virtueel geheugen voor dit voorbeeld Vanuit het oogpunt van processen elk proces runt tot het voltooid is Vanuit oogpunt van de processors Procesmodel met 2 toestanden proces kan in 2(3) statussen zijn: actief niet-actief (geblokkeerd) Creëren en beëindigen van processen zie tabel 3-1 en 3-2 op pagina 129 + 130 + 140 Creëren van processen het OS maakt een gegevensstructuur die wordt gebruikt bij het procesbeheer traditioneel creëerde het OS alle processen het kan zinvol zijn een proces de mogelijkheid te bieden een ander proces te creëren deze actie noemt men procesverwekking (process spawning) o ouderproces(parent process) is het originele proces dat het andere verwekt o het kinderproces(child proces) is het verwekte proces Beëindigen van processen Er moet een manier zijn waarop een proces kan aangeven dat hij voltooid is deze indicatie kan zijn: een "halt"-instructie dat een interrupt veroorzaakt die het OS waarschuwt dat een proces voltooid is een actie van de gebruiker die aanduid dat het proces voltooid is een fout of error het ouderproces afsluiten Procesmodel met 5 toestanden Opgeschorte processen de processor is sneller dan I/O-activiteiten veel processen kunnen wachten op een I/O-activiteit het hoofdgeheugen uitbreiden om ruimte te bieden aan meer processen wanneer een proces naar de schijf wordt geswapt (verplaatsen van een deel of het geheel van een proces van het hoofdgeheugen naar schijf) wordt de status "opgeschort" 2 nieuwe statussen: geblokkeerd/opgeschort gereed/opgeschort Redenen voor het opschorten van processen Reden Swapping Andere OS reden Verzoek van een interactieve gebruiker timing Verzoek van een ouderproces commentaar Het OS moet voldoende hoofdgeheugen vrijmaken voor het binnenhalen van een proces dat gereed is om te worden uitgevoerd Het OS kan een achtergrond- of hulpproces opschorten of een proces dat ervan wordt verdacht een probleem te veroorzaken Een gebruiker kan de uitvoering van een programma opschorten om fouten te zoeken of om een bron te gebruiken Een proces kan periodiek worden uitgevoerd en kan worden opgeschort terwijl wordt gewacht op de volgende tijdsinterval Een ouderproces kan de uitvoering van een kindproces opschorten om het opgeschorte proces te onderzoeken ofte wijzigen of om de activiteiten van meerdere kindprocessen te coördineren 3.3 Beschrijving van processen processen en bronnen Beheersstructuren in het OS wil het OS processen en bronnen kunnen beheren, dan moet het informatie bezitten over de huidige status van elk proces en elke bron tabellen worden gemaakt met informatie over elke entiteit die het beheert Geheugentabellen gebruikt voor het bijhouden van het hoofdgeheugen en het secundaire geheugen moet de volgende informatie bevatten: o de toewijzing van hoofdgeheugen aan processen o de toewijzing van secundair geheugen aan processen o eventuele beschermingsattributen van segmenten van het hoofdgeheugen of het virtuele geheugen o alle informatie die nodig is voor het beheren van het virtuele geheugen I/O-tabellen gebruikt door het OS voor het beheren van de I/O-apparaten en I/O-kanalen van het OS het OS moet weten: o of het I/O-apparaat beschikbaar of aangewezen is o de status van de I/O-bewerking o de locatie in het hoofdgeheugen wordt gebruikt als bron of bestemming van de I/Ooverdracht Bestandstabellen bevatten informatie over: bestaan van bestanden locatie in het secundaire geheugen huidige status andere attributen soms wordt deze informatie bijgehouden door een bestandsbeheersysteem (file management system) Procestabellen worden gebruikt door het OS voor het beheren van processen ze houden bij: houdige status procesnummer locatie in het geheugen etc... procesbesturingsblok procesbeeld is de collectie van een programma (gegevens, systeemstack en attributen) Procesattributen we kunnen de procesbesturingsblok informatie groeperen in 3 algemene categorieën: procesidentificatie o elk proces heeft een uniek identificatienummer toegewezen o veel andere tabellen die worden beheerd door het OS, kunnen procesindentificatie gebruiken voor kruisverwijzingen naar procestabellen processortoestandsinformatie o bestaat uit de inhoud van processorregisters registers die zichtbaar zijn voor de gebruikers stuur en statusregisters stackwijzers o programmastatuswoord (PSW) bevat statusinformatie bv EFLAGS register op een pentiumprocessor procesbesturingsinformatie o dit is de aanvullende informatie die het besturingssysteem nodig heeft voor het beheren en coördineren van diverse actieve processen Rol van het procesbesturingsblok de belangrijkste gegevensstructuur in het OS definieert de status van het OS het procesbesturingsblok heeft bescherming nodig: o een fout in 1 routine kan procesbesturingsblokken beschadigen, waardoor het systeem de desbetreffende processen niet meer kan beheersen o een aanpassing van het ontwerp van de structuur of semantiek van het procesbesturingsblok kan invloed hebben op meerdere modules in het OS 3.4 Procesbesturing Uitvoeringsmodi de meeste processors ondersteunen ten minste 2 modi voor uitvoering gebruikersmodus: minder geprivilegieerde mode gebruikersprogramma's worden meestal in deze modus uitgevoerd systeemmodus (kernel mode): meer geprivilegieerde mode kernel van het OS Creëren van een proces als het OS besloten heeft om een nieuw proces te creëren dan: wijst het OS een uniek procesidentificatie toe aan het nieuwe proces het OS wijst ruimte toe aan het proces het procesbesturingsblok moet worden geïnitialiseerd de juiste koppelingen moeten worden ingesteld soms moeten andere gegevensstructuren worden gemaakt of uitgebreid Wisselen van processen hierbij spelen verschillende ontwerpskwesties een rol: welke gebeurtenissen veroorzaken een proceswisseling we moeten het verschil herkennen tussen een moduswisseling en een proceswisseling wat moet het OS doen met de diverse gegevensstructuren die het beheert om een proceswisseling te bereiken Wanneer moeten processen gewisseld worden mechanisme oorzaak Interrupt Extern aan de uitvoering van het huidige proces Trap (val) Verbonden aan de uitvoering van de huidige instructie Aanroep supervisor Expliciet verzoek gebruik Reactie op een asynchrone, externe gebeurtenis Afhandelen van een fout of een uitzonderlijke conditie Aanroep van een functie van het OS Wisseling van procestoestand stappen: het opslaan van de context van het proces, inclusief de programmateller en andere registers het bijwerken van het procesbesturingsblok van het afgebroken proces het verplaatsen van het betreffende procesbesturingsblok naar de juiste wachtrij het selecteren van een ander uit te voeren proces het bijwerken van het procesbesturingsblok van dit geselecteerde proces het bijwerken van de gegevensstructuren voor het geheugenbeheer het terugbrengen van de context van dit proces naar de originele context Is het OS een proces? Het OS is een programma dat uitgevoerd wordt door de processor. het OS geeft de besturing vaak uit handen en is voor het terugkrijgen ervan afhankelijk van de processor dit zijn kenmerken van een proces Procesloze kernel het uitvoeren van de kernel van het OS buiten alle processen. het concept van een proces wordt alleen toegepast op gebruikersprogramma's de code van het OS is uitgevoerd als een aparte entiteit die werkt in een geprivilegieerde modus (a) Uitvoering binnen gebruikersprocessen het uitvoeren van vrijwel alle software van het OS in de context van een gebruikersproces (b) Op processen gebaseerd OS het implementeren van het OS als een verzameling systeemprocessen. (c) Veiligheidsproblemen een OS associeert een set privileges met elk proces hoogste level = administrator, supervisor of root (wortel) toegang een sleutel veiligheidsprobleem in het ontwerpen van eender welk OS is om te voorkomen dat iets toegang krijgt tot ongeauthoriseerde privileges op het systeem vooral rootaccess voorkomen Systeemtoegang bedreiging indringers o outsider masquerader o insider misfaesor o outsider or insider clandestine gebruiker malware Tegenmaatregelen: indringer detectie indringer detectie systemen zij meestal ontworpen om een menselijke indringer en malware te ontdekken kan host- of netwerk gebaseerd zijn indringer detectie systemen (IDS) bevatten meestal o sensoren o analysatoren o user interface Tegenmaatregelen: authenticatie 2 stadia: identificatie verificatie 4 factoren: iets dat het individu weet iets dat het individu bezit iets dat het individu is iets dat het individu doet Tegenmaatregelen: Toegangscontrole een policy die de bronnen beheert een veiligheids administrator die een authorizatie database beheerd een controlefunctie die controleert en een rapport bijhoudt van gebruikerstoegang tot systeembronnen Tegenmaatregelen: firewalls traditioneel is een firewall een computer die: interfacet met computers buiten het netwerk heeft speciale veiligheidsvoorzorgsmaatregelen ingebouwd om gevoelige bestanden op computers binnen het netwerk te beschermen 3.5 Procesbeheer in Unix SRV4 systeemprocessen enkel kernel mode gebruikersprocessen: werken in gebruikersmodus voor het uitvoeren van gebruikersprogramma's en hulpprogramma's werken in kernel mode voor het uitvoeren van instructies die tot de kernel behoren Unix procestoestand overgangsdiagram Unix procestoestanden User running Kernel running Ready to run, in memory Asleep in memory Ready to run, swapped Uitvoering in gebruikersmodus Uitvoering in kernelmodus Gereed om te worden uitgevoerd zodra de kernel het proces inroostert Kan niet worden uitgevoerd totdat een gebeurtenis optreedt, het proces bevindt zich in het hoofdgeheugen Het proces is gereed om te worden uitgevoerd, maar de wisselaar moet het proces naar het Sleeping, swapped Preemted Created zombie hoofdgeheugen swappen voordat de kernel het kan inroosteren voor uitvoering Het proces wacht op een gebeurtenis en is naar secundaire opslag geswapt Het proces keert terug van kernel- naar gebruikersmodus, maar de kernel onderbreekt het preemptief en voert een proceswisseling uit om een ander proces in te roosteren Het proces is zojuist gecreëerd en is nog niet gered om te worden uitgevoerd Het proces bestaat niet meer maar laat een record achter voor verwerking door zijn ouderproces Procesbeschrijving een proces in Unix is een tamelijk complexe verzameling gegevensstructuren die het OSvoorziet van alle informatie, nodig voor het beheren en toedelen van processen de elementen worden verdeeld in 3 delen: context op gebruikersniveau registercontext context op systeemniveau Beheer van processen in Unix wordt een proces gecreëerd met de systeemaanroef "fork()" in de kernel. het OS doet daardoor: het wijst een positie (slot) in de procestabel toe aan het nieuwe proces het wijst een unieke procesidentificatiecode toe aan het kindproces het maakt een kopie van het procesbeeld van de ouder, met uitzondering van eventueel gedeeld geheugen het verhoogt de tellers voor alle bestanden die in het bezit zijn van het ouderproces om aan te geven dat een extra proces deze bestanden nu ook in het bezit heeft het plaatst het kindproces in een toestand "Ready to run" het geeft de identificatiecode van het kindproces terug aan het ouderproces en geeft een waarde 0 aan het kindproces Na de creatie is de kernel klaar met deze functies dan kan hij een van de volgende bewerkingen uitvoeren, als onderdeel van het toedelen (dispatching): in het ouderproces blijven de besturing overdragen aan het kindproces de besturing overdragen aan een ander proces Hoofdstuk 12: Bestandsbeheer Overzicht In de meeste toepassingen is het bestand het centrale element. voor een gebruiker is het bestandssysteem een van de belangrijkste onderdelen van het OS. bestanden hebben onder andere de volgende eigenschappen: langdurig bestaand deelbaar tussen processen structuur Bestandsbeheer Bestaat uit systeemhulpprogramma's die worden uitgevoerd als geprivilegieerde toepassingen. Het bestandssysteem is geassocieerd met het secundaire geheugen. de volgende functies zijn beschikbaar: maken wissen openen sluiten lezen schrijven Bestandsstructuur Vier begrippen: veld o basiselement van gegevens o bevat 1 waarde o onderscheidt zijn door een lengte en een gegevenstype record o verzameling van gerelateerde velden o worden behandeld als een eenheid bestand o verzameling vergelijkbare records o behandeld als een enkele entiteit o hebben unieke bestandsnamen o toegangscontrole en restricties worden doorgaans toegepast op bestandsniveau database o verzameling van gerelateerde gegevens o er bestaan relaties tussen gegevenselementen o database bestaat uit 1 of meerdere bestanden Bestandsbeheersystemen verzorgt diensten voor gebruikers en toepassingen bij het gebruiken van bestanden de manier waarop een gebruiker of toepassing toegang heeft tot bestanden. De programmeur moet geen bestandsbeheersysteem programmeren. bestandsbeheersysteem moet voldoen aan de volgende doelstellingen: voorzien in de behoeften en vereisten voor het gegevensbeheer van de gebruiker zoveel mogelijk garanderen dat de gegevens in 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 voor een interactief systeem voor algemene doeleinden is het volgende een 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 to 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 Architectuur van bestandssystemen Apparaatstuurprogramma's communiceren op het laagste niveau communiceert rechtstreeks met randapparaten of hun controllers of kanalen verantwoordelijk voor het starten van I/O-bewerkingen op een apparaat verwerken van de voltooiing van een I/O-opdracht Basisbestandssysteem Fysieke I/O genoemd basisinterface met de omgeving buiten het computersysteem behandelt de gegevensblokken die worden uitgewisseld met schijf- of tapeapparaten verzorgt de plaatsing van blokken verzorgt het bufferen van die blokken in het hoofdgeheugen De supervisor voor basis-I/O verantwoordelijk voor het starten en beëindigen van alle bestand-I/O besturingsstructuren worden bijgehouden voor: o apparaat-I/O o scheduling o bestandsstatus selecteert het apparaat waarop bestands-I/O wordt uitgevoerd Logische I/O verschaft gebruikers en toepassingen toegang tot records vormt algemene voorziening voor record-I/O houd basisgegevens over bestanden bij Toegangsmethode dichtste bij de gebruiker vormt een standaardinterface tussen toepassing en de bestandsysteem en apparaten die gegevens bevatten er kunnen verschillende toegangsmethoden worden gebruikt voor verschillende bestandsstructuren Functies van bestandsbeheer 12.2 bestandsorganisatie en -toegang Bestandsorganisatie gebruikt voor de logische structuur van de records wordt bepaald door de manier waarop bestanden worden benaderd criteria voor bestandsorganisatie: korte toegangstijd gemak van bijwerken efficiënt gebruik van opslagruimte onderhoudsgemak betrouwbaarheid de relatieve prioriteit van deze criteria is afhankelijk van de toepassingen die het bestand gebruiken Het stapelbestand gegevens worden verzameld in de volgorde waarin ze binnenkomen geen structuur de functie van de stapel is de gegevensmassa te vergaren en op te slaan records kunnen verschillende velden hebben recordtoegang vindt plaats door volledig zoeken Het sequentieel bestand vaste indeling voor records records hebben dezelfde lengte alle velden zijn hetzelfde veldnamen en lengtes zijn attributen van het bestand sleutelveld o unieke identificatie van het record o records worden opgeslagen in sleutelvolgorde Het index-sequentieel bestand behoudt het hoofdkenmerk van het sequentiële bestand records zijn ingedeeld in volgorde op basis van het sleutelveld 2 kenmerken toegevoegd: o een index naar het bestand voor het ondersteunen van willekeurige toegang o een overloopbestand (overflow file) Het geïndexeerd bestand gebruikt meerdere indexen voor verschillende sleutelvelden o een volledige index bevat 1 ingang voor elk record in het hoofdbestand o een gedeeltelijke index bevat ingangen voor records waarin het gewenste veld voorkomt wordt een nieuw record toegevoegd aan het hoofdbestand dan moeten alle indexbestanden worden aangepast Het directe of hashed bestand heeft directe toegang tot elk blok met een bekend adres een sleutelveld is vereist voor elk record 12.3 Bestandsdirectory's Inhoud bevat informatie over bestanden: o attributen o locatie o eigendom de directory zelf is een bestand dat door allerlei bestandsbeheerroutines kan worden benaderd voert een vertaalslag uit tussen bestandsnamen en de bestanden zelf Informatie-elementen van een bestandsdirectory bestandsnaam o naam zoals gekozen door de maker o moet uniek zijn binnen een specifiek directory bestandstype bestandsorganisatie o voor systemen die verschillende bestandsorganisaties ondersteunen volume o geeft het apparaat aan waarop het bestand is opgeslagen beginadres gebruikte grootte o huidige bestanddsgrootte in bytes, woorden of blokken toegewezen grootte o maximale grootte van het bestand eigenaar o eigenaar kan toegang toestaan of weigeren aan andere gebruikers en hun privileges veranderen toegangsinformatie o kan de naam en het wachtwoord van iedere geautoriseerde gebruiker bevatten toelaatbare acties o controleert het lezen, schrijven, uitvoeren en verzenden via een netwerk datum gecreëerd identiteit van de maker datum laatste keestoegang identiteit van laatste lezer datum laatste wijziging identiteit voor laatste wijziging datum laatste reservekopie huidig gebruik Structuur de manier waarop de informatie wordt opgeslagen verschilt sterk van systeem tot systeem. de eenvoudigste structuur voor een directory is die van een lijst van ingangen, met 1 ingang voor elk bestand: een sequentieel bestand waarbij de naam van het bestand de sleutel is zorgt niet voor hulp in het organiseren van bestanden verplicht de gebruiker om niet dezelfde naam te gebruiken voor 2 verschillende bestanden bewerkingen die op een directory worden uitgevoerd zoeken bestand creëren bestand verwijderen directory weergeven directory bijwerken Schema met 2 niveaus 1 directory voor iedere gebruiker en 1 hoofddirectory (master directory) o de hoofddirectory bevat 1 ingang voor elke gebruiker o bevat adres- en toegangscontrole-informatie elke gebruikersdirectory is een eenvoudige lijst met bestanden van die gebruiker o verzorgt geen structuur voor verzamelingen van bestanden Hiërarchische of een boomstructuur directory 1 hoofddirectory met daarin enkele gebruikersdirectory's elke gebruikersdirectory kan op zijn beurt subdirectory's en bestanden bevatten Naamgeving gebruikers moeten met een symbolische naam naar een bestand kunnen verwijzen o elk bestand in het systeem moet een unieke naam hebben het gebruik van een boomstructuur verkleint de moeilijkheid van het toewijzen van unieke namen Werkdirectory de volledige padnaam spellen bij elke verwijzing naar een bestand is lastig doorgaans is aan een interactieve gebruiker of een proces een huidige directory verbonden o vervolgens wordt relatief ten opzichte van de werkdirectory verwezen naar bestanden 12.4 Gemeenschappelijk gebruik van bestanden In een systeem met meerdere gebruikers vereist bijna altijd dat ebstanden gedeeld kunnen worden door een aantal gebruikers twee kwesties: toegangsrechten en het beheer van de gelijktijdige toegang. Toegangsrechten geen de gebruiker weet wellicht niet dat het bestand bestaat kennis de gebruiker kan vaststellen dat het bestand bestaat en wie zijn eigenaar is uitvoeren de gebruiker kan een programma laden en uitvoeren met 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 Gebruikerscategorieën eigenaar specifieke gebruikers gebruikersgroepen alle Gelijktijdige toegang de gebruiker kan het volledige bestand vergrendelen wanneer dat wordt bijgewerkt de gebruiker kan afzonderlijke records vergrendelen tijdens het bijwerken problemen met wederzijdse uitsluiting en deadlocks moeten opgelost worden 12.5 Blokvorming van records records zijn de logische eenheid bij toegang tot een bestand, terwijl blokken de eenheid zijn van I/O met secundaire opslag 3 methoden zijn bekend voor blokvorming: blokvorming met vaste lengte o gebruik van records met vaste lengte en er wordt een geheel aantal records opgeslagen in een blok o er kan ongebruikte ruimte zijn aan het einde van elk blok interne fragmentatie gekoppelde blokvorming met variabele lengte o gebruik van records met variabele lengte en deze worden samengepakt in blokken o sommige records kunnen daarbij 2 blokken omspannen vervolg wordt aangeduid door een verwijzing naar het volgende blok niet-gekoppelde blokvorming met variabele lengte o gebruik van records met variabele lengte o 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 12.6 Beheer van secundaire opslag het OS is verantwoordelijk voor het toewijzen van blokken aan bestanden 2 aandachtspunten: de ruimte moet op secundaire opslag worden toegewezen aan bestanden het is noodzakelijk bij te houden welke ruimte beschikbar is voor toewijzing Bestandstoewijzing verschillende kwesties: als een nieuw bestand wordt gecreëerd, wordt de maximumruimte die vereist is voor het bestand dan in 1 keer toegewezen? ruimte wordt toegewezen aan een bestand als 1 of meer aaneengesloten eenheden (porties) welke soort gegevensstructuur of -tabel wordt gebruikt voor het bijhouden van de porties die aan een bestand zijn toegewezen? Toewijzing vooraf of dynamisch? vereist dat de maximale grootte van een bestand wordt gedeclareerd bij het verzoek om creatie van het bestand het is moeilijk de mogelijke maximale grootte van het bestand betrouwbaar te schatten programmeurs hebben de neiging de bestandsgrootte te overschatten om te voorkomen dat ze ruimte tekortkomen Portiegrootte 2 uitersten: portie wordt toegewezen die groot genoeg is voor het hele bestand ruimte toegewezen op de schijf met 1 blok tegelijk Bij het kiezen van de portiegrootte moet een balans worden gevonden tussen de efficiëntie, gezien vanuit 1 bestand en de algehele systeemefficiëntie Methoden van bestandstoewijzing 3 methoden: aaneengesloten toewijzing (contiguous allocation) o aaneengesloten verzameling blokken worden toegewezen aan een bestand op het moment van creatie o de tabel voor bestandstoewijzing hoeft slechts 1 ingang voor elk bestand te bevatten die het beginblok en de lengte van het bestand aangeeft o externe fragmentatie slechts 1 blok tegelijk nodig kettingtoewijzing o lokaliteit op basis van een individueel blok o elke blok heeft een pointer die verwijst naar de volgende blok in de ketting o 1 ingang in de bestandstoewijzingstabel startblok en lengte van bestand o geen externe framentatie o beste voor sequentiële bestanden indextoewijzing o de bestandstoewijzingtabel bevat een afzonderlijke index van 1 niveau voor elk bestand o de index heeft 1 ingang voor elke portie die aan het bestand is toegewezen o de bestandstoewijzingtabel bevat bestandsindex voor een bestand dat bijgehouden word in een apart blok o de toewijzing kan gebeuren op basis van: blokken met vaste grootte blokken met variabele grootte o toewijzing in blokken voorkomt externe fragmentatie o toewijzing in porties met variabele grootte verbetert de lokaliteit o in beide gevallen kunnen bestanden zo nu en dan samengevoegd worden Beheer van vrije ruimte net zoals de ruimte die aan bestanden is toegewezen moet worden beheerd, moet ook de vrije ruimte beheerd worden voor het uitvoeren van bestandstoewijzing is het noodzakelijk dat bekend is welke blokken op schijf beschikbaar zijn we hebben daarom naast een tabel voor bestandstoewijzing een tabel voor schijftoewijzing nodig Bittabel De methode met een bittabel maakt gebruik van een vector die 1 bit bevat voor elke blok op schijf. elke ingang met 0 komt overeen met een vrij blok en elke 1 komt overeen met een blok dat in gebruik is. voordelen: werkt goed met bestandstoewijzingsmethoden bittabel is zo klein als het maar kan Vrije porties in een ketting de vrije porties kunnen aaneengeketend zijn door in elke vrije portie een wijzer en een lengtewaarde te gebruiken. de methode heeft een verwaarloosbare ruimteoverhead. de methode is geschikt voor alle vormen van bestandstoewijzing. leidt tot fragmentatie indextabel de indexmethode behandelt vrije ruimte als een bestand en gebruikt een indextabel zoals is beschreven bij bestandstoewijzing. vanwege de efficiëntie moet de index zijn gebaseerd op porties met variabele grootte en niet op blokken de tabel bevat dus 1 ingang voor elke vrije portie op de schijf. Deze aanpak zorgt voor een efficiënte ondersteuning bij alle vormen voor bestandstoewijzing Lijst met vrije blokken ieder blok krijgt een opeenvolgend nummer toegewezen de lijst met nummers van alle vrije blokken wordt bijgehouden in een gereserveerd gedeelte van de schijf Volumes een verzameling van adresseerbare sectoren in het secundaire geheugen dat een OS of toepassing kan gebruiken voor dataopslag. De sectoren in een volume moeten niet opeenvolgend zijn op een fysiek opslagtoestel. een volume kan het resultaat zijn van assembleren en samenvoegen van kleinere volumes Toegangsbeheer bij het succesvol aanmelden op het systeem is de gebruiker geïdentificeerd het OS kan dan regels opleggen toegang geven tot bestanden en toepassingen het OS moet een set regels afdwingen een van deze set regels is een toegangsmatrix Toegangsbeheerlijsten een matrix kan ontbonden worden in kolommen dit geeft een toegangsbeheerlijst (ACL) voor elk bestand Vermogenlijsten een matrix ontbonden in rijen geeft vermogenlijsten specificeert geautoriseerde objecten en verrichtingen voor een gebruiker 12.7 Bestandsbeheer in Unix 6 verschillende types bestanden: ordinary directory special named pipes links symbolic links Inodes informatieknooppunt besturingsstructuur die de sleutelinformatie bevat die het OS nodig heeft voor een bepaald bestand er kunnen verschillende bestandsnamen worden verbonden met 1 inode maar een inactieve inode is met precies 1 bestand verbonden en elk bestand wordt bestuurd door precies 1 inode. Bestandstoewijzing bestandstoewijzing uitgevoerd op basis van blokken de toewijzing is dynamisch blokken mogen niet aangrenzend zijn de indexmethode wordt gebruikt voor het beheer van elk bestand een deel van de index is opgeslagen in de inode voor het bestand de inode heeft meerdere directe verwijzingen en 3 indirecte verwijzingen (pointers) Directory's directory's zijn bestanden die bevatten: een lijst van bestandsnamen pointers naar inodes Unix bestandstoegangbeheer De bestanden zijn geassocieerd met toestemmingen voor: gebruikersID groepID alle anderen 12.8 Virtueel bestandssysteem in Linux 1 uniform bestandssysteeminterface gebruikt voor de gebruikersprocessen stelt de algemene werking en het algemeen gedrag van elk denkbaar bestandssysteem voor te stellen het gaat ervan ui dat bestanden objecten zijn in het massageheugen van een computer die elementaire eigenschappen met elkaar gemeen hebben, ongeacht het uiteindelijke bestandssysteem of de onderliggende processorsoftware hoofdonderdelen van een virtueel bestandssysteem strategie (VFS) een gebruikersproces roept een bestandssysteemfunctie aan het behulp van het VFS: het VFS converteert deze aanroep naar een interne bestandssysteemaanroep deze wordt doorgegeven aan een verwijzingsfunctie voor een specifiek bestandssysteem De rol van VFS binnen de kernel de 4 primaire objecten in VFS zijn: superblokobject representeert een specifiek gemount bestandssysteem inode-object representeert een specifiek bestand dentry-object representeert een specifiek element in een directory bestandsobject representeert een geopend bestand dat is gekoppeld aan een proces 12.9 Het bestandssysteem van Windows hoofdonderdelen van NTFS (New Technology File System): recupereerbaarheid beveiliging grote schijven en grote bestanden meervoudige gegevensstromen journaling algemene indexeringsvoorziening Volume- en bestandsstructuur in NTFS sector o de kleinste fysieke opslageenheid op de schijf o bijna altijd 512 bytes cluster o een of meer aangesloten sectoren volume o logische partitie op schijf Volume-indeling van NTFS elk element op een volume is een bestand en elk bestand bestaat uit een verzameling attributen, zelfs de gegevensinhoud van een bestand bestaat uit een verzameling attributen.