Cunoștințe, prelegere, sisteme de operare

3.5. Arhitectura sistemului de operare

În cadrul sistemului de operare arhitectural se înțelege organizarea structurală și funcțională a sistemului de operare pe baza unui anumit set de module software. Sistemul de operare include module executabile și obiect de formate standard pentru acest sistem de operare, module de program de format special (de exemplu, încărcător OS, drivere I / O), fișiere de configurare, fișiere de documentație, module de sistem de ajutor etc.







O atenție mică nu a fost acordată arhitecturii sistemelor de operare timpurii: în primul rând, nimeni nu a avut experiență în dezvoltarea unor sisteme software mari, iar în al doilea rând, problema interdependenței și interacțiunii modulelor a fost subestimată. În același sistem monolit, aproape toate procedurile ar putea să se apeleze reciproc. Această lipsă de structură a fost incompatibilă cu extinderea sistemelor de operare. Prima versiune OS OS / 360 a fost creată de o echipă de 5.000 de oameni de peste 5 ani și conținea peste 1 milion de linii de cod. Dezvoltat într-o oarecare măsură mai târziu, sistemul de operare Multics conține, până în 1975, 20 de milioane de linii. A devenit clar faptul că dezvoltarea unor astfel de sisteme ar trebui să se desfășoare pe baza programării modulare.

Cele mai multe sisteme de operare moderne sunt sisteme modulare bine structurate capabile să dezvolte, să extindă și să transfere platforme noi. Nu există o singură arhitectură OS unificată, dar sunt cunoscute abordările universale pentru structurarea sistemului de operare. Abordările fundamentale universale importante pentru dezvoltarea arhitecturilor OS sunt [4. 13. 22]:

  • organizarea modulară;
  • redundanță funcțională;
  • selectivitatea funcțională;
  • universalitatea parametrică;
  • Conceptul unui sistem de calcul ierarhic multi-nivel, conform căruia sistemul de operare este reprezentat de o structură multistrat;
  • divizarea modulelor în 2 grupe de funcții - nucleul, modulele care execută funcțiile de bază ale sistemului de operare și modulele care execută funcțiile auxiliare ale sistemului de operare;
  • împărțirea modulelor OS în 2 grupe, în funcție de locația în memoria sistemului rezident al computerului, permanent în RAM, și cele de tranzit, încărcate în RAM numai pentru momentul reînnoirii funcțiilor lor;
  • implementarea a două moduri de funcționare a sistemului informatic - modul preferat (sau modul Kernel) sau modul supervizor, modul de utilizare sau modul sarcină;
  • limitarea funcțiilor kernelului (și, prin urmare, numărul de module kernel) la numărul minim de funcții esențiale necesare.

Primul sistem de operare a fost proiectat ca un sistem monolitic fără o structură clar definită (figura 3.4).

Pentru a construi sistemul monolitic trebuie să compileze toate procedurile individuale, și apoi de a le lega împreună într-un singur fișier obiect prin intermediul linker (exemple includ versiuni timpurii ale nucleului UNIX sau Novell NetWare). Fiecare procedură vede orice altă procedură (spre deosebire de o structură care conține module în care majoritatea informațiilor sunt locale pentru modul, procedurile modulului pot fi apelate numai prin puncte de intrare definite).

Cunoștințe, prelegere, sisteme de operare


Fig. 3.4. Varianta structurii unui sistem monolit

Cu toate acestea, chiar și astfel de sisteme monolitice pot fi ușor structurate. Atunci când accesați apelurile sistemelor acceptate de sistemul de operare, parametrii sunt plasați în locuri strict definite, cum ar fi registrele sau stivele. și apoi este executată o comandă de întrerupere specială, cunoscută sub numele de apel de kernel sau un apel de supervizor. Această comandă comută aparatul de la modul utilizator la modul kernel, numit și modul supervizor și transferă controlul OS. Apoi sistemul de operare verifică parametrii apelului pentru a determina ce apel de sistem ar trebui executat. După aceea, sistemul de operare indexează tabelul care conține referințele la proceduri și solicită procedura corespunzătoare.

O astfel de organizare a OS presupune următoarea structură [28]:

  • programul principal care solicită procedurile de serviciu solicitate;
  • un set de proceduri de service care implementează apelurile de sistem;
  • un set de utilități care servesc procedurile de service.

În acest model, există o procedură de service pentru fiecare apel sistem. Utilitățile îndeplinesc funcții necesare mai multor proceduri de service. Această diviziune a procedurilor în trei straturi este prezentată în figura 3.5.

Arhitectura sistemului de operare este considerată clasică, bazată pe conceptul de mașină ierarhică pe mai multe niveluri, kernel-ul preferat și modul de utilizare a modulelor de tranzit. Modulele kernel-ului îndeplinesc funcțiile de bază ale sistemului de operare: procesul de control. memorie, dispozitive I / O etc. Kernel-ul este nucleul sistemului de operare, fără de care este complet inoperant și nu poate executa nici una din funcțiile sale. Kernel-ul rezolvă sarcinile intrasisteme de organizare a procesului de calcul, care sunt inaccesibile aplicației.

Cunoștințe, prelegere, sisteme de operare







Fig. 3.5. Structura îmbunătățită a sistemului monolitic

O clasă specială de funcții de kernel servește pentru a sprijini aplicațiile, creând pentru ei un așa-numit mediu de aplicații software. Aplicațiile pot accesa kernelul cu cereri - apeluri de sistem - pentru a efectua anumite acțiuni, de exemplu deschiderea și citirea unui fișier. timpul de recepție a sistemului, afișarea informațiilor pe ecran etc. Funcțiile kernel-ului care pot fi invocate de aplicații formează un API (Application Programming Interface).

Pentru a asigura funcționarea OS la viteză mare, modulele de kernel (cel puțin o mare parte din ele) sunt rezidente și funcționează în modul kernel. Acest mod oferă, în primul rând, de siguranță a sistemului de operare de a interfera cu aplicații și, în al doilea rând, capacitatea de a lucra modulele de bază, cu un set complet de instrucțiuni mașină, permițând kernel-ul real pentru a efectua de gestionare a computerului, în special, procesorul switch-uri cu sarcina de sarcini, de gestionare a dispozitivelor I / O, alocarea și protecția memoriei etc.

Modulele rămase ale sistemului de operare nu sunt la fel de importante ca nucleul. funcții și sunt de tranzit. De exemplu, ar putea fi programe de arhivare a datelor, defragmentarea discurilor. compresie pe disc, curățarea discurilor etc.

Modulele auxiliare sunt de obicei împărțite în grupuri:

Aceste module de OS sunt concepute ca aplicații normale, accesând funcțiile kernelului prin apeluri de sistem și executând în modul utilizator. În acest mod, nu sunt permise să ruleze anumite comenzi care sunt legate de funcțiile kernelului OS (gestionarea resurselor, alocarea și protecția memoriei etc.).

În conceptul unei mașini ierarhice pe mai multe niveluri (mai multe straturi), structura sistemului de operare este reprezentată de o serie de straturi. Cu o astfel de organizație, fiecare strat servește stratului suprapus, efectuând pentru el un set de funcții care formează o interfață interlabilă. Pe baza acestor funcții, următorul strat din ierarhie își construiește funcțiile - mai complexe și mai puternice etc. Această organizare a sistemului simplifică foarte mult design-ul, t. Pentru a. Prima vă permite să „sus-jos“ pentru a defini funcțiile de straturi și interfețe dintre straturi, în timp ce punerea în aplicare detaliate, în mișcare „bottom-up“, pentru a crește puterea funcției straturi. În plus, modulele fiecărui strat pot fi modificate fără a fi nevoie de modificări în alte straturi (fără a schimba interfețele intermediare!).

Structura multi-strat a miezului poate fi reprezentată, de exemplu, de varianta prezentată în figura 3.6.

Cunoștințe, prelegere, sisteme de operare


Fig. 3.6. Structura multi-strat a sistemului de operare

Următoarele straturi sunt evidențiate în această diagramă.

Creșterea stabilității sistemului de operare este asigurată de tranziția kernel-ului la modul privilegiat. În același timp, există o încetinire a performanței apelurilor de sistem. Apelul de sistem al kernel-ului privilegiat inițiază comutarea procesorului de la modul utilizator la modul preferat, iar la revenirea la aplicație - comutarea inversă. Datorită acestui fapt, există o întârziere suplimentară în procesarea apelului de sistem (figura 3.7). Cu toate acestea, această soluție a devenit clasică și este folosită în multe sisteme de operare (UNIX, VAX, VMS, IBM OS / 390, OS / 2 etc.).

Cunoștințe, prelegere, sisteme de operare


Fig. 3.7. Efectuați un apel sistem

Arhitectura clasică clasică multi-nivel OS nu este fără probleme. Faptul este că schimbările semnificative la unul dintre niveluri pot avea un impact previzibil dificil asupra nivelurilor adiacente. În plus, numeroasele interacțiuni dintre nivelele învecinate complică securitatea. Prin urmare, ca o alternativă la arhitectura clasică OS, arhitectura micronucleară a sistemului de operare este adesea folosită.

Esența acestei arhitecturi este după cum urmează. În modul privilegiat, doar o mică parte a sistemului de operare, numită microkernel, rămâne la locul de muncă. Microkernelul este protejat de alte părți ale sistemului de operare și de aplicații. Se compune din module dependente de mașină, precum și module care execută mecanismele de bază ale unui kernel convențional. Toate celelalte funcții de kernel la nivel superior sunt concepute ca module care funcționează în modul utilizator. Deci, managerii de resurse. care fac parte integrantă din kernelul obișnuit, devin module "periferice" care funcționează în modul de utilizare. Astfel, într-o arhitectură cu microkernel, aranjamentul tradițional al nivelelor de-a lungul verticalei este înlocuit de unul orizontal. Aceasta poate fi reprezentată, după cum se arată în figura 3.8.

Componentele OS externe microkernel-ului sunt implementate ca procese de service. Ei interacționează între ei ca parteneri egali cu ajutorul mesageriei, care sunt transmise prin microkernel. Deoarece scopul acestor componente de sistem de operare este de a satisface cererile de aplicații pentru utilizatori, utilitare și programe de procesare a sistemelor, managerii de resurse. realizate în modul de utilizare, se numesc servere OS, adică module, al căror scop principal este de a satisface cererile pentru aplicații locale și alte module de OS.

Cunoștințe, prelegere, sisteme de operare


Fig. 3.8. Arhitectura sistemului de operare cu un microkernel

Schematically, mecanismul de accesare a funcțiilor OS, conceput sub formă de servere, arată așa cum se arată în Figura 3.9.

Cunoștințe, prelegere, sisteme de operare


Fig. 3.9. Arhitectura client-server a sistemului de operare

Schema de schimbare a modurilor atunci când se execută un apel de sistem într-un sistem de operare cu o arhitectură microkernel arată ca în figura 3.10.

Cunoștințe, prelegere, sisteme de operare


Fig. 3.10. Efectuarea unui apel sistem într-un sistem de operare cu microkernel

Din figura este clar că executarea apelului de sistem este însoțită de patru moduri de comutare (4 t), în timp ce în arhitectura clasică - două. În consecință, performanța OS cu o arhitectură microkernel, cu alte lucruri egale, va fi mai mică decât cea a unui OS cu un nucleu clasic.

În același timp, sunt recunoscute următoarele merite ale arhitecturii microkernel [36]:

  • interfețe uniforme;
  • simplitatea extensibilității;
  • flexibilitate ridicată;
  • posibilitate de portabilitate;
  • fiabilitate ridicată;
  • suport pentru sisteme distribuite;
  • suport pentru OS orientat-obiect.

Ar putea părea paradoxal, dar există și o astfel de abordare a sistemului de operare micronuclear ca reducerea microkernelului.

Pentru a oferi o idee despre dimensiunea microcernelurilor sistemelor de operare într-o serie de surse [22], aceste date sunt date:

  • un microkernel tipic din prima generație - 300 KB de cod și 140 de interfețe de apeluri de sistem;
  • microkernel OS L4 (a doua generație) - 12 coduri KByte și 7 interfețe de apel sistem.

În sistemele de operare moderne, se disting următoarele tipuri de nuclee.







Articole similare

Trimiteți-le prietenilor: