Bestandsbeheer

Start Omhoog Computersystemen Besturingssystemen Processen Threads Gelijktijdigheid: Wederzijdse uitsluiting Gelijktijdigheid: deadlock en utisterving Geheugenbeheer Virtueel geheugen Uniprocessor planning Multiprocessor en real-time planning Bestandsbeheer I/O beheer en schijfplanning Bash Powershell Begrippen

12.1. Overzicht

12.1.1. Bestanden en bestandssysteem

Vanuit het oogpunt van de gebruiker, zijn een van de belangrijkste onderdelen van een besturingssysteem het is bestandssysteem. Het bestandssysteem biedt de bron abstracties typisch met secundaire opslag geassocieerd. Het bestandssysteem gebruikers laat gebruikers toe om datacollecties te creŽren, bestanden genaamd, met bepaalde kenmerken, zoals:

  • Lange termijn bestaan: De bestanden worden opgeslagen op de harde schijf of andere secundaire opslag en verdwijnen niet wanneer een gebruiker zich afmeldt.
  • Deelbaar tussen processen: bestanden hebben namen en kan toegang hebben geassocieerd machtigingen die toestaan ​​gecontroleerde delen.
  • Structuur: Afhankelijk van het file-systeem, een bestand kan een interne structuur hebben dat is gunstig voor bepaalde toepassingen. Daarnaast kunnen bestanden georganiseerd worden in hiŽrarchische of complexere structuren om de relatie tussen bestanden weer te geven.
  • Elk bestandssysteem voorziet niet enkel van een middel om data georganiseerd als bestanden op te slaan, maar als een verzameling van functies die op bestanden uitgevoerd kunnen worden. Typische activiteiten omvatten het volgende:

  • CreŽer: Een nieuw bestand wordt gedefinieerd en gepositioneerd binnen de bestandsstructuur.
  • Wissen: Een bestand wordt verwijderd uit de bestandsstructuur en vernietigd.
  • Open: Een bestaand bestand wordt gedeclareerd als zijnde "geopend" door een proces, waardoor het proces functies op het bestand kan uitvoeren.
  • Close: Het bestand wordt afgesloten met inachtneming van een proces, zodat het proces niet langer functies kan uitvoeren op het bestand, totdat het proces het bestand opnieuw opent.
  • Lees: Een proces leest alles, of een deel van de gegevens in een bestand.
  • Schrijven: Een proces werkt een bestand bij, hetzij door het toevoegen van nieuwe gegevens dat grootte van een bestand uitbreidt of door de waarden van bestaande gegevensitems in het bestand te veranderen.
  • Typisch, onderhoudt een bestandssysteem een set van attributen geassocieerd met het bestand. Deze omvatten eigenaar, tijd van aanmaak bestand, tijd laatste wijziging, toegangsrechten, en ga zo maar door.

    12.1.2. Bestandsstructuur

    Vier termen worden algemeen gebruikt als we het over bestanden hebben:

  • Veld
    Meest basis element van data
    Individueel veld bevat 1 waarde
    Kenmerken
    Lengte (Vast of dynamisch)
    Datatype (b.v.: ASCII string, Ö)
  • Record
    Verzameling van velden
    Toepassing beschouwd die verzameling als ťťn eenheid
    Vaste of dynamische lengte
  • Bestand
    Verzameling van gelijkaardige records
    Kan ook bestaan uit verzameling van velden
    Enkelvoudige entiteit voor gebruiker/toepassing
    Refereren naar bestand aan de hand van zijn naam
  • Databank
    Verzameling van gerelateerde data
    Expliciete relaties tussen de verschillende data
    Ontworpen voor gebruik van meerdere toepassingen
  • Gebruikers en applicaties wensen gebruik te maken van bestanden. Typische bewerkingen die ondersteund moeten worden bevatten het volgende:

  • Retrieve_All
  • Retrieve_One
  • Retrieve_Next
  • Retrieve_Previous
  • Retrieve_Few
  • Insert_One
  • Delete_One
  • Update_One
  • 12.1.3. Bestandsbeheersystemen

    Een bestandbeheersysteem is dat de set van systeemsoftware dat diensten aan gebruikers en toepassingen verleent voor het gebruik van bestanden. De enige manier waarop een gebruiker of applicatie toegang kan tot bestanden kan krijgen is via het bestandbeheersysteem. Dit ontlast de gebruiker of programmeur van de noodzaak van de ontwikkeling van software voor elke toepassing voor speciale doeleinden en biedt het systeem met een consistente, goed gedefinieerde middel voor beheersing van zijn belangrijkste middel. [GROS86] stelt de volgende doelstellingen op voor een bestandbeheersysteem:

  • Om aan de databeheerbehoeften en eisen van de gebruiker te voldoen, die de opslag van gegevens en de mogelijkheid om de bovengenoemde bewerkingen uit te voeren
  • Om voor zover als mogelijk te garanderen dat de gegevens in het dossier geldig zijn
  • Om de prestaties te optimaliseren, van zowel uit het systeem oogpunt in termen van algehele doorvoer en vanuit het oogpunt van de gebruiker in termen van responstijd
  • Om de I/O te ondersteunen voor een verscheidenheid van opslagapparaten
  • Om de kans op verlies of beschadiging van gegevens te minimaliseren of te elimineren
  • Om een gestandaardiseerde set van I/O-interface routines aan de gebruikersprocessen te voorzien
  • Om I/O voor meerdere gebruikers te ondersteunen in het geval van meerdere gebruikers systemen
  • Met betrekking tot ons eerste punt, om toe te komen aan de gebruikersvereisten, hangt de omvang van deze eisen af van de variŽteit van toepassingen en de omgeving waarin het computersysteem wordt gebruikt. Voor een interactieve, general-purpose-systeem, vormt het volgende vormen een minimale set van eisen:

    1. Elke gebruiker moet in staat zijn om bestanden te maken, te verwijderen, te lezen, te schrijven en te wijzigen.
    2. Elke gebruiker kan gecontroleerde toegang hebben tot bestanden van andere gebruikers.
    3. Elke gebruiker kan bepalen welke soorten toegang zijn toegestaan tot de bestanden van de gebruiker.
    4. Elke gebruiker moet in staat zijn om bestanden van de gebruiker te herstructureren in een vorm die past bij het probleem.
    5. Elke gebruiker moet in staat om gegevens tussen bestanden te verplaatsen.
    6. Elke gebruiker moet in staat zijn om een back-up gebruikersbestanden te maken en deze te herstellen van in geval van schade.
    7. Elke gebruiker moet in staat zijn om zijn of haar bestanden op naam te benaderen in plaats van een numerieke identificatie.

    Deze doelstellingen en vereisten moeten in het achterhoofd gehouden worden tijdens onze discussie van bestandbeheersystemen.

    12.1.3.1. Bestandssysteemarchitectuur

  • Stuurprogramma (driver)
    Communiceert rechtstreeks tussen OS en randapparatuur
  • Basisbestandssysteem (fysiek I/O)
    Zorgt voor de plaatsing van de blokken op het secundaire opslagapparaat en het bufferen van de blokken in het geheugen
  • Basis I/O (supervisor)
    Toekennen van I/O buffers
    Planning van de I/O
  • Logische I/O
    Verschaft gebruikers/toepassingen toegang tot records
    Werkt met bestandsrecords
  • 1.1.3.2. Bestandsbeheerfuncties

    Een andere wijze van het bekijken van de functies van een bestand wordt getoond in figuur 12.2. Laten we dit diagram van links naar rechts volgen. Gebruikers en toepassingsprogrammaís interageren met het bestandssysteem door middel van opdrachten voor het maken en verwijderen van bestanden en voor het uitvoeren van bewerkingen op bestanden. Voor het uitvoeren van elke handeling, moet het bestandsysteem het geselecteerde bestand identificeren en lokaliseren. Dit vereist het gebruik van een soort van directory dat dient om de locatie en attributen van alle bestanden te beschrijven. Daarnaast dwingen de meeste gedeelde systemen gebruikerstoegang af: alleen geautoriseerde gebruikers hebben op een bepaalde manier toegang tot bepaalde bestanden. De basisfuncties die een gebruiker of toepassing op een bestand kan uitvoeren worden uitgevoerd op het recordniveau. De gebruiker of de toepassing ziet het bestand als het hebben van enige structuur dat de gegevens organiseert, zoals een sequentiŽle structuur (bijvoorbeeld, alfabetisch opgeslagen personeel records door achternaam). Dus om specifieke commando file manipulatie commandoís van de gebruiker te vertalen, moeten bijbehorend toegangsmethoden tot deze bestandsstructuur worden toegepast.

    Waar dat gebruikers en applicaties bezig zijn met records of velden, wordt I/O gedaan op blok basis. De records of velden van een bestand moeten georganiseerd worden als een reeks van blokken voor de uitvoer en gedeblokkeerd na invoer. Om blok I/O van bestanden te ondersteunen, zijn verschillende functies nodig. De secundaire opslag moet worden beheerd. Dit gaat gepaard met het toewijzen van vrije blokken op de secundaire opslag en het beheer van vrije opslagruimte om zo te weten welke blokken beschikbaar zijn voor nieuwe bestanden en de groei van bestaande bestanden. Bovendien moeten individuele blok I/O-aanvragen gepland worden; Deze kwestie werd behandeld in hoofdstuk 11. Zowel schijfplanning als bestandstoewijzing houden zich bezig met het optimaliseren van de prestaties. Zoals verwacht kan worden, moet er overwogen worden deze functies samen te nemen. De optimalisatie zal afhangen van de structuur van de bestanden en toegangspatronen. Het ontwikkelen van een optimaal bestandsbeheersysteem vanuit het standpunt van prestaties is een uiterst gecompliceerde taak.

    Figuur 12.2 suggereert een scheiding tussen wat kan worden beschouwd als de zorgen van het bestandsbeheersysteem als een apart gebruikerssysteem en zijn de zorgen van het besturingssysteem. Deze scheiding is arbitrair; verschillende benaderingen worden toegepast in de verschillende systemen.

    In de rest van dit hoofdstuk kijken we naar een enkele ontwerpproblemen zoals gesuggereerd in figuur 12.2. We beginnen met een bespreking van het bestandsorganisaties en toegangsmethoden. Hoewel dit onderwerp buiten het bereik valt van wat algemeen beschouwd wordt als zorgen van het besturingssysteem, is het onmogelijk om de andere bestandsgerelateerde te beoordelen zonder een beoordeling van bestandsorganisatie en de toegang. Vervolgens kijken we naar het concept van bestand directories. Deze worden vaak beheerd door het besturingssysteem namens de bestandsbeheersysteem. De overige onderwerpen behandelen fysieke I/O-aspecten van het bestandsbeheer en worden eigenlijk behandeld als aspecten besturingssysteemontwerp. Een dergelijk probleem is de wijze waarop logische records worden georganiseerd in fysieke blokken. Ten slotte zijn er de kwesties met betrekking tot toewijzing van het bestand op de secundaire opslag en het beheer van de vrije secundaire opslag.

     

    12.2. Bestandsorganisatie en toegang

    In dit gedeelte, gebruiken we de term bestandorganisatie om te verwijzen naar de logische structurering van de records zoals bepaald door de wijze waarop zij worden benaderd. De fysieke organisatie van het bestand op secundaire opslag is afhankelijk van de blokkeringsstrategie en het bestandstoewijzingsstrategie en kwesties die later in dit hoofdstuk behandeld zullen worden.

    Bij het kiezen van een bestandorganisatie zijn er een aantal criteria van belang:

  • Korte toegangstijd
  • Eenvoudige update
  • Economie van de opslag
  • Eenvoudig onderhoud
  • Betrouwbaarheid
  • De relatieve prioriteit van deze criteria zal afhangen van de toepassingen die het bestand gebruiken. Bijvoorbeeld, als een bestand alleen verwerkt wordt in batch mode, waar alle records elke keer worden benaderd, dan is een snelle toegang voor het ophalen van een enkele record minimale zorg. Een bestand dat is opgeslagen op CD-ROM zal nooit bijgewerkt kunnen worden, en zo zal het bijwerken geen probleem zijn.

    Deze criteria kunnen conflicteren. Bijvoorbeeld, voor het economisch aspect van de opslag moet er een minimale redundantie in de gegevens zijn. Anderzijds, is redundantie een primaire reden om de toegangssnelheid van gegevens te verhogen. Een voorbeeld hiervan is het gebruik van indexen.

    Het aantal alternatieve bestand organisaties die geÔmplementeerd zijn of net zijn voorgesteld zijn onhanteerbaar groot, zelfs voor een boek gewijd aan de bestandssystemen. In dit beknopt overzicht, zullen we een overzicht van de vijf fundamentele organisatiestructuren geven. De meeste constructies maken gebruik van hedendaagse systemen ofwel vallen ze in een van deze categorieŽn of kunnen ze geÔmplementeerd worden met een combinatie van deze structuren. De vijf structuren, de eerste vier welke zijn afgebeeld in figuur 12.3, zijn:

  • De stapel
  • Het sequentieel bestand
  • Het sequentieel geÔndexeerd bestand
  • Het geÔndexeerd bestand
  • Het direct of gehashed bestand
  • Tabel 12.1 geeft een overzicht van de relatieve prestaties aspecten van deze vijf organisaties.

    12.2.1. De stapel

  • Records met variabele lengte
  • Variabel aantal velden
  • Chronologische volgorde
  • ≈ stack
  • 12.2.2. Het sequentiŽle bestand

  • Records met vaste of variabele lengte
  • Vast aantal velden in vaste volgorde
  • SequentiŽle volgorde
  • B.v.: CSV-bestand
  • 12.2.3. Het sequentieel geÔndexeerd bestand

  • Records met vaste of variabele lengte
  • Vast aantal velden in vaste volgorde
  • 1 uniek sleutelveld = index
  • Overflow zone voor nieuwe gecreŽerde records
  • 12.2.4. Het geÔndexeerd bestand

  • Records met vaste of variabele lengte
  • Vast aantal velden in vaste volgorde
  • # indexen mogelijk
  • Overflow zone voor nieuwe gecreŽerde records
  • 12.2.5. Het direct of gehashed bestand

  • Direct toegankelijk
  • Rechtstreekse relatie tussen
    Sleutelveld
    Plaats van de record in het bestand
  •  ≈ offset in het geheugen
  • Herhalingsvragen

    1. Wat is het verschil tussen een veld en een record?

      Een veld is het basiselement van data die een enkele waarde bevat.
      Een record is een verzameling van verwante velden die door een toepassingsprogramma als een eenheid  kan worden behandeld.

       
    2. Wat is het verschil tussen een bestand en een database?

      Een bestand is een verzameling van vergelijkbare gegevens, en wordt behandeld als een enkele entiteit door de gebruikers en applicaties en kan worden verwezen door de naam.
      Een database is een verzameling van gerelateerde gegevens. De essentiŽle aspecten van een database zijn de expliciete relaties die bestaan tussen elementen van gegevens en dat de database is ontworpen voor gebruik door een aantal verschillende toepassingen.

       
    3. Wat is een systeem voor bestandsbeheer?

      Een bestandsbeheersysteem is die verzameling van systeemsoftware die aan gebruikers en applicaties diensten voorziet in het gebruik van bestanden.
       
    4. Welke criteria zijn van belang bij het kiezen van een bestandsorganisatie?

      Snelle toegang, gemak van updaten, het economische aspect van de opslag, eenvoudig onderhoud, de betrouwbaarheid.
       
    5. Noem en beschrijf in het kort vijf vormen van bestandsorganisatie.

      Stapel: De gegevens zijn verzameld in de volgorde waarin ze aankomen. Ieder record bestaat uit een salvo van data.
      SequentiŽle file: een vast formaat wordt gebruikt voor records. Alle records van dezelfde lengte, bestaande uit hetzelfde aantal vaste lengte velden in een bepaalde volgorde. Omdat de lengte en de positie van elk veld bekend is, moeten alleen de waarden van de velden worden opgeslagen; de veldnaam en lengte voor elk veld zijn kenmerken van de bestandsstructuur.
      GeÔndexeerd sequentiŽle file: Het geÔndexeerde sequentiŽle bestand houdt de belangrijkste kenmerk van het sequentiŽle bestand bij: records worden georganiseerd in de juiste volgorde op basis van een sleutel veld. Twee functies zijn toegevoegd; een index aan het bestand om willekeurige toegang te ondersteunen en een overloopbestand. De index geeft een voorwaartse zoekmogelijkheid om snel de nabijheid van een gewenste record te bereiken. Het overloopbestand is vergelijkbaar met het logbestand dat gebruikt wordt met een sequentieel bestand, maar is geÔntegreerd zodat records in het overloopbestand liggen mbv een pointer uit hun voorgaande record.
      GeÔndexeerde bestand: Records worden benaderd alleen via hun indexen. Het resultaat is dat er nu geen beperking op de plaatsing records zolang een pointer in ten minste een index verwijst naar dat record. Verder kunnen variabele lengte records toegepast.
      Directe of hashed bestand: Het direct bestand maakt gebruik van hashing op de sleutelwaarde.

       
    6. Waarom is de gemiddelde zoektijd voor het vinden van een record bij een indexsequentieel bestand minder dan bij een sequentieel bestand?

      In
      een sequentiŽl bestand kan een zoekopdracht gepaard gaan met het  sequentieel testen van elk record totdat de bijpassende sleutel wordt gevonden. Het geÔndexeerde sequentiŽle bestand bevat een structuur die het mogelijk maakt een minder uitputtende zoektocht uit te voeren.

       
    7. Wat zijn gebruikelijke bewerkingen die men kan uitvoeren bij een directory?

      Zoek, bestand aanmaken, bestand verwijderen, directory opsommen, directory bijwerken.
       
    8. Wat is het verband tussen een padnaam en een werkdirectory?

      De padnaam is een expliciete opsomming van het  pad door de boomstructuur van de directory naar een bepaald punt in de directory. De werkdirectory is een map binnen die boomstructuur, dat de huidige directory is waarin de huidige gebruiker.
       
    9. Wat zijn gangbare toegangsrechten die kunnen worden toegekend of geweigerd aan een individuele gebruiker van een bepaald bestand?

      Geen, kennis van, lezen, schrijven, uitvoeren, bescherming om te wijzigen, verwijderen.
       
    10. Noem en beschrijf in het kort drie manieren van blokvorming.

      Fixed blocking: Records van vaste lengte worden gebruikt en een geheel aantal records worden opgeslagen in een blok. Er kan ongebruikte ruimte aan het einde van elk blok zijn. Dit wordt aangeduid als interne fragmentatie.
      Variable-length spanned blocking: Records van variabele lengte worden gebruikte en zijn samengepakt in blokken zonder ongebruikte ruimte. Sommige records moeten dus twee blokken omvatten, waarbij voortzetting aangeduid wordt door een verwijzing naar het opvolgende blok.
      Variable-length unspanned blocking: Records van variabele lengte worden gebruikt, maar samenpakking wordt niet gebruikt. In de meeste blokken wordt er ruimte verspild vanwege het onvermogen om de rest van een blok te gebruiken als de volgende record groter is dan de resterende ongebruikte ruimte.
       
    11. Noem en beschrijf in het kort drie vormen van bestandstoewijzing.

      Aaneengesloten toewijzing: een aaneengesloten reeks van blokken wordt toegewezen aan een bestand op het moment van de aanmaak van het bestand.
      Geketende toewijzing: de toewijzing is op individuele blok basis. Elk blok bevat een verwijzing naar het volgende blok in de keten.
      GeÔndexeerde toewijzing: de bestandstoewijzingstabel bevat een apart ťťn-niveau index voor elk bestand; de index heeft een ingang voor elke deel dat aan het bestand is toegewezen.

    Probleemvraagstukken

    1. 12.1 Gebruik de volgende definities:
      B = blokgrootte
      R = recordgrootte
      P = grootte van blokwijzer
      F = blokkingsfactor; verwacht aantal records binnen een blok
      Geef een formule voor F voor de drie methoden voor blokvorming die worden getoond in figuur 12.6.
       
    2. Een probleem bij bestandstoewijzing is het vooraf toewijzen versus verspilling van of gebrek aan aaneengeslotenheid. Eťn aanpak om dit probleem te voorkomen, is her toewijzen van porties met toenemende grootte naarmate het bestand groeit. Begin bijvoorbeeld met een portiegrootte van ťťn blok en verdubbel de portiegrootte voor elke toewijzing. Ga uit van een bestand van n records met een blokkingsfactor F en veronderstel dat een eenvoudige index met ťťn niveau wordt gebruikt als bestandstoewijzingstabel.
      1. Formuleer een bovengrens voor het aantal ingangen in de bestandstoewijzingstabel als een functie van F en n.
         
      2. Wat is de maximale hoeveelheid toegewezen bestandsruimte die op elk moment ongebruikt blijft?
         
    3. Welke bestandsorganisatie zou men kiezen om de efficiŽntie te maximaliseren in termen van de toegangssnelheid, het gebruik van opslagruimte en het gemak van bijwerken (toevoegen, verwijderen, wijzigen) wanneer de gegevens:
      1. zelden worden bijgewerkt en vaak in een willekeurige volgorde worden gelezen?
         
      2. vaak worden bijgewerkt en relatief vaak in hun geheel worden gelezen?
         
      3. vaak worden bijgewerkt en vaak in een willekeurige volgorde worden gelezen?
         
    4. Directoryís kunnen worden geÔmplementeerd als Ďspeciale bestandení die slechts op beperkte manier toegankelijk zijn of als gewone gegevensbestanden. Wat zijn de voor- en nadelen van beide manieren?
       
    5. Sommige besturingssystemen hebben een bestandssysteem met een boomstructuut maar beperken de diepte van de boom tot een klein aantal niveaus. Welke gevolgen heeft deze beperking voor gebruikers? En in welk opzicht vereenvoudigt dit het ontwerp van het bestandssysteem (als het dat vereenvoudigt)?
       
    6. Ga uit van een hiŽrarchisch bestandssysteem waarin vrije schijfruimte wordt bijgehouden in een lijst voor vrije ruimte.
      1. Veronderstel dat de verwijzing naar de vrije ruimte verloren gaat. Kan het systeem de lijst voor vrije ruimte reconstrueren?
         
      2. Formuleer een voorstel voor een systeem dat voorkomt dat de verwijzing ooit verloren gaat door ťťn geheugenfout.
         
    7. Bestudeer de indeling van een UNIX-bestand zoals dat is vastgelegd in de mode (figuur 12.13. Veronderstel dat er twaalf directe blokverwijzingen zijn en een enkelvoudig, dubbel en drievoudig indirecte verwijzing in elke me. Veronderstel bovendien dat de systeemblokgrootte en de schijfsectorgrootte beide 8 kB zijn. Beantwoord de volgende vragen als de verwijzing naar een schijfblok 32 bits vergt, waarvan 8 bits de fysieke schijf aangeven en 24 bits het fysieke blok.
      1. Wat is de maximale bestandsgrootte die dit systeem ondersteunt?
      2. Wat is de maximale bestandssysteempartitie die dit systeem ondersteunt?
      3. Als er, behalve het bestand inode dat zich al in het hoofdgeheugen bevindt, geen andere informatie is, hoeveel schijftoegangen zijn dan vereist voor de toegang tot de byte op positie 13.423.956?