managementul proceselor

Pe tot parcursul existenței sale executarea procesului poate fi întrerupt în mod repetat și a fost reluată. Pentru a relua procesul, este necesar pentru a restabili starea mediului său de lucru. Situația mediului de operare afișează starea registrelor și a contorului de program, modul de procesor, indicii pentru a deschide fișiere, informații despre operațiunile în curs de IO, codurile de eroare ale apelurilor de sistem executate de proces, etc. Acest proces se numește context.

În plus, sistemul de operare, sunt necesare informații suplimentare pentru punerea în aplicare a proceselor de planificare: ID-ul de proces, starea de proces privind gradul de privilegiul datelor de proces, localizarea segmentului de cod și alte informații. Pe unele sisteme de operare (cum ar fi sistemele de operare UNIX), acest tip de informații utilizate de către sistemul de operare pentru procesele de planificare, numit mânerul de proces.

Mâner de proces în comparație cu contextul oferă mai multe informații în timp util, care ar trebui să fie procesele de planificare a subsistemului ușor accesibile. Contextul procesului oferă informații mai puțin relevante și este utilizat de sistemul de operare numai după decizia de a relua procesul întrerupt.

procesele Cozi reprezintă descriptori ai proceselor individuale în listele combinate. Astfel, fiecare mâner, printre altele, conține cel puțin un punct la altul descriptor, adiacent acestora în coada de așteptare. Această eșalonare face ușor pentru a le reordona, include și exclude procesele, procesul de transfer de la un stat la altul.

Codul va fi executat numai atunci când procesul va fi creat de sistemul de operare pentru ea. Crearea unui proces - aceasta înseamnă:

1. Crearea de structuri de informații care descriu procesul, care este, mânerul și contextul;

2. să includă descriptorul noul proces în coada proceselor gata;

3. Segmentul de cod procesul de descărcare în memorie sau spațiu de swap.

10. Managementul proceselor. Algoritmi proceselor de planificare.

Planificarea proces include următoarele sarcini:

1. Determinarea punctelor în timp pentru schimbarea procesului executabil;

2. Procesul de selecție pentru executarea cozii de procese gata;

3. Contextul de comutare „vechi“ și „noi“ procese.

Primele două probleme sunt rezolvate de către software-ul, în timp ce acesta din urmă este în mare parte de hardware.

Există mai multe procese diferite de algoritmi de planificare pentru rezolvarea problemei de mai sus în mod diferit, urmărind obiective diferite și să ofere calitate diferite de multiprogramming. Printre acest set de algoritmi ia în considerare încă două grupe de cele mai comune algoritmi: algoritmi bazați pe cuantizarea, și algoritmi bazate pe priorități.

În conformitate cu un algoritm bazat pe cuantizare, modificarea unui proces activ are loc atunci când:

1. Procesul a fost finalizat și au părăsit sistemul,

2. A apărut o eroare,

3. Procesul este mutat în starea de așteptare,

4. quantum epuizat de timp CPU alocat acestui proces.

Un proces care a epuizat cuantumul acesteia este setat în modul de așteptare și așteaptă ca el să fie dat un nou cuantum de timp CPU, și pentru a efectua, în conformitate cu o anumită regulă selectează un nou proces din coadă gata. Astfel, nici un proces durează o lungă perioadă de timp de procesare, astfel încât cuantizare este utilizat pe scară largă în sistemele de partajare a timpului.

procesele emise Quanta pot fi aceleași pentru toate procesele sau diferite. Quanta alocat un proces poate fi o valoare fixă ​​sau variază în diferite perioade ale procesului de viață. Procesele care nu sunt utilizate pe deplin cuantumul acestora alocate (de exemplu, grijă pentru a efectua operațiuni de intrare-ieșire) pot sau nu pot primi compensații ca un privilegiu în timpul întreținerii ulterioare. Differently se poate organiza toate procesele gata ciclic, în conformitate cu regula „primul venit - primul servit“ (FIFO) sau în conformitate cu regula „ultimul venit - primul servit“ (LIFO).

Un alt grup de algoritmi folosește termenul de „prioritate“ a procesului. Prioritatea - un număr care caracterizează gradul de proces privilegiu prin utilizarea resurselor informatice, cum ar fi timpul CPU: mai mare prioritate, cu atât mai mari beneficii. Prioritatea poate fi exprimată prin număr întreg sau o valoare pozitivă sau negativă fracționată. Cu cât privilegiul de proces, cu atât mai puțin timp, el va petrece în cozi. Prioritatea poate fi atribuită unei directive de către administratorul de sistem în funcție de importanța activității sau plata taxei, sau sistemul de operare se calculează în conformitate cu anumite reguli, acesta poate rămâne fixat pe toată durata de viață a procesului sau modificarea în timp, în conformitate cu o anumită lege. În acest din urmă caz, prioritățile sunt numite dinamice.

Există două tipuri de algoritmi prioritare: algoritmi care utilizează priorități relative, și algoritmi folosind priorități absolute.

În ambele cazuri, procesul de selecție pentru executarea cozii gata se face în același mod: selectați un proces care are cea mai mare prioritate. Differently rezolvat problema determinării trecerea timpului a procesului activ. În sistemele cu priorități relative ale procesului activ este executat atâta timp cât el nu părăsește procesorul de a merge într-o stare de așteptare. În sistemele cu prioritate absolută a procesului activ este întrerupt, cu condiția suplimentară că în cazul în care coada de procese gata apărut proces a cărui prioritate este mai mare proces activ de prioritate. În acest caz, procesul întrerupt continuă într-o stare de pregătire.

În multe sisteme de operare, algoritmi de planificare a construit folosind atât cuantizarea și prioritățile.

11. Managementul proceselor. Deplasarea și algoritmi de planificare non-preemptive.

Există două tipuri principale de procese, de planificare a procedurilor - preemptive și non-preemptive.

1. nepreemptivă multi-tasking - acesta este un mod de planificare, în care procesul activ se realizează atât timp cât el are, din proprie inițiativă, nu va renunța la controlul programatorului sistemului de operare la linia selectată de altă parte, gata pentru a efectua procesul.

2. multitasking - este un mod în care decizia de a schimba procesorul pentru a efectua același proces pentru executarea unui alt procedeu este preluat de planificatorul sistemului de operare, nu sarcina activă.

Diferența principală dintre opțiunile multitasking și non-preemptive este gradul de centralizare a mecanismului de sarcini de programare. Atunci când mecanismul de preemțiune programarea de activitate este în întregime axat pe sistemul de operare, programatorul scrie cererea, fara a avea grija că va rula în paralel cu alte sarcini. În acest caz, sistemul de operare îndeplinește următoarele funcții: definește momentul scoaterii din sarcina activă efectua, își amintește contextul său, alege din coada de sarcini gata și începe să-i mai jos pentru a efectua descărcarea de contextul său.

Atunci când un mecanism de non-preemptiv programarea multitasking este distribuit între programele de aplicație și sistemul. Programul de aplicație primește de control de la sistemul de operare în sine determină momentul finalizării următoarei sale iterație, și transferă controlul sistemului de operare prin orice apel de sistem, iar sistemul de operare generează o coadă de sarcină, și selectează, în conformitate cu unele algoritm (de exemplu, pe baza priorităților) următoarea problemă în executie. Un astfel de aranjament creează probleme, atât pentru utilizatori și dezvoltatori deopotrivă.

articole similare