Am inteles. Deci chiar daca un proces X ii expira cuanta, el intra in READY inainte ca scheduler-ul sa fie rulat. Astfel daca el are prioritatea cea mai mare tot el va rula.
Am crezut ca daca e preemptat fiindca i-a expirat cuanta atunci el nu va mai fi considerat pentru alegerea din READY. 2012/4/26 Irina Preșa <[email protected]> > On Thu, Apr 26, 2012 at 10:15 PM, Mihail Costea > <[email protected]> wrote: > > Deci ar trebui ca P4 sa ruleze inainte de P2. > > > > Toata problema provine din faptul ca P1 da signal pe DEV0 (unde sunt > blocate > > P3 si P4) inainte ca P2 sa dea wait pe DEV1 (pe care va da P4 signal ceva > > mai incolo, moment in care imi pica testul). > > Cum ziceam mai sus, P1 nu ajunge să ruleze _deloc_, până nu dă P2 wait > pe DEV1. E și un comentariu acolo în test "no one should have ran > until now" (În fine, aproape nimeni, pentru că P3 și P4 apucă să > ruleze wait-urile prin care se blochează). Atâta timp cât și P1 și P2 > sunt available pentru rulat (adică READY), P1 nu va putea să ruleze în > locul lui P2 (deoarece P1 are prioritate mai mică). Chiar dacă P2 este > deplanificat când îi expiră cuanta, tot el este replanificat apoi, nu > P1. > > > Totul se intampla asa: > > 1. P2 executa ultimul exec, ii expira cuanta si trece in READY > Îi expiră cuanta, trece în READY, deci poate fi replanificat. > > 2. P1 executa signal pe DEV0, deblocheaza pe P3 si P4 care trec din > WAITING > > in READY (acum avem P2, P3 si P4 in READY) > NU. Dintre P1 și P2 va fi ales tot P2, că are prioritate mai mare. > Deci P1 nu apucă să ruleze în punctul ăsta. > > -- > Irina > _______________________________________________ > http://elf.cs.pub.ro/so/wiki/resurse/lista-discutii >
_______________________________________________ http://elf.cs.pub.ro/so/wiki/resurse/lista-discutii
