Blokování (výpočet) - Blocking (computing)

v výpočetní, a proces je instance počítačového programu, který se právě spouští. Proces vždy existuje přesně v jednom stav procesu. Proces, který je blokováno je ten, který na některé čeká událost, jako je a zdroj zpřístupnění nebo dokončení I / O provoz.[1]

V multitasking počítačový systém, individuální úkoly nebo vlákna exekuce, musí sdílet zdroje systému. Sdílené zdroje zahrnují: CPU, síť a síťová rozhraní, paměť a disk.

Když jeden úkol používá prostředek, obecně není možné nebo žádoucí, aby k němu měl přístup jiný úkol. Techniky vzájemné vyloučení slouží k zabránění tohoto souběžného použití. Když je druhý úkol blokován, nelze jej spustit, dokud první úkol nedokončí pomocí sdíleného prostředku.

Programovací jazyky a plánovací algoritmy jsou navrženy tak, aby minimalizovaly celkové blokování efektů. Proces, který blokuje, může zabránit postupu místních pracovních úkolů. V tomto případě je „blokování“ často považováno za nechtěné.[2] Místo toho však takové pracovní úkoly mohly být přiřazeny nezávislým procesům, kde zastavení jednoho nemá žádný nebo jen malý vliv na ostatní, protože plánování bude pokračovat. Příkladem je „blokování na a kanál "kde pasivní čekání na druhou část (bez dotazování nebo rotace) je součástí sémantiky kanálů.[3] Správně navržený některý z nich lze použít k implementaci reaktivních systémů.

Zablokování znamená, že procesy patologicky čekají na sebe v kruhu. Jako takový není přímo spojen s blokováním.

Jakmile dojde k události, na kterou proces čeká („je blokován“), postupuje se z blokovaného stavu do bezprostředního stavu, například spustitelný.

Viz také

Reference

  1. ^ Stallings, William (2004). Operační systémy: Vnitřnosti a principy návrhu (5. vydání). Prentice Hall.CS1 maint: ref = harv (odkaz)
  2. ^ C ++ a po roce 2012: Herb Sutter - souběžnost C ++
  3. ^ Projděte si souběžné vzory od Roba Pikea