SHPORA.net :: PDA

Login:
đćăèńòđàöèÿ

Main
FAQ

ăóìàíèòàđíûć íàóêè
ćńòćńòâćííûć íàóêè
ìàòćìàòèśćńêèć íàóêè
òćőíèśćńêèć íàóêè
Search:
Title: | Body:

b.reincarcarea proces

Dacă swapper-ul nu găse?te nici un proces de evacuat ?i dacă nici unul dintre procesele care trebuiesc încărcate nu au stat evacuate cel puțin 2 secunde, atunci swapper-ul se pune în a?teptare pe evenimentul: dore?te să încarce un proces în memorie dar nu are loc suficient. Ceasul va trezi swapper-ul la fiecare o secundă. Nucleul treze?te de asemenea swapper-ul dacă un alt proces intră în starea de a?teptare, devenind astfel mai potrivit de a fi evacuat decât procesele examinate anterior de către swapp-er. Dacă swapper-ul evacuează un proces sau dacă se pune în a?teptare pentru că nu poate evacua un proces, el î?i va relua execuția cu începutul algoritmului, încercând să încarce un proces.
--Algoritmul swapper:
^algoritm swapper /*încarcă procesele executate, evacuează alte procese pentru a face loc*/
^intrare: nici una;
^ie?ire: nici una;
{
buclă:
^for (toate procesele evacuate care sunt "ready to run")
^alege procesul care a stat cel mai mult evacuat;
^if (nu există asemenea proces)
{
^sleep(eveniment: trebuie să încarce);
^salt la buclă;
}
^if (este loc suficient pentru proces în memoria principală)
{
^încarcă procesul;
^salt la buclă;
}
/*bucla2 */
^for (toate procesele încărcate în memoria principală, care nu sunt zombie ?i nu sunt
blocate în memorie)
{
^if (există un proces în a?teptare )
alege procesul pentru care valoarea prioritate+timp de rezidență este cea mai
mare;
^else (nu sunt procese care a?teaptă )
^alege procesul pentru care valoarea timp de rezidență+nice este cea mai mare:
}
^if (procesul ales nu este în a?teptare sau cerințele de rezidență nu sunt satisfăcute )
^sleep(eveniment : trebuie să incarce un proces);
^else
^evacuează procesul;
^salt la buclă; /*goto buclă 2 */