nejasnosti kolem volani jadra
Martin `MJ' Mares
mj na ucw.cz
Pondělí Červen 14 23:19:43 CEST 1999
Zdravim,
> Proces, ktery se prave potuluje v jadre, se muze nachazet ve zhruba trech
> zajimavych stavech: R=running (bezici), S=interruptible sleep (prerusitelne
> cekani) a D=non-interruptible sleep (neprerusitelne cekani).
>
> V R neco dela,
Pripadne ceka na to, az bude volny procesor, aby mohl zacit neco delat :)
> v S a D na neco ceka (vetsinou na I/O), pricemz ve stavu S
> je schopen sve cekani prerusit, kdyz prijde nejaky signal a vratit se do
> userlandu, zatimco D jen tak prerusit nelze (vetsinou z toho duvodu, ze
> proces drzi nejaky zamek a bude vnejsim podnetum pristupny, az kdyz ho
> uvolni).
>
> Co se tyce pripustnych kombinaci techto stavu, tak dlouhou platilo, ze v
> jadre muze byt nejvyse jeden proces ve stavu R a vicemene libovolne mnoho
> ve stavu S nebo D, nicmene se zavedenim jemnejsiho zamykani datovych
> struktur jadra ve 2.2 uz muze za jistych okolnosti zaroven v jadre
> aktivne pobyvat vic procesu, zvlaste na SMP systemu, na uniprocesoru
> by to stejne nemelo valny smysl, protoze jen maloktera operace v jadre
> trva prilis dlouho, aniz by byla prolozena nejakym cekanim.
Presna pravidla jsou nasledujici:
(1) Na kazdem procesoru bezi v danem okamziku prave jeden z procesu
ve stavu "R" (nekdy to je pouze specialni idle task).
(2) Pokud je proces zrovna uvnitr jadra, muze dojit k prepnuti
_na_danem_procesoru_ pouze tehdy, kdyz o to explicitne pozada.
(3) Pokud proces uvnitr jadra neni, muze se jadro rozhodnout
o prepnuti kdykoliv.
Have a nice fortnight
--
Martin `MJ' Mares <mj na ucw.cz> http://atrey.karlin.mff.cuni.cz/~mj/
Faculty of Math and Physics, Charles University, Prague, Czech Rep., Earth
"A. G. Bell is alive and well in New York and still waiting for the dial tone."
Další informace o konferenci Linux