Implementarea conceptului de proces secvențial într-un (descriptorii de activitate)

Implementarea conceptului de proces secvențial într-un (descriptorii de activitate)

Acasă | Despre noi | feedback-ul

Pentru a gestiona procesele, OS trebuie să aibă toate informațiile necesare despre aceste procese. În acest scop, este introdus un descriptor de proces pentru fiecare proces, un descriptor de sarcină care conține:







1. ID-ul procesului PID

2. Tipul (sau clasa) procesului care definește pentru supraveghetor anumite reguli de acordare a resurselor

3. Prioritatea procesului, conform căreia supraveghetorul furnizează resurse. Într-o clasă de servicii, procesele prioritare sunt în principal întreținute

4. Variabila stare de proces

6. informații despre resursele pe care le deține propriul proces

8. parametrii de pornire (instant și periodicitate)

Descriptorii sunt în permanență în RAM într-una din liste (cozi).

Supervizorul muta descriptorii de la o listă la alta, în funcție de starea procesului.

Pentru o stare de așteptare, organizați de obicei câte liste, deoarece există resurse care pot provoca o stare de așteptare.

Conceptul procesului a fost introdus pentru a implementa ideea de multiprogramare.

Dar procesele în sine pot fi împărțite într-o serie de sarcini care pot fi realizate în paralel. Astfel de subprocese sunt numite filete filetate.

Multithreading este eficientă în special pentru executarea aplicațiilor distribuite.

Când manipulați fire, numai contextul sarcinii se schimbă.

Fiecare fir este strict secvențial și are propriul contor de software și stivă. Fluxurile au aceleași schimbări globale.

Între fluxuri nu există o protecție completă.

Pentru a organiza în mod eficient funcționarea paralelă a proceselor și firelor, arhitectura procesorului modern include o capacitate specială de a lucra cu descriptori. Pentru aceasta, se introduce conceptul de "sarcină", ​​care combină fluxul și procesul.

Descriptorul este construit atât pentru filete, cât și pentru procese. Diferența este că descriptorul de fișiere stochează numai contextul sarcinilor care sunt suspendate și mânerul procesului conține câmpuri suplimentare care descriu resursele alocate acestui proces. Aceste informații sunt stocate într-un registru TSR special.

Întreruperea este un mecanism care permite coordonarea funcționării paralele a dispozitivelor individuale ale sistemului informatic și reacționarea la stările speciale care apar în timpul funcționării procesorului.

astfel O întrerupere este un transfer forțat de control dintr-un program care rulează către un sistem (și prin acesta către o rutină de serviciu de întrerupere) care apare atunci când are loc un anumit eveniment.

Ideea întreruperilor a fost propusă la mijlocul anilor cincizeci. Întreruperea a fost creată pentru a implementa un mod de funcționare asincron și a paraleliza funcționarea dispozitivelor individuale în sistemul informatic.







Mecanismul de întrerupere este implementat de hardware și software. În arhitecturi diferite, o întrerupere implică inevitabil o schimbare în ordinea în care instrucțiunile sunt executate de procesor.

Mecanismul de procesare a întreruperilor, indiferent de arhitectura sistemului informatic, include următoarele elemente:

1. stabilirea faptului de întrerupere (recepția semnalului și identificarea întreruperii)

4. Salvați informații despre programul întrerupt, care nu a putut fi salvat în al doilea pas prin utilizarea acțiunilor hardware.

5. Întreruperea manipulării

6. Restaurarea informațiilor referitoare la procesul întrerupt (pasul opus celui de-al patrulea)

7. Întoarceți-vă la programul întrerupt.

Pașii 1-3 sunt implementați în hardware, iar pașii 4-7 sunt programați.

1. Recunoașterea sau clasificarea unei întreruperi.

2. Transferați controlul la dispozitivul de tratare a întreruperilor corespunzător

3. Întoarcerea corectă la programul întrerupt

2. De la un dispozitiv de intrare / ieșire externă

3. În caz de tulburări de alimentație

4. Din panoul operatorului

5. De la un alt proces sau alt sistem de calcul

O întrerupere internă este asociată, de exemplu, cu funcționarea procesorului

2. Dacă există o operație în câmpul de cod care nu implică o combinație binară

3. când se împarte cu zero,

4. La depășirea sau dispariția ordinii

5. Dacă există erori de paritate și erori în funcționarea diferitelor dispozitive

Uneori o întrerupere este atribuită supraveghetorului sistemului de operare.

Există de fapt o întrerupere de software care apare pe comanda corespunzătoare din program.

Dacă mai multe întreruperi apar simultan, una dintre ele este selectată pe baza priorităților atribuite fiecărei întreruperi.

În ordinea descrescătoare a priorității:

1. Controlul procesorului

2. Cronometrul de sistem

3. Întrerupere de la un dispozitiv extern (discuri magnetice, echipamente de rețea, terminale)

4. întreruperea software-ului.

Contabilitatea prioritară poate fi implementată în hardware sau software utilizând diverse discipline de servicii de întrerupere.

Prezența unui semnal de întrerupere nu trebuie să întrerupă executarea programului. În acest scop, au fost create facilitățile de protecție pentru întreruperi:

1. Dezactivarea completă a sistemului de întrerupere

2. Mascarea / dezactivarea semnalelor individuale de întrerupere

Operațiile de întrerupere se efectuează de obicei numai după terminarea comenzii curente.

Controlul software al registrelor speciale (măști) permite implementarea diferitelor discipline de întreținere.

1. cu priorități relative. așa-numitul Serviciul nu este întrerupt, chiar dacă există o cerere cu o prioritate mai mare. După ce cererea este întreținută, cererea cu cea mai mare prioritate este servită. Masca este suprapusă pe toate semnalele principale de întrerupere sau sistemul de întrerupere este dezactivat.

2. cu priorități absolute. și anume o întrerupere cu cea mai mare prioritate este întotdeauna întreținută. Întreruperile de prioritate inferioară sunt mascate în timpul procesării întreruperilor.

3. În conformitate cu principiul stiva (primul venit - ultimul out), adică solicitările cu o prioritate mai mică pot anula întreruperea manipulării cu o prioritate mai mare. Pentru aceasta, nu se suprapun măști și sistemul de întrerupere nu este dezactivat.

În sistemele de operare moderne, cauzele întreruperii sunt determinate de OS (supraveghetorul întreruperilor) și efectuează acțiunile necesare pentru această întrerupere și în această situație.

Supraveghetorul întreruperii stochează în descriptorul de sarcină curent valorile registrelor de lucru ale procesorului care determină contextul procesului de calcul întrerupt. Apoi, definește subrutina care trebuie să efectueze acțiunile asociate cu întreținerea cererii de întrerupere curentă, setând modul de manevrare a întreruperilor necesare. După executarea rutinei de întrerupere, controlul este transferat de către supraveghetor la modulul responsabil cu programarea sarcinilor. Și deja managerul de sarcini, în conformitate cu modul acceptat, distribuie timpul procesorului între procesele în execuție, restabilește contextul sarcinii, pe care se va decide să aloce timpul procesorului. astfel Nu există nici o întoarcere imediată la programul anterioară aborted direct de la rutina de serviciu de întrerupere în sine.







Trimiteți-le prietenilor: