nejasnosti kolem volani jadra

Martin Macok macok na kocour.ms.mff.cuni.cz
Úterý Červen 15 14:39:01 CEST 1999


On Tue, 15 Jun 1999, Bashar wrote:

> Pavel Kankovsky wrote:
> > 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, 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).
> > 
> 
> 1) Chapu, ale zajimalo by me, jaky podnet dovede prerusit systemove
> volani
> a jestli se pri tomto preruseni bere ohled na stav procesu, ktery to
> volani vykonal (protoze kdyz proces zavola systemove volani je nejdrive
> ve
> stavu R a terpve potom se muze dostat do stavu jineho (jak/kdy?)).
> 
> 2) V pripade, ze se pri systemovem volani ceka na dokonceni I/O 
> (a prekroci se kvantum casu pridelene procesu) - jaky mechanizmus
> preda procesor jinemu procesu a co se deje s nedokoncenym volanim
> (kdo zavola scheduler)?

Takovy proces bude ve stavu S, to znamena, ze je zablokovan a ceka na ten
I/O a mezitim vesele jinej proces maka na procesoru ... az prijde I/O, tak
se prerusi ten makajici, odblokuje ten S a jede se dal.
Pokud by byl ve stavu D, tak mu casove kvantum nedojde, proste tam bude
viset, dokavad bude chtit (dokavad nedostane ten I/O)

Je to ono, co jste chtel vedet?

-- 
 -===========================<ISO-8859-2-compatible>=- 
 |           Martin Mačok                            |
 | email:  martin.macok na st.mff.cuni.cz               |
 | WWW:    http://kocour.ms.mff.cuni.cz/~macok/      |
 -===================================================-
 ... but Microsoft is today and Linux is tomorrow ...



Další informace o konferenci Linux