10.1 - File Concept (p.461)

  • File = (Bestand) Een collectie van gerelateerde informatie die opgeslagen is op een secondaire opslag.
    • Data kan niet naar opslag worden geschreven zonder dat het in een file is.
    • Een file is een abstract data type omdat deze op veel verschillende manieren kan worden ingevuld.
  • File Structure = De structuur van een file bepaalt het type. (text, source, object, executable etc)
  • Current File Position Pointer = Een pointer die een locatie in het bestand aangeeft.
    • Er hoeft maar een pointer te zijn om zowel te lezen als te schrijven, omdat het systeem alleen kan lezen of schrijven naar de file

File Attributes

  1. Name
    • Symbolische bestandsnaam
    • Human readable
    • Ook extenties vallen hierin (.exe, .jpg etc.)
  2. Identifier
    • Uniek nummer dat het bestand identificeert in het systeem
    • Niet human readable
  3. Type
    • Definieert de type file.
    • Zie File Structure
  4. Location
    • Pointer naar op welk apparaat en waar op het apparaat het bestand staat.
  5. Size
    • De huidige groote (in bytes, words, blocks) en evt de maximale groote van het bestand.
  6. Protection
    • Informatie welke beslist wie het bestand kan lezen, schrijven, uitvoeren etc.
  7. Time/Date/User Identification
    • Bestand aangemaakt, laast gewijzigd, door wie gewijzigd etc.

File Operations

  1. Creating a file (aanmaken)
    • Hoe: 1.Er moet ruimte worden gevonden voor de file. 2.Er wordt een item (met de file beschrijving) toegevoegd aan de directory lijst.
  2. Writing a file (schrijven)
    • Hoe:
      1. Een systeem call wordt gemaakt met daarin de naam van de file en welke gegevens naar de file moeten worden geschreven.
      2. Het systeem zoekt naar de bestandslocatie.
      3. Het systeem schrijft de gegevens achter de current file position pointer in de file.
  3. Reading a file (lezen)
    • Hoe:
      1. Een systeem call wordt gemaakt met daarin de naam van de file en waar in het geheugen de file moet worden neergezet.
      2. Het systeem zoekt naar de bestandslocatie.
      3. Het systeem leest de gegevens bij de current file position pointer in de file.
      4. De current file position pointer wordt geupdated wanneer de read is uitgevoerd.
  4. Repositioning within a file
    • Het aanpassen van de current file position pointer.
    • Wordt ook wel een seek genoemd.
  5. Deleting a file
    • Het bestand wordt opgezocht in het systeem, en het geheugen wordt vrijgegeven om te worden overschreven.
    • Ook wordt het item (van de file) in de lijst van de directory verwijderd.
  6. Truncating a file
    • Het behouden van de attributen van de file, maar verwijderen van de inhoud ervan.
  7. Overige operaties kunnen zijn:
    • Appending (toevoegen)
    • Bestandsnaam wijzigen
    • Kopieren van het bestand

Open File Table en Locking

  • Open File Table = Een kleine tabel in het OS die bijhoud welke besanden er geopend zijn, en informatie van deze bestanden.
  • Bijgehouden informatie:
    1. File Pointer (waar in het bestand zijn we)
    2. File-Open count (hoeveel processen hebben het bestand open)
    3. Disk location of the file (waar en op welke disk staat het bestand)
    4. Access Rights (wie mag het bestand openen)
  • Wanneer er een bestands operatie moet worden uitgevoerd, wordt een index in deze tabel geplaatst.
    • Zo hoeft niet bij iedere bestands operatie op hetzelfde bestand naar het bestand gezocht te worden.
  • De index wordt uit de tabel verwijderd wanneer een process het bestand sluit, of het process wordt gestopt.
  • Sommige systemen openen bestanden zodra eraan wordt gerefereerd.
  • Sommige systemen verplichten de programmeur de open() en close() commandos te gebruiken.
    • Open() wil soms ook weten wat je met het bestand gaat doen (read, write, create, read-write etc.)
    • Het bestand wordt dan alleen geopend als het process ook daadwerkelijk die actie mag uitvoeren op het bestand.
  • In systemen waar bestanden door meerdere processen tegelijk mag worden geopend:
    • Zijn er open file tables voor elk process, en een voor het OS.
    • De pointer wordt dan opgeslagen in de process tabel, maar de disklocatie etc in de OS table.
  • Sommige systemen bieden de mogelijkheid om een bestand te versleutelen, waardoor andere processen geen bewerkingen kunnen uitvoeren op dat bestand.
    • Aka file locks
    • Delen van bestanden kunnen ook worden gelocked ipv het hele bestand.
    • Shared lock = Alleen lezen. (meerdere processen kunnen deze lock toepassen tegelijkertijd)
    • Exclusive lock = Schrijven en lezen. (Maar een process kan deze lock hebben tegelijkertijd)
    • Mandatory lock = Geen enkele ander process kan bij de file komen.
    • Advisory lock = Programmeurs moeten hierbij zelf regelijk dat files worden gelocked en vrijgegeven.

File Types

  • Extenties is een manier om een filetype aan te geven. [naam].[extentie]
  • In Windows bestandsextenties worden gezien als "hints" voor de applicaties
  • MacOs gebruikt een atribuut voor elk bestand welke aangeeft welk applicatie het bestand heeft gemaakt.
  • UNIX geeft elk type bestand een magic number aan het begin van het bestand om het type aan te geven.

File Structure

  • Sommige bestanden hebben een structuur die niet wordt ondersteund door het OS.
  • Ondersteuning door het OS behoeft ook code om deze oa. te laden en te wijzigen.
  • MacOs bestanden bestaan uit twee forks, een resource fork met bestandsinformatie (zoals labels etc) en een data fork met de orginele data/code.

Internal File Structure

  • Bestanden worden opgeslagen in blokken van normaal gezien 512 bytes of een vermenigvuldiging van 2 daarvan.
  • Bestanden kunnen alleen in hele blokken worden opgeslagen.
    • Wanneer ze kleiner zijn dan de groote in blokken worden een de overgebleven ruimte als wasted beschouwd.
  • Dit leidt tot Internal Fragmentation oftewel verloren ruimte.
  • Hoe groter de blokgroote, hoe groter de internal fragmentation.

results matching ""

    No results matching ""