procesele de planificare
Deja sa ridicat întrebarea cu privire la coada de procese gata. Decizia cu privire la care datsleduyuschy timp de planificare felie protsessoraopredelyaet.
Planificarea proceselor în sistemul de operare este procesul de selecție - care va rula următoare, și cât timp va rula.
A nu se confunda cu comutare de context, care este pur și simplu mecanismul de transfer al controlului.
Schimbarea contextului nu este o operațiune de planificare, este o operațiune tehnică.
- are loc o întrerupere;
- Fluxul cauzează o excepție sau capcană (capcană);
- După aceea, este selectat celălalt flux.
Ie în timpul unui comutator de context trebuie să aleagă în mod clar cine să transfere controlul.
clase de planificatorii
- Batch - axat pe sarcini pe termen lung, care necesită resurse mari de calcul care nu necesită întreruperea frecventă. Ie implică procesarea de sarcini mari pachete mari, nu există nici o limită pentru durata.
- Interactiv - care vizează reducerea timpului de răspuns, și anume sistemul parea „simpatic“. abonat ordinară a sistemului pe PC - acest sistem interactiv, atunci când, ca răspuns la o acțiune de utilizator (cum ar fi mutarea mouse-ul), sistemul de operare face ceva. Și întotdeauna utilizatorul dorește răspunsul a venit cât mai repede posibil.
Principalul lucru pe care la sosirea în care cererea a fost primită cât mai repede posibil răspuns. Anchetă - este orice interacțiune cu computerul. - În timp real - clasa de specialitate axat pe un termen - termenul de finalizare a oricărei raboty.Glavnoe la o anumită acțiune este completată de o anumită dată, acest concept se numește termenul limită cererea .Postupayuschy trebuie să fie prelucrate nu mai mult de o anumită perioadă de exemplu vremeni.Klassichesky din Vietnam - gestionarea unui reactor nuclear, care a depășit timpul de răspuns va duce la o situație de urgență.
nivelurile de planificare
- Pe termen lung (dogosrochnoe) - decide care sunt adăugate noi sarcini (probleme conceptuale).
- Pe termen mediu - pentru a decide dacă să încărcați temporar programul pentru stocare secundar necesar (care este, în general, necesar).
- Pe termen scurt - decide care curge la următorul cuantum de timp CPU, și cât timp. Fluxurile de coordonate care rulează pe diferite procesoare.
Sarcina principală a proceselor de planificare în sistemul de operare este de a oferi un sistem de operare de înaltă performanță.
Există diferite valori, care evaluează performanța acestui. Aceste valori sunt adesea contradictorii.
Aceasta conceptual este necesară atunci când proiectarea planificator OS:
- Maximizați utilizarea procesorului (pentru el maksimalnorabotal sarcini)
- Maximiza randamentul (cereri chislovypolnennyh pe unitatea de timp)
- Reducerea la minimum a timpului mediu de răspuns (timpul mediu de procesare la cererea de răspuns otpodachi este finalizată)
- Pentru a minimiza timpul mediu de așteptare (medie vremyaot o cerere înainte de executarea acestuia)
- Minimizarea energiei (jouli per instrucțiune)
valorile de planificare
Următoarea ilustrație, ia în considerare un exemplu de valori de planificare.
ta - veniturile de proces (atunci când procesul este gata de execuție);
Tw - timp (care își petrece procesul în coada de așteptare a alerga) de așteptare;
Ts - Runtime CPU;
Tr - timpul de cifra de afaceri (timpul de așteptare totale si executie).
Schema 5 și 6 au primit în coadă proces de procese gata.
5 întârziat de 1-4 protsesov. Pentru al cincilea proces Tw - timpul de așteptare Ts - timpul rulării procesorului.
Timpul de procesare este timpul de la data primirii acesteia, până la punctul în care a finalizat efectuarea Tr = Tw + Ts.
În planificarea întrebarea principală rămâne: Cum pot alege ce procesul va rula mai mult și mai departe?
Următorii algoritmi procesului de planificare:
- FIFO - clasic - primul venit, primul-out
- Cel mai scurt de locuri de muncă următor. și anume selectează următoarea lucrare care necesită cel mai mic timp de finalizare
- Round-robin
- coadă de mai multe niveluri
- obratnoysvyazyu coadă multinivel
Luați în considerare numite algoritmi de planificare de proces.
În acest caz, noi o înțelegem ca un non-preemptive multi-tasking
- Procesele sunt planificate pe măsură ce sosesc;
- Termenul de execuție este ignorat (nimic);
- Alt proces cu puțin timp să aștepte Tr (capacitatea de reacție redusă a sistemului);
- Când procesul se mută într-o stare de pregătire, sa mutat la capătul cozii.
Să presupunem că există trei procese care sunt în același timp t = 0, în ordinea P1, P2, P3.
Fiecare dintre procesele există în momentul în care are nevoie să efectueze o parte a problemei. Această parte a problemei pe care el are nevoie pentru a efectua este numit cuvânt englezesc Burst. Trei procese diferite IT.
Apoi, timpul de așteptare
Timpul mediu de așteptare = 17
Dacă aceste trei au primit programul de proces pe altul, puteți reduce foarte mult timpul de răspuns al sistemului.
Procesele ajung in VA ASUMATI ordinul P2, P3, P1
Apoi, timpul de așteptare
Timpul mediu de așteptare = 3
Acesta a scăzut puternic datorită faptului că ne-am schimbat ordinea proceselor de lucru, a primit în același timp.
Pentru un exemplu simplu al datelor este ascuns toată puterea și importanța procesului de planificare în algoritmii sistemului de operare.
- El mai mult decât orice alt pentru solicitante procese lungi, timp CPU;
- Slaba utilizare a dispozitivelor I / O CPU și;
- Timpul mediu de așteptare variază foarte mult.
Cea mai scurtă de locuri de muncă următor
Suntem de acord, mă refer la politica de programare non-preemptive - cât de mult timp slot de proces care solicită, în stadiul actual, și.
Esența procesului - ar trebui să programați un proces care necesită cel mai puțin vremenidlya executarea sa, și anume, procesul care are cel mai scurt timp de procesare.
Este necesar să se estimeze timpul de procesare necesar pentru fiecare proces.
- Pentru locuri de muncă lot pe baza experienței anterioare sau de mână (nu există nici o garanție că din nou)
- Pentru locuri de muncă interactive pe baza timpului petrecut
De îndată ce vom obține valorile de proces, procesul scurt este plasat în coada de așteptare.
Cel mai scurt post realizare următoare deplasare
Există o variantă a deplasării cea mai scurtă dintre următoare.
Sortarea se face în momentul în care doriți ca procesul să completeze partea a problemei. În cazul în care este deplasat în procesul de punere în aplicare, în momentul în care el a plecat este numit rezidual.
Un timp rezidual pentru a sorta și decide ce proces pentru a rula următoare.
În consecință, acele procese care se execută pe CPU deplasat de proces, care este aproape de finalizare, și să-l lucreze pentru a pleca la el.
Aceste procese, care o lungă perioadă de timp de lucru, pleacă pentru mai târziu, și să le „într-o strânsă“. Logica în acest sens.
Generalizarea pe „cel mai scurt post viitoare“:
- Procesele care rulează pe procesorul este deja deplasat cel mai apropiat de finalizarea sarcinii;
- traficul în timp proces general mai puțin;
- Mai puțin CPU timp de așteptare.
prioritățile de planificare
Același algoritm cel mai scurt următoarea lucrare poate fi reprezentat ca o prioritate de planificare în cazul în care prioritatea - cel mai puțin timp.
Linia de jos: fiecare proces este asociat cu un număr care caracterizează determină prioritatea procesului. Este mai mic numărul, cu atât mai mare prioritate.
Starvatsii problemă - o problemă de „agățat“, „foame“ - în cazul în care procesul de rîia cu prioritate ridicată pentru a efectua o muncă foarte mult timp, toate celelalte procese vor „închide“ și așteptați.
timp CPU alocat cel mai mare proces de prioritate (preemptive sau non-preemptiv). Procesul de prioritate scăzută nu poate fi îndeplinită, înainte de a nu va veni toți.
Starvatsiya - poate fi reprezentat ca toți în picioare, în linie și care urca privilegiat din rândul său.
Se manifestă în algoritmul Raman. cereri de prioritate redusă nu pot fi îndeplinite.
Prezentați conceptul de „îmbătrânire“: ca trecerea timpului pentru a crește prioritatea unui proces.
Prioritate = Timpul estimat de execuție a procesorului - timpul de așteptare
Priorități - un instrument cu care aveți nevoie pentru a face procesul general de planificare eficientă.
Round-robin
Acest algoritm de planificare este un algoritm ciclic cu programarea preemptiv.
- Fiecare proces primește un cuantum fix de timp CPU (o unitate fixă de timp CPU).
- După expirarea procesului felie de timp este deplasată forțat și plasat în coada de așteptare gata pentru execuție.
- Procesul este întotdeauna planificat în același mod și fiecare proces primește în același interval de timp
- Nu este dificil de calculat că, dacă cuantumul de timp este q și n-procese în coada de așteptare, atunci fiecare va primi 1 / n din timp CPU, bucăți de maximum q
- Nici unul dintre procesele nu se așteaptă la mai mult de (n-1) * unități de timp q
- Dacă q este mare (obiectiv pentru ∞), atunci RR renaște în algoritmul FIFO;
- În cazul în care q este un mic (dar nu tinde la 0, în caz contrar PC-ul se va schimba doar procesele și nu se mai transporta nimic), atunci totul este bine;
- Nr starvatsii;
- Se pare că receptivitatea mare a sistemului;
- distribuirea egală a timpului;
- În cazul în care q este mai mică decât timpul necesar pentru schimbare de context, atunci managerul va fi ineficient.
procese intensive I / O (t.e.zablokirovannye în așteptarea I / O) nu sunt utilizate pe deplin slot de timp, astfel încât se obține procesele de avantaj CPU-intensive.
Există două procese P1 și P2
Procesul P1 este în așteptare pentru intrare / ieșire de la punctul (●), în timp ce I / O completeaza parte marcata de eclozare timpul procesului P1 va cheltui „pierdut“, el va fi exclus numai în punctul verde, la sfârșitul unei felii de timp.
P2 în acest moment se utilizează în mod activ CPU, de exemplu, el crede.
RR problemă care nu ia în considerare întârzierea. și timpul de funcționare utilă P1 se ridică la numai 10%.
coadă de mai multe niveluri
Aceasta a furnizat un număr de diferite cozi, de exemplu:
- Turn procesele interactive, adică cele care necesită timpi de răspuns mici;
- Dintre toate procesele de fundal care necesită o mulțime de vych.resursov, dar pentru care nu contează un timp de răspuns rapid (procesare lot), aveți nevoie de un povychislyat mult.
Fiecare coada este asociat cu un algoritm de planificare, așa că avem un „echilibru de putere“:
- în procesele interactive RR;
- în fundal - FIFO.
Dar, în cazul cozilor mai multe niveluri trebuie să-și planifice nu numai în fiecare etapă, dar, de asemenea, planificarea între exploziile. Get „irecuperabile“ Planificatorul poate oferi o mulțime de opțiuni:
1) Planificați o prioritate fixă
- Inițial, pentru a satisface toate procesele interactive, atunci toate fundal
- posibil starvatsiya
2) timpul de separare
Fiecare coada este alocată parte din timp CPU care poate planifica între procesele sale. De exemplu, 80% din timpul CPU pe procesele interactive prin RR, cu 20% peste valoarea initiala FIFO.
3 cu feedback) coadă multinivel
Multinivel coadă de feedback
pe baza de planificare a timpului petrecut, în cazul în care procesul a petrecut un anumit interval de timp, acesta este plasat într-un loc specific - coada reprogramat dinamic.
Multinivel coadă de feedback
În cazul în care se face destul de repede, apoi se încadrează în primele procese „rapid“.
Dacă este mijlocul unei run-time, în mijloc.
Dacă este consumatoare de timp resurse de calcul, acesta este plasat în ultima FIFO.
Ca urmare, procesele sunt în mod constant în mișcare între exploziile, astfel nu trebuie să privim înainte, în cazul în care pentru a pune procesul și să-l compare unele proprietăți.
Programatorul este definit de mai mulți parametri:
- Numărul de spire;
- Programarea algoritmi pentru fiecare coadă;
- Metoda utilizată pentru determinarea procesului de aderare la o anumită coadă.
EXEMPLUL multinivel coadă de feedback
Există trei etape:
- Q0 -RR cu un cuantum de timp t = 16ms
- Q1 -RR cu un cuantum de timp t = 32ms
- Q2 -FIFO
Noul proces este plasat la sfârșitul primei Q0 etapă
- Când procesul de această coadă primește timp CPU felie este alocat t = 16ms
- Dacă procesul durează mai mult, nu a returnat controlul sistemului de operare, acesta este deplasat forțat și plasat la capătul cozii Q1
- Când procesul de această coadă primește timp CPU felie este alocat t = 32ms
- Dacă procesul durează mai mult, acesta este deplasat și forțat plasat în Q2 coadă și se realizează conform FIFO până la sfârșitul anului