Hang (výpočet) - Hang (computing)

Ve výpočtech dochází k zablokování nebo zamrznutí , když proces nebo systém přestane reagovat na vstupy . Typickým příkladem je situace, kdy grafické uživatelské rozhraní počítače (například Microsoft Windows) již nereaguje na uživatele, který píše na klávesnici nebo pohybuje myší. Termín pokrývá širokou škálu chování v klientech i na serverech a neomezuje se pouze na problémy s grafickým uživatelským rozhraním.

Zablokování má různé příčiny a příznaky, včetně vad softwaru nebo hardwaru , jako je nekonečná smyčka nebo dlouhodobý nepřerušitelný výpočet, vyčerpání prostředků ( mlácení ), nedostatečný výkon hardwaru ( škrcení ), externí události, jako je pomalá počítačová síť , nesprávná konfigurace, a problémy s kompatibilitou . Zásadním důvodem je obvykle vyčerpání prostředků: zdroje nezbytné pro provoz některé části systému nejsou k dispozici, protože jsou používány jinými procesy nebo prostě nedostatečné. Příčinou je často interakce více faktorů, díky nimž je „zavěšení“ spíše volným zastřešujícím výrazem než technickým.

Zablokování může být dočasné, pokud je způsobeno stavem, který se sám vyřeší, například pomalý hardware, nebo může být trvalé a vyžaduje ruční zásah, jako v případě hardwarové nebo softwarové logické chyby. Mnoho moderních operačních systémů poskytuje uživateli prostředky k nucenému ukončení zablokovaného programu bez restartu nebo odhlášení ; některé operační systémy, například operační systémy určené pro mobilní zařízení, to mohou provádět automaticky. Při závažnějších zablokováních ovlivňujících celý systém by jediným řešením mohlo být restartování počítače, obvykle cyklickým vypínáním pomocí tlačítka pro zapnutí / vypnutí nebo reset.

Hang se liší od selhání , při kterém je selhání okamžité a nesouvisí s odezvou vstupů.

Multitasking

V multitaskingovém operačním systému je možné, že se jednotlivý proces nebo vlákno zasekne, například blokování zdroje nebo vstup do nekonečné smyčky, i když se účinek na celkový systém výrazně liší. V kooperativním multitaskingovém systému jakékoli vlákno, které se zasekne, aniž by se vzdalo, zablokuje systém, protože se bude klínovat jako běžící vlákno a zabrání spuštění dalších vláken.

Naproti tomu moderní operační systémy používají především preemptivní multitasking , jako je například systém Windows 2000 a jeho následníků, stejně jako Linux a Apple Inc ‚s MacOS . V těchto případech zaseknutí jediného vlákna nemusí nutně zavěsit systém, protože operační systém jej předejde, když vyprší jeho časový úsek, což umožní spuštění jiného vlákna. Pokud vlákno přestane reagovat, může plánovač přepnout na jinou skupinu vzájemně závislých úkolů, takže všechny procesy nebudou reagovat. Uvízlé vlákno však bude i nadále spotřebovávat zdroje: alespoň záznam v plánování, a pokud je spuštěný (například zaseknutý v nekonečné smyčce), spotřebuje cykly procesoru a energii, když je naplánováno, což zpomalí systém, i když nezavěší to.

I při preventivním multitaskingu však může systém přestat reagovat a špatně chovaný nebo škodlivý úkol může zavěsit systém, a to především monopolizací nějakého jiného zdroje, například IO nebo paměti, i když čas procesoru nelze monopolizovat. Například proces, který blokuje souborový systém, systém často zablokuje.

Příčiny

Hardware může způsobit, že počítač přestane reagovat, buď proto, že je přerušovaný, nebo proto, že neodpovídá jinému hardwaru v počítači (k tomu může dojít při aktualizaci ). Hardware se také může časem poškodit v důsledku znečištění nebo poškození teplem.

K zablokování může dojít také kvůli skutečnosti, že programátor má nesprávné podmínky ukončení smyčky , nebo v kooperativním multitaskingovém operačním systému zapomíná na další úkoly. Jinak řečeno, mnoho zablokování souvisejících se softwarem je způsobeno vlákny čekajícími na událost, ke které nikdy nedojde. Toto je také známé jako nekonečná smyčka .

Další příčinou zablokování je spor v komunikaci mezi procesy . Jeden proces může poslat signál druhému procesu a poté zastavit provádění, dokud neobdrží odpověď. Pokud je druhý proces zaneprázdněn, bude signál nucen počkat, dokud se k němu proces nedostane. Pokud však byl druhý proces zaneprázdněn vysíláním signálu do prvního procesu, oba procesy by věčně počkaly, až ten druhý na signály zareaguje a nikdy neuvidí signál toho druhého (tato událost se označuje jako zablokování ). Pokud jsou procesy nepřerušitelné , zablokují se a musí být ukončeny. Pokud je alespoň jeden z procesů kritickým procesem jádra, může celý systém přestat reagovat a musí být restartován.

Počítač se může zdát viset, i když se ve skutečnosti jednoduše zpracovává velmi pomalu. To může být způsobeno příliš velkým počtem spuštěných programů najednou, nedostatkem paměti ( RAM ) nebo fragmentací paměti , pomalým hardwarovým přístupem (zejména ke vzdáleným zařízením), pomalými systémovými API atd. Může to být také způsobeno skrytými programy, které byly nainstalovány tajně, například spyware .

Řešení

V mnoha případech se programy mohou zdát zamrzlé, ale postupují pomalu a čekání na několik minut umožní dokončení úlohy.

Moderní operační systémy poskytují mechanismus pro ukončení zablokovaných procesů, například příkazem Unix kill , nebo prostřednictvím grafických prostředků, jako je tlačítko „end task“ ve Správci úloh ve Windows . Na starších systémech, jako jsou systémy se systémem MS-DOS , bylo v případě zablokování často nutné úplně restartovat dřívější verze Windows nebo Classic Mac OS .

Na integrovaných zařízeních, kde je omezena lidská interakce, může časovač watchdog restartovat počítač v případě zablokování.

Poznámky

Viz také

Reference