Un SO [Boi88] este:
modular, adică format din entităti cu roluri bine definite (este constituit din proceduri)
ierarhizat: o entitate poate folosi componente de nivel inferior ei (de exemplu, partea de servicii poate folosi partea de control)
portabil: efortul de a trece sistemul de operare de pe un calculator pe altul este mic (mai mic decât cel de a-l rescrie). Sistemele de operare CP/M, MS-DOS, UNIX sunt portabile, pe când sistemele de operare ale minicalculatoarelor (RSX, de exemplu) nu erau portabile.
Evolutia sistemelor de operare [Boi94] se poate urmări în paralel cu cea a sistemelor de calcul.
1) Primele sisteme de calcul nu aveau sistem de operare: de la consolă se lucra direct în limbaj masină. Ulterior apar primele produse soft si primele dispozitive periferice: cititorul de cartele, imprimanta, unitatea de bandă magnetică.
Legătura dintre un periferic si memoria, împreună cu procesorul central, se realizează din punctul de vedere al SO prin rutine (proceduri) de interfată numite drivere. Fiecare fază necesară pentru executia programelor presupunea interventia operatorului uman (citirea cartelelor, încărcarea programului în memorie si lansarea lui în executie), ceea ce ducea la utilizarea ineficientă a sistemului de calcul si la o viteză de calcul redusă. Se pune astfel problema înlăntuirii automate a fazelor prin care trece un program (numit job) pentru a fi executat si a mai multor programe executate consecutiv.
2) Sistemele seriale cu monoprogramare introduc înlăntuirea automată a fazelor si job-urilor, adică înlăntuirea automată a programelor unul după altul iar în cadrul unui program, a fazelor - una după alta. Aceste operatii sunt realizate de un program numit monitor de înlăntuire, care se depune în memorie (devine rezident în memorie) si este activat de cartele speciale de comandă care contin comenzi compile, link, run (pentru compilare, editare de legături, respectiv executie).
3) Sistemele seriale cu multiprogramare introduc conceptul de multiprogramare si canalul de intrare-iesire ca procesor specializat în operatii de intrare-iesire (generatia a doua de calculatoare). Activitatea sa este lansată de procesorul central, după care pot executa operatii independent de acesta (si în acelasi timp). La terminarea operatiei de intrare-iesire, canalul trimite către procesorul central un semnal (întrerupere), anuntând terminarea operatiei. Canalul poate fi selector, dacă la un moment dat lucrează cu un singur periferic (adecvat pentru perifericele rapide, care prelucrează suporturi magnetice) sau multiplexor, dacă poate lucra simultan cu mai multe periferice (de exemplu, USM - unitatea de schimburi multiple).
Sistemele seriale cu multiprogramare introduc câteva tehnici speciale de exploatare a procesorului. Cea mai cunoscută dintre acestea este multiprogramarea, care presupune gestionarea mai multor programe aflate în memoria internă. Acestea se găsesc în stări diferite: unul se execută iar celelalte pot fi pregătite pentru executie sau pot astepta terminarea unei operatii de intrare-iesire.
Un SO cu multiprogramare trebuie să aibă un sistem de întreruperi, să gestioneze, să aloce, să protejeze resursele (memorie, periferice, timp, fisiere) între utilizatori si să implementeze o disciplină de servire prin care să se decidă care program trece în stare de executie (în acest sens, se poate utiliza un sistem de priorităti sau, pur si simplu, se poate adopta o servire circulară simplă).
Un program aflat pe un suport cu viteză mică de acces va suferi o conversie de intrare, prin care se va depune pe un suport cu acces mai rapid si de aici va fi depus în memorie. Analog, la extragerea sa din sistem, asupra sa se poate efectua o conversie de iesire (acestea sunt caracteristicile unei tehnici numite spooling).
4) Sistemele interactive permit comunicarea permanentă între utilizator si sistemul de calcul prin consolă sau terminale. Ele sunt evident mai avantajoase decât sistemele anterioare, la care numai corectarea câtorva greseli de sintaxă putea dura câteva zile în care programul pe cartele să fie introdus în loturi succesive de programe; în urma consultării listingului cu rezultate se puteau face corecturile, după care programul pe cartele să fie din nou dat spre executie etc.
În functie de rezultatul comenzii / fazei precedente, utilizatorul va decide ce comandă să dea sau ce fază să urmeze. Spre deosebire de sistemele seriale, sistemele interactive au un timp de răspuns bun. În general, aceste sisteme contin editoare de texte pentru corectarea programelor sursă si depanatoare interactive.
Sistemele interactive pot fi: monoutilizator (microcalculatoarele) sau multiutilizator (minicalculatoarele). Ultimele au introdus modul de lucru numit time-sharing, care combină interactivitatea cu multiprogramarea si prin intermediul căruia sistemul comută între programele tuturor utilizatorilor care urmează a fi executate, deci cărora li se va aloca procesorul, adoptând uzual o servire circulară. Când numărul de utilizatori nu este prea mare, fiecare utilizator este servit cel putin o dată într-un timp scurt, ceea ce poate crea utilizatorilor impresia că sunt unicii beneficiari ai resurselor de calcul. Primul sistem time-sharing a fost creat în 1965 de firma IBM si s-a numit CTSS (Control Time Sharing System); el a fost urmat de MULTICS, apărut în 1968 la MIT. Aceste sisteme stau la baza cunoscutului sistem UNIX, care a apărut în 1971-1978 si s-a dezvoltat, fiind azi cel mai folosit SO pentru calculatoare interconectate.
Un alt mod de lucru apărut la sistemele interactive este pipe-line (folosit initial de UNIX si ulterior preluat de DOS). Urmărind principiul că orice program lansat (de la un terminal) are o intrare standard (de obicei tastatura) si o iesire standard (de obicei ecranul), tehnica pipe-line presupune conectarea iesirii standard a unui program la intrarea standard a altui program (prin intermediul unor zone de memorie tampon). De exemplu, următoarele comenzi DOS folosesc tehnica pipe-line:
dir| sort (afisează continutul directorului sortat) sau
type f | more (afisează fisierul f pagină cu pagină pe ecran).
Intrările si iesirile standard se pot schimba astfel încât să se facă din anumite fisiere specificate. Această operatie se numeste redirectare si este definită atât în UNIX, cât si în DOS. Redirectarea se specifică folosind următoarele sintaxe:
<fis pentru citire din fis
>fis pentru scriere în fis
>>fis pentru adăugare la fis
În evolutia sistemelor interactive se poate remarca trecerea de la sisteme de operare la nivel de comandă (UNIX, DOS) la sisteme cu interfată vizuală de tip Windows, mult mai accesibile pentru utilizatori.
5) Sistemele în timp real sunt folosite pentru conducerea directă, interactivă, a unui proces tehnologic sau a altei aplicatii (de exemplu, un sistem de rezervare de locuri). Necesitatea unor asemenea sisteme se poate usor imagina în cazul analizelor medicale asistate de calculator, a reactiilor chimice sau a unor experiente fizice (de exemplu, cazul acceleratoarelor de particule). De la procesul controlat se transmit către sistemul în timp real parametrii procesului, culesi prin intermediul unor senzori, iar sistemul în timp real transmite către proces deciziile luate. Informatiile despre proces sunt luate în considerare în momentul comunicării lor iar răspunsul sistemului trebuie să fie extrem de rapid (oportun pentru proces), deci timpii de executie ai programelor din sistem trebuie să fie mici.
6) Sistemele paralele gestionează arhitecturile multiprocesor (arhitecturi paralele), împărtind sarcinile între procesoare si controlând combinarea rezultatelor generate de acestea. Astfel, un sistem multiprocesor va avea simultan mai multe programe aflate în stare de executie.
Evident, un algoritm paralel, în care anumite calcule independente se realizează simultan, va fi mai rapid decât algoritmul serial (uzual) corespunzător. Studiul algoritmilor paraleli este un domeniu prolific al informaticii. Mai mult, au apărut limbaje specifice, care pot paraleliza algoritmi seriali, pot exploata paralelismul arhitecturii sau paralelismul problemei. Pentru majoritatea algoritmilor recent elaborati, cercetătorii sunt preocupati de găsirea unor variante paralele.
7) Sistemele distribuite sunt sistemele de operare ale retelelor de calculatoare. Pentru retelele locale de calculatoare, cele mai utilizate sisteme de operare sunt Novell Netware si Windows NT, în timp ce pentru retelele de arie mai largă si conectarea la Internet se folosesc sisteme Linux.