HF2. Lapcsere algoritmusok megvalósítása

Határidő: 2019. május 2.
Becsült programozási idő: 2-5 óra

Készítsen egy programot, amely lapcsere algoritmusok működését szimulálja!

A program bemeneteként memóriaműveletek során hivatkozott lapok azonosítóit kapja a hivatkozásuk sorrendjében.
Kimeneteként a végrehajtott lapcserék eredményeképpen lefoglalt fizikai memóriakeretek azonosítóit és a laphibák számát adja vissza.
A rendszerben 4 memóriakeret található, amely kezdetben mind üres. Az induláskor a lapok a cserehelyen találhatók.

A lapokat számok (1-99), a kereteket betűk (A,B,C és D) jelölik.

Bemenet (standard input, stdin)

Egyetlen sorban a lapokra történő hivatkozások egymástól vesszővel elválasztva. Például:

1,2,3,4,1,5,1

A bemenet végét egy üres sor (utána EOF) jelzi. Ekkor kell a kimenetre kiírni az eredményt.

Kimenet (standard output, stdout)

A kimeneten a bemeneti memóriahivatkozások kiszolgálásához lefoglalt memóriakeretek szerepelnek szóközök nélkül egybeírva, majd a következő sorban a laphibák száma.
Amennyiben egy memóriahivatkozáshoz nem kellett új keretet foglalni, a kimeneten az adott pozícióban - jel jelenik meg.
Ha egy memóriafoglalás nem teljesíthető, akkor a kimeneten * karakter jelenik meg (a műveletet nem ismétli meg az algoritmus).

Megvalósítandó algoritmusok, pontozás és kimenetek a fenti bemenetre

 1. FIFO lapcsere (1 pont)

A program kimenetének első és második sorában írja ki a FIFO lapcsere algoritmus szerinti foglalásokat és a laphibák számát.

ABCD-AB
6

2. Legrégebben nem használt (least recently used, LRU) lapcsere (1 pont)

Az előadáson ismertetett egyszerű LRU implementációt kell készíteni, amely hivatkozási idő szerint rendezi csökkenő sorba a kereteket.
A kimenet harmadik és negyedik sorában írja ki az LRU lapcsere algoritmus szerinti foglalásokat és a laphibák számát.

ABCD-B-
5

3. LRU + tárba fagyasztás (page locking) (1 pont)

Módosítsa úgy az LRU programját, hogy alkalmazza a tárba fagyasztás (page locking) technikát (az első hivatkozásig vagy maximum a lapbehozás utáni 5 memóriaművelet idejére).
A program kimenetének ötödik és hatodik sora az LRU algoritmus módosított változatának foglalásait és a laphibák számát tartalmazza.

ABCD-A*
6

Összesen 3 pont szerezhető. 1 IMSc pont jár mind a három feladat hibátlan megoldásáért.

A beadás menete

A megoldásokat a HF portálon kell beadni, ahol automatikusan ellenőrizzük azokat, és rövid időn belül visszajelzést adunk a helyességükről / hibákról. Ezután lehetőség van javításra és új program beküldésére.

Technikai információk

A programot Java nyelven kell elkészíteni, és a HF portálon kell leadni a megadott határidőig.

A beküldött Java programnak tartalmaznia kell egy "Main" nevű osztályt, melynek része a feladatot megoldó "main" függvény. A program tetszőleges számú forrásfájlból állhat. A program nem használhat a standard inputon és outputon kívül semmilyen más erőforrást, így nem végezhet fájlműveleteket és nem nyithat hálózati kapcsolatokat.

A programnak mindhárom részfeladatra kimenetet kell produkálnia (összesen 6 sor). Ha valamelyik algoritmussal nem foglalkozik, akkor adjon meg egy rögzített rövid (hibás) kimenetet.

 
További kapcsolódó tárgylapok: 
© 2010-2024 BME MIT | Hibajelentés | Használati útmutató