8.1 - Background (p.352)

  • Geheugen bevat instructies en data voor processen.
  • Als de CPU data nodig heeft, moet deze data eerst in het geheugen worden gekopieerd voordat het kan worden gebruikt.
  • Stall = Wanner de CPU data nodig heeft, en het moet wachten tot deze data in het geheugen staat voordat de CPU het process kan vervolgen.
  • Cache = Een geheugenbuffer om het verschil in verschillende geheugensnelheden te verzachten en stalls te voorkomen.

Basic Hardware

  • Elk process moet een eigen geheugen ruimte hebben.
    • Regelen door middel van base en limit registers.
  • Base Register = Het kleinste physieke geheugen address van het process. (ex. 300040)
  • Limit Register = De grote van de geheugenrange. (ex. 120900)
    • Het grootste address is dus BASE+LIMIT-1 (ex. 300040 + 120900 -1 = 420939)
  • Om geheugen te beschermen vergelijkt de CPU hardware elk adress in user mode met deze registers.
    • Hierdoor kan een process niet aan het geheugen van andere processen komen.
    • De kernel mode heeft wel toegang tot al het geheugen, omdat het oa programmas in het geheugen moet laden/verwijderen/aanpassen.

Address Binding

  • Input Queue = Processen op disk die wachten totdat ze in het geheugen kunnen worden gezet.
  • Binding = Wanneer een compiler symbolische adderessen (een var oa) omzet in relocatable adderesses (+14 bytes vanaf het begin van de module).
  • Binding of instructies en binding van data naar geheugenadderessen kan op verschillende momenten worden gedaan:
    1. Compile time
      • Absolute Code = Code met een vast address.
      • Genereren van absolute code waneer de locatie in het geheugen al bekend is.
      • Recompiling is nodig wanneer de locatie verandert.
    2. Load time
      • Relocatable Code = Code met een address die bepaald wordt wanneer het programma laad.
      • Wanneer een address veranderd moet het programma opnieuw worden geladen.
    3. Exectuion time
      • Als het process moet worden verplaatst tijdens uitvoering naar een ander geheugensegment.
      • Speciale hardware is nodig.
  • Compile en load time addess binding methoden genereren identieke logische en fysieke addressen.

Logical versus Physical Address Space

  • Logical Address / Virtual Address = Een address gegenereerd door de CPU.
  • Physical Address = Het address als gezien door het geheugen.
  • Logical Address Space = De set van alle logical addresses gegenereerd door een programma.
  • Physical Address Space = De set van alle physical address corresponderend aan de logical address space.
  • Memory-Management Unit (MMU) = De run-time mapping van de logical naar physical addresses. (methodes in paragraaf 8.3 - 8.7)
    • De base register wordt in de MMU het relocation register genoemd.
    • De waarde in het relocation register (ex. 14000) wordt toegevoegd aan het physical address(ex. 346) om het logical address (ex. 14346) te worden.
    • Het user progam ziet het echte physical address nooit.
  • Het concept van het verbinden van locical address space aan een losstaande physical address space is belanrijk voor goed geheugen management.

Dynamic Loading

  • Dynamic Loading = Een routine wordt pas geladen (vanaf disk) totdat deze wordt aangeroepen.
  • Het basisprogramma wordt geladen, daarna wordt het geheugen gecheked of het al ingeladen is. Anders wordt de routine geladen, en dit in de programm address table toegevoegd.
  • Voordeel is dat grote delen van de code (ex specifieke error afhandeling) die niet vaak worden gebruikt niet het geheugen vullen. (aka meer vrije ruimte)
  • Heeft geen speciale support nodig door het OS, het moet worden geimplementeerd door de programmeur. Er zijn wel OSs die een libary hebben om de gebruiker te helpen.

Dynamic Linking and Shared Libaries

  • Static Linking = Het combineren van systeem libaries en programma code in een binair programma.
  • Stub = Een klein stuk code dat aangeeft hoe je bij de desbetreffende libary kan komen of kan laden (mits niet aanwezig in memory).
  • Dynamic Linking = Overal in de programmacode waar naar systeem libaries worden gerefereerd wordt een stub geplaatst.
    • Voordeel is dat gedeelde libaries niet meerdere keren hoeven worden meegenomen in de binaries. (minder geheugen gebruik)
    • Voordeel dat eventuele updates van de libaries in de achtergrond gebeuren en dat daarvoor niet het programma opnieuw gecompiled hoeft te worden.
    • Heeft wel hulp nodig van het OS.
  • Shared Libaries =

results matching ""

    No results matching ""