Ano, mluvíme každý jiným jazykem. Když napíšu kernel mode transition, tak mluvím o přechodu do kernel mode (což je překlad slovo od slova), tedy přechod mezi ring 3 a ring 0. Překvapuje mě, že se na to ptáte. A ano, je to drahá operace. "za běhu kódu můžeme utrhnout execution a provést context switch" znamená, že během provádění kódu (ve Windows možno za běhu user mode i kernel mode) dojde k interruptu od timeru, scheduler (plánovač) vyhodnotí, který thread poběží dále, provede obnovení jeho kontextu, a předá mu řízení (aka context switch).
Bez reentrance není multitasking? Mám za to, že třeba u Win16 nebylo reentrantní skoro nic. Souhlasím ale, že SMP by bez reentrance bylo velmi neefektivní (byť ho provést lze).
Ano, jádro musí
(i) statická data. Nicméně kde to jde, je lépe použít data lokální. A jak píšu, je to třeba dělat od začátku. Dále dopisovat cokoliv (v našem případě ochranu statických dat) do pár milionů řádek kódu je veliký problém, zvláště když každé opomenutí znamená riziko havárie kernelu.
Ohledně jazyků nesouhlasím. Skoro všechny problémy se spolehlivostí a (ne)bezpečností dnešního IT světa spočívají v tom, že je stávající kód napsán v C/C++. Programátoři chyby dělali, dělají, a dělat budou (je to jejich vlastnost, nedá se tomu zabránit). Pokud je složitost systémů "dostatečně" vysoká, nezbývá, než začít to dělat tak, aby se některé věci pokazit prostě nemohly.
No, protože ani nevím, jestli té době odpovíte, tak to snad stačilo ;)

