GNU/Linux >> Znalost Linux >  >> Linux

Linux – Jak linuxové jádro naplánuje CPU, mezi procesy/vlákny v uživatelském prostoru a úkoly/úlohy jádra?

Snažil jsem se pochopit linuxové řízení procesů a plánování. Vím, že plánovač naplánuje různé procesy na základě rozdělení podle priority/času. Existují však úlohy jádra (neuvádím systémová volání procesu, která proces převedou do režimu jádra), které je také nutné zpracovat (např.:plánovač/časovače nebo nějaký kód jádra, který běží věčně). Nechápal jsem, pokud plánovač naplánuje CPU pro různé procesy, jak jsou mezi tím obsluhovány úlohy jádra.

Přijatá odpověď:

Úlohy jádra, které nejsou spuštěny „v procesu“ (pro obsluhu systémového volání nebo přerušení), jsou samy o sobě zpracovávány jako samostatné procesy a můžete je vidět v ps výstup:

root         2  0.0  0.0      0     0 ?        S    Sep16   0:02 [kthreadd]
root         3  0.0  0.0      0     0 ?        I<   Sep16   0:00 [rcu_gp]
root         4  0.0  0.0      0     0 ?        I<   Sep16   0:00 [rcu_par_gp]
root         6  0.0  0.0      0     0 ?        I<   Sep16   0:00 [kworker/0:0H-kblockd]
root         8  0.0  0.0      0     0 ?        I<   Sep16   0:00 [mm_percpu_wq]
root         9  0.0  0.0      0     0 ?        S    Sep16   9:11 [ksoftirqd/0]
root        10  0.2  0.0      0     0 ?        I    Sep16 173:25 [rcu_sched]
root        11  0.0  0.0      0     0 ?        I    Sep16   0:00 [rcu_bh]
root        12  0.0  0.0      0     0 ?        S    Sep16   0:20 [migration/0]
root        14  0.0  0.0      0     0 ?        S    Sep16   0:00 [cpuhp/0]
root        15  0.0  0.0      0     0 ?        S    Sep16   0:00 [cpuhp/1]

Tyto procesy jsou naplánovány stejným způsobem jako procesy, které znáte blíže.

Běžným vzorem pro takové úkoly jsou pracovní fronty; dokumentace jádra je docela dobrá, doporučuji vám ji přečíst, pokud vás toto téma zajímá.


Linux
  1. Linux – rozdíl mezi uživatelským prostorem a prostorem jádra?

  2. Linux – Jak linuxové jádro zná hlavní a vedlejší čísla zařízení?

  3. Jak (správně) změnit UID a GID uživatele/skupiny v Linuxu

  1. Jak mmapovat vyrovnávací paměť linuxového jádra do uživatelského prostoru?

  2. Proč chránit linuxové jádro před uživatelem root?

  3. Jak si Linux zachovává kontrolu nad CPU na jednojádrovém stroji?

  1. Jak interně funguje copy_from_user z jádra Linuxu?

  2. Jak linuxové jádro určuje pořadí volání __init?

  3. Jak Linux přiděluje šířku pásma mezi procesy?