it-swarm-eu.dev

Co jsou přerušení softwaru a hardwaru a jak se zpracovávají?

Nejsem si jistý, jestli chápu pojem přerušení hardwaru a softwaru.

Pokud rozumím správně, účelem hardwarového přerušení je získat určitou pozornost CPU, část implementace multitaskingu CPU.

  1. Co potom přeruší hardware? Je to proces hardwarového ovladače?
  2. Pokud ano, kde běží proces hardwarového ovladače? Pokud běží na procesoru, pak nebude muset upoutat pozornost CPU hardwarovým přerušením, že? Tak to běží jinde?
  3. Přerušuje hardwarové přerušení CPU přímo nebo nejprve kontaktuje proces jádra a proces jádra pak kontaktuje/přerušuje CPU?

Na druhé straně si myslím, že účelem softwarového přerušení je, aby proces aktuálně běžící na CPU vyžadoval nějaké prostředky.

  1. Jaké jsou zdroje? Jsou všichni ve formě běžících procesů? Představují například proces ovladače procesoru a ovladače paměti procesory a paměťové prostředky? Představují proces ovladače I/O zařízení I/O prostředky? Jsou další spuštěné procesy, se kterými by proces rád komunikoval, také prostředky?
  2. Pokud ano, přeruší software nepřímo procesy v procesu (které představují zdroje) prostřednictvím procesu jádra? Je správné, že na rozdíl od hardwarového přerušení softwarové přerušení nikdy nepřeruší CPU, ale místo toho přeruší/kontaktuje proces jádra?
45
Tim

Hardwarové přerušení není ve skutečnosti součástí multitaskingu CPU, ale může jej řídit.

  1. Hardwarová přerušení jsou vydávána hardwarovými zařízeními, jako jsou disk, síťové karty, klávesnice, hodiny atd. Každé zařízení nebo sada zařízení bude mít svou vlastní linku IRQ (Interrupt ReQuest). Na základě IRQ CPU odešle požadavek příslušnému hardwarovému ovladači. (Hardwarové ovladače jsou obvykle podprogramy uvnitř jádra, nikoli samostatný proces.)

  2. Ovladač, který zpracovává přerušení, je spuštěn na CPU. Procesor je přerušen od toho, co dělal pro vyřizování přerušení, takže pro upoutání pozornosti CPU není třeba nic dalšího. Ve víceprocesorových systémech přerušení obvykle přeruší pouze jeden z CPU. (Ve speciálních případech mají mainframy hardwarové kanály, které mohou řešit více přerušení bez podpory hlavního CPU.)

  3. Hardwarové přerušení přímo přeruší CPU. To způsobí spuštění příslušného kódu v procesu jádra. U procesů, které zpracování nějakého času vyžadují, může kód přerušení umožnit, aby byl přerušen jinými hardwarovými přerušeními.

    V případě přerušení časovače může kód plánovače jádra pozastavit spuštěný proces a umožnit spuštění jiného procesu. Je to přítomnost plánovacího kódu, který umožňuje multitasking.

Přerušení softwaru jsou zpracovávána podobně jako přerušení hardwaru. Mohou však být generovány pouze procesy, které jsou aktuálně spuštěny.

  1. Softwarová přerušení jsou obvykle požadavky na I/O (vstup nebo výstup). Budou volat rutiny jádra, které naplánují výskyt V/V. U některých zařízení bude I/O provedeno okamžitě, ale I/O disk je obvykle zařazen do fronty a proveden později. V závislosti na tom, jak se provádí I/O, může být proces pozastaven, dokud se I/O nedokončí, což způsobí, že plánovač jádra vybere další spuštěný proces. Mezi procesy může nastat I/O a zpracování je obvykle naplánováno stejným způsobem jako I/O disku.

  2. Software přeruší pouze rozhovory s jádrem. Je zodpovědností jádra naplánovat jakékoli další procesy, které je třeba spustit. To by mohl být další proces na konci potrubí. Některá jádra umožňují, aby některé části ovladače zařízení existovaly v uživatelském prostoru, a jádro naplánuje tento proces tak, aby byl spuštěn podle potřeby.

    Je pravda, že softwarové přerušení nepřerušuje přímo CPU. Softwarové přerušení může vyvolat pouze kód, který je právě spuštěn. Přerušení je požadavek, aby jádro udělalo něco (obvykle I/O) pro běh procesu. Speciální softwarové přerušení je volání Yield, které požaduje plánovač jádra, aby zkontroloval, zda se může spustit nějaký jiný proces.

Reakce na komentář:

  1. Pro požadavky I/O jádro deleguje práci na příslušný ovladač jádra. Rutina může ve frontě I/O pro pozdější zpracování (společné pro disk I/O), nebo ji provést okamžitě, pokud je to možné. Frontu zpracovává ovladač, často při reakci na přerušení hardwaru. Po dokončení jednoho vstupu/výstupu se do zařízení odešle další položka ve frontě.

  2. Ano, přerušení softwaru se vyhne kroku hardwarové signalizace. Proces generující softwarový požadavek musí být aktuálně spuštěný proces, takže nepřerušují CPU. Přerušují však tok volacího kódu.

    Pokud hardware potřebuje, aby CPU něco udělal, způsobí to, že CPU přeruší svou pozornost na kód, který běží. CPU bude tlačit svůj aktuální stav na hromádku, aby se později mohl vrátit k tomu, co dělal. Přerušení by se mohlo zastavit: spuštěný program; kód jádra zpracovávající další přerušení; nebo nečinný proces.

57
BillThor