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