Sunteți pe pagina 1din 12

Capitolul I

Structura şi evoluţia sistemelor de


operare

1.1. Introducere
Fără software-ul necesar, un calculator este de neutilizat. Cu
software-ul necesar, calculatorul poate stoca, procesa şi regăsi
informaţii. Software-ul poate fi împărţit în două mari categorii:

• Programe de sistem: acestea au rolul de a gestiona


funcţionarea corectă şi eficientă a calculatorului. Cel mai
important program de sistem este sistemul de operare care
controlează toate resursele calculatorului şi oferă baza pe care
pot fi scrise programele de aplicaţii.

• Programe de aplicaţie: acestea execută lucrurile pe care le


doreşte proprietarul calculatorului. Exemple de astfel de
programe sunt procesoarele de documente, procesoarele de
tabele etc.

Un calculator conţine unul sau mai multe procesoare, memorie de


bază RAM, discuri magnetice, imprimante, interfaţa de reţea şi alte
echipamente periferice de intrare-ieşire. Pentru a putea administra
toate părţile componente ale sistemului şi de a prezenta o interfaţă
om-maşină mai uşor de înţeles şi programat, a apărut necesitatea
realizării unui strat de software peste partea de hardware. Acest
strat sofware este chiar sistemul de operare.

Rezervă Programe aplicaţii


Biblioteci Web browser
ri
Complilat Interpretor
Editor
or comenzi Programe sistem
Sistem de operare

1
Limbaj maşină
Microprogramare Hardware
Componente fizice
Figura 1.1. Structura unui sistem de calcul

1.2. Noţiunea de sistem de operare


Sistemul de operare poate fi privit din două puncte de vedere
distincte. Acestea sunt:

• Sistemul de operare ca maşină extinsă. Programarea la


nivelul limbajului maşină este foarte dificilă, în special pentru
operaţiile intrare-ieşire. Detaliile concrete privind modul cum sunt
realizate aceste operaţii nu vor fi prezentate utilizatorului.
Programul care ascunde aceste lucruri despre hardware şi
prezintă o interfaţă simpla cu ajutorul fişierelor este sistemul de
operare. Sistemul de operare ascunde şi detalii privind
întreruperile, timer-ul, administrarea memoriei şi alte
caracteristici de nivel jos. Din acest punct de vedere, funcţia de
bază a sistemului de operare este de a prezenta utilizatorului
echivalentul unei maşini extinse (sau virtulale) care este mai uşor
de programat.

• Sistemul de operare ca administrator de resurse. Conceptul


de sistem de operare ca furnizor principal al unei interfeţe
convenabile pentru programatori este o prezentare top-down. O
alternativă, prezentarea botton-up, ţine seama de faptul că
sistemul de operare are rolul de a administra toate componentele
unui sistem complex, de a furniza o metodă de alocare controlată
şi ordonată a procesoarelor, memoriilor, dispozitivelor periferice
tuturor programelor care le solicită.

1.3. Evoluţia sistemelor de calcul


De-a lungul anilor, sistemele de operare au evoluat în mai multe
generaţii. Primul calculator cu adevărat digital a fost proiectat de
matematicianul englez Charles Babbage (1792-1871). Deşi Babbage
şi-a petrecut cea mai mare parte din viaţă încercând să construiască
calculatorul analitic, acesta nu lucrat niciodată adecvat, deoarece
maşina sa era pur mecanică, iar tehnologia din acea vreme nu îi
permitea producerea rotiţelor şi angrenajelor de o precizie aşa de mare,

2
cum avea el nevoie. Maşina analitică a lui Babbage nu avea sistem de
operare. Interesant este că şi-a dat seama că avea nevoie de software
pentru calculator, astfel că a angajat o tănară, Ada Augusta Lovelace
drept primul programator din lume. După numele ei a fost denumit
limbajul de programare ADA.

Prima generaţie (1945-1955): Sisteme construite cu tuburi


electronice cu vid şi tablouri de comanda

La jumatatea deceniului al V-lea al secolului XX, Howard Aiken, de


la Harvard, John Von Neumann, de la Institutul de Studii Moderne din
Princeton, J. Presper Eckert şi William Mauchley, de la Universitatea
Pensylvania şi Konrad Zuse, din Germania, au reuşit să construiască
maşina de calculat folosind tuburi electronice cu vid. Toate programele
erau realizate în limbaj maşina. Limbajele de programare erau
necunoscute şi nici sistemele de operare nu apăruseră încă. Pe la
începutul anilor ’50 apar cartelele perforate. Programele erau scrise pe
cartele perforate de unde erau citite, în loc să se folosească tablourile
de conexiuni.

Generaţia a doua (1955-1965): Sistem cu tranzistori şi


prelucrare pe loturi

Introducerea tranzistoarelor la mijlocul anilor ’50 a schimbat


radical modul de construire a calculatoarelor. Acum, pentru prima oară,
s-a făcut deosebire între proiectanţi, constructori, programatori şi
personalul de intreţinere.
Aceste maşini erau închise în camere speciale dotate cu aer
condiţionat şi cu operatori calificaţi ca să lucreze pe ele. Pentru a rula
un job (program sau set de programe) programatorul trebuia mai întâi
să scrie programul pe hârtie (în FORTRAN sau limbaj de asamblare),
apoi îl perfora pe cartele, îl aducea în camera de intrare, unde îl înmâna
unui operator. Când calculatorul termina de executat programul, un
operator mergea la imprimanta şi lua datele de ieşire pe care le ducea
la camera de ieşire astfel ca programatorul să le poată lua mai târziu.
Pentru a reduce timpul irosit, a fost adoptată soluţia de a se aduna mai
multe job-uri în camera de intrare, care apoi să fie citite şi memorate pe
o bandă magnetică folosind un computer mic şi ieftin, cum era, de
exemplu, IBM 1401, foarte bun la citirea cartelelor, copierea benzilor şi
tipărirea datelor de ieşire, dar nu la fel de bun pentru calcule numerice
la care erau folosite alte maşini precum IBM 7094.
Calculatoarele celei de a doua generatie erau folosite mai ales
pentru calcule ştiinţifice şi inginereşti, cum ar fi rezolvarea ecuaţiilor cu
derivate parţiale. Programele erau realizate în mare măsură în limbajul

3
FORTRAN şi în limbajul de asamblare. Sistemele de operare tipice erau
FMS (Fortran Monitor System) şi IBSYS, sistemul de operare al IBM
7094.

Generaţia a treia (1965-1980): Sisteme cu circuite integrate şi


multiprogramarea

La începutul anilor ’60, cei mai mulţi producatori de computer


aveau doua linii de producţie distinct: computerele ştiinţifice, ca IBM
7094 folosite pentru calcule numerice în ştiinţă şi inginerie şi computer
comerciale, ca IBM 1401 folosite de bănci şi de companiile de asigurare.
IBM a încercat să rezolve amândouă probleme introducând SYSTEM/360
care satisface nevoile tuturor clienţilor şi care folosea circuite integrate
la scară mică. Tot acum s-a realizat un sistem de operare care să
rezolve cerinţele conflictuale ale diferitelor tipuri de utilizatori, un
sistem de operare de două-trei ori mai mare decât FMS, ce conţine
milioane de linii scrise în limbaj de asamblare fără a elimina toate
deficienţele. Fiecare versiune fixa unele deficienţe, dar introducea
altele.
Totuşi, aceste sisteme de operare au introdus tehnici noi, dintre
care cea mai important este multiprogramarea. La IBM 7094, atunci
când job-ul current făcea o pauză pentru a aştepta să se termine o
bandă sau alta operaţie de intrare-ieşire, procesorul era neutilizat.
Soluţia care s-a impus a fost partiţionarea memoriei în câteva zone,
încărcând câte un job diferit în fiecare partiţie.
O altă caracteristică important a sistemului de operare din a treia
generaţie era capacitatea de a citi job-urile de pe cartele pe disc, apoi
ori de câte ori un job care rulează este terminat, sistemul de operare va
putea încărca un nou job de pe disc în partiţia acum goală. Această
tehnică se numeşte spooling. O altă tehnică introdusă a fost aceea de
timesharing – utilizarea unui sistem de calcul de mai multe personae în
acealşi timp; partajarea timpului permite rularea mai multor programe
concomitant, prin intercalarea intervalelor de timp de prelucrare
alocate fiecărui program/utilizator.
În această perioadă, Laboratoarele Bell au lucrat la proiectul
MULTICS, care mai târziu a condus la realizarea UNIX-ului. Deoarece
diverse organizaţii şi-au creat propriile versiuni, pentru a se putea rula
programele pe orice versiune UNIX, IEEE a dezvoltat un standard pentru
UNIX, denumit POSIX, care defineşte un set de servicii asigurate de
sistemul de operare şi care pot fi portate cu uşurinţă de la un sistem la
altul.

Generaţia a patra (1980-prezent): Calculatoarele personale

4
Generaţia a patra de calculatoare este marcată de apariţia
calculatoarelor personale. În această perioadă au dominat două sisteme
de operare: MS-DOS realizat de Microsoft şi UNIX.
MS-DOS a fost sistemul de operare folosit pe un IBM PC şi restul
calculatoarelor ce folosea procesorul Intel 8088 sau succesorii săi – 386,
486, Pentium, Pentium Pro, Pentium II. MS-DOS a fost urmat de sistemul
Windows, care iniţial a reprezentat doar o interfaţă grafică şi începând
cu versiunea Windows 95 aceasta a devenit sistem de operare.
UNIX-ul este folisit pe servere de reţea şi în special pe
calculatoarele dotate cu procesoare RISC.
La mijlocul anilor ’80 au apărut sistemele de operare pentru
reţele de calculatoare care sunt instalate pe un server dintr-o reţea
locală şi care coordonează activităţile legate de asigurarea serviciilor
calculatoarelor şi celorlalte dispozitive ataşate reţelei. Spre deosebire
de un sistem de operare monoutilizator, sistemul de operare în reţea
trebuie să răspundă cerinţelor mai multor staţii de lucru, rezolvând
diferite sarcini, cum ar fi accesul la reţea şi comunicaţiile, alocarea şi
partajarea resurselor, protejarea datelor şi controlul erorilor.

1.4. Conceptele importante utilizate de


sistemele de operare
Conceptele de bază utilizate de sistemele de operare sunt:

Procesele

Procesul este un program aflat în execuţie. Fiecărui proces îi este


asociat un spaţiu de adresă în care procesul poate citi şi scrie. Spaţiul
de adresă conţine programul executabil, datele programului şi stiva. De
asemenea, procesului i se asociază şi un set de registre, inclusiv un
contor de program, pointer pentru vârful stivei şi alte registre. Când un
proces este suspendat temporar, informaţiile sunt salvate în tabela
proceselor, care este un vector de structuri, câte una pentru fiecare
proces. De exemplu, procesul numit interpretor de comenzi citeşte
comenzile de la terminal, creează un proces care rulează comanda, iar
când procesul este terminat el execută un apel sistem ca să îl termine.
Dacă un proces poate crea unul sau mai multe procese (procese-copil)
şi aceste procese creează alte procese-copil, se obţine o structură
arborescentă a proceselor.

Fişierele

O noţiune foarte importantă relativ la sistemele de operare este


cea de fişier şi legat de acesta sistemul de fişiere. Pentru a ascunde

5
utilizatorilor dificultăţile citirii şi scrierii datelor pe disc sistemul de
operare furnizează conceptul de fişier ca mijloc de stocare a datelor pe
disc. Se vor pune la dispoziţie utilizatorilor apeluri de sistem pentru
crearea, ştergerea, citirea sau scrierea fişierelor, deschiderea şi
închiderea fişierelor.
Majoritatea sistemelor de operare furnizează o modalitate de a
grupa logic mai multe fişiere într-un director. Sistemul de operare va
furniza apeluri sistem pentru crearea şi ştergerea fişierelor dintr-un
director. Directorul poate fi privit ca o tabelă în care sunt memorate
numele fişierelor componente. De asemenea, o intrare într-un director
poate fi un subdirector. Acest model al memorării datelor pe disc dă
naştere la o ierarhie – sistemul de fişiere.
Directorul
rădăcină

Profesor
Studenţi
i
Alexand
Flavius Adrian Lorena
ru
Jocurir Cursuri Lucrari
Mailrul
Documen ul rul rul
rădăci
te rădăci rădăci rădăci

Cerere.t nă
CV.docr UNIX.donă Retele.tnă 344.txtr Fişierer
xtrul ul crul xtrul ul ul
rădăcin rădăcin rădăcin rădăcin rădăcin rădăcin
ă ă ă ă ă ă
Figura 1.2. Sistemul de fişiere

Fişierele dintr-un director pot fi specificate prin calea de acces


plecând de la nodul arborelui, nod denumit de obicei director
rădăcină. O astfel de cale care pleacă de la rădăcină este o cale
absolută. În Figura 1.2. calea absolută de acces la fişierul “cerere.txt”
este “/student/flavius/documente/cerere.txt”. Prin simbolul “/” am
marcat directorul rădăcină, iar următoarele simboluri “/” au doar rolul
de a despărţii numele directoatelor.
În orice moment un proces are un director curent de lucru.
Dacă, spre exemplu, directorul curent de lucru este “profesori”, atunci
fişierul “unix.doc” poate fi specificat în felul următor
“lorena/cursuri/unix.doc”. În acest caz calea de acces porneşte din
directorul curent fără a mai fi nevoie de parcurgerea întregului arbore
începând cu rădăcina. Calea construită în acest fel se numeşte cale
relativă.

6
În sistemele multiutilizator sistemul de operare trebuie să
furnizeze un mecanism de protecţie al fişierelor. În UNIX pentru fiecare
fişier există un cod de protecţie format din trei grupuri de trei biţi.
Relativ la accesul la fişiere, utilizatorii sistemului sunt împărţiţi în:
proprietarul fişierului, grupul de utilizatori din care face parte
proprietarul şi restul utilizatorilor. Pentru fiecare categorie există trei
biţi RWX care acordă sau nu dreptul de citire (R), scriere (W) sau
execuţie (X) a unui fişier. Spre exemplu, un fişier cu drepturile rwxrw-r--
poate fi citit, scris şi executat de proprietarul său, poate si citit sau scris
de către grupul de utilizatori din care face parte proprietarul fişierului şi
poate fi doar citit de restul utilizatorilor.
Un alt concept important este fişierul special. Unele sisteme de
operare au câte un fişier special corespunzator fiecărui dispozitiv de I/O.
În acest mod, toate dispozitivele de I/O pot fi tratate ca simple fişiere.
Majoritatea sistemelor de operare multiprogramate furnizează
anumite mijloace prin care mai multa procese comunică. Un astfel de
mijloc este fişierul conductă (pipe). Un fişier conductă este un tip
aparte de fişier care conectează două procese ce doresc să schimbe
date între ele. Un proces va scrie date în fişierul conductă, în timp ce
procesul de la celălalt capăt va citi aceste date.
Shell

Acesta este un program care asigura comunicaţia directă între


utilizator şi sistemul de operare.

Apeluri de sistem

Interfaţa între sistemul de operare şi programele utilizatorului


este definit de un set de instrucţiuni extinse pe care le oferă sistemul
de operare şi care sunt cunoscute sub numele de apeluri de sistem.
Sistemele de operare grupează aceste funcţii în şase categorii:

1. Administrarea proceselor

2. Semnale

3. Administrarea fişierelor

4. Administrarea directoarelor şi a sistemelor de fişiere

5. Protecţie

6. Administrarea timpului

7
1.5. Structura sistemelor de operare
Există patru modalităţi de organizare internă a sistemelor de
operare:

1) Sistemul monolitic: acesta de fapt nu are nici o structură.


Sistemul de operare este o colecţie de proceduri, dintre care fiecare
poate apela pe oricare oricând are nevoie. Apelurile de sistem furnizate
de sistemul de operare sunt cerute de programe punând parametri bine
definiţi în locuri, ca, de exemplu, registre sau în stivă şi apoi executând
un set special de instrucţiuni numite kernell call sau supervisor call.

Program utilizator
Program utilizator Programele de aplicaţie
Kernell call rulează în mod utilizator

4
1
Procedură de
serviciu
3
Sistemul de operare
rulează în mod kernel

Figura 1.3. Apelul de sistem

În figura 1.3. este exemplificat mecanismul de lucru al unui apel


de sistem. În prima etapă se execută o instrucţiune specială (trap) care
trece procesorul din modul utilizator în modul kernel. Sistemul de
operare examinează apoi parametrii acestei instrucţiuni (2) pentru a
stabili ce apel de sistem trebuie invocat. Prin parcurgerea unui tabel de
pointeri (3) se determină adresa procedurii care trebuie executată
pentru a duce la îndeplinirea apelului sistem cerut, apoi în final (4)
procesorul revine în modul de execuţie utilizator.

2) Sistemele stratificate: Primul sistem construit stratificat a fost


THE construit la Technische Hogeschool Eindhoven (1968) şi are şase
niveluri.

8
(5) Operator
(4) Programele utilizator
(3) Administrarea operaţiilor I/O
(2) Comunicare operator-proces
(1) Administrarea memoriei
(0) Alocarea CPU şi
multiprogramarea

Figura 1.4. Structura sistemului THE

Nivelul 0 avea rolul de a gestiona alocarea procesorului pentru


diferite procese, realizând astfel multiprogramarea. Nivelul 1 era
gestionarea memoriei, cu rolul de a aloca memorie pentru programele
care erau executate. Nivelul 2 era destinat operaţiilor de comunicare
dintre fiecare proces şi consola operator asociată lui. Nivelul 3 gestiona
operaţiile de intrare-iesire, iar celelalte niveluri superioare reprezentau
programele utilizator.

3) Maşina virtuală: unul dintre primele sistemele de tip maşină


virtulă a fost VM/370 destinat calculatoarelor mainframe IBM. La
realizarea lui s-a plecat de la următoarea observaţie: sistemul de
operare trebuie să implementeze conceptul de multiprogramare şi să
furnizeze o maşină extinsă cu o interfaţă mai uşor de programat decât
hardware-ul de bază.

4) Modelul client-server: O tendinţă actuală în domeniul


sistemelor de operare este de a muta codul în straturile
superioare astfel încât kernelul să devină cât mai mic. Majoritatea
funcţiilor sistemului de operare este transferată către procese
utilizator. De exemplu, pentru a citi un bloc de date de pe disc, un
proces utilizator (client) va trimite această cerere către un proces
server care realizează operaţia de citire şi trimite înapoi
rezultatul.

Proces Proces Server Server Server Server


Client Client de de ... de de Mod
procese termina fişiere memori utilizator
le e

Mod kernel
KERNEL

9
Clienţii obţin servicii
trimiţând mesaje
proceselor server

Figura 1.5. Modelul client-server

Un avantaj al modelului client-server este adaptabilitatea sa la


sistemele distribuite. În acest caz fiecare proces se poate rula pe o
maşină diferită.

Maşina 1 Maşina 2 Maşina 3 Maşina 4


Server
Server Server
de
Client de de
terminal
fişiere procese
e
Kernel Kernel Kernel Kernel

Reţea
Mesaj de la client spre
server
Figura 1.6. Modelul client-server pentru un sistem distribuit

1.6. Funcţiile de bază ale sistemelor de operare

Sistemul de operare pune la dispoziţie mecanisme pentru


suportarea unei abstractizări pentru procese şi pentru administrarea
resurselor folosite de procese.

Funcţiile sistemelor de operare pot fi clasificate în patru categorii:

• Gestionarea proceselor şi a resurselor

• Gestionarea memoriei

• Gestionarea dispozitivelor de intrare-iesire

• Gestionarea fişierelor

Gestionarea proceselor şi a resurselor

10
Procesele sunt unităţi de calcul de bază definite de programatori,
iar resursele sunt elementele mediului de calcul necesar unui proces
pentru a se executa. Administrarea proceselor şi managementul
resurselor pot fi separate în două module diferite, dar majoritatea
sistemelor de operare le înglobează într-un singur modul, din moment
ce amândouă definesc mediul de execuţie al programului.

Gestionarea memoriei

Modulul de gestionare a memoriei administrează alocarea şi


utilizarea memoriei principale.
Fiecare proces cere şi foloseşte memorie în funcţie de necesităţile
sale. Administratorul de memorie alocă memorie proceselor care
concurează pentru aceeaşi zonă după o anumită strategie specificată.
Administratorul de memorie pune la dispoziţie extensii de
memorie virtuală în aşa fel încât memoria principală a calculatorului să
pară mai mare decât este în realitate. Această facilitate este realizată
prin integrarea memoriei principale a calculatorului şi a memoriei de pe
dispozitivele de stocare.
Administratorul de memorie poate permite unui proces aflat pe o
maşină să acceseze şi să partajeze memoria fizică de pe un alt
calculator.

Gestioarea dispozitivelor de intrare-ieşire

Sistemele de operare tratează toate dispozitivele cum ar fi de


exemplu discuri, benzi magnetice, terminale şi imprimante în aceeaşi
manieră generală, cu o atenţie specială pentru administrarea
procesorului şi a memoriei. Managementul dispozitivelor se referă la
modul în care aceste dispozitive generice sunt administrate.

Gestionarea fişierelor

Fişierele sunt o resursă abstractă a dispozitivelor de stocare.


Informaţia stocată în memoria principală va fi suprascrisă imediat ce
memoria este dealocată de un proces. Informaţia trebuie salvată pe
dispozitive de stocare, cum ar fi banda magnetică sau discul. Nevoia de
a produce abstractizări ale detaliilor operaţiilor de intrare/ieşire pentru
dispozitive de stocare a fost printre primii paşi care au condus către
sistemele de operare.
În sistemele de operare moderne, sistemul de fişiere este
distribuit astfel încât un proces de pe o maşină poate citi şi scrie la fel
de bine fişiere stocate în sistemul local, cât şi de pe altă maşină din
interiorul reţelei.

11
12

S-ar putea să vă placă și