Please enable JavaScript.
Coggle requires JavaScript to display documents.
OPERÁCIÓS RENDSZEREK-MEMÓRIAKEZELÉS - Coggle Diagram
OPERÁCIÓS RENDSZEREK-MEMÓRIAKEZELÉS
Memória-allokáció:
Amikor egy adott programhoz memóriaterületet rendel hozzá a gép. Az allokálást a memóriaszervező részrendszer (Memory Management Unit) végzi.
Memóriát allokálunk például akkor amikor egy programot futtatni szeretnénk
Az allokált területhez való programillesztést
áthelyezésnek
nevezzük.
A többfelhasználós és többfeladatos rendszereknél probléma, hogy egy program csak a neki allokált részt tudja elérni, és hogy ezt biztosítsuk szükséges a memóriát védeni.
Egyfeladatos rendszereknél
viszont egyszerű az allokáció mert ott az az egy program ami fut használhatja a teljes memóriát, kivéve persze azt a részt ami az oprendszernek van fenntartva. Csak azt a határcímet kell eltárolni amitől az oprendszernek van fenntartva a memória.
Az utasításokat csak akkor hajtjuk végre, ha annak címrésze nem egyezik meg a határcímmel
Többfelhasználós és többfeladatos rendszereknél
nem csak az operációs rendszernek kell elkülönítenünk memóriát, hanem minden egyes folyamatnak is, ez különböző technikákkal történhet:
Statikus memóriadefiníció:
Az allokálható blokkok számát az oprendszer generálásakor (telepítésekor? vagy bootoláskor?) rögzítjük, így a folyamatok betöltődésekor se változik a lefoglalt blokkok száma.
Dinamikus memóriadefiníció:
A rendszer akkor határozza meg a blokkok számát és méretét amikor valamilyen igényt elégít ki. A dinamikus memóriaterületeket régióknak nevezzük. Az egész rendszer számára az allokálás dinamikus de a folyamatok számára nem. Hátránya, hogy csak összefüggő területeket tud allokálni, így problémát okoz a töredezettség.
Attól függően, hogy egy adott folyamat
foglalhat-e le még több memóriát
futás közben erre két stratégiát különböztetünk meg:
Statikus allokáció:
A folyamathoz akkor rendeljük hozzá a felhasználható memóriaterületet, ha elindítjuk a hozzá tartozó programot. Ekkor az indításkor allokált memóriamennyiség a befejezésig az övé marad, így kevésbé gazdaságos ez a módszer
Dinamikus allokáció:
Itt lehetőség van arra, hogy futás közben a rendszer az
allocate
rendszerhívással több memóriát foglaljon le a programnak, és a
free
paranccsal felszabadítson memóriát
Allokációs stratégiák
Dinamikus memória allokáláshoz
:
Következő illesztés (Next Fit)
: Az algoritmus elindul az első szabad blokktól és minden szabad blokkot megnéz és a folyamat méretének megfelelőt választja ki.
Első illesztés (First Fit):
Minden lépésben megvizsgál minden szabad blokkot, és az első olyat választja ki ami megfelel a folyamat helyigényének
Legjobb illeszkedés (Best Fit):
Ez az algoritmus már figyelembe veszi a blokkok méretét is, bejárja az összes blokkot és megjegyzi az igénynek leginkább megfelelő méretűt, és azt választja ki.
Legrosszabb illesztés (Worst Fit):
Ez a módszer a Best Fit fordítottja. Abból indul ki, hogyha nagyobb hely marad az allokáció után, akkor nagyobb az esély arra, hogy a későbbiekben fel tudjuk azt használni. Ezért átvizsgálás után ahhoz a blokkhoz allokálja az igényt amelyiken a legtöbb hely marad az allokálás után.
Ezen algoritmusok használatakor felléphet a szétszórtság (töredezettség) jelensége, amikor szétszórtan, kis méretű memóriablokkok maradnak ki. Ezeket célszerű időnként összegyűjteni és egy nagyobb blokkban elhelyezni (defragmentation).
Ha tömörítünk azt pedig ciklikusan kell csinálni, úgy hogy közben minden memóriafolyamatot felfüggesztünk
A többfelhasználós rendszerek lehetővé teszik azt, hogy a különböző időben betöltődő programok a memória különböző területeire töltődjenek be.
Mivel mind az utasításokban mind azok címében hivatkozunk azok helyére, így ha újra betöltjük nagyon fontos a helyes címrészek kialakítása
Statikus áthelyezés:
A betöltéssel egy időben, vagy az előtt történik
Dinamikus áthelyezés:
A program futása közben is végezhető. Az utasítások címrészein relatív címek vannak, ezeket a végrehajtáskor véglegesítik.
Áthelyezés szoftver úton:
Akkor lehet programot ilyen módon áthelyezni, ha a megváltoztatandó hivatkozások és a változtatás módja is megadható.A hivatkozások azonosítóját az áthelyezési könyvtárban adjuk meg. Ezután a relocating loader a kívánt címre tölti a programot.
Áthelyezés báziscímekkel:
A betöltött program kezdő címét elhelyezi a bázisregiszterben, ez lesz a viszonyítás alapja. Ha egy utasítás a báziscímet szeretné alkalmazni, akkor előtte ki kell számolni az adott utasítás címét.
Áthelyezés relatív címezéssel:
Itt az utasítás számláló (PC = Program Counter) lesz a bázisregiszterünk. Úgy számolja ki a tényleges címeket, hogy a PC tartalmát hozzáadja az utasítás címrészéhez.
Áthelyezési regiszterek alkalmazása:
A regiszter tartalmát mindig hozzáadjuk a végrehajtás előtt álló utasítás címrészéhez
Memóriavédelem:
Azért fontos, hogy az egyes programok tényleg csak a számukra allokált területeket használhassák.
Egyfelhasználós rendszerek esetében
az operációs rendszernek allokált memóriaterületeket határcímekkel vagy határregiszterekkel oldhatjuk meg
1 more item...