Procesele și firele de execuție în sistemele de operare (OS) au fost întotdeauna unele dintre subiectele mele preferate în informatică. Ele vă permit să înțelegeți, într-un mod mult mai profund, modul în care sistemul de operare gestionează programele în diferitele lor etape de execuție, abordează problemele legate de memorie și asigură securitatea izolată până la nivelul nucleului. Este pur și simplu al naibii de interesant!
Ideea de bază
Un proces este pur și simplu un program în execuție. Un program are strict un proces asociat cu el. În cazuri foarte rare este posibil ca acest lucru să nu fie întotdeauna adevărat (Google Chrome ca exemplu), dar acest lucru este adevărat în majoritatea timpului.
![](https://miro.medium.com/max/38/1*1RN7wINzLL1IbqrQWH30FQ.jpeg?q=20)
Care proces are diferite componente care îi permit să își îndeplinească sarcinile prevăzute. În special, stiva și heap-ul sunt folosite pentru alocarea variabilelor locale și, respectiv, a memoriei dinamice.
Există mai multe componente, dar este suficient să spunem că fiecare proces are nevoie de aceste componente pentru a funcționa ca program.
Monitorizarea proceselor din sistem
La un moment dat pot exista câteva sute sau mai puțin de procese care rulează. Uneori este util să vedeți informații detaliate despre acestea, mai ales dacă calculatorul dumneavoastră funcționează lent: deoarece anumite procese pot acapara memoria calculatorului sau procesorul. A fi capabil să le localizezi și ulterior să le distrugi este într-adevăr foarte util și poate fi realizat destul de ușor.
Dacă utilizați Windows, puteți deschide Task Manager și faceți clic pe fila Processes pentru a vedea aceste informații. Dacă rulați Linux sau o mașină bazată pe Unix, puteți rula o serie de comenzi diferite:
ps aux // this will display a list of processestop // detailed information about all processes, threads, memory hoggers and network packets
Cum gestionează sistemul de operare procesele
![](https://miro.medium.com/max/60/1*LdafsmbCdfR882Vtd1Kp0g.jpeg?q=20)
Un proces se poate afla într-o anumită stare în orice moment dat. Poate că tocmai a fost creat, așteaptă să ruleze, așteaptă să aibă acces la un dispozitiv de intrare/ieșire, a fost întrerupt de un alt proces etc. Pentru a asigura o productivitate maximă, sistemul de operare trebuie să înțeleagă starea tuturor acestor procese și să fie capabil să creeze în mod inteligent procese noi, să treacă de la unul la altul, să le întrerupă, să le suspende etc. la momentul potrivit.
![](https://miro.medium.com/max/36/1*kAg0WimV_ZBEPqR97hj2WA.jpeg?q=20)
Pentru a face acest lucru în mod eficient, sistemul de operare menține ceea ce se numește un bloc de control al procesului pentru fiecare proces. Acesta conține informații utile, cum ar fi starea actuală a procesului, următoarea instrucțiune care urmează să fie executată și dispozitivele alocate în prezent procesului.
Aceasta permite sistemului de operare să gestioneze în mod eficient diferite procese, prin salvarea stării actuale în PCB, comutarea între ele și reîncărcarea ulterioară a anumitor procese.
Cum comută sistemul de operare între diferite procese
![](https://miro.medium.com/max/60/1*usQZh0BLpOhsA09QPm9dhg.jpeg?q=20)
Comutarea de context se referă la activitatea specifică prin care un sistem de operare salvează starea unui proces în curs de desfășurare și îl pune în pauză pentru a executa un alt proces. Acesta trebuie să facă acest lucru într-un mod care să asigure că aceste procese nu intră în conflict și că procesul salvat poate fi reluat ulterior fără probleme. Acest lucru asigură o caracteristică cheie a sistemelor de operare: multitasking-ul. Diagrama arată modul în care PCB este utilizat pentru a salva starea procesului, pentru a rula un alt proces și apoi pentru a-l reîncărca și continua ulterior pe cel inițial.
.