toate informațiile necesare pentru a urmări un proces la comutare sunt păstrate într-un pachet de date numit bloc de control al procesului. Blocul de control al procesului conține de obicei:
- un număr de identificare care identifică procesul
- Pointeri către locațiile din program și datele sale în care a avut loc ultima prelucrare
- înregistrați conținutul
- stări ale diferitelor steaguri și comutatoare
- Pointeri către limitele superioare și inferioare ale memoriei necesare procesului
- o listă de fișiere deschise de proces
- prioritatea procesului
- starea tuturor elementelor de memorie/O dispozitive necesare procesului
fiecare proces are o stare asociată cu acesta. Multe procese nu consumă timp CPU până când nu primesc un fel de intrare. De exemplu, un proces ar putea aștepta o apăsare de tastă de la utilizator. În timp ce este în așteptare pentru apăsare de tastă, se folosește nici un timp CPU. În timp ce așteaptă, este „suspendat”. Când sosește apăsarea tastei, sistemul de Operare își schimbă starea. Când starea procesului se schimbă, de la în așteptare la activ, de exemplu, sau de la suspendat la rulare, informațiile din blocul de control al procesului trebuie utilizate ca datele din orice alt program pentru executarea directă a porțiunii de comutare a sarcinilor a sistemului de operare.
publicitate
acest schimb de proces se întâmplă fără interferențe directe ale utilizatorului și fiecare proces primește suficiente cicluri CPU pentru a-și îndeplini sarcina într-o perioadă rezonabilă de timp. Problemele pot începe dacă utilizatorul încearcă să aibă prea multe procese care funcționează în același timp. Sistemul de operare în sine necesită câteva cicluri CPU pentru a efectua salvarea și schimbarea tuturor registrelor, cozilor și stivelor proceselor de aplicare. Dacă sunt pornite suficiente procese și dacă sistemul de operare nu a fost proiectat cu atenție, sistemul poate începe să utilizeze marea majoritate a ciclurilor CPU disponibile pentru a schimba între procese, mai degrabă decât pentru a rula procese. Când se întâmplă acest lucru, se numește bătaie și, de obicei, necesită un fel de intervenție directă a utilizatorului pentru a opri procesele și a readuce ordinea în sistem.
Acest conținut nu este compatibil pe acest dispozitiv.
Acest conținut nu este compatibil pe acest dispozitiv.
o modalitate prin care proiectanții sistemelor de operare reduc șansele de bătaie este prin reducerea nevoii de noi procese pentru a îndeplini diverse sarcini. Unele sisteme de operare permit un” proces-lite”, numit fir, care poate face față tuturor lucrărilor intensive ale procesorului unui proces normal, dar, în general, nu se ocupă de diferitele tipuri de I/O și nu stabilește structuri care necesită blocul extins de control al procesului unui proces obișnuit. Un proces poate începe mai multe fire sau alte procese, dar un fir nu poate începe un proces.
până acum, toată programarea pe care am discutat-o a vizat un singur procesor. Într-un sistem cu două sau mai multe procesoare, sistemul de operare trebuie să împartă volumul de muncă între procesoare, încercând să echilibreze cerințele proceselor necesare cu ciclurile disponibile pe diferitele procesoare. Sistemele de operare asimetrice utilizează un procesor pentru propriile nevoi și împart procesele de aplicare între procesoarele rămase. Sistemele de operare simetrice se împart între diferitele procesoare, echilibrând cererea față de disponibilitatea procesorului chiar și atunci când sistemul de operare în sine este tot ceea ce rulează.