Ugrás a tartalomhoz

Operációs rendszerek

Dr. Fazekas Gábor (2011)

Kempelen Farkas Hallgatói Információs Központ

Memória felosztás

Memória felosztás

Fix partícionálás:

  • A memória felosztás fix határokkal rendelkező régiókra

  • Egyenlő méretű partíciók kialakítása

    • – bármelyik olyan processzus melynek mérete kisebb vagy egyenlő a partíció méretével, betölthető egy elérhető partícióba

    • – ha az össze partíció tele van, az operációs rendszer kicserélheti egy partícióban levő másik processzussal

    • – Problémák:

      • egy program nagyobb is lehet, mint a partíció, ekkor a programozónak az overlay technikát kell alkalmaznia

      • a főmemória kihasználása nem jó: minden program, méretétől függetlenül egy egész partíciót elfoglal (belső töredezettség - internal fragmentation)

    • – Megoldás: nem egyenlő méretű partíciók

Elhelyezési algoritmus:

  • Azonos méretű partíciók

    • – azonos méret miatt bárhova mehet

  • Nem azonos méretű partíciók

    • – minden processzushoz a lehető legkisebb alkalmas partíciót választani (belső töredezettség minimalizálása)

    • – minden partícióhoz külön bemeneti sor

    • – az összes partícióhoz csak egy bemeneti sor

Dinamikus particionálás

  • Változtatható számú és nagyságú partíciók használata

  • A processzusok pontosan annyi memóriát foglalnak le, amennyire szükségük van

  • Végeredményben apró lyukak keletkeznek a memóriában (külső töredezettség - external fragmentation)

  • Időnként tömörítés (processzusok egymás mellé tolása) szükséges, hogy az összes szabad memória egy blokkot alkosson. Ez igen sok processzoridőt emészt fel....

  • Az operációs rendszernek kell eldönteni melyik szabad blokkba kerüljön a processzus, ehhez a következő algoritmusokat használhatja:

  • Legjobban illeszkedő (Best-fit)

    • – a kérthez méretben legközelebb eső blokk választása

    • – a legrosszabbul teljesítő algoritmus: nagy külső töredezettség, gyakran kell tömörítést végrehajtani

  • Első illeszkedő (First-fit)

    • – a memória elejéről számítva az első jól illeszkedő blokk választása

    • – sok processzus felgyűlhet a memória elején, amit minden alkalommal végig kell keresni, mikor egy üres blokkot keresünk

  • Következő illeszkedő (Next-fit)

    • – a legutolsó lefoglalt blokktól kezdi a keresést a legjobban illeszkedő blokk után

    • – gyakran foglal le blokkot a memória végéről, ahol a legnagyobb blokk van, így az nagyon hamar kisebb blokkokra darabolódik

    • – tömörítésre van szükség, hogy a memória végén ismét nagy blokkunk legyen

„Buddy” rendszer

  • Problémák a fix és a dinamikus partíciókkal:

    • – fix: erősen korlátozza az aktív processzusok számát, a rendelkezésre álló teret nem használja ki hatékonyan

    • – dinamikus: komplikált fenntartani, nagy a tömörítés költsége (processzoridő)

  • Megoldás: „buddy” rendszer, mint kompromisszum

    • – az összes elérhető memória egy 2U méretű egyszerű blokk

    • – ha a processzus által kért méret 2U-1 < s ≤2U, akkor az egész blokk lefoglalásra kerül, máskülönben

      • ezt a blokkot két egyenlő részre osztjuk (2db 2U-1 méretű blokk)

      • az eljárást addig folytatjuk, amíg a legkisebb olyan blokkot kapjuk, ami nagyobb vagy egyenlő s-sel