Razvan Deaconescu <[email protected]> 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 _______________________________________________ http://elf.cs.pub.ro/so/wiki/resurse/lista-discutii
