Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice
Acasa » scoala » informatica » calculatoare
Concepte fundamentale - Apeluri sistem

Concepte fundamentale - Apeluri sistem


Cursu
Concepte fundamentale

Apeluri sistem

Apelurile sistem reprezinta interfata dintre procese si sistemul de operare.

Apelurile sistem sunt oferite ca instructiuni intr-un limbaj de asamblaresau ca instructiuni intr-un limbaj de nivel inalt. Chiar si in prima situatie realizarea apelurilor sistem va fi posibila din limbaje de nivel inalt.

Functionarea sistemului de operare se bazeaza pe apelurile sistem: procesele cer serviciile OS prin intermediul apelurilor sistem.



Procese

Un proces este un program aflat in curs de executie. Fiecarui proces ii este asociat un spatiu de adrese.

Executia proceselor se realizeaza intr-o maniera secventiala, instructiune dupa instructiune; procesorul fiind capabil sa execute o singura instructiune la un moment dat.

Pentru a usura rezolvarea sarcinilor legate de gestiunea proceselor, sistemele de operare moderne pastreaza toate informatiile despre procese intr-o tabela de procese.

Gestiunea proceselor se realizeaza prin apeluri sistem specifice, principalul program care utilizeaza aceste apeluri fiind interpretorul de comenzi.

Pentru gestiunea si securitatea proceselor si a sarcinilor legate de acestea, sistemul de operare foloseste identificatori ai proceselor (PID, PPID, GID), valori care insotesc procesul pe toata durata existentei sale.

Sarcinile sistemului de operare

Crearea si "stergerea" proceselor;

Suspendarea si continuarea proceselor;

Sincronizarea proceselor prin mecanisme specifice;

Comunicarea intre procese prin mecanisme specifice;

Rezolvarea situatiilor de impas prin mecanisme specifice.

Apeluri sistem pentru gestiunea proceselor

Gestiunea proceselor UNIX se bazeaza pe mecanismul fork()exec().

Pentru WIN32 este folosita functia CreateProcess().

Terminarea unui proces se realizeaza prin exit() - UNIX sau ExitProcess() - WIN32.

Asteptarea terminarii unui proces face obiectul apelului wait() - UNIX, WaitForSingleObject() - WIN32.

Apelul kill() - UNIX ofera posibilitatea de terminare fortata a unui proces, de fapt un mecanism simplu de comunicare intre procese.

Impasul

Intr-o situatie de impas, doua sau mai multe procese vor fi blocate nedefinit, fara a fi capabile sa realizeze niciun progres.

Situatiile de impas apar de regula ca urmare a unei gestiuni incorecte a resurselor partajate.

Multe sisteme de operare adopta tactica strutului pentru aceasta problema: situatia este ignorata cu speranta ca se va rezolva de la sine.

Memoria

Memoria principala este principalul depozit al programelor aflate in curs de executie.

Memoria ofera mecanisme proprii de protectie pentru a evita interactiunea accidentala a programelor depozitate.

Gestiunea memoriei depinde de caracterul dispozitivelor care ofera suportul de memorare necesar.

Programele aflate in curs de executie se vor gasi in memoria principala a sistemului.

Sarcinile sistemului de operare (memoria principala)

- Urmarirea modului de utilizare a memoriei;

- Decizii asupra proceselor aduse in memorie;

- Alocarea si dealocarea bucatilor de memorie.

Alte programe sau date ale programelor in curs de executie sunt depozitate (permanent) pe dispozitive secundare de memorare.

Avand in vedere utilizarea frecventa a acestora, gestiunea lor eficienta este o sarcina importanta a OS.

Sarcini ale sistemului de operare

- Gestiunea spatiului liber;

- Alocarea de spatiu, la cerere;

- Planificarea dispozitivelor secundare de memorare.

Dispozitive de intrare/iesire

Dispozitivele de I/O ofera de regula mecanisme de comunicare a proceselor cu mediul/operatorul.

Sistemul de operare realizeaza gestiunea dispozitivelor I/O printr-un subsistem de I/O, ascunzand toate detaliile dispozitivelor in spatele unei interfete uniforme.


Sarcinile sistemului de operare

- Oferirea unui sistem de buffering;

- Oferirea unei interfete generice catre dispozitive similare;

- Oferirea unui set de drivere pentru dispozitive.

Sistemul de fisiere

Sistemul de fisiere este suportat de majoritatea OS moderne. Prin sistemul de fisiere, un OS ascunde particularitatile discurilor sau a altor dispozitive de memorare.

Fisierul este unitatea logica de depozitare a informatiei intr-un sistem de calcul.

Fisierul este, in cea mai simpla definitie, o simpla secventa de octeti.

Directoarele au fost dezvoltate pentru a oferi o metoda simpla de grupare si organizare a fisierelor.

Anumite sisteme de operare trateaza fisierele si directoarele intr-o maniera uniforma.

Sistemele de fisiere ofera, de cele mai multe ori, o schema de organizare arborescenta a informatiei (fisierelor).

Conceptele de proprietate si protectie au o implementare mai mult sau mai putin riguroasa in cazul fisierelor.

In cazul organizarii arborescente, fisierele sunt identificate printr-un nume de cale. Notiuni ca director curent (.), director parinte (..), director radacina, nume de cale absolut sau nume de cale relativ apar atunci cand este vorba de organizarea arborescenta.

Sarcinile sistemului de operare pentru gestiunea fisierelor

Crearea si stergerea fisierelor;

Crearea si stergerea directoarelor;

Primitive necesare manipularii fisierelor/directoarelor;

Maparea fisierelor pe dispozitive secundare de memorare.

Gestiunea fisierelor

Anumite sisteme de operare ofera o interfata uniforma catre fisiere, directoare si dispozitive tipice de intrare/iesire.

Apelurile tipice pentru gestiunea fisierelor includ urmatoarele:

Apelul open () - UNIX, CreateFile () - Win32 pentru deschiderea unui fisier.

Crearea unui fisier este realizata prin apelurile open () sau creat () - UNIX, CreateFile () - Win32.

Inchiderea unui fisier, prin close () sau CloseHandle ().

Citirea/scrierea datelor prin read ()/write () sau ReadFile ()/WriteFile ().

Modificarea pozitiei pointerului prin apelurile lseek () sau SetFilePointer ().

Informatii despre fisier prin familia de apeluri stat () sau GetFileAttributesEx ().

Gestiunea directoarelor

Multe sisteme de operare trateaza la nivel de baza fisierele si directoarele in acelasi mod; totusi, de regula, sunt puse la dispozitia programatorilor apeluri sistem/functii de biblioteca specifice pentru manipularea directoarelor:

Crearea si stergerea directoarelor, prin mkdir ()/rmdir (), respectiv CreateDirectory ()/RemoveDirectory ().

Modificarea directorului curent, prin chdir () sau SetCurrentDirectory ().

Stergerea unei intrari de director, prin unlink () sau DeleteFile ().

Mecanisme de protectie

Primele sisteme de calcul sunt sisteme monoutilizator, controlate complet de catre unicul utilizator al sistemului. Odata cu aparitia monitorului rezident, devin necesare mecanisme rudimentare de protectie a memoriei.

Partajarea resurselor si utilizarea spooling-ului ridica probleme suplimentare de protectie datorate spatiului comun de depozitare a informatiei utilizat.

Multiprogramarea si time-sharing ofera posibilitatea existentei unui numar mare de procese si utilizatori, cu necesitati sporite de protectie.

Erorile tipice de executie sunt detectate la nivel hardware si manipulate sub controlul OS, componenta hardware afectata initiind o instructiune specializata (trap) catre sistemul de operare. Controlul este transferat sistemului de operare printr-un mecanism similar celui de tratare a intreruperilor, folosindu-se din nou vectorul de intreruperi.

Modul dual.

Mecanismele de protectie sunt necesare atat pentru a proteja programele si datele programelor impotriva functionarii defectuoase a altor programe, cat si sistemul de operare.

O posibilitate este oferita de modul dual de operare. Necesitatea acestuia a fost initial pusa in evidenta in primele sisteme de operare, odata cu necesitatea de a limita accesul aplicatiilor la anumite servicii, care urma sa fie oferite numai sistemului de operare.

Ulterior, modul dual de operare a fost oferit la nivel hardware, printr-un bit (numit bit de mod) controlat doar de catre sistemul de operare.

In timpul operatiei de bootare sistemul de calcul ruleaza in mod nucleu (sau mod monitor). Sistemul de operare isi desfasoara activitatea in mod monitor, dar proceselor utilizator le este oferit doar modul utilizator.

Orice intrerupere sau trap este insotita de comutarea la modul monitor pentru rezolvarea sarcinilor din partea sistemului de operare (de altfel, acesta va rula totdeauna in mod monitor).

Sistemul de operare va comuta la modul utilizator indata ce controlul este returnat procesului utilizator.

Modul dual de operare este utilizat ca mecanism de protectie prin specificarea unui set de instructiuni procesor ca fiind instructiuni privilegiate. Acestea pot fi executate numai in mod monitor, fiind astfel destinate numai sistemului de operare.

Controlul accesului la instructiunile privilegiate este realizat la nivel hardware, orice incercare de utilizare a unei instructiuni privilegiate in modul utilizator fiind interpretata ca instructiune ilegala. Totodata, este emisa o instructiune trap catre sistemul de operare pentru a semnala situatia.

Un sistem de operare care nu ofera modul dual de operare ar putea permite proceselor utilizator sa acceseze sau chiar sa modifice zone destinate sistemului de operare. Acest comportament poate afecta functionarea sistemului de operare sau poate permite preluarea controlului asupra sistemului de operare.

I/O

Sistemele de calcul definesc operatiile I/O ca fiind instructiuni privilegiate, accesibile doar in mod monitor.

Avand in vedere ca intreruperilor ofera metoda preferata de cerere a operatiilor I/O, mecanismul intreruperilor poate oferi posibilitatea de obtinere a controlului sistemului din partea unui proces utilizator.

Rezolvarea unei intreruperi se realizeaza prin intermediul unui vector de intreruperi. Un proces care are posibilitatea de a altera vectorul de intreruperi poate determina sistemul de operare sa ii paseze controlul chiar in mod monitor.

Prin urmare, va fi necesar ca toate operatiile care vizeaza alterarea vectorului de intreruperi sa fie privilegiate.

Memoria.

Rutinele de deservire a intreruperilor ruleaza, de asemenea, in mod monitor. Acestea furnizeaza urmatorul punct sensibil si urmatorul set de instructiuni care trebuie sa fie protejate.

Protectia vectorului de intreruperi si a rutinelor de deservire presupun, de asemenea, mecanisme de protectie a memoriei, avand in vedere ca sistemul de operare mentine permanent aceste informatii in memorie.

Pentru a fi efectiva, protectia memoriei va fi oferita la nivel hardware, printr-un mecanism bazat pe registrii baza si limita.

Protectia se realizeaza la nivel procesor, comparand toate adresele generate de un proces cu valorile registrilor. Orice incercare de accesare a memoriei nucleului (monitor) sau a memoriei unui proces al unui alt utilizator va duce la generarea unei instructiuni trap, tratata ca o eroare fatala.

Prin urmare, registrii baza si limita vor putea fi modificati doar de catre sistemul de operare. In plus, sistemului de operare i se ofera acces neconditionat la memoria oricarui alt proces pentru a forta anumite activitati de gestiune a memoriei

Procesorul

Protectia procesorului necesita mecanisme de baza diferite, avand in vedere ca, pe durata executiei proceselor, sistemul de operare renunta la controlul asupra acestei resurse.

Solutia oferita (inspirata de time-sharing) presupune utilizarea unui timer. Acesta este fixat pentru a genera o intrerupere dupa o perioada specificata de timp. Aceasta perioada poate fi fixa sau variabila. In ultima situatie este utilizat un contor suplimentar, decrementat la fiecare tact de ceas. Intreruperea este generata cand contorul atinge valoarea 0.

Sistemul de operare se va asigura ca acest timer este fixat de fiecare data cand ofera controlul unui alt proces. Tratarea intreruperii de timer va depinde de politica sistemului de operare: eroare fatala, comutare de context sau acordare de timp suplimentar, daca este posibil.

Timerele pot fi utilizate ca mecanism simplu de limitare a executiei programelor sau a utilizarii resurselor.

O alta utilizare frecventa a acestora este in sistemele cu partajarea timpului, unde pot fi utilizate pentru a sesiza terminarea feliei de timp a unui proces.

Toate operatiile care vizeaza utilizarea unui timer vor fi implementate ca instructiuni privilegiate.





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.