Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Sistemul de operare interactioneaza direct cu hard-ul, oferind anumite servicii programelor, izolandu-le in acelasi timp de partea hard. Din acest motiv programele sunt usor portabile pe diferitele sisteme UNIX.
Fig. 6.6-
Sistemul ofera anumite facilitati printre care se afla ti sistemul de fisiere.
Sistemul de fisiere UNIX este caracterizat printr-o structura ierarhica, tratarea consistenta a datelor din fisiere, posibilitatea de creare si stergere a fisierelor, posibilitatea cresterii dinamice a dimensiunii fisierelor, protejarea datelor din fisiere, tratarea dispozitivelor periferice ca si fisiere.
Fig. 6.6-
Exemplu :
char buffer[4096];
main(int argc, char *argv[])
fdold = open(argv[1], O_RDONLY);
if (fdold == -1)
fdnew = creat(argv[2], 0666);
if (fdnew == -1)
copy(fdold, fdnew);
exit(0);
copy(int fdold, int fdnew)
Un program este un fisier executabil iar un proces este o instanta a unui program in executie. Se pot executa mai multe procese simultan, nefiind impusa o limita asupra numarului de procese existente in sistem.
Exista mai multe apeluri sistem care permit proceselor crearea de noi procese, terminarea unor procese, sincronizarea executiei unor procese si efectuarea unor actiuni la aparitia unor evenimente.
Exemplu :
Programul exemplifica folosirea apelului sistem fork - pentru crearea unui nou proces, precum si a apelurilor sistem exec - pentru lansarea in executie a unui alt program, wait - pentru asteptarea terminarii unui proces fiu.
main(int argc, char *argv[])
Cele mai obsnuite servicii oferite de nucleul sistemului de operare sunt urmatoarele :
controlul executiei proceselor, permitand crearea, terminarea, suspendarea si comunicarea interproces.
planificarea corecta a proceselor pentru executie. Procesele folosesc acelasi procesor, astfel daca procesorul executa un proces, nucleul suspenda acest proces atunci cand cuanta de timp a acestuia expira si planifica un alt proces la executie.
alocarea memoriei pentru executia proceselor. Nucleul permite proceselor sa puna in comun portiuni din spatiul lor de adrese in anumite conditii, dar protejeaza spatiul de adrese privat impotriva acceselor nepermise, de asemenea daca sistemul, la un moment dat, are la dispozitie prea putina memorie libera, acesta elibereaza memorie prin transferarea temporara a unui proces sau portiuni ale acestuia in memoria secundara, care de obicei este un disc si care se numeste disc de swap. Exista sisteme UNIX numite sisteme cu SWAPPING si sisteme cu PAGING. Sistemele cu SWAPPING transfera un intreg proces din memoria principala in memoria secundara, iar sistemele cu PAGING transfera la un moment dat doar pagini de memorie din memoria principala in memoria secundara.
alocarea eficienta a memoriei secundare pentru depozitarea respectiv regasirea eficienta a datelor utilizatorilor. Acest serviciu reprezinta chiar sistemul de fisiere.
acordarea accesului controlat proceselor la dispozitivele periferice, cum ar fi terminale, discuri, discuri de retea sau alte periferice.
Executia unui proces utilizator in sistemele UNIX este divizata pe doua nivele :
nivelul utilizator - user
nivelul de nucleu - kernel
Cand un proces executa un apel sistem, modul de executie al procesului se schimba din mod utilizator in mod nucleu (vom folosi pentru acest mod denumirea de mod kernel). Chiar daca utilizatorul nu face apel explicit la serviciile sistemului de operareacestea totusi au loc, deoarece pentru fiecare proces utilizator trebuiesc executete anumite operatii ca si tratarea intreruperilor, planificarea proceselor la executie, gestionarea memoriei si altele. Multe arhitecturi de calculatoare suporta mai multe nivele decat cele doua mentionate, dar cele doua moduri sunt necesare si suficiente pentru sistemele UNIX.
Diferentele dintre aceste doua moduri sunt :
procesele in mod utilizator pot accesa instructiunile si datele proprii, dar nu pot accesa instructiunile si datele nucleului sau ale altor procese.
procesele in mod kernel pot accesa atat adresele utilizator cat si adresele nucleului.
unele instructiuni sunt instructiuni privilegiate si executia lor in mod utilizator duce la semnalarea unor erori.
Sistemele UNIX permit dispozitivelor sa intrerupa procesorul in mod asincron. La aparitia unei intreruperi, nucleul isi salveaza contextul curent, determina cauza intreruprii si trateaza intreruperea. Dupa tratarea intreruperii, nucleul reface contextul si continua procesul intrerupt.
Hardware-ul de obicei aloca prioritati unor intreruperi, corespunzator ordinii in care ar trebui tratate acestea. Cand nucleul trateaza o intrerupere el inhiba toate intreruperile cu prioritate egala sau mai redusa decat intreruperea curenta, astfel incat in timpul tratarii pot sa fie tratate doar intreruperi cu un nivel mai mare de prioritate.
O conditie de exceptie se refera la evenimentele cauzate de procese, ca si adresarea ilegala a unei zone de memorie, executia unei instructiuni privilegiate, impartirea la 0 si altele. Aceste exceptii sunt diferite de intreruperi si au loc in timpul executiei unei instructiuni, sistemul incercand reluarea acelei instructiuni, dupa tratarea exceptiei.
Sistemul UNIX foloseste acelasi mecanism atat la tratarea intreruperilor cat si la tratarea exceptiilor.
Nucleul, in anumite conditii, trebuie sa nu permita aparitia de intreruperi in timpul unei activitati critice, care ar avea ca rezultat structuri de date corupte.
Nivelele tipice de intreruperi sunt :
intreruperi software
intreruperi de la terminale
intreruperi de la dispozitive de retea
intreruperi de la discuri
intreruperi de la ceasul de timp real
intreruperi datorate erorilor hardware
Nucleul se afla intotdeauna in memorie. Cand se compileaza un program, compilatorul genereaza un set de adrese pentru acel program care reprezinta adresele variabilelor si structurilor de date. Aceste adrese sunt generate pentru o masina virtuala, considerand ca nici un alt program nu se va executa simultan pe aceeasi masina fizica. Cand programul este rulat pe o masina, nucleul va aloca spatiu in memoria principala, dar adresele virtuale generate de compilator nu este necesar sa fie identice cu adresele fizice pe care le ocupa acesta in masina.
Nucleul in colaborare cu hardware-ul va initializa o translatera a adreselor virtuale in adrese fizice, astefl incat adresele generate de compilator vor indica adresele fizice de pe masina respectiva.
Copyright © 2024 - Toate drepturile rezervate