A számítástechnikában a thrashing egy olyan állapot, amelyben a számítógép virtuális memória alrendszere állandó csere állapotában van , gyakran cserél a memóriában és a lemezen lévő adatokat, az alkalmazások rovására [1] [2] . Emiatt a számítógép lelassul, vagy gyakorlatilag leáll. Ez az állapot a végtelenségig tarthat, amíg az ezt okozó okokat meg nem szüntetik.
Lapozott virtuális memóriával rendelkező rendszerekben az egyes folyamatok címterét lapozzák. Ha a folyamatoknak biztosított memória mennyisége meghaladja a rendelkezésre álló RAM mennyiségét , az oldalak egy része feltölthető külső adathordozóra ( dobra vagy merevlemezre ). Mivel egy folyamat általában nem használja ki az összes rendelkezésére álló memóriát, hanem annak csak egy részét, az úgynevezett munkahalmazt egy adott időintervallumban , ez nem befolyásolja a teljesítményt. Ha azonban az összes folyamat munkakészleteinek összege meghaladja a RAM mennyiségét, akkor a laphiba valószínűsége meredeken növekszik , vagyis a szükséges oldal hiánya a RAM-ban . Az aktív folyamatok munkakészlet-oldalai folyamatosan betöltődnek, az inaktív folyamatok oldalai pedig kiürülnek. Mivel egy oldal külső adathordozóról történő betöltése több nagyságrenddel lassabb, mint a RAM elérése, a számítógép teljesítménye meredeken csökken [1] . A processzor terhelése alacsony. Ezt az állapotot csúszásnak nevezik. A kifejezést először a szalagos operációs rendszerek idejében használták annak leírására, hogy a szalagos meghajtók milyen hangot adnak ki az adatok gyors írásakor és olvasásakor.
A csapkodás valószínűsége nő, ha az összes folyamat munkakészleteinek összege meghaladja a RAM mennyiségét. Ennek oka lehet a túl sok futó folyamat, a túl nagy mennyiségű működő folyamathalmaz a lokalitás elvének megsértése miatt a programokban és a nem elegendő RAM. A lokalitás elvének megsértésére egy példa jelent meg az IBM System/370 sorozatú nagyszámítógépeken , amelyeken egyetlen utasítás állhat egy végrehajtási utasításból , amely átlépi a memórialap határát, és egy olyan mozgási utasításra mutat, amely szintén átlép egy oldalhatárt, és Úgy tervezték, hogy egy adatblokkot áthelyezzen a határoldalt átlépő forráscímek tartományából az oldalhatárt átlépő címzettek tartományába. Így egy ilyen utasítás végrehajtása során összesen nyolc oldalt kell megcímezni, és mindegyiknek egyszerre kell jelen lennie a RAM-ban. Ha az operációs rendszer ezt nem tudja biztosítani, az utasítás végrehajtási kísérlete folyamatosan laphibát eredményez, és az utasítás soha nem kerül végrehajtásra.
Az erős csere által okozott ütés elkerülése érdekében a felhasználó a következő lépéseket teheti:
A kifejezést a memóriahierarchia más szintjei közötti elcsúszásokra is használják : nemcsak a lemezről a memóriába lapozáskor, hanem olyan helyzetekben is, amikor egy kis, gyors tárolóeszköz, amelyet arra terveztek, hogy felgyorsítsa a hozzáférést egy nagy, de lassú tárolóeszközhöz úgy kell használni, hogy a használat minden előnye eltűnik. Példa erre a cache thrashing , ahol a fő memória-hozzáférési minta azt eredményezi, hogy több fő memóriacím verseng ugyanazért a gyorsítótár-sorokért, ami nagy számú gyorsítótár-kihagyást eredményez . Ez a legproblémásabb az alacsony asszociativitással rendelkező gyorsítótárak esetében. Nagyon hasonló a TLB thrashing , ahol a fordítási asszociációs puffer (TLB) hatástalanná válhat, ha a memóriaelérési minta meghiúsul.