Caracteristicile arhitecturale ale sistemului de operare
Până acum am vorbit despre uita la sistemul de operare din exterior, care fac sistemul de operare. În continuare cursul nostru se va concentra pe modul în care o fac. Dar noi nu spune nimic despre ceea ce sunt în interior, există unele abordări în construcția lor.
nucleu monolitic
De fapt, sistemul de operare - acesta este un program comun, asa ca ar fi logic și să-l organizeze precum și aranjate majoritatea programelor, care este, de a face procedurilor și funcțiilor. În acest caz, componentele sistemului de operare nu sunt module independente, precum și componente ale unui program de mari dimensiuni. Acest sistem de operare se numește o structură monolitică nucleu (kernel monolitic). miez solid este un set de proceduri, din care fiecare poate fiecare cauză. Toate procedurile sunt de lucru într-un mod privilegiat. Astfel, un nucleu monolitic - este un astfel de sistem de operare schemă. prin care toate componentele sunt componente ale unui singur program, prin intermediul unor structuri de date comune și interacționează unele cu altele, prin apelul de procedură directă. Pentru un sistem de operare nucleu monolitic este întregul sistem.
În multe sisteme de operare cu un nucleu monolitic construi un nucleu, care este, pentru realizarea sa este realizată separat pentru fiecare computer pe care instalați sistemul de operare. Puteți alege o listă de protocoale de hardware și software, al căror suport vor fi incluse în kernel. Deoarece kernel-ul este un singur program, recompilarea - este singura modalitate de a adăuga noi componente sau elimina neutilizate la acesta. Trebuie remarcat faptul că prezența unor componente suplimentare în nucleu este extrem de nedorit, deoarece miezul este întotdeauna complet în RAM. În plus, eliminarea componentelor inutile crește fiabilitatea de funcționare a sistemului în ansamblu.
Monolitice nucleu - cea mai veche modalitate de organizare a sistemelor de operare. Un exemplu de sistem cu un nucleu monolitic este mai multe sisteme bazate pe Unix.
Chiar putem aloca o anumită structură în sistemele monolitice. Ca un bloc de beton de incluziuni pot distinge pietriș și într-un serviciu de proceduri blotches nucleu monolitic alocate corespunzătoare apelurilor de sistem. Procedurile de service sunt în mod privilegiat, în timp ce programul de utilizator - în neprivilegiați. Pentru a trece de la un nivel la altul privilegiu poate fi uneori programul de servicii la domiciliu, care determină ceea ce a fost făcut un fel de apel de sistem utilizat, corectitudinea datelor de intrare pentru controlul apelurilor și transferuri la procedura de serviciu corespunzătoare pentru trecerea la modul privilegiat. Uneori, emit un set de utilitare software care ajuta la realizarea unor proceduri de service.
Sisteme multinivel (sisteme Layered)
Continuând structurarea, este posibil să se rupă întregul sistem de calcul într-un număr de niveluri mai mici, cu relații bine definite între ele, astfel încât obiectele de nivel N ar putea determina numai nivelul instalațiilor N-1. Nivelul inferior în aceste sisteme este de obicei hardware-ul, nivelul superior - interfața cu utilizatorul. Nivelul inferior, comenzile și acțiunile privilegiate pentru a efectua modulul care se află la acest nivel. Această abordare a fost folosit pentru prima dată pentru configurarea THE (Hogeschool Eindhoven de Tehnica) Dijkstra (Dijkstra) și studenții săi în 1968. Acest sistem are următoarele niveluri:
Fig. 1.2. Un sistem stratificat
Sistemele Layered sunt puse în aplicare bine. Atunci când se utilizează un strat de operațiuni mai mici nu trebuie să știe modul în care acestea sunt puse în aplicare, este necesar doar pentru a înțelege ceea ce fac. Sistemul Layered testat bine. Debugging începe cu stratul inferior și este menținut în straturi. Atunci când apare o eroare, putem fi siguri că este în patul de testare. Sistemul Layered este modificat bine. un singur strat poate fi înlocuit, dacă este necesar, fără a atinge restul. Dar sistemele stratificate sunt complexe pentru a proiecta: dificil de a determina corect ordinea straturilor, și care se aplică la orice strat. Sistemele sunt Layered mai puțin eficiente decât monolitic. Astfel, de exemplu, pentru efectuarea operațiunilor de intrare-ieșire programul de utilizator va trece succesiv prin toate straturile de sus în jos.
maşini virtuale
La începutul prelegerii, am vorbit despre uita la sistemul de operare ca o mașină virtuală. atunci când utilizatorul nu are nevoie să cunoască detaliile dispozitivelor informatice interne. Acesta funcționează cu fișiere, nu cu capetele magnetice și motorul; funcționează cu o mare virtuală, dar fără a se limita la RAM reale; se excita un pic, el este singurul utilizator de pe aparat sau nu. Luați în considerare o abordare ușor diferită. Lăsați sistemul de operare implementează o mașină virtuală pentru fiecare utilizator, dar nu pentru a simplifica viața lui, ci, dimpotrivă, complicând. Fiecare mașină virtuală apare utilizatorului ca un metal goale - o copie a tuturor hardware într-un sistem informatic, inclusiv procesor. comenzi privilegiate și non-privilegiate, dispozitive de intrare-ieșire, întreruperea, etc. Și el rămâne singur cu fierul de călcat. Când încercați să accesați acest hardware virtual la instrucțiunea privilegiată se întâmplă de fapt apel sistem real al sistemului de operare. și că activitățile necesare tuturor. Această abordare permite fiecărui utilizator să descarce sistemul de operare pe o mașină virtuală și de a face cu ea tot ce dorește inima ta.
Fig. 1.3. Versiunea o mașină virtuală
Primul sistem real de acest gen a fost un sistem de CP / CMS, sau VM / 370, așa cum este numit acum, pentru familia IBM / 370 utilaje.
Dezavantajul unor astfel de sisteme este de a reduce randamentul de exploatare a mașinilor virtuale în comparație cu computerul reale, și, de regulă, ele sunt foarte greoaie. Avantajul este de a utiliza pe un sistem informatic unic, scris pentru software-ul sisteme de operare diferite.
arhitectura microkernel
Tendința actuală în dezvoltarea sistemelor de operare constă în transferarea într-o mare parte din codul de sistem la nivel de utilizator și în același timp minimizând kernel-ul. Este o abordare de a construi un nucleu, numit un sistem de operare arhitectura microkernel (arhitectura microkernel). când majoritatea componentelor sale sunt programe independente. În acest caz, interacțiunea dintre ele oferă un modul special de nucleu numit microkernel. Microkernel se execută în modul de kernel și asigură interoperabilitatea între programe, planificarea utilizarea procesorului. procesare întrerupere primară. operațiunile de ieșire de intrare și de gestionare a memoriei și de bază.
Fig. 1.4. Microkernel arhitectura sistemului de operare
Componentele rămase ale sistemului interacționează unele cu altele prin trimiterea de mesaje prin intermediul microkernel.
Principalul avantaj al arhitecturii microkernel - grad ridicat de modularitate a kernel-ului sistemului de operare. Acest lucru simplifică foarte mult adăugarea de noi componente la ea. Sistemul de operare microkernel, puteți, fără a întrerupe funcționarea sa, pentru a încărca și descărca drivere noi, sisteme de fișiere, și așa mai departe. D. simplifică procesul de depanare a componentelor kernel-ului precum și o nouă versiune a driverului poate fi încărcat fără a reporni întregul sistem de operare. Componentele sistemului de operare nu diferă fundamental de programele de utilizator kernel, astfel încât mijloacele uzuale pot fi folosite pentru depanare. Arhitectura Microkernel îmbunătățește fiabilitatea sistemului, deoarece o eroare la nivelul programului neprivilegiați este mai puțin periculos decât fisurii la nivelul modul nucleu.
În același timp, arhitectura sistemului de operare introduce microkernel aeriene suplimentare asociate cu transmiterea de mesaje, care afectează în mod semnificativ performanța. Nu în ordine sisteme de operare inferioare bazate pe nucleu monolitic pentru a Microkernel viteza sistemului de operare. Este nevoie de componente de sistem de proiectare de partiționare foarte atent, încercând să minimizeze interacțiunea dintre ele. Astfel, principala dificultate în crearea sistemelor de operare microkernel - necesitatea unui design foarte atent.
sisteme mixte
Toate abordările la construcția sistemelor de operare au avantajele și dezavantajele lor. Cele mai multe sisteme de operare moderne folosesc diferite combinații ale acestor abordări. De exemplu, nucleul sistemului de operare Linux este un sistem monolitic cu elemente de arhitectură microkernel. Când compilarea kernel-ul, vă puteți permite încărcarea dinamică și descărcarea foarte multe componente ale nucleului - așa-numitele module. Timpul de modul de încărcare a codului său este încărcată la nivel de sistem și comunică cu restul miezului. În interiorul modulului de kernel, pot fi folosite orice funcții exportate.
Un alt exemplu de abordare mixtă este abilitatea de a rula un sistem de operare cu un nucleu monolitic care rulează un microkernel. Deci, aranjate 4.4BSD și mklinux, bazat pe un microkernel Mach. Microkernel oferă gestionarea memoriei virtuale și operarea de drivere de nivel scăzut. Toate celelalte funcții, inclusiv interacțiunea cu aplicațiile făcute nucleu monolitic. Această abordare a fost format ca urmare a încercărilor de a profita de arhitectura microkernel. menținând în același timp, în măsura în care este posibil cod bine stabilit de un nucleu monolitic.
Astfel, Windows NT poate fi numit pe bună dreptate un sistem de operare hibrid.