Subiectul multor articole, dar pe web un pic de articole pur practice. Despre ce fel de practică în discuție, veți afla citind acest articol. Cu toate acestea, doar o practică, nu putem face - dintr-o dată nu te-ai citit toate această teorie de masă gri, care pot fi găsite pe web.
Termenul „proces“ a apărut pentru prima dată în dezvoltarea sistemului de operare Multix și are un număr de definiții, care sunt utilizate în funcție de context. Procesul - este:- în etapa punerii în aplicare a programului
- „Obiect“, care este alocat timpul CPU
- asincron
- starea de performanță
- așteptați de stat
- stare de pregătire
Executie - este o stare activă, în care procesul dispune de toate resursele necesare. În această stare, procesul este executat în mod direct de către procesor.
În așteptare - o stare pasivă, în care procesul este blocat, acesta nu poate fi executat, pentru că el se așteaptă ca un eveniment, cum ar fi introducerea de date sau de a elibera dispozitivul dorit să-l.
Disponibilitatea - este, de asemenea, o stare pasivă, procesul este de asemenea blocat, dar în contrast cu așteptările statului, acesta nu este blocat din motive interne (după o așteptare pentru introducerea datelor - este o, problemă internă proces „privat“ - poate, de fapt, nu așteptați pentru introducerea de date și executate în mod liber - nici nu interferează), iar la exterior, dincolo de motivele de proces. Când procesul poate merge într-o stare de pregătire? Să presupunem că procesul nostru a fost efectuat înainte de introducerea datelor. Până în acel moment el a fost în stare de funcționare, apoi sa mutat într-o stare de repaus - el trebuie să aștepte până când vom introduce informațiile dorite pentru procesul. Apoi, procesul a fost pe cale de a merge într-o stare de împlinire, ca tot ce are nevoie de date deja introduse, dar nu a fost, din moment ce el nu este singurul proces în sistem, în timp ce el se afla în stare de repaus, „loc în soare“ sa ocupat - Procesor efectuează un alt proces. Apoi, procesul nostru nu au nici o alegere, ci pentru a merge la starea Ready: așteptați nimic pentru el, și el, de asemenea, efectuat nu se poate.
procesul poate continua numai în stare de funcționare de pregătire. În stare de funcționare nu poate fi decât un singur proces pentru fiecare procesor. Dacă aveți n-procesor mașină, sunteți în măsură să simultan efectua sunt procese n.
Din stadiul punerii în aplicare a procesului poate merge fie o stare de repaus sau o stare de pregătire. De ce procesul poate fi într-o stare de repaus, știm deja - el nevoie doar de date suplimentare sau este în așteptare pentru unele resurse, cum ar fi un dispozitiv sau un fișier. În starea de pregătire a procesului poate proceda, în cazul în care în momentul punerii sale în aplicare, timpul de executie cuantică „la stânga.“ Cu alte cuvinte, sistemul de operare are un program special - planificator, care asigură că toate procesele sunt efectuate timpul alocat. De exemplu, avem trei procese. Una dintre ele este în stare de funcționare. Celelalte două - într-o stare de pregătire. Programatorul monitorizează timpul de execuție a primului proces, în cazul în care „time-out“, programatorul pune procesul 1 în starea de așteptare, iar procesul de 2 - în stare de funcționare. Apoi, când timpul rezervat pentru executarea procesului de 2, se termină, procesul 2 este în starea Gata, și procesul de 3 - în stare de funcționare.
Modelul trei diagramă de stare este prezentată în figura 1.
Un model de mai complex - un model format din cinci state. În acest model, există două condiții suplimentare: procesul nașterii și procesul morții. Procesul de naștere - este o stare pasivă, atunci când nu există proces, dar este gata pentru apariția structurii procesului. Potrivit aforism: „nu este suficient pentru a găsi un loc bun, de asemenea, trebuie să jalona“, astfel că e momentul nașterii se întâmplă doar „zastolblenie“ din acest loc. proces de moarte - procesul în sine nu este, dar se poate întâmpla ca „locul“ lui, adică, structura rămâne în lista de procese. Astfel de procese sunt numite zobmi și despre ele vom discuta în acest articol.
cinci model de diagramă de stare este prezentată în Figura 2.
Următoarele operații pot fi efectuate asupra proceselor de:- Crearea unui proces - o tranziție de la nașterea la starea gata
- Distrugerea procesului - o tranziție de la stadiul punerii în aplicare a morții statului
- Procesul de recuperare - trecerea de la o stare de pregătire în starea de executare
- Schimbarea priorității unui proces - tranziția de la punerea în aplicare a alertă
- Blocarea procesului - trecerea la starea de așteptare a punerii în aplicare a statului
- Procesul de trezire - trecerea de la starea de așteptare la starea gata
- Pornirea procesului (sau alegere) - trecerea de la o stare de pregătire în starea de executare
- Atribuirea numele procesului
- Adăugați informații despre procesul în lista de procese
- Determina prioritatea unui proces
- Pentru a forma un bloc de control al proceselor
- Pentru a oferi un proces care avea nevoie de resurse
Procesul creează o ierarhie ca un copac. Cel mai strămoșul „principal“, adică procesul de picioare pe partea de sus a arborelui, este procesul de inițializare (PID = 1).
În opinia mea, teoria de mai sus este suficient pentru a merge la practica - și anume, „simt“ toate starea de proces. Desigur, nu am considerat apelurile sistem fork (), exec (), ieșire (), ucide () și multe altele, dar web suficiente informații cu privire la aceasta. Mai ales, ce putem spune despre aceste provocări puteți citi sistemul Linux ajutor prin introducerea bifurcație a comenzii. Cu toate acestea, există scris pe toate iubit limba engleză, astfel încât în transferul (dacă aveți nevoie de unul), încă mai trebuie să solicite asistență din WWW.
Pentru a monitoriza procesul vom folosi programul de top.
retragerea completă a programului, am tăiat de înțeles. Luați în considerare ordinea întreaga producție a programului. Prima linie a programului spune ora curentă, în timp ce sistemul (58 min), numărul de utilizatori înregistrați (conectare) (4 utilizatori), sistemul de încărcare (încărcare mediu) mediu total.
Notă. încărcare totală medie a sistemului se numește numărul mediu de procese în stare de execuție (R) sau starea de așteptare (D). Sarcina medie totală este măsurată la fiecare 1, 5 și 15 minute.
În a doua linie de ieșire programe de top a raportat că, în lista de procese sunt 52 de proces, 51 dintre ei dormind (stare de pregătire sau stand-by), 1 se efectuează (am doar 1 procesor) 0 0 procese zombie și procese de închidere.
În al treilea, rândurile cincea furnizează informații cu privire la utilizarea procesorului, utilizarea memoriei, și fișierul de paginare. Noi această informație nu este foarte interesat, asa ca du-te direct la masa de proces.
diverse informații de proces indicate în tabel. Suntem acum coloană interesați PID (ID-ul de proces), USER (utilizator care rulează procesul), STAT (stare de proces) și COMANDĂ (comandă care a fost introdus pentru a începe procesul).
coloană STAT poate conține următoarele valori:-
R - procesul se execută sau gata pentru a rula (starea de așteptare)
- D - în procesul de „vis fără limite“ - este în așteptare pentru disc I / O
- T - procesul este oprit (oprit) sau urmărite debugger
- S - procesul în starea de așteptare (de dormit)
- Z - proces-zobmi
- E - proces cu un frumos valoare negativă
- N - un proces cu valoare pozitivă frumos (frumos pentru echipa, vom discuta mai târziu)
Asigurați-vă fișierul executabil chmod + x ./process și rulați-l ./process. Acum, du-te la o altă consolă (ALT + Fn) și introduceți -a comandă ps | proces grep. Veți vedea următoarea ieșire de ps:
Această concluzie este că procesul de identificare a atribuit nostru proces 4035. Acum, introduceți comanda de top -p 4035
Notă coloana Stare a procesului nostru. Acesta cuprinde o valoare R, ceea ce înseamnă că numărul de proces executat în prezent 4035.
Acum vom suspenda procesul nostru - T. stat Du-te la consola, care a lansat ./process și apăsați Ctrl + Z. Veți vedea un mesaj de oprit.
Acum, încercați să „acalmie“ procesul nostru. Pentru a face acest lucru, trebuie mai întâi „ucide“ l: ucide 4035. Apoi, adăugați la bucla în timp ce în linia de script-ul ./process 10m de somn, ceea ce înseamnă că procesul va dormi timp de 10 minute. După aceea, încă o dată, executați -a comanda ps | procesul de grep, pentru a afla PID-ul procesului, și apoi - de top echipa -p PID. Veți vedea în coloana Stare litera S, ceea ce înseamnă că procesul este într-o stare de repaus sau gata - pur și simplu pune „adormit.“
Pentru a compila acest program, avem nevoie de un compilator GCC:
Pentru cei care nu au instalat compilator, un program compilat este disponibil aici.
Odată ce programul este compilat, acesta rulați: ./zombie. Programul va afișa următoarele informații:
Amintiți-vă ultimul număr, și a comuta rapid la o altă consolă. Apoi intră în partea de sus de comandă -p 1148
Vedem că în lista de procese a apărut zombi 1 (Z) = STAT, care trăiesc mai mult de 10 secunde.
Noi am luat în considerare toate stările posibile ale procesului. Rămâne doar să ia în considerare comanda pentru a ridica prioritatea unui proces - o echipă bună. Ridicati prioritatea echipei este numai utilizatorul rădăcină prin introducerea unui coeficient de reducere corespunzătoare. Pentru a mări prioritatea trebuie să specifice un coeficient negativ, de exemplu, frumos proces -5