CATEGORII DOCUMENTE |
Sistem de operare
Sistemul de operare este un program care actioneaza ca o interfata intre utilizatorul unui sistem de calcul si hardware-ul acestuia. Menirea sistemului de operare este de a crea
un mediu in care utilizatorul sa poata executa programe cu mai multa usurinta, iar pe de alta
parte, de a asigura utilizarea eficienta a hardware-ulu
In principiu, cele mai importante componente ale aproape oricarui sistem de calcul sunt: hardware, sistem de operare, programe de aplicatii, utilizatori ( Figura 1 ).
Figura 1
Hardware-ul furnizeaza resursele de baza pentru efectuarea calculelor.
Programele de aplicatii definesc modul in care vor fi folosite aceste resurse pentru a rezolva problemele de calcul ale utilizatorilor.
Sistemul de operare ( SO ) controleaza si coordoneaza utilizarea hardware-ului intre diferite programe de aplicatii ale utilizatorilor.
SO furnizeaza instrumentele cu ajutorul carora sa fie folosite in mod corespunzator resursele de baza ale sistemului de calcul ( hardware, software ). Din acest punct de vedere, sistemul de operare poate fi privit ca administrator al resurselor pe care le aloca in functie de necesitatile programelor si utilizatorilor astfel incat exploatarea sistemului de calcul sa fie corecta si eficienta.
O alta definitie a SO pune accentul pe necesitatea controlului asupra dispozitivelor
de intrare / iesire (I/O) si a programelor utilizatorilor. Astfel, un SO poate fi privit ca un program de control care urmareste efectuarea programelor utilizatorilor pentru a putea preveni eventualele erori, precum si folosirea necorespunzatoare a sistemului de calcul, si
are deci ca principala sarcina operarea si controlul cu / si asupra dispozitivelor de I/O.
In concluzie, functiile comune de control si alocare a resurselor ce sunt necesare programelor de aplicatii sunt cumulate intr-o singura componenta software: sistemul de operare.
Cele mai vechi sisteme de calcul erau formate uneori din hardware si puteau fi utilizate prin intermediul unei console: programatorul scria liniile de program si apoi opera programul direct de la aceasta consola. Incarcarea programului in memorie, precizarea adresei de inceput si lansarea in executie se realizau manual, cu ajutorul comutatoarelor panoului frontal. Evolutia programului putea fi urmarita de catre operator prin intermediul semnalelor luminoase ale console Datele de iesire se tipareau sau erau perforate pe banda
de hartie sau cartele pentru a fi tiparite ulterior. Programatorul indeplinea si functia de operator.
Alocarea timpului de lucru in sistem se planifica de cele mai multe ori cu ajutorul unei scheme de rezervare in care fiecare utilizator isi scria numele si zona de timp pe care dorea sa o foloseasca pentru propriile programe. In cazul in care un utilizator nu reusea sa execute si sa depaneze programul in perioada de timp pe care si-o rezervase, era nevoit sa abandoneze lucrul, deoarece zona de timp urmatoare era alocata altui utilizator.
Cu trecerea timpului, o atentie deosebita a fost acordata rutinelor care realizau operatii de intrare si de iesire, deoarece fiecare dispozitiv de I/O avea caracteristici aparte, necesitand o programare adecvata. Pentru fiecare astfel de dispozitiv a fost scrisa cate o subrutina speciala, numita driver, care sa stie' cum trebuie sa fie folosite buffer-ele, flag- urile, registrii, bitii de control si bitii de stare proprii dispozitivulu Pentru realizarea operatiilor de I/O utilizatorul nu mai era nevoit sa includa in program codul necesar, ci putea sa apeleze doar driver-ul corespunzator din biblioteca.
Aparitia compilatoarelor destinate limbajelor de nivel inalt a determinat o noua crestere a complexitatii operarii in sistemele de calcul, usurand in acelasi timp munca programatorilor. Pregatirea executiei unui program scris in limbaj de nivel inalt presupune incarcarea compilatorului in memorie de pe banda magnetica, citirea programului sursa de
pe un cititor de cartele si depanarea programului executabil direct prin intermediul console
Monitorizare simpla
Timpii de pregatire a operatiilor in cadrul unui sistem de calcul constituiau o adevarata problema. Ca remediu, s-a adaugat o dubla solutie: s-a creat postul de operator calificat, astfel incat programatorul nu mai avea acces direct la sistemul de calcul si s-a hotarat gruparea job urilor in functie de resursele necesare, astfel incat acestea sa fie executate in grup ( prelucrarea pe loturi sau de tip 'batch' ).
Astfel, programatorii furnizeaza cartelele perforate sau benzile ce contineau programele, precum si o scurta descriere a job-urilor, operatorul grupa aceste job-uri si le lansa in executie, colecta rezultatele si le transmitea inapoi fiecarui utilizator. Operatorul nu putea depana un program pe care nu il cunostea, de aceea era necesara furnizarea unor informatii de control programatorulu
Pentru eliminarea timpilor morti a fost introdusa secventierea automata a job urilor luand astfel nastere primul sistem de operare rudimentar. Cu ajutorul unui mic program numit monitor rezident, care se afla permanent in memorie, s-a putut realiza transferarea automata a controlului de la un job la cel care il urma si de la un program la altul in cadrul
aceluiasi job. Succesiunea etapelor de transfer era:
monitor - program1 - monitor - program2 - monitor
Pentru ca monitorul sa stie ce program trebuia lansat in executie, operatorul ii furniza
o scurta descriere a programelor, precum si a datelor cu care se executa rularea. Pentru a deosebi cartelele de comanda de cartelele ce contineau programul sau datele, se foloseau caractere speciale in diferite coloane ($ sau //).
Cele mai importante componente ale unui monitor rezident erau:
interpretorul cartelelor de comanda ( in momentul executiei traduce fiecare comanda
in limbaj masina );
modulul ce realizeaza incarcarea in memorie a programelor de sistem si a programelor de aplicatie ( leader );
diverse dispozitive.
Operare off-line si operare on-line simultan cu mai multe periferice ( spooling )
Diferenta considerabila de viteza a operarii existenta intre unitatea centrala si dispozitivele mecanice de I/O contribuia substantial la scaderea eficientei sistemului de calcul. A inceput sa fie folosita asa-numita operare off-line a cititoarelor de cartele si a imprimantelor. Cartelele erau copiate pe banda magnetica pana in momentul in care aceasta
se completa, dupa care informatiile puteau fi citite in memoria calculatorului cu ajutorul unitatilor de banda magnetica. In mod asemanator se realiza si scrierea rezultatelor pe o banda magnetica. Principalul avantaj al acestui mod de operare era posibilitatea ca o
aceeasi UC ( unitate centrala ) sa foloseasca mai multe sisteme de cititor de cartele-banda si banda-imprimanta care sa lucreze simultan si sa furnizeze suficienta banda magnetica pentru
ca timpul de lucru al UC sa fie utilizat aproape complet.
Odata cu operarea off-line, a aparut si notiunea de independenta fata de dispozitiv a programelor ( necesitatea ca o aceeasi operatie de I/O sa poata fi realizata pe diferite dispozitive de I/O ); programele au fost scrise astfel incat sa utilizeze dispozitive logice de I/O, corespondenta dintre acestea si dispozitivele fizice fiind indicata de catre cartelele de comanda.
Odata cu aparitta discurilor magnetice, pregatirea off-line a job-urilor a fost abandonata. Discurile magnetice au permis operarea on-line, simultan, cu mai multe periferice ( spooling: Simultaneous Peripheral Operation On Line
Discul magnetic, privit ca un buffer de dimensiuni mari, poate fi folosit in scopul citirii a cat mai multor informatii de la dispozitivele de intrare si al stocarii fisierelor de iesire, pana in mometul in care dispozitivele de iesire devin disponibile si le pot prelua. Discul are capacitatea de a inmagazina informatii referitoare la mai multe job-uri, a caror evidenta este tinuta cu ajutorul unui tabel gestionat de catre SO. Deoarece pe disc pot exista
si job-uri gata de a fi executate, aceasta structura de date purtand denumirea de rezerva de job uri ( job pool , SO poate sa decida ordinea in care vor fi lansate in executie, astfel incat
sa fie imbunatatit timpul de ocupare a UC. Devine deci posibila planificarea job-urilor ( job scheduling ) si este abandonata metoda de lucru ce se baza pe regula primul sosit - primul servit'.
Metoda de operare a on-line, simultan, cu mai multe periferice, asigura utilizarea la
viteza foarte mare atat a UC, cat si a dispozitivelor de I/O.
Lucrul cu zone tampon ( buffering )
Lucrul cu zone tampon este strict legat de lucrul cu intreruperi si reprezinta o functie
a SO. Pentru fiecare dispozitiv de I/O, monitorul rezident sau driver-ele dispozitiv includ buffere sistem pentru intrari/iesir In cazul lucrului cu intreruperi fiecare controller este
dedicat unui anumit tip de dispozitiv si gestioneaza o zona buffer locala, precum si un set
de registri speciali, avand ca sarcina transferarea datelor intre dispozitiv si zona sa de buffer
( Figura 2 ).
Figura 2
In momentul initierii unei operatii de I/O, UC inscrie registrii controller-ului si apoi
isi reia secventa normala de lucru. Controller-ul examineaza continutul registrilor, afla ce operatie trebuie efectuata ( citire sau scriere ), da comanda inceperii transferului de date,
pentru ca in momentul terminarii sa informeze UC prin emiterea unei intreruper In
momentul primirii intreruperii, UC isi opreste activitatea curenta si transfera controlul la o locatie fixa de memorie in care, de obicei, este inscrisa adresa de inceput a rutinei de tratare
a intreruperi Rutina transfera datele din buffer-ul local al dispozitivului in memoria principala. La terminarea acestei operatii, UC isi reia activitatea intrerupta anterior, in acest mod putandu-se realiza operarea concurenta cu UC si cu dispozitivele de I/O.
Principalele functii ale sistemului de intreruperi sunt:
transferarea controlului rutinei de tratare a intreruperii; aceasta functie se realizeaza
prin rezervarea unui set de locatii in zona adreselor mici de memorie ( primele 100,
de exemplu ) in care sa se afle adresele tuturor rutinelor de tratare a intreruperilor;
salvarea adresei instructiunii pe care o executa UC in momentul in care a primit intreruperea, precum si salvarea contextului ( de exemplu, starea unor registri ). Aceasta se poate face intr-o locatie fixa, intr-o locatie indexata prin numarul
dispozitivului sau in stiva.
Scopul metodei de lucru cu zone tampon este cresterea eficientei sistemului de calcul prin folosirea cat mai completa a timpului de lucrual UC si al dispozitivelor periferice. Dupa
ce informatia fost citita si UC este gata sa inceapa sa o prelucreze, se da comanda dispozitivului de intrare sa initieze imediat urmatoarea citire, realizandu-se astfel ocuparea simultana a UC si a dispozitivului de intrare.
In mod asemanator se realizeaza scrierea datelor. UC creeaza datele care sunt stocate intr-un buffer pana in momentul in care vor putea fi preluate de catre dispozitivul de iesire.
Daca viteza medie ( in inregistrari / sec) a UC si a dispozitivelor de I/O este aceeasi, UC trece putin inaintea sau putin in urma dispozitivelor de I O, toate fiind folosite aproape
de capacitatea maxima.
Daca UC este, in medie, mai rapida decat un dispozitiv de intrare, metoda de lucru cu zone tampon nu este de mare ajutor. Daca UC este totdeauna mai rapida, ea va gasi mereu
un buffer gol si va trebui sa astepte actiunea dispozitivului de intrare. Pentru scriere, UC va putea functiona la puterea maxima, dar va trebui sa astepte interventia dispozitivului de iesire in cazul in care toate buffer-ele sunt pline. Aceasta situatie apare la job-urile limitate I/O, pentru care numarul total de operatii de I/O este foarte mare in comparatie cu numarul calculelor efectuate si, deoarece UC este mai rapida decat dispozitivele de I/O, viteza de executie este limitata de viteza dispozitivelor si nu de cea a UC.
La cealalta extrema, in cazul job-urilor limitate din punctul de vedere al UC, volumul calculelor este atat de mare incat buffer-ele de intrare sunt totdeauna pline, iar cele de iesire sunt totdeauna goale; UC nu poate tine pasul cu dispozitivele de I/O. Prin urmare, lucrul cu zone tampon este folositor, dar nu este suficient.
Multiprogramare
In general, un singur program utilizator nu poate sa asigure ocuparea permanenta atat
a UC cat si a dispozitivelor de I/O. Posibilitatea de a stoca pe disc magnetic o rezerva de job uri si planificarea corespunzatoare a acestora in vederea executiei permit folosirea multiprogramarii, o tehnica ce are drept scop imbunatatirea timpului de ocupare a UC. Intr-
un sistem multiprogramat, daca job-ul aflat in executie trebuie sa astepte la un moment dat
realizarea unei operatii de I/O, UC nu va sta nefolosita, ci va fi alocata altui job in acest scop de catre sistemul de operare. Atata vreme cat rezerva de job uri nu este vida, UC lucreaza din plin.
Sisteme de tip time-sharing
In cazul sistemelor cu prelucrare pe loturi ( de tip batch ), accesul la programe si date
se facea in mod secvential, astfel incat, la un moment dat se putea executa un singur program de aplicatie. O caracteristica a sistemelor de tip batch este lipsa de interactiune intre utilizator si job in timpul executie Job-ul este pregatit si prezentat pentru a fi executat iar, dupa un anumit timp, numit turnaround time', se vizualizeaza rezultatul. Utilizarea sistemelor de tip batch este indicata in cazul job urilor cu durata de executie mare
si care nu necesita prea multa comunicare utilizator-sistem.
Sistemele de calcul conventionale, interactive, permit comunicarea intre utilizator si sistem: utilizatorul transmite comenzi sistemului de operare sau, direct, unui program ( de obicei prin intermediul tastaturii) si primeste raspunsul imediat. Sistemele interactive sunt folosite de obicei atunci cand se doreste executarea unor job uri compuse din mai multe secvente de scurta durata si al caror rezultat nu poate fi prevazut.
SO de tip time-sharing au aparut din dorinta de a realiza utilizarea interactiva a sistemelor de calcul la un pret de cost rezonabil. Datorita planificarii UC si multiprogramarii, un acelasi sistem de calcul poate fi folosit simultan de catre mai multi utilizatori, deserviti in ferestre de timp diferite, dar suficient de mici pentru a da impresia unei executii neintrerupte a programelor. Ideea de baza este destul de simpla: in memoria sistemului, fiecare utilizator are un program separat a carui executie necesita o perioada de timp scurta pana in momentul incheierii sau pana in momentul in care este necesara realizarea unei operatii de I/O ce poate fi de tip interactiv. Deoarece aceste operatii se realizeaza la nivelul vitezei umane de operare, ele necesita o perioada de timp destul de lunga. De exemplu, operatia de intrare este conditionata de viteza cu care sunt apasate tastele. Pe durata unor astfel de operatii, pentru a elimina timpii de nefolosire a UC, SO va comuta rapid controlul UC asupra programului unui alt utilizator. Deoarece pentru fiecare utilizator este necesara numai o mica perioada din timpul de lucru al UC si controlul este comutat rapid de la un utilizator la altul, fiecare dintre acestia are impresia ca lucreaza singur in sistem, in timp ce, de fapt, sistemul de clcul este folosit in comul de catre mai multi utilizator
Mecanisme de protectie
Un SO este bine proiectat numai atunci cand poate asigura executia corecta a programelor, chiar in cazul existentei unui program scris incorect. Multe dintre erorile de programare pot fi detectate de catre hardware si sunt controlate in mod normal de catre monitorul rezident. Daca intr-un program apare o instructiune nepermisa sau o greseala de eroare a memoriei, hardware-ul va genera o intrerupere catre monitorul rezident, numita capcana ( trap ). Termenul de capcana este folosit pentru a desemna o intrerupere interna, generata de obicei ca urmare a aparitiei unei erori in program. Actionand ca o intrerupere, aceasta va determina memorarea contorului program asociat ultimei instructiuni si va da controlul unei rutine a monitorului rezident. Inainte de a se aborda urmatorul job, monitorul executa in mod automat un vidaj de memorie si registri, care poate fi utilizat in depanarea programului abandonat. Pentru a realiza protejarea tuturor programelor, datelor si resurselor fata de toate erorile ce pot sa apara in functionare, sunt necesare 3 tipuri de protectie: protejarea operatiilor de I/O, protejarea memoriei si protejarea UC.
Protejarea operatiilor de I/O - pentru ca sistemul de calcul sa se comporte diferit fata de SO, pe de-o parte, si fata de programele utilizator, pe de alta parte, au fost adaugate doua moduri de operare distincte: modul utilizator si modul monitor ( numit si mod supervizor sau mod sistem). Pentru indicarea modului curent de operare a fost adaugat hardware-ului un bit cu urmatoarea semnificatie: 0=monitor; 1=utilizator. Atunci cand monitorul rezident cedeaza controlul unui program utilizator, se trece in mod utilizator, bitul
de mod primind valoarea 1. Daca insa apare o capcana sau o intrerupere, hardware ul comuta modul de operare de la mod utilizator la mod monitor, dand bitului valoare 0.
Instructiunile de I/O pot fi definite ca instructiuni privilegiate, a caror executie este permisa de catre hardware numai in mod monitor, de catre driver-ele dispozitiv ( care fac parte din monitorul rezident). Dispare deci pericolul ca un program sa citeasca/inscrie datele aferente altui program. Programul utilizator poate realiza operatii de intrare/iesire numai prin intermediul monitorului caruia ii cere sa execute aceste operatii in locul sau cu ajutorul unei instructiuni speciale, numita apelare a monitorului sau apel de sistem ( system call ). Apelul sistem este tratat de catre hardware ca o intrerupere software: prin intermediul vectorului de intreruperi se transfera controlul unei rutine a monitorului rezident, iar bitul de mod primeste valoarea corespunzatoare modului monitor.
Protejarea memoriei - in general, se doreste protejarea monitorului rezident fata de eventualele actiuni ale programelor utilizator, precum si protejarea programelor utilizator unul fata de altul. Toate aceste sarcini revin hardware-ulu Protejarea continutului memoriei situate inainte si dupa zona ocupata de un program executabil se poate realiza folosind doi registrii limita, care sa stocheze valorile limitelor superioara si inferioara ale adreselor fizice
ce pot fi generate de un anumit program utilizator ( Figura 3 ).
Figura 3
Registrii limita pot fi inscrisi numai de catre SO cu ajutorul unei instructiuni privilegiate speciale, deci nu pot fi accesate in nici un fel de catre programele utilizator, executia instructiunilor privilegiate facandu se numai in mod monitor. In timpul executiei, fiecare adresa generata in mod utilizator este comparata cu valorile continute in registrii limita, astfel incat daca un program care se executa in mod utilizator incearca sa acceseze memoria rezervata monitorului sau altui utilizator, se genereaza o capcana spre monitor ce
va fi tratata ca eroare fatala ( Figura 4 ).
Acest mecanism impiedica programul utilizator sa modifice ( accidental sau intentionat ) codul sau structurile de date destinate monitorului sau altor programe utilizator.
Figura 4
Protejarea UC - pentru ca UC sa nu fie monopolizata de catre un singur utilizator, in arhitectura sistemelor de calcul a fost inclus un temporizator ( timer ) ce poate fi programat pentru a intrerupe functionarea calculatorului dupa o anumita perioada de timp cu durata fixa sau variabila. Implementarea unui temporizator cu durata variabila se realizeaza, de obicei, cu ajutorul unui ceas si a unui numarator: SO seteaza numaratorul si apoi, la fiecare tact de ceas, numaratorul este decrementat, pana cand, ajungand la valoarea 0, se genereaza
o intrerupere. Instructiunile cu ajutorul carora poate fi modificat modul de operare al timer- ului sunt privilegiate.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1827
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved