1.1 Notiune de SO. Masini virtuale.
Calculatorul modern - o sistema foarte complexa. Scrierea de programe pentru calcualtor, depanarea si executarea reprezinta o sarcina foarte anevoioasa. Cauza principala - este difernta intre ceia ce este comod pentru oameni si ceia ce este comod pentru calculator. Computerul intelege doar limbajul propriu (limbaj masina = il denumim Я0), iar pentru oameni este este mai comod limbajul natural sau macar limbajul de descriere al algoritmilor - limbajul algoritmic. Problema se poate de rezolvat prin doua metode. Ambele metode sunt legate de crearea unor comenzi care sa fie mai comode oamenilor decit limbajul masina. Aceste comenzi si formeaza un nou limbaj, care il vom numi Я1.

Metodele mentionate mai sus se deosebesc prin modul cum calculatorul va executa comenzile scrie in Я1. Prima metode este  - schimbarea fiecarei comenzi al limbajului Я1 in echivalente al limbajului Я0. In acest caz comp. executa programa scrisa in Я0, in loc sa execute programa scrisa in Я1. Aceasta tehnologie se numeste translatie.

A doua metoda - este scrierea programei in limbajul Я0, care ia programele scriswe in Я1, in calitate de  date de intrare, si analizeaZa fiecare comanda secvential si automat executa setul de comenzi echivalent limbajului Я0. Aceata tehnologie nu are nevoie de crearea unei noi programe in Я0. Ea se numeste interpretare, si programa care efectueaza interpretarea se numeste interpretator.

In asemena situatie este mai simplu sa ne imaginam existenta unui calculator ipotetic sau al unei masini virtuale, pentru care limbajul masina este Я1. Vom numi aceasta masina M1, iar masina virtuala cu limbajul Я0 - M0. Pentru masinile virtuale vor fi scrie programe, ca si cum aceste masini ar fi existind in realitate.

Evident ca se poate de mers si mai departe - de creat alte seturi de comenzi, care vor fi orientate mai mult spre oamnei decit Я1. Acest set formeaza Я2, si masina virtuala M2. Asa se poate de continuat pina la un limbaj potrivit de nivel n.

Majoritatea calculatoarelor moderne sunt compuse din doua sau mai multe nivele. Nivelul 0 - Hardware. Schemele electronice al acestui nivel executa programele scrise in limbaje la nivelul 1. Urmatorul nivel este  - nivelul microarhitecturii. la acets nivel se afla setul de 8,  sau 32 registri, carev formeaza memoria locala si unitatea aritmetico-logica (UAL). registrele impreuna cu UAL formeaza tractul datelor, prin care vin datele. Operatia principala al acestui tract este: Se selecteaza unul sau doi registri, UAl executa cu acestea o operatie, iar rezultatul se plaseaza in unul din acesti doi registri. Pe unele masini lucrul tractului este controlat de o programa speciala, care se numeste microprograma. In alte masini acest control se executa hardware.

Urmatorul nivel (al doilea) reprezinta nivelul arhitecturii comenzilor de sistem. Comenzile folosesc registrii si alte posibilitati hardware. Comenzile formeaza niovelul ISA(instruction Set Arhitecture), denumit limbaj masina. De obicei limbajul masina contine de la 50 la 300 comenzi. care serves la transmitereaa datelor, efectuarea opersatiilor arimetice si comarare

Al treile nivel de obiecei este unul hibrid. Multe comenzi sunt si la nivelul arhitecturii sistemei. Acest nivel are in plus niste optiuni: setul decomenzi, alt mod de organizare a memoriei, posibilitatea de a executa doua sau mai multe programe concomitent, etc. Setul de comenzi creste continuu. In acest set apar asa numitele macrouri ale SO sau apelurilie suprevizorului, denimite apeluri de sistem. noile medii aparute lanivelul trei, se exeuta de interpretator, care lucreaza la nivelul doi. Acest interpretator era numit cinda sistem de operare. Comenzile nivelului trei, care sunt identice celor din nivelul doi sunt executate de microprograma sau hardware, nu de SO. Cu alte cuvinte , o parte din comenzile din nivelul trei se interp[reteaza de SO, iar alta de catre microprograma. De aceats aacest nivel se numeste HIBRID.

Sistemul deoperare a fost creat pentru a automatiza lucrul operatorului si pentru a ascunde de utilizator complexitatea interactiunii cu nivell hardware, oferindui acestuia un sistem de comenzi comoda. Cele trei nivele de jos (de la 0 la 2) se construiesc nu pentru lucrul cu ele al unui simplu programator. Ele initiala au fost create pentru lucrul interpretaotului si translatarorului, care sustin nivelele superioare. aceste translatoare si interpretaoare se ofera programatorilor de sisteme, care se specializaeaza in crearea si construirea de noi masini virtuale.

Deasupra So sunt plasate restul programelor de sistem. Cum ar fi Interpretorul de comenzi, compilatoarele, redactoarele. Aceste programe nu sunt parte al SO. Prin So intelegem acele programe care se executa in regim nucleu sau regim supervisor. SO este securizata fata de utilizator prin intermediul mihloacelor hardware.

Al patrulea nivel reprezinta forma simbolica al unui limbaj de nivel jos (asm). la acest nivel se poate de scris programe in forma comoda pentru oameni. Aceste comenzi initial se translateaza in limbaje de nivel 1,2 sau 3 apoi se interpreteaza de masina virtual corespunzatoare si de facto de masina fizica.

Nivele de la 5 si mai mult sunt destinate programatorilor de aplicatii, care rezolva sarcini concrete in limbaje de nivel inalt. Compilatoarele si redatoarele din aceste nivele se executa in regim utilizator. La nivel si mai superior sunt plasate programele utilizator.

majoritatea utilizatorilor de calculatoare  au exeperienta de interactiune cu SO. dar ei nu pot oferi o determinare clara a SO. SO executa doua operatii principale largirea posibilitatilor comp. si controlul resurselor.

Din punct de vedere al utilizatorului So are functia de expansiune a masinii sau de masina virtuala, in care este usor de programat si usor de lucrat, fata de nivelul hardware care il ofera masina reala.SO nu doar inlatura necesitatea de a lucra direct cu componetntele, dar ofera o interfata simpla de lucru cu fisierele, ascunde multimea de lucruri neplacute legate de intreruperi, contorul de timp, organizarea memoriei si al altor componente de nivel jos.

Dar, conceptia care reda SO drept o interfata comoda este o viziune de sus in jos. Alta viziune este de jos in sus care ofera o reprezentare a So ca un mecanizm, care exista in comp.pentru a lucra cu toate componentele. Prin urmare lucrul cu SO se rezuma la asigurarea organizarii si controlului dostribuirii proceselor, memoriei, discurilor,printere, etc, intre diferite programe care concureaza la dreprul de ale folosi.

1.2 Sistema de operare, mediul si shell-ul operational
SO in conceputl contemporan au aparut mai tirziu decit comp. De ce si cind au aparut SO? Creare de calculatoare se intensifica  incepind cu 1950. In acesti ani unii si aceiasi oamnei participau la proiectare, creare si programare, si exploatare Programarea se efectua doar in limbaj masina (apoi in asm), erau doar biblioteci cu functii matematice si a programelor de serviciu. SO inca nu aparusera, iar toate sarcinile de organizare al procesului de calcul erau rezolvate manual de catre fiecare programator.

Odata cu aparitia semiconductoarelor posibilitatile de calcul al comp. au crescut. Au aparut limbajele algoritmice (fortran) si translatoare, redactor de lagaturi. 

Executarea programelor sa complicat si continea urmatorii pasi
 - Incarcarea trasnlatorului necesar
 - Executarea translatorului si primirea programei in cod-masina
 - Link-area programei cu subprogramele din bibliotexi
 - Executarea programei
 - Afisare rezultat

Pentru organizarea incarcarii efective al tuturor componentelor existatu specialisti bine pregatiti. Din aceasta cauza procesorul o buna parte din timp nu lucra.
Cu scop de a inlatura lipsa de activitate al procesorului au fost incercari de a crea programe speciale - monitoare, stramosul SO, care efectua o trecere automata de la o sarcina la alta

La sfirsitul anilor 1950 firmele au creat SO cu urmatoarele caracteristici:
 - Prelucrarea in pachet al unui set de sarcini
 - existenta programelor standart de I/O
 - posibilitatea de a trece automa de la o sarcina la alta
 - mediu de restaurare dupa erori, care asigurau "curatire" automata a computertului in caz de terminare fortata a unei lucrari si posibilitatea executarii urmatoarei sarcini fara implicarea operatorului
 - limbajele de control al sarcinilor ofereau utilizatorilor posibilitatea de a descrie lucarile si resursele de care aveau nevoie.

Pachetul reprezinta un set de cartele perforate organizate in mod special (sarcina, programa, datele). Pentru a mari viteza de lucru acetea se transferau pe disc.


1.4 Destinatia si componenta functiilor SO
Se poate de impartit in patru componente:

1. Organizarea interfetei comode intre aplicatii si utilizator, pe de o parte si pe de alta, cu hardware. In loc de componetele reale ale comp. se ofera o masina virtuala extina cu care este comod de lucart si in care este usor de programat. Lista serviciilor mai importante:
 - Crearea de programe.
 - Executare programe
 - Acces la componentele de I/O
 - Acces controlat la fisiere
 - Acces de sistem
 - Prelucrea si gasire erori
 - Contorizarea folosirii resurselor

2. Organizarea utilizarii efective a resurselor. Include citeva sarcini
 - Planificare resurse
 - alocare resurse proceselor
 - urmareste starea si contorizeaza folosirea resurselor
 - rezolvarea conflictelor intre procese.

3.Usurarea proceselor de exploatare al hardware cit si software

4.Posibilitatea de dezvoltare
 - update
 - servicii noi
 - Corectare

 

Functiile SO se grupeaza dupa compatibilitatea cu resusrele locale sau cu sarcinile specificace. Agregare modulelor, care executa aceste grupe de functii, formeaza subsisteme ale SO. Cele mai importante sunt cele de control alproceselor, memorieim fisierelor si al componentelor. Subsistema comuna tuturor resurselor sunt subsistemele interfetei utilizator, securitatea a datelor si administrarea.

 - Controlul proceselor - determina functionarea SO. Pentru fiecare programa in executie SO organizeaza unul sau maimulte procese. Fiecare acest procese este reprezentat in SO ca o structura informationala (tabel, descriptor, contextul procesorului), care contine datele despre cerintele procesului la resurse, si resursele alocate acestuia. In aceasta structura inforamtioanala se pastreaza si datele care caracterizeza istroria procesului in sistema: starea curenta, prioritatea starea registrilor, contorului de programe.

 - Controlul memoriei - impartirea memorie fizice intre toate procesele, incarcarea, stergerea din memorie.

 - Administrarea fisierelor -  So virtualizeaza setul de date, care se pastreaza pe disc in forma de fisier. FS transforma numele simbolice fisierelor in adrese fizice de pe disc

  - Controlul componentelor - interfata intre nucleu si si componente.  Programa care controleaza un model exact de componente se numeste driver

 - Securitatea datelor si administrarea

 - interfata programarii de aplicatii (API)

 - Interfata utilizator

1.5 Arhitectura SO
Prin arhitectura SO se intelege organizarea structurala si functionala al SO.In componenta SO intra modulele executate si modeulele obiect, fisiere de configurare, fisiere de documentare, etc.

Tipuri de proiectare in crearea SO:
 - Orgranizarea modulara
 -  Redundanta functionala
 - Selectivitate functionala
 - Flexibilitatea parametrica
 - Conceptia multinivel
 - Separaea modulelor in doua grupe: nucleu - indeplineste functiile cele mai importante si functii ajutatoare
 - Separarea modulelor in doua grupe dupa plasarea in RAM: rezidente si de tranzit.
 - Realizrea a doua moduri de lucru al So: KERNEL-mode si user mode/task mode
 - Limitarea functiilor nucleului

Tipuri de nucleu

1. Nano nucleu - nucleu simplificat, care executa doar o lucrare: prelucrarea intreruperilor generate de componentele comp. Dupa prelucrare trimite informatia despre rezultatul prelucrarii programelor din nivelele superioare. Nano nucleul se foloseste pentru virtualizre si pentru realizarea mecanizmului  HIpervisorului

2. Micro nucleu - reprezinta doar functiile elementare de control al proceselor si un set minim de abstractizare cu componentele. Majoritatea lucrului se face prin intermediul unor procese utilizator speciale, denumite servicii. In nucelu se poate, fara a intrerupe lucrul, de incarcat si descarcat drivere noi, FS, etc. De acest tip sunt OS Minix si GNU Hurd, la fel si din familia BSD, Symbian OS.

3. Exonucleu - ofera doar setul de servicii pentru interactiunea intre aplicatii, la fel si functiile legaate de securitate: administrarea resurselor, nivelul de acces. Exonuceleul nu ofera abstractizare al resurselor fizice - aceste functii se executa in biblioteca de la nivelul utilizator denumita libOS.

4. Monolit - ofera un set larg de abstractizare al componentelor. Toate partile nucleului lucreaza intrun singur domeniu de adrese. Lamodificarea hardware este neviue de a compila din nou nucleul. componentele SO sunt module neindependente, dar partile unei singure programe. Nucelul monolit este mai efectiv ca micronucleul pentru ca lucreaza ca un singur proces. De acest tip sunt majoritatea sistemelor Unix si Linux

5. Modular - este o varianta inbunatatita al nucleului monolit. Acesta nu trebuie recompilat in totalitate din nou. El ofera un mecaniza de incarcare al modulelor. Acest lucru poate fi static si dinamic. Este mai comod pentru programatori. Ofera o interfata(API) pentru linkeditarea modulelor cu nucleul. Nu toate partile nucleului pot fi module. Unele din ele trebuie sa fie intotdeauna in RAM si trebuie sa fie incluse solid in nucleu.

6. Hibrid - micronucleu modificat. Micronucelul asigura copntrolul memoriei virtuala si lucrul driverelor, iar restul functiilor se face de catre nucelul monolit

7.Exemplu de nucelu hibrid este Windows NT


1.6 Clasificarea SO
1. Conform destinatiei se divid in universale si speciale(lucreaza cu un set fix de date)

2. Conform modului de incarcare: downloadable OS si SO care se afla tot timpul in RAM

3. Conform algoritilor de administrarea a resurselor. Principala resursa este procesorul:
 - Sustine multisarcini
 - Sustin regim multiuser
 - Felurile de licru in regim multiprogram
 - Prelucrare multiprocesor

4. Conform domeniului si formei de exploatare
 - sisteme de prelucrare in pechete
 - sisteme de ditribuire a timpului
 - sisteme in timp real

5.Conform platformei hardware
 - pentru smart-cartele
 - incorporate
 - pentru PC
 - SO mini-calculatoare
 - SO pentru mainframe-uri
 - SO server
 - SO cluster. Clusterul este o retea de comp. care lucreaza la executarea aplicatiilor comune.


1.7 Eficacitatea si cerintele catre SO 
Cerinta principala este eficacitatea administrarii resurselor si existenta unei interfete comode. SO trebuie sa sustina prelucrearea multiprogram, memoria virtuala, interfata dezvoltata, nivel mare de securitate:

1. Eficacitatea - nivelul de corespundere al sistemei conform destinatiei.
2. Fiabilitate
3. Securitate
4. Previzibila
5.Extensibila
6.Portabilitatea
7.Compatibilitate
8.Comoditate
9.Scalabilitate


1.8 Compatibilitate și medii de aplicații multiple
Posibilitatea de a rula aplicatii scrise pentru alte SO

Compatibilitatea  la nivel de cod sursa - aplicatiile se pastreaza in SO in forma de cod susrsa


5.1 Conceptia de proces
Una din notiuniel principale, legata de SO, este procesul - notiune abstracta care descrie lucrul programei. Toate programele care lucreaza in comp., inclusiv si SO, se poate de reprezentat ca un set de procese. Sarcina SO este administrarea resurselor, sau mai exact organizarea folositii rationale al resurselor in scopul unei executari main efective al procesului. Pentru rezolvarea acestei problele, SO trebuie sa aiba informatia despre starea curenta al fiecarui proces si resurse.  Abordarea universala in prezentarea acestei informatii consta in crearea unor tabele cu informatie despre fiecare obiect controlat. Detalii din aceste tabele pot fi diferite in diferite SO, dar in esenta ele contin informatie conform categoriilor
 -  pentru memorie
 - I/O
 - fisierelor (programe si sifiere)
 - proceselor.

Avind aceleasi resurse, dar administrat de diferite SO, comp poate lucru cu nivele diferite de eficacitate. Mai greu de administrat sunt SO multiprogram.

Multitasking - este o metoda de organizare a procesului, prin care la un singur procesor se executa mai multe programe. Pentru a sustine multitasking-ul, So trebuie sa-si determine unitatile de lucru interne, intre care se va imparti procesorul si alte resurse ale comp. In SO cu prelucrarea in pachete aceasta unitate era lucrarea. In prezent sunt doua tipuri de unitati: procesul - lucrarea, si fluxul sau firul. Procesul se executa in forma de unul sau mai multe fire. In ubnele SO moderne au fost introduse unitati de lucru cum ar fi lucrarea(Job). Lucrarea in wiondows reprezinta un set format dintr-unul sau mai multe procese, administratea ca un tot intreg. In special, cu fiecare job sunt asociate cotele si limitele resurselor, care se pastreaza in obiectul corespunzator al lucrarii. Cotele includ asa puncte: numarul maximde procese, timpul total al procesorului, accesbil pentru fiecare proces si pentru toate procesele impreuna. si memoria folosita de process si de toata lucrarea. Lucrarile pot limita procesele proprii, de exemplu, accepta sau interzice dreptul de administrare.
Procesle se trateaza de SO drept niste aplicatii sau containere pentru toate tipurile de resurse, in afara de unul - timpul procesorului. Aceasta resusra importatnta se imparteste de catre SO intre alte unitati de lucru - fluxuri, care au fost denumite astfel, deoarece reprezinta o secventa de comenzi. Fiecare proces incepe cu un singur flux, iar restul se genereaza dinamic. In cel mai simplu caz procesul este cmpus dintr-un singur flux, si anume in acest mod se tratatu procesele in anii '80. In unele So aceasta situatie sa pastrat si pina in prezent.

Fluxul, de obicei, lucrea in regim utilizator, dar cind se adreseaza la apelul de sistem, se transfera in regim nucleu. Dupa finalizara apelului de sistem fluxul continua sa se execute in regim utilizator.Fiecare flux are doua stive, una se foloseste in regim nucleu, alta in regim utilizator. pe linga starea identificatorilor a doua stive, fiecare proces are un context(unde se pastreaza registrii, atunci cind procesul nu lucreaza), zona privata pentru variabilele locale, si markeul de acces. Cind fluxul inceteaza lucrul, el potate intrerupe existenta sa. procesul se finalizeaza cind se finalizeaza ultimul sau flux activ.

Transferarea fluxurilor in SO acupa destul de mult timp,deoarece pentru aceasta este nevoie de trecut in regim nucleu si apoi reintoarcerea in regimutilizator. Sunt destul de mari si pierderile timpului procesor la planificarea si administrarea flixuriloe. Pentru reprezentarea pseudoparalelizmului in wondows2000 se foloseste fibra(Fiber), asemanatoare fluxului, dar planificate in spatiul utilizatorului. Fiecare flux poate avea citeva fibre, cu diferenta, ca atunci cind fibra este ligic blocata, ea se trasnpune in coada de fibre blocate, dupa asta pentru lucrul se alege alta fibra in contextul aceluiasi flux.SO nu stie despre schimbarea fibrei, pentru ca tot acelasi flux continua sa lucreze.

In asa fel exeista ierarhia unitatilor de lucru al SO.

Apare intrebarea: de ce trebuie o organizare asa de copmplicata a lucrului, executat de SO. Raspunsul trebuie cautat in dezvoltarea teoriei si practicii multitasking, scopul careie este de a asigura maximal efectiv folosirea resursei principale - procesorului


5.2 Multitasking. Formele lucrului
Multitaskingul este pentru a mari eficacitatea SO. Indicatorii eficacitatii sunt:
 - numarul de lucrari efecetuate intr-o unitate de timp
 - comoditatea lucrului utilizatorului
 - capacitatea de a retine intervalele de timp intre executarea programei si primirea rezultatului

In dependenta de unul din acesti identificatori eficacitatea SO se imparte in prelucrarea sistem al pachetelor, sistemele de divizarea a timpului si sisteme in timp real.

Sistemele cu prelucrarea pachetelro erau destinate pentru rezolvarea problemelor care nu cereau obtinerea rezultaului repede. Numarul de lucrari efectuate maxim se atinge in cazul minimizarii connstructiei componenetelor, mai ales alprocesorului. pentru atingerea acestui scop, pachetul sde sarcini se formeaza in asa mod, ca programele primitoare, in mod balansat sa incarce toate componentele masinii.

In sistemele cu partajarea timpului se ofera posibilitatea de a lucra interactiv concomitent cu mai multe programe.

Sistemele in timp real sunt destinate administarrii obiectelor tehnica(sateliri , rachete, ) 


5.3 Administrarea proceselor si al fluxurilor
Una din cele mai importante subsisteme este  cea de control al proceselor si fluxurilor. Bazele acestei subsisteme:
 - Creare procese si fluxuri
 - asigurarea lor cu resusre
 - izolarea procesului
 - planificare executiei procesului si fluxului
 - organizarea lucrului firelor
 - organizarea interactiunii intre procese
 - sincronizarea proceselor sio firelor
 - terminarea si lichidarea proceselor si firelor

La crearea procesului se duc 5 evenimente

 - Initializarea SO(incarcare)
 - executatarea interogarii procesului care lucreaza la crearea unui proces
 - interogarea utilizatorului la crearea procesului
 - initiere lucrarea pachet
 - crearea proces SO