Arhitectura sistemului de operare este stadopedia

În cadrul arhitecturii sistemului de operare se înțelege organizarea structurală și funcțională a sistemului de operare bazat pe un anumit set de module software. Structura sistemului de operare include module executabile și obiect de formate standard pentru sistemul de operare, format specific module software (de exemplu, sistemul de operare încărcător, drivere de intrare-ieșire), 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 Mastics a conținut deja în 1975 deja 20 de milioane de linii [17]. 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 [5. 10. 13. 17]:

  • 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 două grupe, în funcție de funcțiile: modulele de bază 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 două grupe, în funcție de locația din memoria sistemului informatic: rezident, permanent în memoria RAM și tranzit, încărcat în memoria RAM numai pentru momentul reînnoirii funcțiilor;
  • implementarea a două moduri de funcționare a sistemului informatic: modul Kernel, modul supervizor, modul utilizator sau modul de activitate;
  • limitarea funcțiilor kernelului (și, prin urmare, numărul de module kernel) la numărul minim de funcții esențiale necesare.

Primul OS a fost conceput ca un sistem monolitic fără o structură clar definită (Figura 1.2).

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 cea mai mare parte a informațiilor este locală modulului, precum și procedurile de module pot fi apelate numai printr-o puncte de intrare desemnate special).

Cu toate acestea, chiar și astfel de sisteme monolitice pot fi ușor structurate. Atunci când accesează apelurile de sistem suportate de sistemul de operare, parametrii sunt plasați în locuri strict definite, cum ar fi registrele sau stivele, și apoi este executată o comandă specială de întrerupere, cunoscută sub numele de apel de kernel sau de supervizor. Această comandă comută aparatul de la modul utilizator la modul kernel, numit și modul supervizor și transferă controlul OS. Sistemul de operare verifică apoi 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.

Arhitectura sistemului de operare este stadopedia


Fig. 1.2. Monolit arhitectura

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

  • 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ă divizare a procedurilor în trei straturi este prezentată în Fig. 1.3.

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 de kernel îndeplinesc funcțiile de bază ale sistemului de operare: gestionarea proceselor, a memoriei, a dispozitivelor I / O și așa mai departe. Kernel-ul formează nucleul sistemului de operare, fără de care acesta este complet inoperant și nu-și poate îndeplini niciuna dintre funcțiile sale. Kernel-ul rezolvă sarcinile intrasisteme de organizare a procesului de calcul, care sunt inaccesibile aplicației.

Arhitectura sistemului de operare este stadopedia


Fig. 1.3. Arhitectură structurată

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, recuperarea timpului de sistem, afișarea informațiilor pe ecran și așa mai departe. Funcțiile kernel-ului care pot fi invocate de aplicații formează un API (Application Programming Interface).

Pentru modulele de kernel sistem de operare de mare viteză (cel puțin cele mai multe dintre ele) sunt rezidente și care funcționează în modul privilegiat (modul nucleu). Acest mod este, în primul rând, trebuie să protejeze activitatea sistemului de operare de a interfera cu aplicații și, în al doilea rând, trebuie să fie capabil să lucreze module de kernel cu un set complet de instrucțiuni mașină, permițând kernel-ul real pentru a efectua de gestionare a computerului, în special, procesorul trecerea de la sarcină sarcina, gestionarea dispozitivelor de intrare-ieșire, distribuția și protecția memoriei etc.

Modulele rămase ale sistemului de operare nu îndeplinesc funcții atât de importante ca nucleul și sunt de tranzit. De exemplu, acestea pot fi programe pentru arhivarea datelor, defragmentarea discului, compresia discului, curățarea discurilor și așa mai departe.

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

Aceste module de OS sunt concepute ca aplicații obișnuite, accesând funcțiile kernelului prin apeluri 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 de nivel superior își construiește funcțiile - mai complexe și mai puternice, etc. Această organizare a sistemului simplifică foarte mult dezvoltarea sa, deoarece În primul rând, este posibil să se determine funcțiile "de sus în jos" ale straturilor și interfețelor intermediare, iar într-o implementare detaliată, deplasarea "de jos în sus" - pentru a crește puterea funcției stratului. Î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 Fig. 1.4.

Arhitectura sistemului de operare este stadopedia


Fig. 1.4. Structura stratificată 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ă. Din acest motiv, există o întârziere suplimentară în procesarea apelului de sistem (Figura 1.5). 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.).

Arhitectura sistemului de operare este stadopedia


Fig. 1.5. Procesarea apelurilor de 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. Astfel, managerii de resurse, care fac parte integrantă din kernelul obișnuit, devin module "periferice" care lucrează în modul utilizator. Astfel, într-o arhitectură cu microkernel, aranjamentul tradițional de nivele de-a lungul verticalei este înlocuit de unul orizontal. Aceasta poate fi reprezentată, după cum se arată în Fig. 1.6.

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 ale sistemului de operare este de a satisface cererile de aplicații ale utilizatorilor, utilitarelor și programelor de procesare a sistemului, managerii de resurse admiși î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.

Arhitectura sistemului de operare este stadopedia


Fig. 1.6. Tranziția la arhitectura micronucleară

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

Arhitectura sistemului de operare este stadopedia


Fig. 1.7. Arhitectura client-server

Schema de schimbare a modurilor atunci când se execută un apel sistem într-un sistem de operare cu o arhitectură microkernel arată așa cum se arată în Fig. 1.8. 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.

Arhitectura sistemului de operare este stadopedia


Fig. 1.8. Procesarea unui apel sistem într-o arhitectură microkernel

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

  • 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 imagine a mărimii microcernelurilor sistemelor de operare într-o serie de surse [17], 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: