SHPORA.net :: PDA

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

Main
FAQ

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

a.reincarcarea proceselor

Procesul 0, swapper-ul, este singurul proces care încarcă procese în memorie din zonele de swap. La sfâr?itul inițializarii sistemului, swapper-ul intră într-o buclă infinită, în care singura sa sarcină este să facă încărcarea/evacuarea proceselor. El încearcă să încarce procese din zona de swap ?i evacuează procese dacă este nevoie de spațiu în memoria principală. Dacă nu are nici o sarcină de rezolvat, swapper-ul se pune în a?teptare(de exemplu, dacă nu există procese care pot fi alese pentru a fi încărcate) sau dacă este incapabil să facă altceva (nu există procese care pot fi alese pentru a fi evacuate); nucleul îl treze?te periodic, a?a cum vom vedea în continuare.Nucleul planifică execuția; swapper-ul se execută numai în modul kernel. Swapper-ul nu face apeluri de funcții sistem dar utilizează funcții interne nucleului pentru a executa transferul.Handler-ul (rutina de tratare) de ceas măsoară timpul cât fiecare proces a stat în memoria internă sau a fost evacuat. Când swapper-ul este trezit pentru a încărca procese, el verifică toate procesele care sunt în starea "ready-to-run" evacuate ?i selectează pe acela care a stat cel mai mult timp evacuat.
Dacă este destulă memorie liberă disponibilă, swapper-ul încarcă procesul în memorie, executând operațiile inverse evacuării: alocă memorie fizică, cite?te procesul din zona de swap ?i eliberează spațiul de swap.
Dacă swapper-ul a terminat cu succes încărcarea unui proces, el caută un alt proces în starea "ready to run" pentru a-l încărca în memorie si repetă procedura descrisă mai înainte. Poate apărea, în final, una din următoarele situații:
-nu există procese în starea "ready to run" pe dispozitivul de swap: swapper-ul trece în starea de a?teptare până când îl treze?te un proces din zona de swap sau până când nucleul evacuează un proces care este în starea "ready to run".
-swapper-ul găse?te un proces potrivit pentru a fi încărcat, dar sistemul nu contine memorie suficientă: swapper-ul încearcă să evacueze un alt proces, ?i, dacă reu?e?te, restartează algoritmul de încărcare, căutând un proces pentru a-l încărca în memorie.