Lucrarea Nr.1 Sisteme de operare. Generalitati Scopul lucrarii Lucrarea îsi propune familiarizarea studentilor cu sistemele de operare disponibile în laborator, respectiv acele sisteme de operare cu ajutorul carora se vor studia principalele notiunile de baza legate de functiunile si functionalitatea acestora. În prezenta lucrare vor fi avute în vedere câteva din sistemele de operare produse de Microsoft (Windows 95, NT) si respectiv Linux din familia sistemelor de operare de tip UNIX. Dupa parcurgerea lucrarii studentii vor fi familiarizati cu câteva concepte care stau la baza sistemelor de operare, modul de operare interactiv cu acestea, putând în final de-a utiliza resursele unui sistem de operare, observa cum diferite optiuni de proiectare si implementare din diferite sisteme de operare vor afecta comportamentul unor aplicatii sistem sau utilizator, respectiv mediul utilizator. Consideratii teoretice Notiuni introductive Sistemul de operare este o componenta a unui sistem de calcul care ofera servicii pentru programele care trebuie executate pe acel sistem. Dintre serviciile oferite amintim: - gestiunea fisierelor - managementul memoriei - managementul proceselor si firelor de executie - tratarea semnalelor, etc. Totodata un sistem de operare dispune de un set standard de utilitare, care permit realizarea unor operatii uzuale ca de exemplu: - pornirea sau oprirea unui proces; - organizarea aplicatiilor; - organizarea fisierelor si directoarelor; - vizualizarea, editarea, copierea, mutarea, stergerea fisierelor; - comunicarea între procese, etc. Multe dintre aceste servicii pot fi accesibile unui utilizator prin intermediul unui interpretor de comenzi sau al unor utilitare sau programe specifice. Interpretorul de comenzi este unul dintre componentele esentiale ale unui sistem de operare. Chestiuni legate de interpretoarele de comenzi vor fi detaliate în lucrarile ulterioare. Sistemul de operare poate fi descris deci ca o aplicatie, însa o aplicatie speciala, care interactioneaza cu alte aplicatii printr-o serie de puncte de intrare (entry points). Utilizarea sistemului de operare este posibila doar prin intermediul unor aplicatii care "stiu" sa utilizeze punctele de intrare din sistemul de operare. Acest lucru poate fi exemplificat de exemplu în cazul lui Windows 95/98/ME/NT prin setul de aplicatii ce genereaza interfata grafica care permite programelor sa fie lansate în executie. În cazul sistemului de operare MSDOS, dupa pornire putem gasi command.com, la al carui
prompter putem introduce comenzi. MSDOS dispune si un set de utilitare de obicei stocate în directorul DOS. În cazul sistemelor UNIX care dispun de X-Windows gasim un login shell (xdm), file -e, etc., care sunt utilizate pentru generarea interfetelor grafice, de obicei bazate pe sistemul Unix/POSIX Un sistem de calcul poate fi considerat ca având arhitectura din fig. 1a, însa pentru a putea da o definitie sistemului de operare, fig 1b este mai adecvata. Aici putem observa ca sistemul de operare reprezinta nivelul dintre hardware si software al unui sistem de calcul. Aplicatii Utilitare Interpretorul de comenzi Serviciile sistemului de operare Sistemul hardware fig. 1a Aplicatii Utilitare Sistemul de operare Sistemul hardware fig. 1b Comenzile sistemului de operare. Interpretorul de comenzi Pentru a putea utiliza resursele disponibile într-un sistem de calcul, un utilizator trebuie sa cunoasca un "limbaj de comanda" care sa-i permita sa ceara sistemului de calcul sa execute comenzile dorite. "Calculatorul" urmare a comenzilor primite va raspunde într-un anumit limbaj. În prezent mesajele generate de un sistem sunt în limbajul natural omenesc (în cele mai multe cazuri în limba engleza, restul fiind în limbi pt. care sistemul a fost personalizat). Mentionam ca interactiunea dintre utilizator si sistemul de operare este intermediata de interpretorul de comenzi, care va raspunde de la caz la caz prin: pornirea, oprirea unei aplicatii, schimbarea task-ului activ, permiterea controlului asupra comunicatiei dintre aplicatie si o alta sau utilizator. Încercând de exemplu sa accesam o unitate de discheta (din interpretorul de comenzi disponibil în Windows NT) care nu contine un suport magnetic corespunzator
vom obtine mesajul care poate fi vazut în fig.2, sau în cazul unei comenzi eronate rezultatul va fi cel din fig. 3. fig. 2 fig. 3 Mai familiare sunt mesajele generate de interpretorul de comenzi command.com al mai vechiului MSDOS, respectiv al interpretorului de comenzi a mai noilor sisteme de operare Windows 95/98/ME: C:> Bad command or file name Not ready reading drive A Abort, Retry, Fail? Cele expuse anterior sunt valabile si pentru sistemele de operare de tip UNIX. Un exemplu poate fi vazut în fig. 4 în cazul sistemului de operare Linux. fig. 4
Din aceste exemple se poate concluziona ca limbajul de comanda înteles de sistemul de operare accepta siruri de caractere. Analizând comenzile pe care un sistem de operare le accepta se observa ca primul cuvânt din comanda reprezinta numele unui program care se poate gasi undeva în sistem sau al unei comenzi a interpretorului de comenzi. De fapt lucrurile nu stau atât de simplu, unele comenzi sunt întelese de interpretorul de comenzi dar altele sunt întelese de limbajul de programare cunoscut de interpretorul de comenzi (asupra acestui aspect se va reveni în lucrarile urmatoare). Pentru sistemele de operare care dispun de o interfata grafica, comenzile si raspunsul sistemului de operare consta într-un set de icoane (icons) si diferite dialoguri (dialogs). Limbajul de comanda recunoaste diferitele actiuni ale mouse-ului (sau a dispozitivelor de intrare similare) asupra icoanelor sau meniurilor. Întrucât aceste din urma sisteme de operare sunt cele mai raspândite în prezent prezentam doar raspunsul în cazul sistemului de operare Windows în cazul primului exemplu prezentat. Fig. 5 Nucleul (kernel-ul) sistemului de operare. Nucleul sistemului de operare este responsabil pentru toate operatii din sistem, el având rolul de-a gestiona resursele fizice si logice ale sistemului de calcul. În cazul procesului de încarcare a sistemului de operare sunt apelate niste functii de initializare, de pilda verificarea memoriei, a perifericelor, dupa care este încarcat kernel-ul care va prelua controlul sistemului. Kernel-ul apoi porneste toate procesele necesare pentru a comunica cu utilizatorul si cu restul mediului (de exemplu cu alte calculatoare din retea). Nucleul sistemului de operare este în totdeauna încarcat în memorie (el fiind partea rezidenta a sistemului de operare), iar functiile acestuia sunt tot timpul active, manipulând procese, zone de memorie, fisiere, echipamente. Structura traditionala a unui kernel este cea multinivel, cum este de exemplu în UNIX, unde toate nivelele sunt parte a nucleului, fiecare nivel putând comunica cu câteva alte nivele. Aplicatiile si utilitarele se gasesc deasupra în cazul acestei arhitecturi (fig. 6). OBS: Kernelul sistemelor de operare din familia UNIX sunt scrise în cea mai mare parte (cca. 90%) în limbajul C, iar restul (ceea ce este dependent de hardware) în limbaj de asamblare.
Aplicatii utilizator Interfata cu functiile de sistem Sistemul de gestionare a fisierelor mod caracter mod bloc Module de control periferice Comunicare între procese Controlul proceselor Managementul memoriei Planificator (Scheduler) Module de control hardware Hardware Fig.6 Dezavantajul acestei structuri este data de dimensiunea mare a kernel-ului, astfel ca în prezent se utilizeaza micro kernel-uri având structura din fig. 7. Mod utilizator aplicatii proces memorie fisier display Managementul firelor de execu tie driverele de dispozitive Hardware Mod nucleu Fig. 7 Unele dintre sistemele de operare utilizeaza o structura mixta. Un astfel de exemplu îl constituie sistemul de operare Windows NT, a carui structura este data în fig. 8.
aplicatii Object Security monitor Process Virtual Memory IO Micro-kernel HAL (hardware abstraction layer) harware Fig. 8. Concluzii si observatii Sistemul de operare este un sistem de programe destinat utilizarii eficiente a resurselor unui sistem de calcul, acesta fiind legatura între utilizator si hardware-ul sistemului de calcul. Utilizatorul interactioneaza cu sistemul de operare prin intermediul interpretorului de comenzi, care poate fi simplu bazat pe comenzi de tip caracter, ca de exemplu command.com în MSDOS sau shell-ul în UNIX, sau poate fi o interfata grafica, ca de exemplu Windows Explorer în Windows 95/NT. Interpretorul poate fi simplu, sau înzestrat cu un limbaj de programare. Poate fi imperativ (UNIX shell) sau având la baza programarea de tip vizuala (drag-and-drop). Este important sa se faca distinctie între interpretorul de comenzi si sistemul de operare, interpretorul de comenzi reprezentând o componenta oferita de sistemul de operare. Întrebari si teme 1. Care sunt functiile unui sistem de operare? 2. Specificati câteva comenzi MSDOS si shell utilizate în cadrul laboratorului. Care dintre aceste comenzi sunt executate de interpretor? 3. Utilizând manualul on-line specificati ce fac urmatoarele comenzi: - în Windows NT: at, chkdsk, cmd - în UNIX: compress, du, ls -R.