Andrei Epure <[email protected]> writes: > Ex 1 > Descrieți o situație în care un proces poate fi planificat într-un > kernel non-preemptiv în momentul în care execută cod kernel. > Cred că a răspuns Irina într-o discuție: atunci când îi expiră cuanta. > Se mai poate întâmpla în alt caz?
Confunzi :-) Întrebarea la care a răspuns Irina era legată de un kernel preemptiv, nu de unul non-preemptiv. Vezi în răspunsul de aici[1] cele 5 cauze pentru context switch. Doar ultimele trei sunt posibile pe un sistem cu nucleu non-preemptiv (adică planificator non-preemptiv/cooperativ) în nucleu. > Nu ar fi mai bună ca formulare "un proces poate fi întrerupt de > planificator" decât cea curentă? E incorectă exprimarea "proces poate fi întrerupt de planificator". Nu planificatorul îl întrerupe, ci o întrerupere care generează apoi rularea codului planificatorului. > De ce folosirea de priorități statice poate conduce la starvation? > > Dacă se folosesc cozi de priorități, atunci vor rula doar procesele cu > prioritate statică mare (indiferent de IO/CPU-boundness)? Da. Cât timp în coada cu prioritate "superioară" ai procese READY, cele din coada cu prioritate "inferioară" nu vor putea rula. > Ex 2 > Care din următoarele operații apelează planificatorul de procese/thread-uri? > citirea dintr-un fișier - fișierul e în memorie, se ia direct Conținutul fișierului este probabil să fie pe disc, nu în memorie – nu te poți baza pe sisteme de caching. Fișierul trebuie adus de pe disc. Operația este, deci, o operație blocantă și conduce la invocarea planificatorului. > deschiderea unui fișier - I/O - trece în coada waiting Da. > operația P pe un semafor - poate să apeleze, dacă semaforul este 0 Da. > operația V pe un semafor - nu Și aici este da. În momentul procesul curent face up/V, este posibil să trezească un proces care aștepta la down. Dacă acel proces este prioritar, va fi planificat în locul procesului curent – se invocă planificatorul. [1] http://news.gmane.org/gmane.education.region.romania.operating-systems Răzvan _______________________________________________ http://elf.cs.pub.ro/so/wiki/resurse/lista-discutii
