Csúszás (számítástechnika)

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.

Leírás

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.

Okok

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.

Megoldások

Az erős csere által okozott ütés elkerülése érdekében a felhasználó a következő lépéseket teheti:

// C-ben egy kétdimenziós tömb (mátrix) sorait az első index int m [ 256 ][ 256 ] jelzi; for ( oszlop = 0 ; oszlop < 256 ; oszlop ++ ) { for ( sor = 0 ; sor < 256 ; sor ++ ) { // A elért címek 256-os lépésekben változnak * sizeof(int) // A belső ciklus végrehajtásához a teljes tömbnek a memóriában kell lennie m [ sor ][ oszlop ] = foo (); } } formájú ciklusokhoz int m [ 256 ][ 256 ]; for ( sor = 0 ; sor < 256 ; sor ++ ) { for ( oszlop = 0 ; oszlop < 256 ; oszlop ++ ) { // Az oszlopok elérésekor a címek az egymást követő celláknak felelnek meg // A belső ciklus végrehajtásához csak az aktuális sornak kell jelen lennie a memóriában m [ sor ][ oszlop ] = foo (); } }

A kifejezés egyéb felhasználásai

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.

Lásd még

Jegyzetek

  1. 12 Peter J. Denning . Thrashing: annak okai és megelőzése  // Proceedings AFIPS, Fall Joint Computer Conference. - 1968. - T. 33 . S. 915–922 .
  2. E. Tannenbaum. Számítógép architektúra = Structured Computer Organization. - 5. kiadás - Szentpétervár. : Péter, 2013. - S. 485. - 884 p. - ISBN 978-5-469-01274-0 .