Xbox Series S és X kontra Playstation 5 – melyiket vegyem meg?

A Sony és a Microsoft ismét rendkívül hasonló dizájnnal vág neki az új generációnak, így nehéz lesz majd választani.

Memóriakezelés konzolon

Az SSD előnye a HDD-khez képest a PC-t birtokló felhasználók számára ismert lehet. Érezhető a hatása mind az adatelérés, mind pedig az adatmásolás sebességében. Ezekre képességekre az új konzolok is szert tesznek, de a Microsoft és a Sony egyáltalán nem állt meg itt. A további változások vizsgálata előtt azonban muszáj körbejárni azt a témát, hogy a konzolok adatkezelése mennyiben számít egyedinek például a PC-hez viszonyítva.

Amikor kijön egy új konzolcsalád, akkor mindig közölnek a gyártók egy olyan adatot, amely a fejlesztők által szabadon felhasználható memóriakapacitást jelenti. Ez a korábbi generációban 5-6 GB között volt, az érkező gépeknél pedig nagyjából 13-14 GB között lehet. Nem is a számok a lényegesek, hanem az a tény, hogy van egy ilyen paraméter. Egy PC-nél például nincs, mert az operációs rendszer kezeli a memória felhasználását. Egy alkalmazás nem kap ehhez közvetlen hozzáférést, vagyis ha el akar helyezni egy allokációt a memóriában, akkor az operációs rendszert utasítja erre, amely ezt a feladatot a lehetőségekhez mérten el fogja végezni.

Ez PC-s szinten nagyon fontos tényező, mert elég sok konfiguráció eltérő, például különböző kapacitású rendszermemória található az egyes gépekben, amelyre az alkalmazás oldaláról nehéz reflektálni, de nem is kell, az operációs rendszer azért van, hogy kezelje a memóriafoglalásokat, illetve a hely felszabadítását. Ez a működési modell nagyon rugalmas, mert akkor sincs baj, ha fizikailag nincs annyi memória az adott gépben, amennyire szüksége lenne az adott programnak. Az alkalmazás persze nem fog jól futni, de működhet tovább, hiszen ott a virtuális memória, amiben tárolhatók az éppen nem használt adatok. A teljesítmény szempontjából viszont ez közel sem ideális, elvégre sok dolgot az operációs rendszer végez, aminek azért van némi többletterhelése.

Hirdetés

A fentiek miatt a konzolok élnek azzal az előnnyel, hogy fix hardverek, mindenkinél ugyanaz a gép van, tehát egy arra optimalizált program mindenkinél ugyanúgy fut. Emiatt a tipikus működési módjuk nem is dolgozik virtuális memóriával. Szükségtelen, elvégre a fejlesztő pontosan tudja, hogy mennyi fizikai memória áll rendelkezésre, és képes úgy optimalizálni, hogy az mindig elég legyen. Ez egy nagyon fontos tényező a programfejlesztésnél, mert virtuális memória hiányában a fizikai memória telítődése bizony az alkalmazás leállásához vezetne. Erre viszont nem túl nehéz odafigyelni, miközben a memória közvetlen elérése számos előnnyel jár. Többek között az operációs rendszer semmilyen formában nem szól bele a memória menedzselésébe, mindent úgy csinálhat a program, ahogy számára optimális. Sőt, a konzolok operációs rendszere ezt a fejlesztőknek fenntartott memóriaterületet nem is látja, van neki egy saját része, amin bőven elvan.

A fentiek miatt fontos a konzolon a megfelelő allokációs stratégia kidolgozása, mert az operációs rendszer segítségének kilövésével ugyan rengeteg lehetőség nyílik meg, de ezt a program oldaláról kell biztosítani. Effektíve minden olyan memóriamenedzsmentre vonatkozó feladat, amiért PC-n például az operációs rendszer felel, az konzolon a futtatott alkalmazás reszortja. A konzolok tehát szabadságot adnak, de többet is kell optimalizálni rájuk. Az allokációs stratégia ráadásul egy olyan kérdés, ami nem igazán egyértelmű, bár a cél mindig ugyanaz: a rendelkezésre álló memória hatékony kihasználása.

A tipikus irány az szokott lenni, hogy a konzolon futó alkalmazás lefoglalja a rendelkezésre álló kapacitást vagy annak egy akkora részét, ami elég lesz, és a továbbiakban az allokáció manuálisan történik. Ennek az előnye, hogy maga a memóriafoglalás "olcsó", hiszen ez a folyamat elején történik meg, és onnantól kezdve ennek nincs is többletterhelése. A problémát a memória töredezése jelenti. Az egyes adatblokkok ugyanis nem feltétlenül ugyanolyan méretűek, így ezek felszabadításával viszonylag sok helyhez lehet jutni, de előfordulhat, hogy az új blokk nem fér be a régi helyére, így a program még azelőtt kifut a memóriából, mielőtt ténylegesen betelt volna.

Töredezett memóriakép előre lefoglalt memóriaterülettel
Töredezett memóriakép előre lefoglalt memóriaterülettel

A töredezettség PC-n is általános tényező, csak ott ezzel nem lehet mit kezdeni, az operációs rendszer generálja a problémát, és együtt kell élni vele. Itt jön a válasz arra a sokszor feltett kérdésre, hogy egy konzolon ugyanaz a játék miért éri be kevesebb memóriakapacitással: a közvetlen memóriaelérés miatt ezeknél a gépeknél nem kell beletörődni a problémákba, hanem lehet ellenük tenni.

Egységes adatblokkokból álló memóriakép előre lefoglalt memóriaterülettel
Egységes adatblokkokból álló memóriakép előre lefoglalt memóriaterülettel

A töredezettség megoldására különböző koncepciók léteznek. A legegyszerűbb az, ha az adatblokkok ugyanolyan méretűek. Ilyen formában, ha az egyik blokk által elfoglalt memóriahelyet felszabadítja a program, akkor az új blokk pont be fog férni oda. Ez tehát már elébe megy magának problémának, vagyis eleve nem alakulhat ki töredezettség. Egyáltalán nem könnyű ugyanakkor minden adatblokkot ugyanolyan méretűre szabni.

Töredezett, végpontokból feltöltött memóriakép előre lefoglalt memóriaterülettel
Töredezett, végpontokból feltöltött memóriakép előre lefoglalt memóriaterülettel

Valamivel kedveltebb megoldás az eltérő méretű blokkok megtartása úgy, hogy a lefoglalt memória elején és végén kezdődik el a blokkok beírása, így a legutoljára beírt blokk felszabadításával szinte biztos, hogy bármilyen blokk beírható a helyére. A gondot az szokta jelenteni, hogy a memóriaterület felszabadítása szempontjából az az optimális, ha a legrégebben használt adatblokk lesz törölve, ami viszont jó eséllyel a fizikai memória lefoglalt területének valamelyik szélén található. Éppen ezért ezt a koncepciót csak arra használják, hogy a töredezettség kialakulását késleltessék. Erre sokszor jó is, de valós problémamegoldást nem kínál.

Töredezettségmentesített memóriakép előre lefoglalt memóriaterülettel
Töredezettségmentesített memóriakép előre lefoglalt memóriaterülettel

A fentiekkel szemben a legelterjedtebb, de egyben legnehezebben alkalmazható rendszer a valós idejű töredezettségmentesítés. Ez a módszer kihasználja, hogy az allokáció a már lefoglalt memórián belül nagyon gyors, így igen kedvező dolgokat is meg lehet tenni a konzolokon. Például az egyes blokkok között felszabadított részekre egyszerűen rátolható a következő blokk. Ezzel részben az a gond, hogy a pointer ilyenkor rossz címre fog mutatni, hiszen a memóriában tárolt adat konkrétan elmozdult, erre viszont lehet készülni egy olyan mechanizmussal, ami a mozgatás után korrigálja a pointereket, így azok mindig jó helyre mutatnak. Bár a töredezettségmentesítés megvalósítása rengeteg munkát igényel a program oldalán történő optimalizálás szempontjából, a hatékonysága kiváló lehet, így idővel minden konzolra tervezett videojáték-motorba érdemes beépíteni.

A cikk még nem ért véget, kérlek, lapozz!

Azóta történt

Előzmények

Hirdetés