[so] [Tema4][Linux] Testul 8

Irina Preșa irina.presa at gmail.com
Thu Apr 26 22:26:22 EEST 2012


On Thu, Apr 26, 2012 at 10:15 PM, Mihail Costea
<mihail.costea2005 at gmail.com> 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


More information about the so mailing list