8. feladat
Feladva dec. 19-23, 2011
Határidő jan. 21., 2012
Memóriakezelés szimulálása
Az alábbi 8 feladatból mindenki a sorszámának megfelelőt oldja meg. Az 1-4 illetve 5-8 feladatok szö
vege csupán egy-egy pontban tér el, a többi közös.
1-4 . Írjunk kliens-szerver rendszert, amelyik a memória-kiosztást szimulálja
- first fit
- next fit
- best fit
- „buddy"-rendszer
algoritmussal.
A kliens:
- véletlenszerűen generálja, hogy lefoglal vagy
felszabadít memóriát
- az első kérés mindig lefoglalás
- a lefoglalások valószínűsége nagyobb kell legyen, mint a felszabadításoké
- lefoglalás esetén kérést küld a szervernek „véletlen” méretű memória lefoglalására
- sikeres lefoglalás esetén „véletlen" ideig vár, majd generál egy újabb kérést
- sikertelen lefoglalás esetén a kérést „véletlen" ideig tartó várakozás után újra elküldi
- egy folyamat befejeződik, ha
- egy kérését háromszori ismétlés után sem elégítette ki a rendszer, ebben az esetben jelzi a szervernek, hogy minden addig lefoglalt memóriát felszabadít
- minden lefoglalt memóriát felszabadított
A szerver:
- egy lefoglalás kérés érkezésekor visszajelez a kliensnek, hogy milyen címtől kapja meg a kért méretű memóriát, vagy hogy nincs elegendő szabad memória
- felszabadítás kérés esetén felszabadítja az adott folyamat által kért memóriaterületet.
A kiírás a képernyőre úgy történjen, hogy mind a kliens, mind a szerver munkáját könnyen lehessen követni.
5-8. Írjunk kliens-szerver rendszert, amelyik a lapozást szimulálja.
A kliens:
- kezdetben véletlenszerűen generálja, hogy az illető folyamat mérete hány lapot tesz ki; legyen ez
lapszam
- ezután időnként
1 és lapszam közötti értékeket generál, és egyenként elküldi a szervernek, hogy éppen melyik lapra történik hivatkozás
- ezt n-szer ismétli (az ismétlések vagyis a hivatkozások számát megadhatjuk paraméterként vagy generáljuk véletlenszerűen), majd jelzi a szervernek, hogy befejeződik
A szerver:
- megadjuk neki kezdetben, hogy a fizikai memória mérete hány lapkeretet tesz ki
- minden egyes folyamat esetén létrehoz egy laptáblázatot, amely nyilvántartja az illető folyamat rezidens halmazát (az illető fol
yamat azon lapjai, amelyek be vannak töltve a memóriába), azaz melyik lap, melyik lapkeretbe van betöltve
- nyilvántartja a szabad memóriaterületet (szabad lapkeretek)
- fogadja a kliensektől érkező kéréseket (memória-hivatkozásokat).
- Amennyiben az illető folyamat olyan lapra hivatkozott, ami a memóriában van (vagyis a szerver nyilvántartása alapján szerepel a rezidens halmazát nyilvántartó laptáblázatban), a szerver kiírja az alábbi információkat:
- folyamat azonosítója, lapszám, lapkeret száma (amelybe az illető lap be van töltve)
- Amennyiben az illető folyamat olyan lapra hivatkozott, ami nincs a memóriában (a nyilvántartás alapján)
- jelzi, hogy laphiba történt (és számolja is egy bizonyos folyamat által okozott laphibákat)
- ha van üres lapkeret, betölti a hivatkozott lapot egy ilyenbe (megfelelőképpen módosítja az illető folyamat laptáblázatát, illetve a szabad lapkeretek nyilvántartását)
- ha minden lapkeret foglalt, akkor lapcserét végez
5. FIFO algoritmus, lokális hatáskör
6. clock-algoritmus, globális hatáskör
7. FIFO algoritmus, globális hatáskör
8. módosított clock-algoritmus, globális hatáskör (ebben az esetben a kliens minden hivatkozás esetén küldje el azt is, hogy adatlekérdezésről vagy adatmódosításról van szó)
alapján
- Ha a kliens jelzi, hogy befejeződik,
- szabadítsa fel az általa lefoglalt lapkereteket,
- törölje a nyilvántartásból
- írja ki a folyamat által okozott laphibák számát
A kiírás a képernyőre úgy történjen, hogy mind a kliens, mind a szerver munkáját könnyen lehess
en követni.