Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Capitole Somipp teme, Study Guides, Projects, Research of Operating Systems

uhjbhbbhjbhjbhbhjbjhbhjvgdxdxzfxrx

Typology: Study Guides, Projects, Research

2022/2023

Uploaded on 06/04/2023

ana-maria-erhan
ana-maria-erhan 🇲🇩

1 document

Partial preview of the text

Download Capitole Somipp teme and more Study Guides, Projects, Research Operating Systems in PDF only on Docsity! Material didactic pentru studenţii FCIM, anul III, specialitatea TI C:\Users\Victor Besliu\Desktop\SOMIPP\cap. 1.doc p.1 Sisteme de operare. Mecanisme interne și principii de proiectare 1 . Introducere Cursul tratează conceptele și principiile fundamentale ale teoriei și practicii sistemelor de operare (SO). Sunt prezentate definițiile principale și unele clasificări, interfețele sistemelor de operare, modul de organizare a procesului de calcul, gestionarea memoriei și a dispozitivelor periferice, administrarea informației și gestiunea fișierelor. Lucrarea acoperă aspectele asociate bazelor contemporane ale metodelor şi mijloacelor de elaborare a resurselor program de sistem (inclusiv, operaţii asincrone, tratarea întreruperilor, compromisele dintre dispozitivele tehnice şi resursele program, interfeţele sistemelor de operare), având drept obiectiv final pregătirea cititorului pentru analiza şi proiectarea sistemelor de operare. Cursul include capitole teoretice și materiale ilustrative practice, chemate să familiarizeze cititorul nu atât cu modalitatea utilizării unor sisteme de operare concrete, ci în special cu metodele și algoritmii, care stau la baza mecanismelor interne ale sistemelor de operare și modul în care acestea sunt concepute, proiectate și implementate. Un sistem de calcul constă din două tipuri de resurse: resursele fizice și resursele logice. Resursele fizice posedă caracteristici tehnice avansate şi pot fi utilizate în cele mai diverse scopuri. Însă aceste resurse fără componentele logice de sistem (software de sistem) întâmpină dificultăţi mari în relaţia cu mediul în care trebuie să funcţioneze. Acesta este unul dintre motivele principale ale creării sistemelor de operare, destinaţia cărora este administrarea (gestiunea, controlul) resurselor tehnice principale şi asigurarea unei interfeţe comode (plăcute, prieteneşti) între utilizator şi calculator (fig.1.1, [1]). Fig.1.1. Locul sistemului de operare în cadrul unui sistem de calcul Există mai multe motivaţii ale necesităţii studierii de către viitorii specialişti IT a sistemelor de operare, cele mai importante fiind următoarele:  pentru utilizarea resurselor hardware în scopuri speciale poate fi necesar să fie creeat un sistem de operare propriu sau să se introducă modificări într-unul existent;  de alegerea corectă a sistemului de operare şi a versiunii concrete poate depinde viabilitatea şi eficacitatea sistemului de calcul;  este ideal ca utilizatorul să interacţioneze cu sistemul de operare cunoscând toate subtilităţile ultimului, deoarece sistemul de operare este un intermediar între calculator şi utilizator;  multe metode şi concepte, utilizate în domeniul SO, pot fi implementate cu succes şi în alte domenii. Prin noţiunea sistem de operare înţelegem în primul rând modulele program ale unui sistem de calcul, care administrează resursele tehnice (procesoare, memoria operativă şi secundară, dispozitive de intrare/ieşire, fişiere). Modulele în cauză soluţionează situaţiile de conflict, optimizează productivitatea sistemului, sporesc eficienţa utilizării lui. Ele sunt un fel de intermediar (interfaţă) între programele utilizatorului şi componentele tehnice ale calculatorului. Alte denumiri istorice: program de administrare, monitor, supervizor. Modulele destinate unor domenii anume, cum ar fi translatoarele, depanoarele, bibliotecile, mediile integrate de dezvoltare etc., nu sunt incluse în definiţia unui SO, fiind considerate şi ele „utilizatori” ai sistemului de operare. 1.1. Noţiuni de bază şi clasificări Un calculator constă dintr-un ansamblu de componente funcţionale fizice şi logice, care cooperează pentru a satisface cerinţele utilizatorilor privind introducerea, stocarea, prelucrarea, transmisia şi căutarea informaţiilor. Aceste componente funcţionale sunt structurate pe niveluri, care interacţionează prin interfeţe bine definite. Dispozitivele fizice (controlere, magistrale, monitoare etc.) Microarhitectura (regiștrii UC, UAL) Limbajul cod-mașină Sistemul de operare Utilitare, compilatoare, editoare, interpretoare Aplicații Utilizatorii finali Programatorii Dezvoltatorii de SO Material didactic pentru studenţii FCIM, anul III, specialitatea TI C:\Users\Victor Besliu\Desktop\SOMIPP\cap. 1.doc p.2 Suportul fizic (resurse tehnice, hardware) constituie nivelul inferior al sistemului de calcul construit pe baza unor componente electronice, magnetice, optice, mecanice etc., mai mult sau mai puţin sofisticate în funcţie de stadiul de dezvoltare a tehnologiilor respective. 1.1.1. Noţiuni şi termeni din domeniul resurselor tehnice Pentru a trece la noţiunile principale, legate de hardware, vom face cunoştinţă mai întâi cu funcţiile de bază ale unui calculator. Pot fi evidenţiate cinci funcţii esenţiale [2]: iniţializarea (bootup), introducerea datelor, procesarea datelor, stocarea datelor şi extragerea rezultatelor:  Iniţializarea implică testarea părţilor importante ale calculatorului, rularea fişierelor de pornire şi încărcarea altor fişiere necesare, cum ar fi driverele de dispozitive;  Introducerea reprezintă transferul datelor dintr-o sursă externă în calculator. Surse externe pot fi dischetele, tastatura, mouse-ul etc.;  Procesarea se referă la manipularea datelor introduse în scopul producerii unui rezultat (ieşirea);  Stocarea constituie procesul salvării informaţiilor (date sau programe) într-un dispozitiv de păstrare, de exemplu discul fix, pentru recuperarea ulterioară. Prin structura unui calculator vom înţelege componentele (dispozitivele) care formează calculatorul şi legăturile dintre ele. Componentele principale sunt: procesorul, memoria, inclusiv unităţile de stocare pe termen lung, dispozitivele de intrare-ieşire (tastatura, display-ul, mouse-ul etc.). Relaţiile (legăturile) dintre aceste componente pot fi foarte variate, o structură devenită apoi clasică, este structura John von Neumann (fig.1.2). Componentele principale se conectează la placa de bază (motherboard) direct sau prin conectoare speciale, numite plăci de extensie (daughterboards). Unitatea centrală de procesare – procesorul (CPU) se găseşte într-un singur circuit integrat (cip) incorporând unitatea de comandă (Control Unit, CU) şi unitatea logico-aritmetică (Arithmetic Logical Unit, ALU). Unitatea de comandă controlează funcţionarea unităţii logico-aritmetice. Memoria este o zonă de lucru de mare viteză, unde sunt stocate datele şi programele pentru a fi accesate de CPU în mod rapid. Memoria poate fi organizată în mod ierarhic, caz în care există cel puţin două nivele de ierarhie – memoria centrală (operativă, internă) şi memoria secundară (externă, de lungă durată). Memoria operativă este electronică sub formă de cipuri, de obicei cu acces aleator (RAM – Random Access Memory) şi trebuie să fie alimentată cu tensiune pentru a păstra datele (memorie vie). Pentru salvarea datelor atunci când se întrerupe alimentarea sau pentru păstrare de lungă durată, datele sunt stocate în memoria secundară, care le reţine oricât de mult timp. Dispozitivele cele mai obişnuite de introducere a datelor sunt tastatura şi mouse-ul, iar dispozitivul de ieşire cel mai utilizat este monitorul. Procesorul şi memoria operativă formează nucleul calculatorului, toate celelalte dispozitive fiind cunoscute sub denumirea de periferie (dispozitive periferice). Instrucţiunile care vor fi îndeplinite de calculator sunt stocate în memorie sub formă de programe. Unitatea de comandă ţine evidenţa şi interpretează instrucţiunile dintr-un program, fiind responsabilă cu transmiterea de sarcini Hard disc Imprimantă Modem Monitor (ieşire) Port paralel Port serial Placă PC Controler afişare Placă PC Controler HDD Placă PC B u s d e ex te n si e Unitatea de control (UC) Unitatea logico- aritmetică (ULA) Procesorul central (UCP) Memoria centrală Controler de tastatură Tastatură (Intrare) Fig. 1.2. Structura unui calculator Controler I/O Material didactic pentru studenţii FCIM, anul III, specialitatea TI C:\Users\Victor Besliu\Desktop\SOMIPP\cap. 1.doc p.5 1.1.3.1. Cazul calculatoarelor personale Configuraţia cea mai simplă a unui calculator personal (PC) include o unitate centrală, o memorie principală, un display, o tastatură şi un mouse. Această configuraţie, de obicei, este completată de o memorie secundară şi o imprimantă (fig.1.3). Fig. 1.3. Structura unui calculator personal Utilizatorul unui atare sistem va cere minimum următoarele două tipuri de servicii:  executarea unor programe existente în PC sau introduse sub formă de fişiere; introducerea datelor necesare pentru executarea programului (de la tastatură, din fişier sau din alte surse); listarea rezultatelor la display, imprimantă sau copierea lor într-un fişier;  identificarea şi crearea unor fişiere sau mulţimi structurate de informaţii; stocarea acestor fişiere în memoria secundară; transferarea informaţiilor între fişiere şi dispozitivele de intrare/ieşire. Sistemul de operare poate acorda aceste servicii prin intermediul unui limbaj special, numit limbaj de comandă, introducându-se de la tastatură instrucţiuni de forma <acţiune> <parametri>, sau utilizând mouse-ul şi o interfaţă grafică a utilizatorului (GUI - graphical user interface), acţionările mouse-lui fiind imediat interpretate de sistem. Iată două exemple de secvenţe tipice de activităţi în cazul unui PC:  elaborarea unui program;  introducerea programului cu ajutorul tastaturii şi a unui editor de texte;  executarea programului introducându-se datele necesare de la tastatură şi extrăgând rezultatele la display sau imprimantă;  modificarea programului, dacă rezultatele nu sunt satisfăcătoare şi repetarea execuţiei;  perfectarea versiunii finale a programului, inclusiv documentarea la necesitate a acestuia;  exploatarea unui program;  cererea de executare a unui program deja existent. Vor fi pregătite în prealabil date de intrare sau acestea vor fi introduse in mod interactiv la cerere cu ajutorul tastaturii;  afişarea rezultatelor pe ecran, listarea la imprimantă sau copierea lor într-un fişier pentru o utilizare ulterioară. Într-un atare sistem funcţia partajare a resurselor poate fi lipsă, or PC-ul este folosit de un singur utilizator care are controlul total asupra acestuia. Alocarea resurselor este legată de gestionarea memoriei şi administrarea fişierelor. Funcţiile principale vizibile ale sistemului de operare constau în administrarea fişierelor, realizarea operaţiilor de intrare/ieşire şi interpretarea comenzilor provenite de la interfaţa utilizator-sistem de operare. Pentru acest tip de sisteme cele mai importante caracteristici sunt:  fiabilitatea;  eficacitatea;  simplitatea utilizării;  facilitatea extensibilităţii prin adăugarea unor utilite noi sau adaptarea la periferice noi. Ultimele două aspecte pun în evidenţă importanţa interfeţelor oferite de sistem (limbajul de comandă sau GUI). 1.1.3.2. Comanda unor procese industriale La o uzină chimică sunt utilizate doua materii prime A şi B pentru sinteza produsului C conform fig. .4. Procesul de producere este comandat de un calculator care îndeplineşte următoarele funcţii:  Reglare. Pentru o derulare bună a procesului de fabricaţie parametrii de funcţionare (temperatura, presiunea, concentraţia, etc.) trebuie să se afle într-o plajă de valori predefinite. Pentru aceasta va fi acţionat debitul de intrare a materiilor prime A sau B. Parametrii de funcţionare sunt măsuraţi cu ajutorul unor captoare. Memoria secundară Imprimanta Memoria principală Display Tastatura Mouse Procesorul Material didactic pentru studenţii FCIM, anul III, specialitatea TI C:\Users\Victor Besliu\Desktop\SOMIPP\cap. 1.doc p.6 Calculatorul preia aceste măsurări şi, în dependenţă de algoritmul de comandă, acţionează robinetele de intrare.  Înregistrare. Rezultatele măsurărilor sunt periodic înregistrate; valorile lor sunt afişate pe un tablou de bord şi recopiate într-un fişier ("jurnal de bord") în scopul unor prelucrări ulterioare (date statistice).  Securitate. În cazul în care unul dintre parametrii măsuraţi depăşeşte o valoare critică predefinită reactorul trebuie oprit imediat. Acest mod de funcţionare introduce unele restricţii: 1. Măsurările se produc periodic; fie T valoarea intervalului de timp dintre două măsurări consecutive (perioada de eşantionare), iar t - timpul total de prelucrare a datelor de către calculator (măsurarea propriu- zisă a semnalelor observate, înregistrarea, calcularea semnalelor de comandă şi acționarea robinetelor). Sistemul va funcţiona doar în cazul respectării relaţiei t  T. 2. Securitatea sistemului are prioritate maximă. Depăşirea unor valori critice trebuie să fie detectată în orice moment şi tratarea acestor accidente va întrerupe toate operaţiile în curs de execuţie. Funcţiile principale ale sistemului de operare sunt:  acţionarea organelor externe (citirea semnalelor captoarelor, comanda robinetelor);  evidenţa timpului real (declanşarea periodică a ciclului de calculare a semnalelor de comandă);  reacţia la evenimentele exterioare (oprire de urgenţă);  gestiunea informaţiilor (păstrarea şi întreţinerea jurnalului de bord). Existenţa unor restricţii stricte privind durata de prelucrare a informaţiilor, noţiunea de tratare prioritară, conectarea la dispozitive exterioare de măsurare şi acţionare sunt caracteristice aplicaţiilor informatice în timp real. Pot fi menţionate şi alte domenii cu comandă în timp real: centralele telefonice, comanda aparatelor de zbor, robotica, monitoringul medical, etc. În cazul acestor sisteme caracteristica principală este fiabilitatea, or rezultatele unei funcţionări neadecvate pot fi catastrofale. Sistemul trebuie să garanteze un serviciu minim în cazul unor căderi în pană a dispozitivelor tehnice, unor evenimente accidentale sau erori umane. 1.1.3.3. Sisteme tranzacţionale Caracteristicile principale ale sistemelor tranzacţionale sunt următoarele:  sistemul gestionează un set de informaţii sau baze de date, care pot atinge volume importante;  asupra acestor informaţii pot fi executate anumite operaţii predefinite, sau tranzacţii, adesea interactive;  sistemul este dotat cu un mare număr de puncte de acces şi un mare număr de tranzacţii pot derula simultan. Ca exemplu pot fi menţionate sistemele de rezervare a biletelor, de gestiune a conturilor bancare, de arhivare şi consultare a documentelor. Restricţiile sunt în primul rând legate de integritatea şi coerenţa internă a informaţiilor, care formează bazele de date. Aceste restricţii depind, evident de aplicaţie. De exemplu, numărul de locuri rezervate într-un avion nu poate depăşi numărul locurilor disponibile, un loc distinct poate fi atribuit unei singure persoane, etc. Calităţile obligatorii ale unui sistem tranzacţional sunt disponibilitatea şi fiabilitatea; pentru unele sisteme poate fi importantă şi toleranţa la defecţiuni. O caracteristică importantă ale sistemelor tranzacţionale este multitudinea activităţilor paralele, iar în multe cazuri şi repartizarea geografică a componentelor. Înregistrări Semnale de comandă C Reactor Robinete B A Captoare Calculator Semnale de măsură Fig. 1.4. Schema unui proces chimic Material didactic pentru studenţii FCIM, anul III, specialitatea TI C:\Users\Victor Besliu\Desktop\SOMIPP\cap. 1.doc p.7 1.1.3.4. Sisteme cu partajarea timpului Destinaţia principală a unor astfel de sisteme este furnizarea serviciilor necesare unei mulţimi de utilizatori, fiecare dintre ei beneficiind de servicii:  echivalente serviciilor unui calculator individual;  legate de existenţa unei comunităţi de utilizatori: partajarea informaţiilor, comunicaţii între utilizatori. Problemele care apar datorită conceptului de partajare a timpului sunt o combinaţie a problemelor existente în cazul unui calculator individual cu cele din sistemele tranzacţionale şi pot fi clasificate după cum urmează:  definirea maşinii virtuale, oferite fiecărui utilizator;  partajarea şi alocarea resurselor fizice comune: procesoare, memorii, organe de comunicaţie;  gestionarea informaţiilor partajate şi a comunicaţiilor. Caracteristicile obligatorii unui atare sistem combină în egală măsură calităţile unui sistem de operare al unui calculator individual şi al unui sistem tranzacţional: disponibilitatea, fiabilitatea, securitatea, exploatarea optimă a resurselor fizice, calitatea interfeţei şi serviciilor utilizatorului, simplitatea adaptării şi extensibilităţii. 1.2. Puncte de vedere asupra sistemelor de operare 1.2.1. Sistemul de operare şi procesele Noţiunea de proces, introdusă mai sus, este asociată conceptului de lucrare (pentru a lua în considerare aspectele dinamice) şi poate fi definită altfel ca o suită temporală de execuţii de instrucţiuni, fiind o entitate de bază în descrierea sau analiza funcţionării unui sistem de operare. Evoluţia în timp a unui proces presupune un consum de resurse, dictat de natura şi complexitatea instrucţiunilor de executat. Orice utilizare a unei resurse este asociată, la un moment dat, unui proces şi procesul respectiv îşi asumă răspunderea utilizării acestei resurse. În particular, rezultă că ori de câte ori se execută procedurile de sistem, resursele pe care le utilizează sistemul intră în administrarea procesului (fie el şi al utilizatorului), care a cerut serviciul. Mulțimea resurselor (procesorul, memoria centrală, informaţia, dispozitivele) alocate unui proces variază în timp (dinamica procesului). Anterior un sistem de operare a fost definit ca un set de programe destinat să administreze resursele. Care sunt relaţiile dintre programele sistemului de operare? Atunci când un proces este creat, care este ordinea de utilizare a unui anume program al SO? Pentru a răspunde la aceste întrebări (şi la altele) vom face cunoştinţă cu ciclul de viaţă a unui proces. În fig. 1.5 sunt prezentate trei procese (trei sarcini ale utilizatorilor, lansate în execuție) existente într- un sistem cu multiprogramare. Fig. 1.5. Trei procese într-un sistem cu multiprogramare Ciclul de viaţă a unui proces poate fi reprezentat printr-un set de stări ale procesului şi tranzițiile de la o stare la alta. Vom evidenţia trei stări elementare ale unui proces: proces ales (sau exe) – procesului i s-a alocat un procesor, este în curs de execuţie, proces blocat (wait)– procesul aşteaptă să se producă un anumit eveniment a cărui apariţie este indispensabilă, proces eligibil (ready)– procesul are la dispoziţie toate resursele necesare lipsă fiind doar procesorul, adică este pregătit să fie execute din momentul alocării unităţii centrale (fig. 1.6). Fig. 1.6. Stările elementare din ciclul de viaţă a unui proces Procesul 1 Procesul 2 Procesul 3 Sistemul de operare Ales (Exe) Eligibil (Ready) Blocat (Wait) Procesului i s-a alocat procesorul Procesul aşteaptă terminarea operaţiei I/O Operaţia de I/O s-a terminat Material didactic pentru studenţii FCIM, anul III, specialitatea TI C:\Users\Victor Besliu\Desktop\SOMIPP\cap. 1.doc p.10 maşină ierarhică este adusă în fig. 1.10. Procesele (incluse în dreptunghiuri) se adresează către funcţiile nucleului şi utilizează împreună sursele sistemului. Unele procese generează sau comandă alte procese (graniţa dintre ele este prezentată de liniile în zig-zag, care separă diferite straturi ale proceselor). Într-o realizare strict ierarhică modulele, situate într-un nivel oarecare, pot accesa (se pot adresa) numai resursele nivelelor inferioare. La nivelul 1 (nivelul cel mai inferior) sunt situate funcţiile de care au nevoie toate componentele administrării resurselor. Una dintre acestea este funcţia care urmăreşte repartizarea resurselor, funcţie, care la rândul său, solicită anumite mijloace de sincronizare. Aceste operaţii elementare sunt numite P-operator (ocuparea resursei sau cererea de acces) şi V-operator (eliberarea resursei). Sincronizarea se face printr-o tehnică de programare, numită semafor. Fiecărei resurse îi este ataşat un semafor. Atunci când în sistem apare o cerere pentru o resursă oarecare, pentru testarea semaforului respectiv este utilizat P-operatorul; dacă semaforul este “pe verde” (resursa este liberă), P- operatorul îl trece “pe roşu” (îl închide) şi returnează controlul. În caz contrar, procesul care a generat cererea este trecut în stare de aşteptare, pentru ca mai târziu, atunci când V-operatorul va elibera resursa şi va trece semaforul “pe verde”, să acceseze resursa. Amplasarea funcţiilor elementare pe nivele poate fi făcută în felul următor: Nivelul 1. Administrarea procesoarelor (nivelul inferior)  P - operatorii de sincronizare  V - operatorii de sincronizare Procese de I/O care deservesc procesul 3 al utilizatorului Fig. 1.10. Structura ierarhică a sistemului de operare Planificator taskuri Procesul 1 Nivelul 1 Administrare procesoare (P,V), planificare procese Maşina “goală” Nivelul 3 Administrare procesoare (nivel superior, mesaje, creare şi distrugere procese) Nivelul 2 Nivelul 4 Administrare dispozitive Nivelul 5 Administrare informaţie Administrare memorie Taskuri Procesul 2 Procesul 3 I/O de sistem Proces de I/O Proces creat de utilizator Stratul 1 Stratul 0 Stratul 2 Material didactic pentru studenţii FCIM, anul III, specialitatea TI C:\Users\Victor Besliu\Desktop\SOMIPP\cap. 1.doc p.11  planificarea proceselor (aparatul de multiprogramare) Nivelul 2. Administrarea memoriei  alocarea memoriei  eliberarea memoriei Nivelul 3. Administrarea procesoarelor (nivelul superior)  crearea şi distrugerea unui proces  transmiterea şi recepţionarea mesajelor între procese  lansarea unui proces  oprirea unui proces Nivelul 4. Administrarea dispozitivelor  urmărirea stărilor tuturor dispozitivelor periferice  planificarea intrărilor/ieşirilor  iniţierea operaţiilor de intrare/ieşire Nivelul 5. Administrarea informaţiei  crearea şi distrugerea unui fişier  deschiderea şi închiderea unui fişier  citirea şi înscrierea unui fişier. Nucleul sistemului de operare este format de subprogramele, care asistă execuţia proceselor. Pentru a decide care funcţii pot fi realizate în formă de procese separate este necesar să se stabilească funcţiile care pot fi executate independent şi în mod paralel cu procesele utilizatorului (nu se va câştiga nimic evidenţiind în procese separate funcţii care trebuie să fie îndeplinite secvenţial). Sistemele avansate permit crearea oricărui număr de procese, ceea ce este foarte comod pentru organizarea calculelor paralele sau a regimurilor de timp real. În cadrul tehnologiilor noi noţiunea de proces a fost substanţial modificată, introducându-se alte concepte (fire, thread en.), care exploatează într-un mod mai eficient ideile multitasking-ului şi multiprogramării. 1.2.3. Alte puncte de vedere În compartimentele precedente au fost tratate sistemele de operare din diferite puncte de vedere, cum ar fi SO şi procesele, SO şi maşina extinsă sau SO şi maşina ierarhică. Există şi alte puncte de vedere asupra sistemelor de operare pe care un specialist ar trebui să le cunoască. Pentru un utilizator obişnuit, convins că un calculator este doar un instrument care îl ajută în rezolvarea unor probleme din domeniul său de activitate, noţiuni cum ar fi administrarea memoriei cu paginaţie sau driverele dispozitivelor nu semnifică prea multe. Destinaţia principală a unui sistem de operare pentru această categorie de utilizatori este punerea la dispoziţie a unui set de programe care ar ajuta în formularea şi rezolvarea problemelor concrete. Abordarea sistemelor de operare din acest punct de vedere (abordare funcţională) poate conduce la confundarea lor cu unele programe, utile şi foarte importante cum sunt translatoare, bibliotecile, mediile integrate, etc. Pentru a evita posibilitatea apariţiei unei astfel de probleme aceste programe, de obicei, nu sunt considerate componente ale sistemului de operare. Interfaţa sistemului de operare cu utilizatorul prezintă un interes aparte. Progresul în acest domeniu este spectaculos, dacă vom lua în consideraţie că în primele sisteme de operare utilizatorul era obligat să indice în mod explicit şi manual fiecare pas, oricât de nesemnificativ ar fi părut. Formularea paşilor cu ajutorul limbajului de control al lucrărilor (Job Control Language, JCL) nu a schimbat substanţial situaţia. Acest limbaj, nefiind agreat de utilizatorii simpli, care l-au denumit limbaj păsăresc, aşa şi nu a fost acceptat de către aceştia. Conform JCL utilizatorul trebuie să încorporeze programul propriu într-un set de instrucţiuni, care indicau începutul, sfârşitul programului şi al datelor de intrare, paşii şi conţinutul concret al paşilor. JCL în principiu era un metalimbaj de programare (programare la nivel macro). Pentru mijloacele tehnice de la acea perioadă JCL a sporit substanţial eficienţa sistemelor de calcul, deşi au existat multe inconveniente, principalul fiind lipsa posibilităţii lucrului interactiv. Microprocesoarele şi memoriile anilor 1970 au pus problema lansării pe piaţă a calculatoarelor personale (PC) cu toate consecinţele asociate. Una din consecinţe este şi interfaţa utilizator-calculator, sistemul de operare devenind până la urmă responsabil de aceasta. Interfaţa grafica a utilizatorului (Graphical User Interface - GUI) a apărut mai întâi ca un complement al sistemului de operare (pentru MS DOS - Windows 1, Windows 2 sau chiar Windows 3, de exemplu), pentru ca mai apoi să fie integrată în cadrul sistemului (Windows 95, Windows NT, etc.). Un sistem de operare nu este, în principiu, obligat să posede o interfaţă sofisticată, totul este determinat de baza tehnică utilizată şi Material didactic pentru studenţii FCIM, anul III, specialitatea TI C:\Users\Victor Besliu\Desktop\SOMIPP\cap. 1.doc p.12 de necesităţile concrete. Oricum, un specialist trebuie să distingă aceste două noţiuni – sistemul de operare şi interfaţa utilizatorului. 1.3. Evoluţia sistemelor de operare O analiză cronologică a dezvoltării sistemelor de operare este greu de realizat, deoarece multe din principiile foarte importante au fost realizate pentru prima dată cu mult înainte de a deveni unanim acceptate. De exemplu, conceptele de memorie paginată şi memorie virtuală au fost realizate pentru prima dată în 1959 în cadrul sistemului “Atlas” [5], fiind utilizate la mijlocul anilor 1960 în unele sisteme cu destinaţie specială, pentru ca în 1972 să fie preluate de firma IBM în cadrul familiei de calculatoare mari. Primele sisteme erau caracterizate prin prelucrarea secvenţială a sarcinilor. Timpul de execuţie a programelor era relativ mare, instrumentele de depanare – primitive, fiecare programator îşi încărca în mod individual programul (pachetul de cartele perforate), apăsa butoane, controla conţinutul locaţiunilor de memorie, etc. (1950 – 1956). Sporirea vitezei de calcul, dar şi a preţului calculatoarelor cerea o utilizare mai eficientă a timpului de calculator. Nu putea fi tolerată situaţia ca un calculator să “nu facă nimic”, atunci când utilizatorul îşi încarcă în mod manual programul. Au fost propuse programe de monitorizare (monitoare), care treceau de la o lucrare la alta în mod automat, utilizatorul fiind responsabil de organizarea corectă a programelor în cadrul unui pachet – primele încercări de prelucrare pe loturi (1956 – 1959). Odată cu creşterea complexităţii calculatoarelor, îndeosebi în ceea ce consta administrarea dispozitivelor periferice, au fost propuse sisteme supervizoare (executive), care se aflau în memoria calculatorului în mod constant şi acordau utilizatorilor servicii în gestiunea operaţiilor de intrare/ieşire (1959 – 1963). În aceste sisteme de operare erau realizate şi o serie de facilităţi noi, cum ar fi controlul unor posibile încercări din partea programului de a încălca restricţiile existente în sistem, culegerea informaţiilor de evidenţă, etc. Au urmat apoi sistemele cu multiprogramare menite la început să rezolve problema armonizării vitezei de calcul a unităţii centrale şi a perifericelor. Drept consecinţă, au apărut o mulţime de limbaje de control a lucrărilor, a fost realizată o standardizare substanţială a operaţiilor de intrare-ieşire. După 1965 au apărut primele sisteme cu partajare a timpului (time sharing), au fost propuse sisteme sofisticate de administrare a informaţiei (sisteme de gestiune a datelor sau sisteme de fişiere, File Systems). Principiul time sharing oferea posibilitatea lucrului interactiv a mai multor utilizatori pe un singur calculator, fiecărui utilizator în mod ciclic acordându-i-se un interval anume de timp (cuantă de timp) şi, datorită vitezei mari de calcul a unităţii centrale, creându-i-se impresia posesiei tuturor resurselor calculatorului. Memoria virtuală şi maşinile virtuale sunt nişte principii care nici până astăzi nu au fost exploatate până la capăt. Progresele ultimilor ani în domeniul resurselor tehnice au permis implementarea acestor principii nu numai în cadrul sistemelor de calcul mari, ci şi pentru calculatoarele personale. Specificaţiile sistemelor de operare au fost în mare măsură standardizate, diversitatea SO devine tot mai mică, mulţi specialişti exprimându-şi îngrijorarea de o posibilă monopolizare a domeniului într-un viitor apropiat. Evident, aceasta nu poate să sugereze nici într-un caz ideea că studierea principiilor de bază (mai vechi şi mai noi) ale sistemelor de operare ar fi de prisos, ca şi familiarizarea sau chiar cercetarea minuţioasă a unor sisteme existente, nicidecum nu poate însemna, în special pentru un specialist, pierderea interesului faţă de analiza şi concepţia sistemelor de operare. O prezentare succintă a evoluţiei sistemelor de operare facilitează înţelegerea caracteristicilor actuale ale acestora şi a termenilor deja introduşi. 1.3.1. De la "poartă deschisă " la tratarea pe loturi Primele calculatoare nu dispuneau de sisteme de operare. Fiecărui utilizator i se rezerva pentru un timp determinat calculatorul cu toate resursele acestuia. Interacţiunea era directă, programul şi datele fiind introduse în mod manual sub formă de zerouri şi unităţi. Utilitarele care au apărut aveau destinaţia de a asista elaborarea programelor (asambloare, compilatoare, etc.) sau de a facilitata operaţiile de intrare-ieşire. Acest mod de exploatare, numit "poartă deschisă", era de o eficacitate minimă, dispozitive foarte costisitoare fiind utilizate ineficient. Din această cauză la sfârşitul anilor 1950 au apărut primele "monitoare de înlănţuire" - programe care permiteau executarea secvenţială a unui set de lucrări, pregătite anticipat, trecerea de la o lucrare la alta fiind realizată în mod automat. Funcţia principală a unui atare sistem era gestiunea resurselor: memoria, procesorul, dispozitivele perifierice. Automatismul acestei gestionări implică o funcţie de protecţie a setului de lucrări contra unor riscuri perturbatorii in caz de eroare:  limitarea timpului de ocupare a procesorului pentru a evita blocarea sistemului atunci când un program conţine o buclă infinită; Material didactic pentru studenţii FCIM, anul III, specialitatea TI C:\Users\Victor Besliu\Desktop\SOMIPP\cap. 1.doc p.15 ei la distanţe mai mari sau mai mici a ridicat probleme noi, cum ar fi coordonarea activităţilor la distanţă sau menţinerea coerenţei informaţiilor distribuite. Toate acestea au trebuit să fie luate în consideraţie la elaborarea sistemelor de operare de rețea. 1.3.3. Windows, Unix şi alte sisteme Paralel cu evoluţia tehnică şi funcţională a sistemelor de operare a avut loc şi o importantă evoluţie conceptuală, care a permis o mai bună înţelegere a funcţionării SO şi a condus la elaborarea unor metode proprii de concepere. Anul 1964 poate fi considerat de debut pentru cercetările ştiinţifice în domeniul sistemelor de operare, cercetări care au fost generate de rezultatele obținute în sfera tehnică - primele sisteme cu partajare a timpului (Thor, CTSS), anunţarea seriei IBM 360 şi introducerea canalelor de intrare-ieşire, prima memorie paginată (Atlas), etc. În perioada 1965-1968 au fost fundamentate concepte teoretice importante, necesare pentru conştientizarea gestionării activităţilor fizice sau logice paralele: proces secvenţial, excluderea mutuală, sincronizarea, semaforul. Acestea au fost aplicate cu succes la elaborarea sistemelor de operare: sistemul THE (1967) utilizează semafoarele, sistemul Multics (1964-1970) conţine un nucleu de gestionare a proceselor. Metode şi utilitare destinate sistemelor distribuite sunt propuse la sfârşitul anilor 1970. Utilitarele de sincronizare încep să fie introduse în limbajele de programare. Sunt propuse primele metode de specificare şi control al validităţii sincronizărilor. Problema definirii informaţiei a fost pusă iniţial în seama limbajelor de programare: fiecare limbaj definea universul său de obiecte accesibile şi mijloacele efective de accesare. Sistemul de operare trebuia doar să implementeze obiectele definite de limbajul de programare în memoria fizică, direct adresabilă. Restricţiile de capacitate şi preţ a memoriei principale a condus foarte repede la modificarea modului de utilizare a memoriei secundare şi introducerea unor mecanisme de schimb de informaţii între aceste două nivele ale memoriei. Prima memorie paginată apare în 1962 (Atlas), tot atunci compilatoarele limbajului Algol 60 folosesc paginaţia virtuală pentru gestionarea programelor în curs de execuţie. În 1965 este fundamentată noţiunea de segmentare, deşi încă în 1959 sistemul Burroughs B5000 utiliza un mecanism de adresare logică prin unităţi de volum variabil - segmente. În 1966 este propus un model de arhitectură pentru calculatoarele cu partajare a timpului, implementat în IBM 360/370. În acest calculator segmentele sunt doar simulate printr-o dublă paginaţie, din care cauză noţiunea de segmentare va rămâne pentru un timp puţin înţeleasă de comunitatea informatică. Problemele partajării şi protecţiei informaţiei, alocării resurselor conduc la noţiunea de memorie virtuală, care permite izolarea mecanismelor de gestionare a ansamblului “memorie principală - memorie secundară”, lăsând utilizatorilor simpli impresia unui spaţiu de adrese uniform (contiguu). Tot atunci au fost introduse noţiunile de modularitate şi structurare ierarhică, obiect, etc. Astăzi sistemele de operare în sensul tradiţional de concepere sunt mai mult obiectul unor elaborări industriale, decât de cercetare. Aceasta se datorează atât existenței unei rezerve extraordinare de metode şi algoritmi, cât şi standardizării stricte a funcţiilor şi interfeţelor sistemelor de operare. 1.3.3.1. SО UNIX şi sistemele deschise Sistemul de operare UNIX, primul sistem “mobil” care asigură un mediu fiabil de dezvoltare şi utilizare a softului de aplicaţie, este fundamentul practic de elaborare a sistemelor fizico-logice deschise. Implementarea largă a SO UNIX a permis trecerea de la declararea conceptului sistemelor deschise la dezvoltarea în practică a acestui concept. Este greu de supraestimat şi influenţa activităţilor de standardizare a interfeţelor SO UNIX asupra dezvoltării domeniului sistemelor deschise. Cu toate acestea, pot fi evidenţiate câteva versiuni ale SO UNIX, care diferă atât prin realizare, cât şi prin interfeţe şi semantică, chiar dacă, odată cu dezvoltarea procesului de standardizare, aceste diferenţe devin tot mai nesemnificative. Modulele sursă ale SO UNIX au fost scrise de către colaboratorii companiei AT&T şi timp îndelungat drepturile de autor, ca şi drepturile de licenţiere, au aparţinut acestei companii. Mai târziu, din mai multe motive (complexitate tehnică în elaborarea şi mentenanța acestui produs program complicat, probleme juridice, etc.), compania AT&T a creat entitatea USL (UNIX System Laboratories), responsabilă exclusiv de dezvoltarea şi susţinerea SO UNIX. Compania USL a propus versiunea UNIX System V 4.0, care a devenit standardul de-facto şi baza mai multor versiuni UNIX, create de producătorii de staţii de lucru şi servere. În ultimul succes al USL în calitate de filială a firmei AT&T - versiunea SVR 4.2 - pentru prima oară în istoria SO UNIX a fost realizat mecanismul proceselor “lejere” (fire, en. thread), care erau executate în baza unei memorii virtuale comune şi permitea exploatarea conceptului “arhitectură multiprocesorală simetrică” în care mai multe procesoare au drepturi egale de accesare a memoriei operative comune. În anul 1993 USL a fost absorbită de compania Novell, devenind astăzi departament al acesteia, marca înregistrată UNIX fiind cedată consorţiumului X/Open. La începutul anului 1995 compania Novell a anunţat o variantă nouă a SO UixWare 2.0 bazată pe System V 4.2. Era un SO cu un sistem de fişiere foarte fiabil, fiind admis Material didactic pentru studenţii FCIM, anul III, specialitatea TI C:\Users\Victor Besliu\Desktop\SOMIPP\cap. 1.doc p.16 accesul la fişierele păstrate pe serverele NetWare, administratorul avea la dispoziţie o interfaţă grafică bine pusă la punct, etc. Pe parcursul a mai multor ani sistemul de operare de bază al companiei Sun a fost UNIX BSD. Însă, începând cu SunOS 4.0, s-a trecut la System V 4.0, firma Sun introducând o serie de modificări şi extensii în această versiune. Ca exemplu, Sun a implementat paralelizarea programelor pentru sistemele multiprocesorale simetrice. Solaris este o interfaţă a lui SunOS cu mijloace suplimentare GUI şi resurse de nivel înalt pentru organizarea lucrului în reţea (de exemplu, apelarea procedurilor la distanţă – RPC). Şi la baza SO HP/UX, DG/UX şi AIX se află SVR 4.x din care cauză setul de bază al funcţiilor de sistem şi biblioteci este acelaşi. Variantele SO UNIX, propuse de compania SCO şi destinate exclusiv platformelor Intel, sunt bazate pe modulele iniţiale ale System V 3.2, fiind compatibile cu toate standardele de bază Open Software Foundation (OSF) a fost prima companie comercială, care a încercat elaborarea SO UNIX în baza micronucleului Mach. A fost creat sistemul de operare OSF-1, care nu era „curat” (în sens de licenţiere), deoarece folosea o parte a modulelor iniţiale din SVR 4.0. Variantele SO UNIX, propuse de Universitatea din California, sunt o alternativă reală pentru UNIX AT&T. De exemplu, UNIX BSD 4.2 era pus la dispoziţie în module sursă şi folosită chiar în fosta URSS pe calculatoarele de tip CM-3, CM-4. Grupul BSD a influenţat enorm dezvoltarea sistemelor de operare UNIX, printre realizări amintim mult controversatul SO UNIX BSD 4.4, construit în baza principiilor „micronucleare”, sistemul FreeBSD şi altele. Nu putem să nu amintim aici şi de realizarea originală a SO UNIX pentru platformele Intel, propusă de Torvald Linus – LINUX. Este un sistem de operare foarte popular în mediul studenţesc, care are şi una din cele mai populare teleconferinţe în Internet. 1.3.3.2. Standarde UNIX Odată cu ieşirea SO UNIX pe piaţă şi creşterea substanţială nu numai a numărului de utilizatori, ci şi a numărului de specialişti din toate colţurile lumii, care propun modificări şi chiar variante proprii, a apărut necesitatea elaborării unor standarde, care ar asigura compatibilitatea. Unul dintre primele standarde de-facto a fost cel publicat de USL pentru versiunea SO UNIX System V Release 4 - System V Interface Definition (SVID). Majoritatea variantelor comerciale respectau standardul SVID. Evident, SVID fiind un document de firmă, publicat fără discuţii publice nu putea fi adoptat ca și standard oficial. Paralel exista direcţia BSD (Berkeley Standard Distribution), susţinută de comunitatea universitară. Deşi majoritatea realizărilor comerciale se bazau pe Sistem V, UNIX BSD era foarte popular în universităţi din care cauză a fost elaborat un standard, care a unit practic AT&T cu BSD. Acest lucru a fost început de asociaţia programatorilor profesioniști din cadrul UniForum (Sistemele Deschise) şi continuat de grupurile de lucru POSIX (Portable Operating System Interface). Cel mai popular standard, adoptat de ISO la recomandarea IEEE, POSIX 1003.1 defineşte cerinţele minime pentru componentele unui sistem de operare. Organizaţia internaţională X/Open, care activează în domeniul elaborării şi propagării ideilor sistemelor deschise, culege şi sistematizează standardele de-jure şi de-facto de importanţă industrială în aşa numitul X/Open Common Application Environment (CAE). Specificaţiile interfeţelor componentelor, care formează CAE, sunt publicate în X/Open Portability Guide (XPG). Pentru lumea UNIX este foarte important şi standardul limbajului de programare C, adoptat mai întâi de ANSI şi apoi de ISO. În acest standard sunt specificate, în afara limbajului C, bibliotecile obligatorii într-o realizare standard. Deoarece chiar de la apariţie limbajul C, sistemele de programare erau strâns legate de UNIX, componentele bibliotecilor standard corespundeau exact mediului standard al SO UNIX. Mai menţionăm standardul de-facto SPARC Complience Definition, propus de organizaţia SPARC International, propunerea organizaţiei 88/Open pentru procesoarele RISC Motorola, standardul sistemului de ferestre, susţinut de X Consorţium (Institutul de Tehnologie din Massachussets) şi OSF/Motif, elaborat de Open Software Foundation. 1.3.3.3. Sisteme de operare cu micronucleu Micronucleul este partea minimă principală a unui sistem de operare, folosită pentru asigurarea modularităţii şi transportabilităţii. Noţiunea de micronucleu a fost introdusă de compania Next prin sistemul de operare cu micronucleul Mach. Nucleul acestui sistem de operare, de dimensiuni mici, în jurul căruia se situau subsistemele executate în regim user, trebuia să asigure o flexibilitate şi modularitate foarte înaltă. Dar în realitate acestea au fost umbrite de prezenţa serverului monolit, care realiza sistemul de operare UNIX BSD 4.3, ales de compania Next în calitate de nivel superior pentru micronucleul Mach. Totuşi, utilizarea micronucleului Mach a permis introducerea administrării mesajelor şi a unei serii de funcţii de serviciu orientate pe obiecte, în baza cărora a fost creată o interfaţă grafică elegantă a utilizatorului cu mijloace simple de configurare, administrare şi dezvoltare program. Material didactic pentru studenţii FCIM, anul III, specialitatea TI C:\Users\Victor Besliu\Desktop\SOMIPP\cap. 1.doc p.17 Următorul SO cu micronucleu a fost MS Windows NT, în care momentul principal declarat era, în afara modularităţii, transportabilitatea. Acest sistem de operare poate fi utilizat în sistemele mono- şi miltiprocesor, bazate pe procesoarele Intel, Mips, şi Alpha. Mai mult, deoarece NT trebuia să execute şi programele scrise pentru DOS, Windows, OS/2 şi SO, compatibile cu standardele Posix, compania Microsoft a folosit modularitatea abordării „micronucleare” pentru crearea unei structuri generalizate, care nu repetă sistemele de operare existente, fiecare SO fiind emulat printr-un modul separat sau printr-un subsistem. Au aderat la tehnologia „micronucleară” şi companiile Novell/USL, Open Software Foundation (OSF), IBM, Apple şi altele. Unul din concurenţii principali ai lui NT în domeniul SO cu micronucleu sunt Mach 3.0, creat în Universitatea Carnegy-Mellon, şi Chorus 3.0 al companiei Chorus Systems. Un exemplu practic Scopul exerciţiilor de mai jos [7] este de a pune în evidenţă influenţa evoluţiei istorice a sistemelor de operare asupra unor caracteristici ale acestora. Vom considera un calculator periferia căruia este un dispozitiv de introducere a cartelelor perforate (1 000 cartele pe minut) şi o imprimantă (1 000 linii pe minut). O lucrare medie este definită astfel:  citeşte 300 de cartele,  utilizează procesorul 1 minut,  tipăreşte 500 de linii. Se presupune, că toate lucrările au caracteristici identice cu ale lucrării medii. Definim două caracteristici de performanţă a sistemului:  debitul mediu D - numărul de lucrări executate într-o oră,  randamentul unităţii centrale ŋ - partea din timpul total de utilizare a unităţii centrale în care aceasta execută lucru util, altul decât gestionarea perifericelor. Exercițiul 1. Presupunem că periferia este gestionată de către unitatea centrală. Să se calculeze D şi ŋ în următoarele ipoteze de funcţionare:  sistemul este exploatat în regim "poartă deschisă"; durata unei sesiuni de exploatare este de 15 minute,  sistemul este exploatat utilizând un monitor cu înlănţuire secvenţială a lucrărilor. Exercițiul 2. Presupunem că periferia este gestionată de un calculator separat, care conţine o bandă magnetică în care sunt introduse datele la intrare şi o bandă magnetică pentru ieşire (tipărirea se va efectua de pe această bandă). Datele la intrare sunt introduse în calculatorul principal de pe banda magnetică, acesta producând datele la ieşire pe bandă. Timpul necesar citirii de pe şi scrierii pe benzi nu se va lua în consideraţie. Timpul de transfer a benzilor de pe un calculator pe altul este de 5 minute în fiecare sens; se presupune că o bandă va grupa un lot de 50 de lucrări (v. fig. 1.13). Presupunem că intensitatea sosirii lucrărilor este suficientă pentru a ocupa tot timpul calculatorului central. Calculaţi D şi ŋ. Stabiliţi modul de planificare a seturilor de lucrări şi calculaţi timpul mediu de aşteptare a unui utilizator (timpul din momentul predării lucrării şi până la recepţionarea rezultatelor). Vom admite, că lucrările sosesc într-un ritm regulat, că timpul necesar formării unui program (pregătirea unui complet de cartele perforate corespunzătoare unui program) este 10 minute şi timpul distribuirii rezultatelor unui lot (decuparea şi trierea listelor utilizatorilor) la fel este 10 minute. ieşiri Procesare Calculatorul pentru I/E Calculatorul principal intrări Fig. 1.13. Exemplificarea cazului 2.
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved