Inleiding: – omdat schijfruimte beperkt is, moeten we de ruimte van verwijderde bestanden hergebruiken voor nieuwe bestanden. Om de vrije schijfruimte bij te houden, houdt het systeem een lijst met vrije ruimte bij. De lijst met vrije ruimte registreert alle vrije schijfblokken die niet aan een bestand of map zijn toegewezen. Deze lijst met vrije ruimte kan als volgt worden geïmplementeerd:
a) Bit vector – Lijst met vrije ruimte wordt geïmplementeerd als een bit map of een bit vector. Elk blok wordt vertegenwoordigd door een bit. Als het blok vrij is, is bit 1, als het blok is toegewezen, is bit 0.
het belangrijkste voordeel van deze aanpak is de relatieve eenvoud en de efficiëntie bij het vinden van het eerste vrije blok of n opeenvolgende vrije blokken op de schijf. De berekening van het bloknummer is (aantal bits per woord) * (aantal woorden van 0-waarde) offset van eerste 1 bit
b) Linked list – Een andere benadering van het beheer van vrije ruimte is om alle vrije schijfblokken samen te koppelen en een pointer naar het eerste vrije blok op een speciale locatie op de schijf te houden en het in het geheugen te cachen. Het eerste blok bevat een verwijzing naar het volgende vrije schijfblok.
C) groeperen – een wijziging van de benadering van de vrije lijst is het opslaan van de adressen van n vrije blokken in het eerste vrije blok.
d) tellen – een andere benadering is om te profiteren van het feit dat meerdere aaneengesloten blokken gelijktijdig kunnen worden toegewezen of vrijgemaakt wanneer ruimte wordt toegewezen met het aan elkaar grenzende allocatiealgoritme of clustering.
efficiëntie en prestaties
schijven vormen doorgaans een belangrijk knelpunt in de systeemprestaties omdat zij het traagste hoofdcomponent van de computer zijn. Efficiëntie:- Het efficiënte gebruik van schijfruimte hangt sterk van de schijftoewijzing en folderalgoritmen in gebruik af.
prestaties: – de meeste schijfcontrollers bevatten lokaal geheugen om een ingebouwde cache te vormen die groot genoeg is om hele tracks tegelijk op te slaan. Zodra een seek wordt uitgevoerd, wordt het spoor gelezen in het schijfcache beginnend bij de sector onder het schijfhoofd. De schijfcontroller stuurt vervolgens alle sectorverzoeken naar OS. Sommige systemen onderhouden een aparte sectie van het hoofdgeheugen voor een buffer cache waar blokken worden bewaard in de veronderstelling dat ze opnieuw zullen worden gebruikt. Andere systemen cache bestand gegevens met behulp van een pagina cache. De pagina cache maakt gebruik van virtueel geheugen technieken om de cache bestand gegevens als pagina ‘ s in plaats van als een bestandssysteem georiënteerde blokken. Het cachen van bestandsgegevens met behulp van virtuele adressen is efficiënter dan het cachen via fysieke schijfblokken als toegangsinterface met virtueel geheugen in plaats van het bestandssysteem. Verschillende systemen gebruiken paginacaching om zowel procespagina ‘ s als bestandsgegevens in de cache te plaatsen. Dit staat bekend als unified buffer cache.
er zijn andere problemen die de prestaties van I/O kunnen beïnvloeden, zoals of schrijft naar het bestandssysteem synchroon of asynchroon plaatsvinden. Synchrone schrijven vindt plaats in de volgorde waarin het schijfsubsysteem ze ontvangt en de schrijven niet worden gebufferd. Asynchroon schrijven gebeurt het grootste deel van de tijd. Sommige systemen optimaliseren hun paginacache door verschillende vervangende algoritmen te gebruiken, afhankelijk van het toegangstype van het bestand. Sequentiële toegang kan worden geoptimaliseerd door technieken die bekend staan als free behind en read ahead. Free behind verwijdert een pagina uit de buffer zodra de volgende pagina wordt opgevraagd. Met read ahead worden een gevraagde pagina en een aantal volgende pagina ‘ s gelezen en gecached.