• Condiție. Stadiul executării procesului (funcționare, gata de execuție, suspendat, oprit, zombie).
• Identificatori. Fiecare proces are propriul identificator, precum și identificatorii utilizatorilor și grupurilor. ID-ul grupului este utilizat pentru a atribui drepturile asupra grupului de utilizatori la resurse.
• Schimbul de informații între procese. Sistemul de operare Linux este utilizează același mecanism de comunicare interprocese, la fel ca în sistemul de operare UNIX SVr4 descris în capitolul 6, „impas și foame.“
• Conexiuni. Fiecare proces conține conexiuni cu procese paralele cu acesta, cu procese conexe (cu care are un proces parental comun) și legături cu toate procesele copilului său.
• Timp și cronometre. Aceasta include timpul necesar creării procesului, precum și timpul de procesare al procesorului. Procese și, de asemenea, pot fi asociate cu cronometre interval (unul sau mai multe). Timerul de intervale este setat în proces folosind un apel sistem; După expirarea perioadei de timp, semnalul corespunzător este trimis la proces. Cronometrul poate fi creat pentru utilizare unică sau intermitentă.
• Sistemul de fișiere. Acesta conține indicii pentru toate fișierele deschise de acest proces.
• Memorie virtuală. Definește memoria virtuală alocată acestui proces.
• Contextul care depinde de procesor. Informații privind registrele și stiva, care este contextul acestui proces. În Fig. 4.18 arată starea procesului.
• Efectuarea. Această stare răspunde efectiv la două stări: procesul actual este fie executat, fie este gata de executat.
• Intreruptibil. Aceasta este starea de blocare în care procesul se așteaptă ca un eveniment să aibă loc, de exemplu, finalizarea unei operații I / O, eliberarea unei resurse sau a unui semnal dintr-un alt proces.
• Continuu. Aceasta este o stare de blocare de un fel diferit. Diferența sa față de cea anterioară este că într-o stare neîntreruptibilă procesul așteaptă în mod direct performanța unor condiții hardware, deci nu percepe nici un fel de semnale.
• Oprit. Procesul a fost oprit și poate fi continuat numai cu impactul corespunzător al unui alt proces. De exemplu, un proces care se află în starea de depanare poate intra într-o stare de oprire.
• Zombie. Procesul a fost reziliat, dar din anumite motive structura sa rămâne în tabelul proceselor.
În sistemul de operare Linux, se creează un nou proces prin copierea atributelor procesului curent. Un nou proces poate fi clonat; în timp ce resursele, cum ar fi fișiere, manipulatorii de semnal și memoria virtuală, sunt partajate. Dacă două procese utilizează aceeași memorie virtuală, ele funcționează ca și fire în cadrul aceluiași proces. Cu toate acestea, structurile de date nu sunt specificate separat pentru fluxuri. Deci, în sistemul de operare Linux, firele și procesele nu diferă.
REZUMAT, TERMENI CHEIE ȘI ÎNTREBĂRI DE CONTROL
În unele sisteme de operare, conceptele procesului și fluxului diferă; Primul dintre acestea se referă la proprietatea asupra resurselor, iar al doilea - la execuția programului. O astfel de abordare poate duce la o creștere a eficienței programului și este convenabilă în compilarea codului. Într-un sistem multi-filetat într-un singur proces, este posibil să se specifice mai multe fire. Pentru a face acest lucru, puteți utiliza fie fire la nivel de utilizator, fie fire la nivelul kernel-ului. Fluxurilor la nivel de utilizator sunt invizibile pentru firele SIS de operare sunt create și gestionate fire de bibliotecă care se execută în procesul de spațiu utilizator. Fluxurile la nivel de utilizator sunt foarte eficiente, deoarece atunci când le comutați, nu este necesar să comutați modul de procesor. Cu toate acestea, într-un singur proces la un moment dat, poate fi executat doar un fir la nivelul utilizatorului. Dacă un astfel de flux este blocat, acest lucru va bloca întregul proces. Firele la nivelul kernel-ului sunt fire care sunt controlate de kernel. Deoarece one-Kie fluxuri recunoscute de nucleu într-un sistem multiprocesor poate fi efectuat mai multe fluxuri paralele ale aceluiași proces, iar blocarea fluxului nu duce la blocarea procesului. Cu toate acestea, pentru a comuta firele la nivelul kernel-ului, trebuie să comutați modul de procesor.
Simularea multiprocesării este o metodă de organizare a unui sistem multiprocesor, în care fiecare proces sau fir (inclusiv procesul de kernel) poate fi executat pe orice procesor. În legătură cu utilizarea unei arhitecturi simetrice multiprocesoare care oferă, în condiții egale, o performanță mai mare decât un sistem uniprocesor, apar noi aspecte ale arhitecturii sistemelor de operare.
În ultimii ani, un mare interes este dezvoltarea de sisteme de operare cu microkernel. În forma sa pură, sistemul de operare cu microkernel se bazează pe un microkernel foarte mic care rulează în mod kernel și efectuează numai cele mai importante și esențiale funcții ale sistemului de operare. celelalte funcții ale acesteia sunt puse în aplicare în așa fel încât să ruleze în modul de utilizator, aplicarea microkernel numai pentru serviciile esențiale. Designul folosind microkernelul facilitează implementarea flexibilă și modulară; dar în același timp există probleme de performanță.
Termeni cheie țintă facilitează microkernel flux de proces multiprocesare simetrica multithreading flux polzovatelskom- la nivel de prelucrare a sistemului de operare monolitic de flux la nivel de kernel
4.1. În tabel. 3.5 afișează elementele tipice care apar în blocul de control al sistemului de operare în care nu sunt folosite fire. Care dintre ele ar trebui să fie atribuite blocului de control al debitului și care dintre ele se află în blocul de control al procesului în sistemul cu mai multe șuruburi?
4.2. Afișează motivele pentru care fluxurile de comutare sunt mai ieftine decât procesele de comutare.
4.3. Denumiți două caracteristici diferite și potențial independente conținute în conceptul procesului.
4.4. Dați patru exemple generale de utilizare a firelor într-un sistem multiprocesor cu un singur utilizator.
4.5. Ce resurse sunt partajate în mod obișnuit de toate firele de proces?
4.6. Afișează cele trei beneficii ale firelor la nivel de utilizator pe firele de la nivelul kernel-ului.
4.7. Dați două dezavantaje ale firelor la nivel de utilizator în comparație cu firele de la nivelul kernel-ului.
4.8. Dați o scurtă descriere a diferitelor arhitecturi prezentate în Fig. 4.8.
4.9. Listează principalele caracteristici ale arhitecturii sistemului de operare pentru o mașină multiprocesor.
4.10. Oferiți exemple de servicii și funcții care apar într-un sistem tipic de operare monolit care ar putea fi implementat sub formă de subsisteme externe într-un sistem de operare cu microcore.
4.11. Denumiți șapte avantaje potențiale ale arhitecturii sistemului de operare cu un microkernel, comparativ cu un sistem de operare monolit.
4.12 Explicați care sunt dezavantajele potențiale ale sistemului de operare cu microkernelul asociat performanței acestuia.
4.13. Denumiți trei funcții care pot fi incluse chiar și în sistemul de operare cu cel mai mic microkernel.
4.14. Denumiți forma principală a schimbului de informații între procesele din sistemul de operare cu un microkernel.
[MUKH96] discută aspecte legate de arhitectura sistemelor de operare pentru mașinile multiprocesoare. În [SNAR97] conține cinci articole care se referă la direcțiile moderne de dezvoltare a sistemelor de operare multiprocesor. O discuție interesantă despre principiile arhitecturii microkernel poate fi găsită în [LIED95] și [LIED96]; a doua ediție se concentrează asupra problemelor de productivitate.
LEWI96 Lewis B.y Berg D. Thread Primer. - Râul Saddle Up, NJ: Prentice
LIED95 Liedtke J. Despre construcția Ji-Kernel. - Procesele celei de-a cincisprezecea ani
4.1. Este de remarcat faptul că utilizarea de mai multe fire în același proces are următoarele avantaje: (1) crearea unui flux nou într-un proces existent necesită mai puțin deasupra capului, trecerea de la un fir de proces necesită costuri mai mici decât procese diferite de comutare fir?
4.2. Atunci când se compară firele la nivel de utilizator și firele la nivel de nucleu menționat că firele la nivel de utilizator dezavantaj constă în faptul că executarea blocurilor de apel de sistem nu numai că a cauzat fluxul, dar toate celelalte fluxuri ale procesului. De ce se întâmplă acest lucru?
a. Care sunt avantajele acestei abordări?
b. Dacă o astfel de modificare este implementată, cum ar trebui să se realizeze alocarea resurselor (memorie, fișiere etc.) la nivel de proces sau la nivel de flux?
4.4. Luați în considerare un mediu în care se realizează o cartografiere unu-la-unu între firele la nivel de utilizator și firele la nivel de kernel. Într-un astfel de sistem, una sau mai multe fire ale aceluiași proces poate produce apeluri de blocare a sistemului, în timp ce altele vor continua să execute. Explicați de ce pe o mașină cu un singur procesor într-un astfel de sistem, programele multiprocesor pot rula mai repede decât omologii lor cu un singur filet.
4.5. Dacă procesul este finalizat, dar unele dintre firele sale sunt încă în desfășurare, vor continua?
4.7. La un sistem multiprocesor cu 8 procesoare, sunt conectate 20 de dispozitive pe bandă. Sistemul primește un număr mare de sarcini și fiecare dintre ele necesită un maximum de 4 dispozitive de bandă pentru a fi finalizate. Să presupunem că fiecare loc de muncă începe să funcționeze cu cerința a numai trei dispozitive; a patra va fi cerută numai după o perioadă suficient de lungă și nu va fi folosită foarte mult. Să presupunem, de asemenea, că sursa sarcinilor este infinită.
a. Să presupunem că programatorul sistemului de operare nu pornește sarcina până când nu sunt disponibile patru dispozitive. La începutul sarcinii, îi sunt atribuite patru dispozitive, care sunt eliberate numai când sarcina este finalizată. Care este numărul maxim de lucrări care pot fi executate simultan într-un astfel de sistem? Care este numărul minim și maxim de dispozitive pe bandă care pot fi inactive cu această strategie?
b. Propune o strategie alternativă pentru creșterea utilizării dispozitivelor cu bandă, care, în același timp, evită blocările. Care este numărul maxim de locuri de muncă simultane? Care este limita cantității de dispozitive de bandă nefolositoare?
4.8. În descrierea stărilor firelor de la nivelul utilizatorilor din sistemul de operare Solaris sa spus că fluxul la nivel de utilizator poate da controlul unui alt fir cu aceeași prioritate. Este posibil să existe un thread cu o prioritate mai mare, gata de execuție în sistem, și, prin urmare, firul de execuție dă posibilitatea administrării firului cu aceeași prioritate sau mai mare?