Ha beüt a krach

Ezen az oldalon a már megismert számítógépes rendszerekben bekövetkező hibákról és ezek következményeiről lesz szó.

A hiba

Először is: Mikor beszélünk hibáról? Számítógépek esetén azt nevezzük hibának, amikor egy kiadott parancsot nem sikerül végrehajtani. Ha egy parancsot valamikor nem sikerül végrehajtani, de a rendszer elsiklik efölött, az később további, akár sokkal súlyosabb hibákat is eredményezhet. Például egy akármilyen kis hiba eredményezheti azt, hogy valamilyen fontos információ sérüljön, ami aztán további (még ép) információk sérülését is okozhatja, ami bármilyen számítógépes rendszer esetén az egyik legsúlyosabb előfordulható hiba. Ennél súlyosabb csak az lehet, ha végleg elvész valami információ, és visszaállítani se lehet.

Nagyon pitiáner dolognak hangozhat az, hogy “megsérül az információ.” Hát még ha egy ízeltlábú sérülne meg, de legalábbis valami egysejtű élőlény… akkor éreznénk valami empátiát… de hogy az információ?… sérüljön?

Hát igen, az információ. Sérüljön. Lássuk csak: hol találkozhatunk olyan információval, amit számítógépek dolgoznak fel? Bárhol. Tőzsdéken. Repülőkön. Telekommunikációs rendszerekben. Egy ország energiaellátását biztosító rendszerekben. Fontos adatbázisokban. Na, itt az információt a számítógépes rendszerek többek között arra is felhasználják, hogy komoly döntéseket hozzanak. Senki sem akarja, hogy ezek rossz döntések legyenek, ez ugyanis komoly károkat is okozhatna.

Az információ sérülését otthon is el akarjuk kerülni. Mérhető kárt kevesebbet, de bosszúságot annál többet okozhat, ha például egy fontos dokumentum, a családi fotóalbum, a kedvenc sorozatod, esetleg az operációs rendszer sérül.

Egy akármilyen program vagy operációs írásánál a programozók számítanak bármilyen szóba jöhető hibára, és ha az bekövetkezik, akkor a program már eleve tudja, hogy mit kell tenni. (Pl. más módon próbálkozhat a probléma megoldásával; újra kiadhatja a parancsot, hátha sikerül; vagy legegyszerűbb esetben dobhat egy hibaüzenetet a felhasználónak, és felfüggesztheti a parancs végrehajtását).

Ha viszont egy program (vagy az oprendszer, de ez is csak program) írásánál nem számítottak egy hibára, nincs beprogramozva az, hogy mit kell tenni, akkor két dolog történhetne. Az első, hogy továbbműködik a program az esetlegesen hibás adatokkal – ezt nem szokás megkockáztatni. A második dolog, ami általában történni is szokott: vészleállást hajt végre a rendszer, tehát az információt védendő semmilyen további parancsot nem hajt végre. (Azért veszélyes több parancs teljesítése, mert a parancsok végrehajtásának része vagy kifejezett célja lehetne valamilyen adat módosítása. Legfeljebb azt jegyzi fel egy hibajelentésben, hogy hol milyen hiba keletkezett.) A továbbiakban csak erről az esetről – az összeomlásról, vészleállásról – fogok írni, az előbbi ugyanis – hogy a programozónak miylen hibákra kell számítania -, nem meglepő módon programozástechnikai kérdés.

Összeomlás

Vegyük elő megint a korábbi ábrát arról, egy operációs rendszer hogyan épül fel.

Itt lesznek igazán fontosak a nyilakkal jelölt függőségi viszonyok. Nem nehéz belátni, hogy ha a rendszer egy adott eleme összeomlik, akkor a tőle függő többi elemnek sincs sok választása; azok se működhetnek tovább. Az összeomlott elemtől független részek viszont az operációs rendszerek felépítéséből adódóan fennakadás nélkül dolgozhatnak tovább.

Ha a hardverek közül megy tönkre valami, akkor nyilván minden tönkremegy, ami azt használja. Ha az egérről van szó, még nem katasztrofális a helyzet (csak a kurzor nem fog működni), de ha mondjuk a processzor vagy a memória megy tönkre, akkor már minden mindegy. Ugyanakkor ez tud a legveszélyesebb hibafajta lenni, mert egy hardverben bekövetkező hibát sokkal nehezebb észlelni, így itt lehetséges az, amit máshol vészleállással hárít el a rendszer – ép információ is megsérülhet.

A hardverek után a következő szint az operációs rendszer, annak is a veleje, a kernel. Technikailag ennek szerves részei bizonyos kritikus driverek is. Ha itt következik be egy végzetes hiba, akkor az egész számítógépnek vészleállást kell végrehajtania, mivel az operációs rendszer összes többi része és az összes program függ a kerneltől (mint ahogy a fenti ábra is mutatja). Ha történetesen Windows operációs rendszert használunk, akkor már legalábbis hallhattunk a kernel vészleállásának jelenségéről: úgy nevezik, hogy kék halál. A jelenség rendes neve “stop error”, azaz olyan hiba, ami leállást eredményez.

Aki ezt látja, adjon hálát az égnek / - netalántán a Bill Gatesnek -, / hogy a rendszer megharakirizte önmagát, / ahelyett, hogy megsértette volna más információját. //

Mint a nem túl barátságos hibaüzenet is megemlíti, a hiba legvalószínűbb oka valamilyen hardverben (driverben) keresendő. A frissen telepített dolgokhoz ilyenkor érdemes frissítéseket keresni, hátha már javítottak a hibát, ami a leállást okozta. A képen a konkrét hiba az SPCMDCON.SYS fájlban következett (ld. második bekezdés), a hiba típusa: “page fault in nonpaged area” vagy “0x50” (vagy 0x00000050) (ld. harmadik és utolsó előtti bekezdés). Ezeket, azt hogy “BSoD” (Blue Screen of Death) vagy “stop error” és az esetleges egyéb releváns infókat (előző nap telepített videokártya típusa például) a Google-be beírva van esélyünk arra, hogy megtudjuk a hiba okát, és mi rá a megoldás. [Ha a képen szereplő hiba adataira keresel rá, az derül ki, jelen cikk szerzőjét átverték, mert nem egy igazi kék halál képét adták oda neki a cikkhez.]

Ha a pluszszolgáltatásokban vagy az oda tartozó valamelyik driverben következik be hiba, akkor nem áll le az egész rendszer (nincs kék halál), csupán az összeomlott drivertől és pluszszolgáltatástól függő elemek állnak le. Vagy, ami még jobb: azoknak is csak azok a részei állnak le, amik az adott szolgáltatástól függnek, például nem tudsz nyomtatni, ha a központi nyomtatószolgáltatás ment gajra. Ilyenkor az operációs rendszer általában automatikusan megpróbálja újraindítani a hibás szolgáltatást, ami persze a további hibák ellen nem véd, de ha a hiba nem jelentkezik újra, akkor talán észre se veszed, hogy valami nem stimmelt.

Ha egy program omlik össze, annak még kisebb külső hatása van, mint egy akármilyen szolgáltatásnak, mert általában más program nem függ tőle. Ugyanakkor adatokat veszthetsz, ha az összeomlás előtt nem készült azokról egy mentés (másolat a merevlemezen, akár te készítetted, akár a program automatikusan). Windowson egy program összeomlásakor annyit láthatsz, hogy a program ablaka eltűnik, utána pedig a Windows megkérdezi, hogy szeretnél-e egy hibajelentést küldeni a Microsoftnak.

Fagyhalál

Egy másik fajta gyakori hiba a programokban, ha lefagynak. Ez akkor következik be, amikor a program egy parancs teljesítésére vár, de a parancs valamilyen okból csak nem akar teljesülni. Eközben a felhasználótól (vagy akárhonnan) érkező új parancsokra nem reagál a program. Természetesen erre is van programozástechnikai megoldás, de ha a programozó nem számított arra, hogy egy parancs nagyon sokáig vagy egyáltalán nem teljesül, akkor ezt ismételten a felhasználó fogja megtapasztalni.

Két dolgot lehet ilyenkor tenni: vagy várunk a parancs végrehajtására (hátha), vagy leállítjuk a parancs végrehajtását – és a hibákhoz hasonló szükségszerűség miatt a programot. Ez utóbbit csinálják reflexszerűen a felhasználók az ablak jobb felső sarkában való kikapcsológombra (X-re) kattintva, de ekkor az operációs rendszer még vár egy kicsit (hátha nem lesz rá szükség), mielőtt lelőné a programot. Ha nem akarunk várni, akkor saját kezünkkel azonnal is lelőhetjük a programokat. Ehhez a Feladatkezelőt kell megnyitni (Windowson Ctrl+Shift+Esc vagy a tálcára jobb kattintás után megnyitható). A Feladatkezelőben a Folyamatok című lapon vannak listázva az éppen futó programok – itt te vagy élet és halál ura, már ami a programokat illeti.

Persze ha az operációs rendszer fagy le, akkor a folyamat leállítása annyit tesz, hogy áramtalanítod a gépet.

Kísérlet a feladatkezelővel: Állítsd le az összes explorer.exe néven futó folyamatot. Ez felelős többek között a Windows tálcájának a megjelenítéséért, így az rögtön el is tűnik, amikor a hozzá tartozó folyamatot leállítottad. Ugyanakkora láthatjuk, hogy tálca csak egy pluszszolgáltatás része, más baja nem lesz a rendszernek. Újraindítani a tálcát úgy tudod, hogy: Feladatkezelő | Fájl menü | Új feladat… (Futtatás) | Beírod, hogy: “explorer.exe”; és ütsz egy Entert.

Ez a rövid kísérlet mutatja azt, hogy az operációs rendszer nem egy nagy program, hanem több kisebből tevődik össze, és ezek közül egy-kettőnek az elvesztését is elbírja a rendszer. Látjuk azt is, hogy a pluszszolgáltatások ugyanolyan programként futnak és ugyanúgy leállíthatók, elindíthatók, mint a klasszikus értelemben vett programok.

***

A következő részben arról lesz szó, hogy milyen veszélyek fenyegetnek egy számítógépet, és hogyan lehet biztonságban tudni magunkat: Biztonság – a gépeden →

Leave a Comment

Your email address will not be published. Required fields are marked *