monolit stve poate fi numit Windows 95/98 sau Linux. Sistem de operare Windows kernel, nu putem schimba, nu sunt disponibile la codul sursă și nu au nici un program pentru a construi (compila) acest nucleu. Dar, în cazul Linux putem face pentru a construi un nucleu pe care trebuie să includă acele module software necesare și drivere pe care noi credem că este necesar să se includă în kernel (și nu accesa din kernel-ul).
întrebări de control și sarcini
Întrebări pentru a testa
1 Explicați care este diferența dintre concepte, cum ar fi de proces și sarcina.
2 Diagrama stărilor Desenați proces, explica toate posibilele tranzițiile de la un stat la altul.
3 explică înțelesul următorilor termeni: sarcina (sarcina), proces (proces), filet (filet filet). Cum acestea se referă la unul pe altul?
4 Pentru ce fiecare sarcină devine descriptorul corespunzător? Care domenii sunt de obicei găsite în descriptorul procesului (sarcina)? Ce este un „context sarcină“?
5 Explicați conceptul de resurse. De ce este conceptul de viață este una dintre cele fundamentale atunci când se analizează sistemul de operare? Ce tipuri și tipuri de resurse nu știi?
6 Ce crezi: cât de multe și ce liste de descriptori de sarcini pot fi în sistem? Pe ce ar trebui să depindă de acest număr?
7 Lista disciplina de întreruperi de serviciu; Explicați modul în care să pună în aplicare fiecare dintre aceste discipline.
8 În ce scop OS a introdus un modul special de sistem, numit uneori supervizor întrerupe?
9 Care este diferența dintre o reintrare (re-intrare) și module software re-neîntreruptibilă (re-enterable)? Cum sunt puse în aplicare?
10 Care este modulul software-ul preferat? De ce să nu creeze un sistem de operare multiprogramming, care nu ar fi modulele software preferate?
CAPITOLUL 2 Organizarea si memoria
Astfel, timpul CPU și memoria sunt principalele resurse în cazul calcul multi-program de.
RAM - este cea mai importantă resursă a oricărui sistem informatic, deoarece fără ea (ca, într-adevăr, și fără a CPU) nu poate efectua orice program. Am observat deja că memoria este o resursă comună. selectate Mecanismele de alocare a memoriei între executate de către un procesor este extrem de dependentă și de utilizare a sistemului, precum și de performanță și capabilități pe care programatorii pot utiliza pentru a crea propriile sale programe. Metodele de distribuire timp CPU este, de asemenea, afectează foarte mult viteza de calcule individuale și eficiența globală a sistemului de calcul.
Conceptul de proces (sarcină) știm deja. În acest capitol, nu vom încerca să se separe noțiunile de proces (de proces) și fluxul (firul), în schimb, folosind un termen generic ca sarcina (sarcina). În alte secțiuni, cu excepția cazului în care aceasta nu este prevăzută de sarcina sau de proces trebuie să fie înțeles, practic, unul și același lucru. Acum vom vorbi despre separarea resurselor CPU, astfel încât o sarcină pe termen poate include conceptul de fir (fir).
Astfel, sistemul de operare îndeplinește următoarele funcții legate de provocările de management:
♦ crearea și ștergerea sarcinilor;
♦ planificarea și programarea sarcinilor;
♦ sarcinile de sincronizare, oferindu-le cu mijloace de comunicare.
Crearea și ștergerea sarcinilor se realizează la cererea utilizatorului sau de sarcinile de sine. Sarcina poate crea o sarcină nouă. În același timp, între procesele sunt „legate“ relație. Generarea de sarcină numită „strămoș“, „părinte“, și a generat - „descendent“, „fiu“ sau „copil sarcini.“ „Strămoș“ poate suspenda sau elimina sarcinile copil, în timp ce „descendent“ nu poate controla „strămoș“.
Abordarea de bază pentru organizarea unei anumite metode de gestionare a proceselor, asigurând încărcare eficientă a resurselor sau de executare ce operațiuni alt scop este de a organiza procese ocherodey și resurse.
Este clar că alocarea resurselor afectează nevoile specifice ale sarcinilor pe care trebuie să fie efectuate în paralel. Cu alte cuvinte, s-ar putea întâlni situații când este imposibil să se aloce în mod eficient resursele, astfel încât acestea nu sunt inactive. De exemplu, toate procesele care rulează necesită un dispozitiv cu acces serial. Dar, din moment ce, după cum știm deja, aceasta nu poate fi distribuit între procesele de rulare paralele, procesele vor trebui să aștepte foarte mult timp pentru ocherodi lui. Astfel, indisponibilitatea unei resurse poate duce la faptul că o lungă perioadă de timp nu vor fi utilizate, precum și multe alte resurse.
Dacă luăm un set de procese care nu intră în concurență unele cu altele pentru resursele nepartajată în execuție paralelă, este probabil, procesele pot fi executate mai repede (din cauza lipsei de așteptări suplimentare), precum și resursele disponibile în sistem pentru a fi utilizat mai eficient. Deci, există o problemă de selecție a numeroase procese care, atunci când elucidare
Status închisă ei vor interfera cât mai puțin posibil din cauza resurselor disponibile în sistem. Această problemă se numește programarea proceselor de calcul.
Sarcina proceselor de planificare a avut loc un timp foarte lung - în primul lot în planificarea pachetului de operare de sarcini care trebuie să fie efectuate pe un computer și să utilizeze resursele în mod optim. În prezent, urgența acestei sarcini nu este atât de mare. În prim-plan o lungă perioadă de timp în afara problemei dinamice (sau pe termen scurt) de planificare, adică, alocarea mai eficientă a resurselor curente, care are loc în aproape fiecare eveniment. programarea dinamică sarcină 1 au fost numite de programare.
Este clar că planificarea este mult mai mică decât problema alocării resurselor curente între procesele deja rulează și firele. Diferența principală dintre planificatorii pe termen lung și pe termen scurt este de a lansa frecvență: Planificatorul pe termen scurt, de exemplu, poate fi rulat la fiecare 30 sau 100 ms, pe termen lung - o dată pentru câteva minute (sau mai des, mult depinde de durata totală a sarcinilor de utilizator soluție).
planificator pe termen lung decide care dintre procesele care sunt în ocherodi de intrare, ar trebui să fie transferat la coada proceselor gata în cazul unui deallocation de memorie. El selectează procesele de intrare ocherodi pentru a crea un amestec eterogen de multiprogramming. Acest lucru înseamnă că, în procesele ocherodi ar trebui să fie executabile - în proporții diferite - ca procese orientate de intrare / ieșire, și a proceselor de lucru orientate spre prioritate cu CPU.
planificator pe termen scurt decide care dintre sarcinile din ocherodi gata pentru a rula, care urmează să fie transferate pentru executare. Cele mai multe sisteme de operare moderne, cu care ne confruntăm, planificator pe termen lung este absent.
1 Din păcate, aici există o neconcordanță terminologică. De fapt, supervizor module responsabil pentru sarcinile de planificare, de multe ori se face referire ca planificatorii (sheduler). Dar, de fapt, vorbim despre același planificatorul de memorie sau despre orice alte unități responsabile pentru alocarea dinamică a resurselor, ține cont de faptul că aceste planificatoarele efectua programarea. În cele din urmă, denumite uneori planificarea expedierii pe termen scurt.
procesele și sarcinile de planificare și programare
În primul rând, trebuie remarcat faptul că atunci când se analizează strategiile de planificare, de regulă, există o chestiune de planificare pe termen scurt, care este, de expediere. Planificarea pe termen lung, așa cum am menționat deja, este selectarea proceselor de calcul care ar fi mai putin probabil de a concura pentru resursele sistemului informatic.
Strategia de planificare determină ce procese ne propunem pentru a efectua, în scopul de a atinge obiectivul. Un număr mare de diferite procese de politici de selecție, care au nevoie pentru a oferi procesorului. Printre ei, în primul rând, să includă următoarele strategii:
♦ posibil să se finalizeze calcul (proces de calcul), în aceeași ordine în care au fost începute;
♦ prefera procese mai scurte;
♦ oferă tuturor utilizatorilor (un proces de utilizator) aceleași servicii, inclusiv aceeași latență.
Când oamenii vorbesc despre strategia de serviciu, să păstreze întotdeauna în minte conceptul de proces, mai degrabă decât conceptul de problemă, deoarece procesul, după cum știm deja, poate consta din mai multe fire (sarcini).
Când oamenii vorbesc despre programarea, este întotdeauna să aibă în mod explicit sau implicit în minte conceptul de sarcini (fire). În cazul în care sistemul de operare nu acceptă mecanismul de fire, este posibil să se înlocuiască conceptul de problemă pe conceptul de proces. Deoarece acești termeni sunt adesea folosite în acest sens, vom fi obligați să utilizeze „procesul de“ termenul ca sinonim pentru termenul „activitate“.
Un număr mare de reguli (discipline de programare), sub care este format dintr-o listă (coadă) sarcini executabile. Există două clase largi de discipline de servicii - besprioritetnye și cu prioritate. Când besprioritetnom selecție sarcini de întreținere se face în
o ordine predeterminată, fără a lua în considerare importanța relativă a acestora, și timpul de serviciu. dreptul de preempțiune pentru a intra în starea de executare este supusă punerea în aplicare a sarcinilor prioritare ale disciplinelor individuale ale serviciului. Listă de discipline de servicii și clasificarea acestora este dată în Fig. 2.1.
Fig. 2.1. disciplina de expediere