[so] [Quiz] Cursuri 4 și 6
Razvan Deaconescu
razvan.deaconescu at cs.pub.ro
Tue Mar 27 21:37:56 EEST 2012
Razvan Deaconescu <razvan.deaconescu at cs.pub.ro> writes:
>> Când se poate preempta un proces pe un kernel preemptiv dar nu și pe un kernel non-preemptiv?
>> * când îi expiră cuanta în timp ce execută cod utilizator
>> * când îi expiră cuanta în timp ce execută cod kernel
>> * când efectuează o operație blocantă în timp ce execută cod utilizator
>> * când efectuează o operație blocantă în timp ce execută cod kernel
>
> Un kernel preemptiv rulează planificator preemptiv. Un kernel
> non-preemptiv rulează, în codul nucleul, planificator
> cooperativ. Atenție: când procesul rulează în user-space, planificatorul
> rămâne preemptiv indiferent de tipul nucleului.
>
> Există câteva condiții care fortează context switch:
> * unui proces îi expiră cuanta (necesită planificator preemptiv)
> * un proces ready devine prioritar procesului running (necesită
> planificator preemptiv)
> * procesul care rulează se blochează
> * procesul care rulează se termină
> * procesul care rulează cedează de bună voie procesorul (yield)
>
> Ultimele trei bullet-uri se pot întâmpla și pe un sistem cu planificator
> cooperativ.
>
> În cazul de față, fiind vorba de deosebiri strict la nivelul codului
> kernel, răspunsul corect este ultimul bullet "când efectuează o operație
> blocantă în timp ce execută cod kernel".
Scuze, am luat-o pe ulei. Era vorba ce se poate executa pe un kernel
preemptiv și nu pe cel non-preemptiv. Răspunsul corect e al doilea "când
îi expiră cuanta în timp ce execută cod kernel", așa cum a zis și
Irina.
Răzvan
More information about the so
mailing list