Arhitectura calculatoarelor

41
CAPITOLUL 1. INTRODUCERE Scopul acestui capitol este al unei prezent˘ ari de ansamblu despre arhitectura ¸ si organizarea unui Echipament de Calcul (EC), punˆ and accent pe acele aspecte care vizeaz˘ a structura general˘ aa Sistemului de Operare (SO). De asemenea, sunt discutate caracte- risticile esen¸ tiale care ¸ tin de un SO: obiective ¸ si func¸ tii, tipuri de SO, procese, administrarea memoriei, planificarea ¸ si administra- rea resurselor etc. Pentru mai multe detalii, trimitem la referin¸ ta [12]. 1.1 Structura unui EC (Echipament de Calcul) 1.1.1 Elemente principale Din punct de vedere fizic, un EC (calculator) este alc˘ atuit din patru elemente principale: procesor, memorie, module de In- trare/Ie¸ sire (Input/Output, I/O) ¸ si sistemul de interconexiuni (magistrale de comunicare). Cˆ ateva no¸ tiuni despre fiecare dintre aceste elemente sunt prezentate ˆ ın continuare. Procesorul. Un EC poate con¸ tine unul sau mai multe proce- soare. Dac˘ a calculatorul are ˆ ın componen¸ a un singur procesor, vom desemna acesta prin CPU (Central Processing Unit). Rolul procesorului este de a controla opera¸ tiile care se execut˘ a la nivelul ˆ ıntregului EC. De exemplu, una dintre opera¸ tii este schimbul de

description

Arhitectura calculatoarelor

Transcript of Arhitectura calculatoarelor

Page 1: Arhitectura calculatoarelor

CAPITOLUL 1. INTRODUCERE

Scopul acestui capitol este al unei prezentari de ansambludespre arhitectura si organizarea unui Echipament de Calcul (EC),punand accent pe acele aspecte care vizeaza structura generala aSistemului de Operare (SO). De asemenea, sunt discutate caracte-risticile esentiale care tin de un SO: obiective si functii, tipuri deSO, procese, administrarea memoriei, planificarea si administra-rea resurselor etc. Pentru mai multe detalii, trimitem la referinta[12].

1.1 Structura unui EC (Echipament de Calcul)

1.1.1 Elemente principale

Din punct de vedere fizic, un EC (calculator) este alcatuitdin patru elemente principale: procesor, memorie, module de In-trare/Iesire (Input/Output, I/O) si sistemul de interconexiuni(magistrale de comunicare). Cateva notiuni despre fiecare dintreaceste elemente sunt prezentate ın continuare.

Procesorul. Un EC poate contine unul sau mai multe proce-soare. Daca calculatorul are ın componenta un singur procesor,vom desemna acesta prin CPU (Central Processing Unit). Rolulprocesorului este de a controla operatiile care se executa la nivelulıntregului EC. De exemplu, una dintre operatii este schimbul de

Page 2: Arhitectura calculatoarelor

22 Capitolul 1

date dintre memorie si modulele I/O. Pentru a realiza acest lucru,procesorul dispune de urmatorii registrii speciali:

• registrul ”adresa de memorie” – MAR (Memory AddressRegister): contine adresa de memorie pentru urmatoarea o-peratie de citire/scriere;

• registrul ”memorie de lucru” – MBR (Memory Buffer Reg-ister): contine date intermediare ce urmeaza a fi scrise ınmemorie sau date citite din memorie;

• registrul ”adresa I/O” – I/OAR (I/O Address Register): spe-cifica un periferic particular pentru operatia I/O;

• registrul ”I/O de lucru” – I/OBR (I/O Buffer Register): uti-lizat pentru schimburile de date dintre modulele I/O si pro-cesor;

• registrul ”instructiune” – IR (Instruction Register): contineultima instructiune ıncarcata si care este ın curs de executie;

• registrul ”contor de program” – PC (Program Counter): con-tine adresa unei instructiuni ce urmeaza a fi ıncarcata ın IR.

In interiorul procesorului mai exista un grup de registrii care potfi grupati astfel:

• registrii ”utilizator”: sunt disponibili ın general tuturor pro-gramelor (inclusiv programelor de aplicatii, precum si pro-gramelor de sistem). Clasa acestor registri contine: registriide date – carora programatorul le poate asocia diferite functii,registrii de adrese – contin adrese ale memoriei principale pre-cum si instructiuni. Toti acestia pot fi accesati de utilizator;

• registrii de ”stare si control”: sunt folositi pentru controluloperatiilor procesorului.

Pe langa registrii de mai sus, toate procesoarele mai includ un re-gistru cunoscut sub numele cuvant stare program – PSW (ProgramStatus Word), care contine informatii despre starea unui program,si anume:

– Sign: contine bitul de semn al ultimei operatii aritmetice;– Zero: este setat atunci cand rezultatul unei operatii aritme-

Page 3: Arhitectura calculatoarelor

INTRODUCERE 23

tice este zero;– Carry: este utilizat pentru a indica transportul ın cazul ope-

ratiilor aritmetice;– Equal: este setat daca rezultatul unei comparatii logice este

o egalitate;– Overflow: este utilizat pentru a indica o depasire aritmetica;– Interrupt enable/disable: este ıntrebuintat pentru a activa

sau dezactiva sistemul de ıntreruperi;– Supervisor: indica modul de executie ın care se afla proce-

sorul (supervizor sau utilizator).Anumite procesoare mai pot contine si alti registrii de stare sicontrol, precum:

• un registru de ”adresare a unui bloc de memorie”, care con-tine informatii de stare suplimentare,

• un grup de registrii utilizati ın tratarea ıntreruperilor multi-ple,

• registrii pentru gestionarea operatiilor cu stiva,• registrii pentru gestionarea memoriei,• registrii pentru controlul operatiilor I/O.

Memoria. Patru clase de memorie pot fi ıntalnite ın cadrul unuicalculator: registrii interni, memoria cache, memoria principalasi memoria secundara.

• registrii interni (sau memoria interna a procesorului) se ca-racterizeaza prin timp de acces mic (memorie rapida), capa-citate mica si pret de cost ridicat.

• memoria cache este de doua tipuri: memoria cache de nivel1 – reprezinta memoria cache din CPU si memoria cache denivel 2 – situata ıntre CPU si memoria principala, avand ace-leasi caracteristici cu memoria interna a procesorului. Proce-soarele mai noi grupeaza cele doua tipuri de memorie cachela nivelul CPU-ului.

• memoria principala (sau reala) este organizata (din punctde vedere logic) ca un sir liniar de octeti (bytes). Unitatea

Page 4: Arhitectura calculatoarelor

24 Capitolul 1

de baza a memoriei (o locatie de memorie) este octetul;fiecare locatie de memorie are o adresa unica. Adresa primeilocatii este 0 iar a ultimei 2n−1, daca EC are magistralade adrese (vezi Figura 1.1) de n biti. Din punct de vederefizic, memoria principala este volatila (datele nu pot fi stocatepermanent, pierzandu-se la oprirea EC). Se caracterizeazaprin acces rapid la date si pret de cost relativ mare.

• memoria secundara (sau externa) consta din discurile magne-tice si benzile magnetice. La nivel logic se bucura de aceeasiorganizare precum memoria principala. Este utilizata pen-tru a stoca programe si fisiere de date, putand fi accesatadirect de catre utilizator. Este nevolatila si, spre deosebirede memoria principala, accesul la date este mai lent iar pretulde cost este mic. Pe langa sarcina de a memora volume maride date, discurile magnetice sunt folosite si drept o extensiea memoriei principale, extensie cunoscuta sub denumirea dememorie virtuala.

… …

CPUCPU MEMMEM MEMMEM

I/OI/O I/OI/O

DATEDATE

CONTROLCONTROL

ADRESEADRESE

Figura 1.1. Structura de interconexiuni de tip magistrala

Sistemul de interconexiuni reprezinta setul de mecanisme des-tinat comunicarii ıntre procesor, memoria principala si moduleleI/O. Cel mai cunoscut mecanism este cel al magistralelor, repre-

Page 5: Arhitectura calculatoarelor

INTRODUCERE 25

zentat ın Figura 1.1. Familia de procesoare Intel 80x86 dispune detrei tipuri de magistrale: de adrese, de date si de control. Magis-trala de date este folosita pentru a transfera date ıntre moduleleEC. Magistrala de adrese este utilizata pentru a specifica sursasau destinatia unor date ale magistralei de date. Magistrala decontrol este alcatuita dintr-un set de semnale cu ajutorul carorase determina modul de comunicare dintre procesor si restul mo-dulelor EC. Astfel de semnale de control sunt: READ, WRITE,RESET, CLOCK etc.

Modulele I/O sunt destinate controlului unuia sau mai multordispozitive externe (periferice) si pentru schimbul de date dintreacestea din urma si registrii procesorului si/sau memoria princi-pala. Fiecare modul are o interfata cu structura de magistrale aEC si controleaza unul sau mai multe dispozitive externe (perife-rice). Dispozitivele externe pot fi clasificate ın trei categorii (dinpunctul de vedere al procesorului):

– pentru uz uman: destinate procesului de comunicare cu uti-lizatorul calculatorului (monitor, tastatura, imprimanta);

– pentru uz masina: destinate procesului de comunicare cu EC(discuri magnetice, benzi magnetice etc.);

– pentru comunicare: destinate comunicarii cu dispozitiveleaflate la distanta (un terminal, un alt calculator etc.).

Sarcinile unui modul I/O constau ın:• control si sincronizare: la un moment dat, resursele interne

(memoria principala, magistralele etc.) trebuie distribuiteıntre diverse activitati, printre care I/O. Astfel, functia I/Oinclude necesitatea de control si sincronizare ın vederea co-ordonarii schimbului dintre resursele interne si dispozitiveleexterne. De exemplu, controlul transferului de date de laun dispozitiv extern catre procesor poate cuprinde urmatoriipasi:

1. Procesorul cere modulului I/O starea dispozitivuluiatasat;

Page 6: Arhitectura calculatoarelor

26 Capitolul 1

2. Modulul I/O verifica si transmite starea dispozitivului;

3. Daca dispozitivul este operational si pregatit pentrutransfer, procesorul solicita transferul datelor prin in-termediul unei comenzi adresate modulului I/O;

4. Modulul obtine o unitate de date (de exemplu, 8 sau 16biti) de la dispozitivul extern;

5. Datele sunt transferate de la modulul I/O catre proce-sor.

• comunicare cu procesorul cuprinde urmatoarele operatii: de-codificarea comenzii, schimbul de date via magistrala de date,comunicarea starii modulului I/O (BUSY, READY) si re-cunoasterea adreselor.

• comunicare cu dispozitivele externe: aceasta comunicare cu-prinde, de asemenea, comenzi, informatii de stare si date.

• transferul datelor: modulul I/O trebuie sa fie capabil sa ope-reze atat la viteza dispozitivului, cat si a memoriei.

• detectarea erorilor: modulul I/O este responsabil de detec-tarea erorilor si semnalarea acestora procesorului. Dintretipurile de erori care pot sa apara aici, amintim: hartie blo-cata, pista defecta, eroare de paritate.

Daca SC foloseste o magistrala, atunci fiecare interactiune dintreprocesor si modulul I/O implica unul sau mai multe evenimente-magistrala.

1.1.2 Intreruperi

Intreruperile au fost introduse initial pentru a ımbunatatifenomenul de procesare a lucrarilor. Pentru o ıntelegere mai co-recta a acestui lucru, consideram un program utilizator care seexecuta pe un EC fara sistem de ıntreruperi (Figura 1.2a).

Page 7: Arhitectura calculatoarelor

INTRODUCERE 27

Program

utilizator

WRITE

Program

I/O

Comanda

I/O

SFARSIT

1

2

3

4

5

WRITE

WRITE

Figura 1.2a. Executia unui program fara sistem de ıntreruperi

Programul utilizatorului consta din secvente de instructiunicare nu solicita I/O (etichetate cu 1, 2 si 3) si apeluri WRITEcare implica lansarea ın executie a unei rutine (un utilitar sistem)si care va executa operatia I/O. Programul I/O consta dintr-osecventa de instructiuni pentru pregatirea operatiei I/O (eticheta4), o secventa de instructiuni pentru terminarea operatiei I/O(eticheta 5) si comanda I/O. Executia programului este oprita ınpunctul apelului WRITE pentru o perioada mare de timp, timpın care procesorul este inactiv.

Cele mai uzuale clase de ıntreruperi care pot schimba activi-tatea normala a procesorului sunt:

– program: sunt generate de un program utilizator si revinla una din urmatoarele: depasire flotanta, ımpartire prinzero, tentativa de a executa o instructiune masina ilegala sireferirea unei zone de memorie (alta decat zona de memoriealocata programului utilizator).

Page 8: Arhitectura calculatoarelor

28 Capitolul 1

– ceas: sunt generate de ceasul intern al SC si permite SO saexecute anumite rutine, la intervale fixe de timp.

– I/O: sunt generate de ”controller”-ul I/O pentru a semnalaterminarea normala a unei operatii sau pentru a semnala untip anume de eroare.

– hardware: sunt generate de un esec precum lipsa de energiesau eroare de ”paritate-memorie”.

Intreruperi si ciclul instructiune. Consideram acelasi pro-gram utilizator de mai ınainte care se executa acum pe un ECdotat cu un sistem de ıntreruperi (Figura 1.2b).

Program

I/O

Comanda

I/O

4

SFARSIT

5

Procedura

intreruperii

Program

utilizator

WRITE

1

2a

3a

WRITE

WRITE

3b

2b

*

*

Figura 1.2b. Executia unui program cu sistem de ıntreruperi

Cand dispozitivul extern este pregatit pentru a accepta date dela procesor, modulul I/O atasat acestuia va trimite o cerere deıntrerupere procesorului. Procesorul va raspunde prin suspenda-rea executiei operatiei curente a programului utilizatorului, trans-fera controlul subrutinei de tratare a ıntreruperilor (componenta aSO) si reia executia programului initial dupa ce dispozitivul este

Page 9: Arhitectura calculatoarelor

INTRODUCERE 29

servit. Am marcat prin (*) punctele din program ın care aparasemenea ıntreruperi.

Programul utilizator nu contine un cod anume care sa tratezeıntreruperile; procesorul si SO sunt responsabile pentru suspenda-rea si apoi reluarea executiei programului ın acelasi punct. Pentrua trata o ıntrerupere, la ciclul-instructiune este adaugat un ciclude ıntrerupere (vezi [12] pentru amanunte).

Procesarea ıntreruperilor. Aparitia unei ıntreruperi ın timpulexecutiei unui program implica desfasurarea unui numar de eveni-mente la nivelul procesorului, atat la nivel fizic (hardware), cat silogic (software). Sirul acestor evenimente este ilustrat ın Figura1.3. Cand un dispozitiv termina o operatie I/O, la nivelul fizic alprocesorului apar urmatoarele evenimente:

1. Dispozitivul transmite procesorului un semnal de ıntrerupe-re;

2. Procesorul termina de executat instructiunea curenta, ınaintede a considera ıntreruperea;

3. Procesorul testeaza daca exista o ıntrerupere si, ın caz afir-mativ, trimite un semnal de confirmare catre dispozitivulcare a transmis ıntreruperea. Drept consecinta, dispozitivulva anula semnalul de ıntrerupere;

4. Procesorul pregateste predarea controlului rutinei care vatrata ıntreruperea. Minimum de informatii necesar reluariiprogramului ıntrerupt, constand din registrii PSW si PC, vafi salvat ın stiva;

5. Procesorul ıncarca registrul PC corespunzator rutinei de tra-tare a ıntreruperii ın cauza.

Incarcarea registrului PC la pasul 5 de mai sus implica transferulcontrolului rutinei care va trata ıntreruperea. Executia acesteiarevine la:

6. Continutul tuturor registrilor programului ıntrerupt sunt sal-vati ın stiva deoarece acestia pot fi utilizati de rutina de ın-treruperi. Figura 1.4 a) ilustreaza un exemplu simplu ın care

Page 10: Arhitectura calculatoarelor

30 Capitolul 1

programul utilizatorului este ıntrerupt dupa instructiunea dela locatia N ;

7. Rutina de ıntreruperi poate trece la tratarea ıntreruperii;

In sistem apare

o intrerupere

Procesorul termina

de executat instructiunea

curenta

Procesorul semnaleaza

ca intreruperea

este servita

Procesorul salveaza

PSW si PC in stiva

Procesorul incarca

noul PC cu adresa

rutinei de tratare

Salveaza starea

procesului initial

Rutina de tratare

a intreruperii

Se restaureaza

starea procesului

initial

Se restaureaza

vechiul PSW si PC

Ha

rd

wa

re

So

ftw

are

Figura 1.3. Procesarea unei ıntreruperi

8. Dupa ce tratarea ıntreruperii este terminata, valorile regis-trilor salvati ın stiva sunt reıncarcati ın registrii procesorului(vezi Figura 1.4 b));

Page 11: Arhitectura calculatoarelor

INTRODUCERE 31

9. In final sunt refacuti registrii PSW si PC cu valorile corespun-zatoare programului ıntrerupt. Astfel, urmatoarea instructi-une de executat va fi instructiunea N + 1.

Operatia de salvare de la pasul 6 se impune ıntrucat rutina detratare a ıntreruperii nu este una apelata ın cadrul programuluiutilizatorului.

N+1

Y

T

T+M

N

N+1

Y+L

Y

T

T+M

Registri

Contor

de

program

Rutina

intreruperii

Program

utilizator

Stiva de

control

Adresa

Stivei

Start

Iesire

a) ıntreruperea apare dupa instructiunea de la adresa N

Page 12: Arhitectura calculatoarelor

32 Capitolul 1

N+1

Y+L

T

T+M

N

N+1

Y+L

Y

T

T+M

Registri

Contor

de

program

Rutina

intreruperii

Program

utilizator

Stiva de

control

Adresa

Stivei

Start

Iesire

N+1

b) revenirea dintr-o ıntrerupere

Figura 1.4. Schimbul de informatii dintre memorie si registri,corespunzator unei ıntreruperi

Intreruperi multiple. In discutiile de pana acum, am consi-derat aparitia doar a unei ıntreruperi. Presupunem ın contin-uare ca ın procesul de executie a unui program pot sa apara maimulte ıntreruperi. De exemplu, un program poate sa aiba drept

Page 13: Arhitectura calculatoarelor

INTRODUCERE 33

activitate receptionarea de date de la o linie de comunicatii si im-primarea unor rezultate. Atat controller-ul liniei de comunicatii,cat si imprimanta pot genera o ıntrerupere ın orice timp. Maimult, este posibil ca o ıntrerupere de la linia de comunicatii saapara ın timp ce o ıntrerupere generata de imprimanta este ınderulare.

Program

utilizator

t=0

ISR

imprimanta

ISR

comunicatii

ISR disk

t

=

1

0

t

=

4

0

t

=

1

5

t

=

2

5

t

=

2

5

t

=

3

5

t=20

Figura 1.5. Secventa timpilor ın tratarea ıntreruperilor multiple

Doua concepte pot fi considerate ın tratarea ıntreruperilormultiple. Primul este de a dezactiva sistemul de ıntreruperi ıntimp ce o ıntrerupere este tratata. O dezactivare se traduce prinaceea ca procesorul va ignora noile cereri de ıntreruperi. Dupa

Page 14: Arhitectura calculatoarelor

34 Capitolul 1

ıncheierea activitatii rutinei de servire a ıntreruperii(Interrupt Service Routine-ISR), sistemul de ıntreruperi este ac-tivat ınainte de reluarea executiei programului utilizatorului siprocesorul verifica existenta de noi cereri de ıntreruperi. Astfel,ıntreruperile sunt tratate ıntr-o ordine strict secventiala. Deza-vantajul acestui concept este ca nu ia ın calcul prioritatea sau nulimiteaza timpul necesar tratarii evenimentelor.

Al doilea concept se refera la definirea prioritatilor pentruıntreruperi si pentru a permite unei ıntreruperi de nivel mai maresa poata ıntrerupa pe una de prioritate mai mica. Un exempluilustrativ ın acest sens este prezentat ın Figura 1.5 (vezi [13]), undeam considerat ca cele trei dispozitive (imprimanta, discul si liniade comunicatii) au, respectiv, prioritatile: 2, 4, 5. La momentult = 20 (deci ın timpul executiei ISR corespunzatoare liniei decomunicatii) discul solicita o ıntrerupere care, deoarece are unnivel mai mic de prioritate, este doar memorata si va fi tratatadupa ce ISR corespunzatoare liniei de comunicatii este ıncheiata.

Multiprogramare (multitasking). Chiar si ın cazul prezenteisistemului de ıntreruperi, un procesor nu poate fi utilizat eficient.De exemplu, daca timpul necesar pentru a efectua o operatie I/Oeste mult mai mare decat cel necesar executiei codului programu-lui utilizator dintre doua apeluri I/O, atunci procesorul va fi faraocupatie o buna parte de timp. Acest neajuns poate fi eliminatdaca mai multe programe-utilizator sunt active ın acelasi timp.Cand procesorul trateaza mai multe programe ın acelasi timp, or-dinea ın care vor fi executate va depinde de prioritatea fiecaruia,precum si daca acestea asteapta sau nu pentru o operatie I/O.Astfel, daca un program este ıntrerupt si controlul este transferatrutinei de servire a ıntreruperii, dupa terminarea executiei aces-teia, controlul executiei poate sa nu fie redat imediat programului-utilizator care era ın executie ın acel moment (controlul poate fitrecut altui program activ care are prioritate mai mare). Acestconcept de executare a mai multor programe ın acelasi timp se

Page 15: Arhitectura calculatoarelor

INTRODUCERE 35

numeste multiprogramare (sau multitasking).

1.1.3 Tehnici de comunicare pentru modulele I/O

Sunt cunoscute mai multe modalitati (moduri de lucru) ınvederea transmiterii de la/catre dispozitivele I/O a informatiilorla nivelul unui EC:

– modul I/O simplu programat,– modul I/O controlat cu ıntreruperi.

In primul mod, fiecare octet citit de la modulul I/O estecerut de catre procesor prin instructiuni precise. Dupa ce se faceo cerere, procesorul ramane ıntr-o stare de asteptare activa panacand modulul I/O ısi seteaza bitii de stare prin care semnaleaza cainformatia ceruta este disponibila. Deci modulul I/O nu atentio-neaza procesorul printr-o ıntrerupere cand a terminat de ıncarcatinformatia ceruta, procesorul fiind nevoit sa ramana ”activ” si saverifice daca bitii de stare ai modulului I/O indica ca operatia deıncarcare s-a sfarsit. Odata terminata aceasta ıncarcare, modululI/O seteaza bitul READY iar procesorul, care astepta setareaacestui bit, va lua informatia de la modulul I/O si o va stocaın memorie.

Se observa ca procesorul pierde foarte mult timp ın astepta-rea completarii operatiei I/O. O rezolvare a acestui neajuns ar fica modulul I/O sa trimita un semnal de ıntrerupere cand se ter-mina operatia I/O, astfel procesorul nu mai este nevoit sa asteptecompletarea ei si deci va putea executa alte activitati.

Desi aceasta din urma abordare a problemei este mai bunadecat prima, mai exista totusi un dezavantaj, si anume, informatialuata de la modulul I/O trebuie sa treaca tot timpul prin proce-sor ca sa poata ajunge ın memorie. Atunci cand se transferacantitati mici de date, modul de transfer condus de ıntreruperinu reprezinta un dezavantaj, dar daca se doreste transferul uneicantitati mari de date, problema se poate aborda si ın alt mod, sianume, prin modul DMA (Direct Memory Access).

Page 16: Arhitectura calculatoarelor

36 Capitolul 1

Accesarea directa a memoriei. Functia DMA (Direct MemoryAccess) este atribuita unui dispozitiv specializat care are acces lamagistralele sistemului, la dispozitivele I/O si la memorie. Acestdispozitiv se poate afla separat, ca entitate ın sistem, sau poateface parte din diferitele module I/O. Oricare ar fi implementareafizica, modalitatea de lucru este dupa cum urmeaza: cand proce-sorul doreste sa citeasca sau sa scrie date de la un anumit dispo-zitiv I/O, trimite modulului DMA urmatoarele informatii:

– natura operatiei (citire sau scriere),– adresa dispozitivului I/O,– adresa de ınceput a memoriei de la care se citesc datele sau

la care se scriu,– numarul de octeti ce urmeaza a fi cititi/scrisi ın/din memorie.

Dupa ce initiaza dispozitivul DMA, procesorul poate sa con-tinue cu o alta activitate. Modulul DMA va transfera dateledintre dispozitivul I/O si memoria principala, fara ca acestea samai treaca prin CPU. Cand transferul este complet, dispozitivulDMA va trimite o ıntrerupere spre procesor. Astfel, procesoruleste implicat ın transferul de date dintre modulul I/O si memoriedoar la ınceputul si sfarsitul acestuia. In timpul transferului dedate, modulul DMA are nevoie de control asupra magistralelor sis-temului, deci procesorul s-ar putea sa mai aiba timpi morti (dacase ıntampla sa-i trebuiasca si lui controlul asupra magistralelor).Aceasta este si cauza ıncetinirii procesarii pe care o observamatunci cand are loc un transfer DMA ıntre hard-disk si memorie,de exemplu.

1.2 Notiuni generale despre un SO (Sistem de Operare)

Notiunea de SO este una foarte uzuala ın zilele noastre. Odefinitie clara si atotcuprinzatoare a unui SO este destul de dificilde stabilit. Potrivit definitiilor ıntalnite ın diverse lucrari de spe-cialitate (vezi, de exemplu, [12]), acestea se reduc, de exemplu, laa pune ın evidenta functiile si obiectivele unui SO.

Page 17: Arhitectura calculatoarelor

INTRODUCERE 37

Utilizator

Programator

Designer

SO

Aplicatii

Utilitare

Sistemul de operare

Hardware

Figura 1.6. Structura unui SC

Mai exact, un SO este ınteles ca fiind un pachet de programemenit a contribui la o exploatare optima a unui EC de catre utili-zator; sau: un SO este componenta software destinata exploatariiresurselor fizice (hardware) ale unui EC, prin punerea la dispozitiautilizatorului a unei multimi de servicii ın acest sens. In plus, ınsarcina unui SO mai intra gestiunea memoriei si a dispozitivelorI/O.

Vom defini un Sistem de Calcul (SC) ca fiind reuniunea unuiEC cu unul sau mai multe SO. Privit din perspectiva potentialilorutilizatori (proiectanti de SO, programatori, alti utilizatori), unSC poate fi descris conform diagramei din Figura 1.6.

Desprindem cu usurinta ca, pentru a exploata cat mai bineun SO, unui programator ıi este utila o informare (cat de sumara)atat asupra a ceea ce ofera un SO, cat si asupra modului ın carelucreaza un SO, ın ideea de a putea justifica de ce trebuie actionat

Page 18: Arhitectura calculatoarelor

38 Capitolul 1

ıntr-un anumit fel, precum si care este explicatia aparitiei anumi-tor erori sau evenimente neprevazute pe parcursul utilizarii unuiSC.

Primele SO referite la nivel international, apar ın jurul anilor1960 (CTSS, OS/360). Incepand cu anul 1990, puternice firmecomerciale, precum: IBM, Microsoft, DEC, Sun Microsystem,Novell’s Unix System Laboratories, s-au angajat ın dezvoltareade noi SO, facand astfel calculatoarele mai puternice decat celedotate cu SO DOS (sau Windows). Evident, noile EC trebuie sapoata executa programe dezvoltate sub DOS si/sau Windows si,ın plus, sa ofere facilitati noi si atractive. Unul din rezultatelesemnificative ın acest sens este schimbarea modului de interactiu-ne al utilizatorului, ın sensul cresterii independentei unei apliatiifata de SO. Spre deosebire de SO vechi (unde utilizatorul finalputea accesa resursele unui EC numai ın cadrul unei aplicatii;doar managerii de SC puteau avea acces la resurse, controlanddeci tot SC-ul), ın prezent un SO trebuie sa se adreseze oricaruitip de utilizator, mutandu-se astfel atentia proiectantilor de SOde la hardware catre software. A fost realizata ın acest sens ointerfata grafica utilizator (GUI - Graphic User Interface) careconsta din: icoane, ferestre, butoane, cutii de dialog etc.

Exista doua directii reale prin care SC ısi pot spori eficientasi capacitatea de prelucrare:

• procesoare cat mai puternice si memorie interna si externacat mai mare, pe de o parte;

• cresterea conectivitatii calculatoarelor, permitandu-se o dis-tribuire a ınsusi SO pe mai multe EC, precum si alocarearesurselor pentru un anumit proces, indiferent de unde estelansat acesta.Prima directie conduce la obtinerea de SC centralizate, tot

mai puternice, iar a doua la SC distribuite. Multe operatii ce com-pun o activitate sunt dispersate geografic, ıncat avantajul ce de-curge din conectarea PC-urilor (Personal Computer) implicate ın

Page 19: Arhitectura calculatoarelor

INTRODUCERE 39

realizarea activitatii respective este evidenta (prin conectare devindisponibile toate dispozitivele PC-urilor). Problemele ce apar ınacest caz tin de: securitate, compatibilitate ıntre SO, protocoalede comunicatii etc.

1.2.1 Obiective si functii ale unui SO

Analizand cele de mai sus, putem aprecia ca SO este unprogram care actioneaza ca o interfata ıntre utilizator si parteahardware a calculatorului, avand drept scop crearea unui mediuadecvat exploatarii de catre utilizator a resurselor hardware aleSC-ului. Rezulta de aici ca un SO poate fi gandit ca avand treiobiective (sau indeplinind trei functii):

• usurinta ın exploatare: un SO trebuie sa faca un EC maiusor de utilizat de catre un spectru cat mai larg de utilizatori;

• eficienta: un SO trebuie sa permita ca resursele unui SCsa fie utilizate ıntr-o maniera cat mai economica;

• capacitate de evolutie: un SO trebuie sa fie construit ınasa fel ıncat sa permita testarea si introducerea de noi functiisistem, fara a necesita un service special.Analizam ın continuare aspectele mai sus mentionate.

Usurinta ın exploatare. Acest aspect se reduce la interfatautilizator/calculator. O aplicatie aflata ın executie, pentru a rea-liza anumite functii, apeleaza adesea resursele calculatorului. Celmai important program apelat este SO ınsusi. Odata apelat, SOmascheaza anumite detalii hardware fata de programator si punela dispozitia acestuia o interfata convenabila pentru utilizarea sis-temului de calcul. Astfel, SO actioneaza ca un mediator, ajutandprogramatorii si aplicatiile-program sa acceseze si sa utilizeze maiusor toate facilitatile oferite de SC. Iata, pe scurt, principaleledomenii ın care un SO ofera servicii:

– crearea de programe: o gama larga de facilitati si servicii suntpuse la dispozitia programatorului ın activitatea acestuia de

Page 20: Arhitectura calculatoarelor

40 Capitolul 1

creare de noi programe, precum: editoare, compilatoare si in-terpretoare, programe de depanare. De obicei, aceste serviciisunt sub forma de programe utilitare si nu fac parte explicitdin SO dar sunt accesate via SO;

– executarea unui program: un numar de sarcini (tasks) trebuiesa fie ındeplinite pentru executia unui program (de exemplu,ıncarcarea instructiunilor si datelor ın memoria principala,initializarea dispozitivelor I/O si a fisierelor, sistemul de co-municare prin ıntreruperi etc.). Toate aceste operatii suntmanevrate de catre SO;

– accesarea dispozitivelor I/O: fiecare dispozitiv I/O necesitaun set de instructiuni proprii (semnale de control) pentruefectuarea operatiilor cu acesta. SO se ocupa de detaliileacestor operatii ıncat activitatea programatorului se reducela simple operatii de citire/scriere din si/sau pe un dispozitivanume;

– controlul accesului la fisiere: SO se ocupa ın detaliu cu for-matul fisierului si cu natura dispozitivului I/O pe care estestocat acesta. In cazul sistemelor cu mai multi utilizatorisimultan, SO poate furniza un mecanism de protectie ın ve-derea controlului accesului la fisier;

– accesul la SC: ın cazul sistemelor distribuite, SO controlea-za accesul la sistem (privit ca un ıntreg) si la resursele carealcatuiesc sistemul. Functia de acces trebuie sa furnizezeprotectie a resurselor si datelor ımpotriva utilizatorilor nea-utorizati sa le foloseasca si trebuie sa rezolve conflictele ındisputa pentru obtinerea resurselor;

– detectarea si afisarea erorilor: diverse erori pot sa aparaatunci cand un calculator este activ. Astfel, pot aparea erorihardware interne sau externe (eroare de memorie, dispozi-tiv lipsa etc.) si erori software (depasire, ıncercare de acce-sare a unor locatii de memorie interzise, incapacitatea SOde a aloca resursele necesare unei aplicatii anume). In toate

Page 21: Arhitectura calculatoarelor

INTRODUCERE 41

cazurile, SO trebuie sa transmita un mesaj utilizatorului sisa ia o decizie vizavi de executia aplicatiei ın cauza, deciziecare poate varia de la ıncheierea executiei, pana la ıncercaride reluare a executiei;

– contabilitate: statistici de utilizare a diverselor resurse potfi colectate de catre SO (timpii de raspuns, de exemplu).Aceste informatii pot servi proiectantilor de sisteme ın vede-rea ımbunatatirii anumitor performante. Pentru un sistemmultiutilizator, informatiile pot fi utile la stabilirea unor notede plata.

Eficienta. In timpul functionarii unui calculator, o parte a SOeste ıncarcata ın memoria principala. Aceasta include kernel-ul(sau nucleul) si alte parti ale SO (cele utilizate ın acel moment).Restul de memorie contine date si programe utilizator, sau esteneutilizata. Alocarea de memorie principala, precum si gestiuneaschimbului de informatii cu dispozitivele I/O sunt controlate deSO. Mai mult, procesorul fiind el ınsusi o resursa, SO trebuie sadetermine cat de mult timp-procesor trebuie consacrat executieiunei aplicatii utilizator. In cazul sistemelor cu mai multe proce-soare, aceasta operatie de determinare a timpului procesor trebuiesa acopere toate procesoarele. Satisfacerea tuturor celor de maisus de catre un SO, ıntr-un mod cat mai chibzuit, face din acestaun produs eficient.Capacitate de a evolua. Un SO va evolua ın timp, dintr-o seriede motive obiective, precum:

– ımbunatatirea echipamentelor hardware si/sau nevoia de noitipuri de echipamente hardware;

– necesitatea unor servicii noi.Chiar si numai din aceste ultime doua considerente, se justi-

fica cerinta pregnanta ca un SO sa fie conceput modular si binedocumentat (cu definirea clara a interfetelor dintre module).

Page 22: Arhitectura calculatoarelor

42 Capitolul 1

1.2.2 Evolutia sistemelor de operare

Pentru a ıntelege ce i s-ar cere unui SO contemporan si carear fi semnificatia trasaturilor acestuia este instructiv sa analizamevolutia ın timp a SO. Cateva elemente caracteristice celor maisemnificative generatii de SO, pot fi gasite ın randurile de maijos.

Sisteme cu procesare seriala. Calculatoarele din perioadaanilor 1940-1950 nu erau dotate cu un SO. Programatorul in-teractiona direct cu partea hardware a calculatorului. Aparitiaunei erori era semnalata prin lumini iar programatorul trebuia saexamineze registrii si continutul memoriei principale (vidajul dememorie) pentru a determina cauza erorii. Problemele majoreridicate la acea perioada au constat ın:

– lipsa unei planificari ın executia programelor de aplicatii si– timpul de pregatire a unei lucrari (job) pentru executie (uti-

lizatorul avea acces la calculator la fiecare pas al operatiei depregatire, acces serial deci).Intre timp au fost dezvoltate diferite instrumente software,

ıncercandu-se astfel o eficientizare a procesarii seriale a aplicatii-lor. In sensul acesta s-au dezvoltat biblioteci de functii uzuale,linkeditoare, ıncarcatoare, debugare si rutine ale dispozitivelorI/O, toate acestea putand fi manevrate de utilizatori.

Sisteme cu ıncarcator simplu. Pentru a elimina risipa de timpıntalnita la generatia precedenta de calculatoare, dupa anii 1950 afost introdus conceptul de sistem de operare cu ıncarcator. Primareusita de acest fel tine de firma General Motors, sistemul dez-voltat adresandu-se unui IBM 701. Ideea principala a constat ınutilizarea unei componente software, cunoscuta sub denumirea demonitor. Astfel, utilizatorul ınainteaza lucrarea (prin intermediulcartelelor perforate sau a benzilor magnetice) operatorului care”ıncarca” lucrarile, ıntr-o ordine secventiala, pe un dispozitiv deintrare, de unde vor fi preluate de monitor. Toata activitatea de

Page 23: Arhitectura calculatoarelor

INTRODUCERE 43

planificare a executiei lucrarilor stocate pe dispozitivul de intrareeste controlata acum de monitor. Schema dupa care monitorultrateaza fiecare lucrare este urmatoarea: lucrarea curenta esteıncarcata ıntr-o zona de memorie speciala (numita zona program-utilizator) dupa care controlul este predat lucrarii (asta ınsemnandca procesorul este activat si executa instructiuni ale unui programutilizator). Dupa ce a fost executata lucrarea curenta, controluleste dat din nou monitorului (asta ınsemnand ca procesorul esteactivat si executa instructiuni din partitia memoriei principalecare contine programul monitor), care va lansa ın executie lu-crarea urmatoare. Problema timpului de pregatire a unei lucraripentru executie a fost rezolvata prin introducerea unui limbaj deprogramare special (JCL - Job Control Language) cu ajutorulcaruia se puteau da comenzi (instructiuni) monitorului.

Rezulta din cele relatate mai sus ca monitorul (sau SO cuıncarcator) este un program calculator obisnuit. Acesta se bazeazape abilitatea procesorului de a accesa instructiuni din partitiidiferite ale memoriei principale pentru a prelua si renunta alter-nativ la control.

Sisteme cu ıncarcator multiprogramat. Chiar si ın cazulSO cu ıncarcator simplu, procesorul este adesea neutilizat. Sursacea mai importanta care face procesorul neutilizabil este tratareade catre acesta a unor instructiuni I/O pentru transferul de date(deoarece dispozitivele periferice sunt lente comparativ cu proce-sorul). Zona de memorie aferenta programelor utilizator poate fidimensionata astfel ıncat, la un moment dat, sa fie ıncarcate ınmemoria principala mai multe programe ale utilizatorului. Astfel,cand o lucrare trebuie sa astepte pentru o operatie I/O, procesorulpoate fi alocat altei lucrari care nu asteapta pentru o operatie I/O.Un astfel de procedeu este cunoscut sub numele de multiprogra-mare (sau multitasking), iar SO ınzestrate cu asemenea posibilitatisunt cunoscute drept SO cu multiprogramare. Pentru a ıntelegemai bine avantajul oferit de multiprogramare, trimitem la exem-

Page 24: Arhitectura calculatoarelor

44 Capitolul 1

plele discutate ın [14]. Desprindem din cele de mai sus ca, sub unSO cu multiprogramare, lucrarile sunt executate concurent.

Ca si ın cazul sistemelor cu ıncarcator simplu, sistemele cuıncarcator multiprogramat se bazeaza pe anumite trasaturi hard-ware ale calculatorului. Putem vorbi ın acest sens despre ECechipate cu sistemul de ıntreruperi I/O si DMA, caz ın care pro-cesorul poate emite (ın cadrul unei lucrari) o comanda pentru ooperatie I/O, continuand cu executia unei alte lucrari, pana candoperatia I/O este realizata. Cand operatia I/O este terminata,procesorul este ıntrerupt si controlul este trecut unei rutine detratare a ıntreruperilor din cadrul SO.

Remarcam ın final ca SO multitasking necesita o modalita-te anume pentru gestiunea memoriei alocata lucrarilor ıncarcateın memoria principala ın vederea executiei. Mai mult, daca laun moment dat sunt pregatite pentru executie mai multe lucrari,procesorul trebuie sa decida care anume sa fie executata, ceea ceconduce la folosirea anumitor algoritmi de planificare a ordinei ıncare sa se execute lucrarile.

Sisteme cu partajare a timpului. Pentru o serie de lucrarieste necesar sa se furnizeze o modalitate ın care utilizatorul sadialogheze direct cu calculatorul. Dupa cum multiprogramareapermite procesorului sa manevreze multiple lucrari ıncarcate laun moment dat ın memorie, aceasta idee poate fi folosita sipentru a manevra lucrarile care au caracter interactiv. In acestultim caz, tehnica este cunoscuta sub numele de partajare a tim-pului, ceea ce ne spune ca timpul procesorului este ımpartit ıntremai multi utilizatori. In cazul unui SC cu mai multi utilizatorilucrand interactiv, sistemul de fisiere trebuie sa fie protejat, asaıncat numai utilizatorii autorizati sa aiba acces la un fisier anume.

Asadar, ultimele doua clase de SO utilizeaza notiunea demultiprogramare. Principala diferenta dintre acestea consta ınobiectivul propus, si anume: SO cu ıncarcator multiprogramatvizeaza utilizarea la maxim a procesorului, ın timp ce SO cu par-

Page 25: Arhitectura calculatoarelor

INTRODUCERE 45

tajare a timpului urmaresc o minimizare a timpului de raspuns.O alta diferenta dintre cele doua clase deriva din modalitatea detransmitere a instructiunilor catre SO (folosirea limbajului JCL siintroducerea comenzilor de la terminal).

Unul dintre primele SO cu partajare a timpului a fost siste-mul CTSS (Compatible Time Sharing System) dezvoltat de MIT(Massachusetts Institut of Technology) si utilizat mai ıntai pe unIBM 709 iar apoi pe un IBM 7094.

1.2.3 Principalele realizari ın dezvoltarea SO

SO sunt printre cele mai complexe elemente de software dez-voltate pana acum. Aceasta reflecta preocuparea proiectantilor dea ıncerca sa depaseasca dificultatile inerente si, ın unele situatii,concurand obiectivele initiale: usurinta, eficienta si capacitatea dea evolua. P. Denning si asociatii saii [vezi Denn] au apreciat casunt cinci directii principale ın dezvoltarea SO:

• controlul proceselor,• gestiunea memoriei,• securitatea si protectia informatiilor,• planificarea si gestiunea resurselor,• structura SO.

Vom prezenta ın continuare cateva detalii despre fiecare di-rectie mentionata mai sus.

Controlul proceselor. Conceptului de proces i-au fost date maimulte sensuri, precum:

– un program ın executie, sau– o entitate care poate fi executata pe un procesor.

In cele ce urmeaza, vom privi un proces ca fiind alcatuit dinurmatoarele trei componente:

i) un program executabil,ii) setul de date asociat programului (variabile, zone de memorie

etc.),

Page 26: Arhitectura calculatoarelor

46 Capitolul 1

iii) contextul ın care se executa programul.Remarcam astfel ca, ıntr-o oarecare masura, notiunea de proceseste mai generala decat aceea de lucrare (job).

Contextul executiei cuprinde toate informatiile pe care SO lenecesita pentru a gestiona procesele, precum si cele necesare pro-cesorului pentru a executa corect procesele. Mai exact, contextulinclude: continutul anumitor registrii ai procesorului (registrulPC, registrii de date), informatii utile sistemului de operare (pri-oritatea procesului, starea procesului etc.). Pentru a ıntelege maibine ın ce consta ”contextul executiei”, consideram doua procese(notate P1 si P2) ıncarcate ın memorie (vezi Figura 1.7).

Dupa cum se poate deduce din Figura 1.7, prezenta ın memo-ria principala a celor doua procese presupune:

– alocarea unui bloc de memorie fiecarui proces, bloc care con-tine: codul, datele, si informatii legate de context;

– o lista a proceselor (creata si ıntretinuta de SO), care con-tine cate o intrare pentru fiecare proces; o intrare includeun pointer catre blocul de memorie care contine procesul,precum si o parte sau tot contextul executiei procesului;

– registrul ”index-proces”, care contine indexul procesului cu-rent din lista de procese;

– registrul PC, care indica instructiunea urmatoare de executatdin procesul curent;

– registrul de baza si registrul-limita, care definesc regiunea dinmemorie ocupata de proces. Contorul de program si toatereferintele de date sunt interpretate relativ la registrul debaza si nu trebuie sa depaseasca valoarea registrului-limita,ceea ce previne conflictul ıntre procese.Analizand contextul dat de Figura 1.7, constatam ca regis-

trul ”index-proces” ne spune ca procesul P2 se executa curentiar procesul P1 este ıntrerupt temporar. Continutul tuturor re-gistrilor la momentul ıntreruperii procesului P1 a fost stocat ın”contextul” de executie al acestuia.

Page 27: Arhitectura calculatoarelor

INTRODUCERE 47

Registri

Procesorului

Memoria

Principala

Index proces

PC

Limite de

baza

Alti registri

b

h

h

j

b

.

.

.

.

.

.

Context

Date

Program

Context

Date

Program

.

.

.

}

}

}

Lista

proce-

selor

Procesul

P1

Procesul

P2

}

i

i

Figura 1.7. Implementarea proceselor

Mai tarziu, procesorul poate efectua un schimb de context si poaterelua executia procesului P1. Schimbul de context consta ın sto-carea contextului procesului P2 si restaurarea contextului proce-sului P1.

Gestiunea memoriei. Din punctul de vedere al utilizatorilor,pe de o parte, un EC trebuie sa suporte programarea modulara,

Page 28: Arhitectura calculatoarelor

48 Capitolul 1

precum si o utilizare flexibila a bazei de date. Pe de alta parte, dinpunct de vedere al administratorilor de sistem, acelasi EC trebuiesa ınlesneasca un control ordonat si eficient al alocarii memoriei.Toate aceste necesitati cad ın sarcina SO. Aceste responsabilitatipot fi ımpartite ın cinci grupe principale:

– independenta proceselor: SO trebuie sa previna procesele in-dependente de a interveni unul ın datele altuia;

– gestiune si alocare automata: programelor trebuie sa le fiealocata dinamic memoria necesara, ıntr-un mod transparentprogramatorului. Astfel, programatorul este scutit de grijalimitei memoriei si SO poate deveni eficient prin alocarea dememorie fiecarei lucrari, atat cat este necesara;

– suport pentru programarea modulara: programatorii trebuiesa fie capabili de a defini modulele program si de a crea,distruge si modifica dimensiunea modulelor dinamic;

– protectie si acces controlat: divizarea memoriei creeaza posi-bilitatea unui anumit program sa acceseze spatiul de memorieal altui program. SO trebuie sa permita ca portiuni de me-morie sa fie accesate ın diferite moduri, de diferiti utilizatori;

– memorare pe termen lung: multi utilizatori si multe aplicatiiale acestora necesita mijloace pentru memorarea informatii-lor pentru o perioada ındelungata.SO satisface aceste necesitati utilizand tehnica oferita de

memoria virtuala si sistemul de fisiere. Memoria virtuala esteo facilitate prin care programele pot adresa memorie din punctde vedere logic, fara a lua ın consideratie cantitatea de memoriedisponibila. Cand un program este executat, numai o portiune dinprogram si o parte din date pot fi mentinute ın memoria principalaın acel moment. Cealalta parte de program si date este stocatape disc. Sistemul de fisiere implementeaza o ”memorare pe ter-men lung” care consta ın stocarea informatiilor ın entitati numitefisiere. Figura 1.8 ilustreaza o descriere generala a gestiunii unuisistem de memorie de catre un SO. Descrierea este facuta din doua

Page 29: Arhitectura calculatoarelor

INTRODUCERE 49

puncte de vedere: cel al utilizatorului si cel al proiectantului SO(vezi [4]).

Procesor

Virtual

Memorie

Virtuala

Copie

Suport

permanent

Fisiere

a) punctul de vedere al utilizatorului

Procesor

Real

Adresa

Virtuala

Translator

Adrese

Memorie

Principala

Memorie

Auxiliara

Adresa

Memorie

Copie

Temporara

b) punctul de vedere al proiectantului de SO

Figura 1.8. Puncte de vedere ale unui sistem de memorie

Analizam mai ıntai primul punct de vedere.Vom numi procesor virtual ansamblul format din procesorul

real si SO care are acces la o memorie virtuala. Instructiunileunui limbaj de programare pot referi locatii de date si de coddin memoria virtuala. Independenta proceselor poate fi realizataalocand fiecarui proces o portiune de memorie unica. Divizareaproceselor poate fi realizata prin suprapunerea a doua spatii de

Page 30: Arhitectura calculatoarelor

50 Capitolul 1

memorie virtuala. Fisierele sunt mentinute ıntr-o ”memorie petermen lung” si o parte din ele pot fi copiate ın memoria virtualapentru a fi lansate ın executie (vezi Figura 1.8 a)).

Din punct de vedere al proiectantului de SO, memoria constadin memorie principala (accesata direct prin instructiuni masina)si memorie externa (accesata indirect prin ıncarcarea blocurilorın memoria principala). Sistemul este completat de procesor sitranslatorul de adrese (mapper), plasat ıntre procesor si memoriaprincipala. Programul refera locatiile de memorie folosind adreselevirtuale care sunt transformate ın adrese reale de memorie. Dacareferirea se face la o adresa viruala care nu este ın spatiul real dememorie, atunci o parte a continutului memorie reala este trans-ferata ın memoria externa iar blocul de date dorit este transferatın locul acesteia (vezi Figura 1.8 b)). In timpul acestei actiuni,procesul care a generat referinta de adresa trebuie sa fie suspendat.Elaborarea unui mecanism de translatare a adreselor, precum sia unei politici de alocare a memoriei care sa minimizeze traficuldintre diferite niveluri de memorie cad ın sarcina proiectantuluiSO.

Securitatea si protectia informatiilor. Utilizarea, pe o scaratot mai larga, a sistemelor cu partajare a timpului si a retelelor decalculatoare implica un mecanism tot mai sofisticat de protectiea informatiilor. Multimea activitatilor legate de securitate si pro-tectie, vazuta din prisma SO, poate fi divizata ın trei categorii:

– controlul accesului: se ocupa cu gestiunea accesului utiliza-torului la SC, subsisteme si date, precum si cu modalitateade acces a proceselor la diferite resurse ale SC;

– controlul transferului de informatii: gestioneaza transferul dedate din interiorul si exteriorul SC catre utilizator;

– atestare: se monitorizeaza faptul ca mecanismele de gestiunea acceselor si transferurilor de date au loc conform specificariiacestora si ca ele aplica politica de securitate si protetiedorita.

Page 31: Arhitectura calculatoarelor

INTRODUCERE 51

Planificarea si gestiunea resurselor. O activitate cheie a SOrevine la gestiunea resurselor care compun EC, precum si la pla-nificarea utilizarii acestora de catre procesele active la un momentdat.

Figura 1.9. Elementele de baza ale unui SO cu multitasking.

Orice alocare de memorie si orice politica de planificare trebuie satina cont de urmatorii factori:

– echitate: toate procesele care apartin aceleiasi clase de priori-tate si sunt ın competitie pentru utilizarea anumitor resurse,sa le fie dat accesul la acele resurse ın mod aproximativ egal;

– tratament diferentiat: sunt anumite situatii ın care SO tre-

Page 32: Arhitectura calculatoarelor

52 Capitolul 1

buie sa faca o diferenta ıntre clase diferite de procese, cuprivire la diferite servicii cerute de acestea;

– eficienta: SO trebuie sa ıncerce minimizarea timpului deraspuns si, ın cazul divizarii timpului, sa trateze cat maimulti utilizatori posibil.Figura 1.9 sugereaza elementele de baza ale SO implicate ın

planificarea proceselor si ın alocarea resurselor pentru un mediucu multitasking.

Remarcam din figura de mai sus folosirea unui numar de cozi,fiecare dintre acestea fiind liste simple de procese ın asteptarea an-umitor resurse. Coada ”procese de scuta durata” consta din pro-cese care sunt ın memoria principala, pregatite pentru executie.Oricare dintre aceste procese poate utiliza procesorul ın cele ceurmeaza. O tehnica obisnuita de planificare a executiei acestoraeste de a pune fiecare proces ın coada, pe rand, un anumit timp.Tehnica nivelurilor de prioritate poate fi utilizata de asemenea.Coada ”procese de durata” reprezinta lista proceselor noi careasteapta sa utilizeze sistemul. Fiecarui dispozitiv I/O ıi este rez-ervata o coada I/O. Unul sau mai multe procese poate cere sautilizeze acelasi dispozitiv I/O, acestea fiind memorate ın coadadispozitivului respectiv. Decizia cu privire la care proces sa fiealocat dispozitivul este luata de catre SO.

In alta ordine de idei, SO poate fi avertizat de catre procesor(daca apare o ıntrerupere) sau de catre un proces (prin inter-mediul ”apel sistem”). Punctul de intrare ın SO este procedurade ”tratare ıntreruperi” si, respectiv, procedura ”apel sistem”. Inambele cazuri, ”planificatorul de procese” este apelat pentru aalege un proces ın vederea lansarii ın executie.

Structura SO. In ultimii ani a fost acordata o atentie tot maimare structurii logice a unui SO, care tinde a deveni din ce ınce mai complex. S-a convenit astfel ca un SO poate fi privit cao ierarhie de niveluri, fiecare nivel efectuand o multime ınruditade functii. In mod ideal, nivelurile trebuie definite astfel ıncat

Page 33: Arhitectura calculatoarelor

INTRODUCERE 53

schimbarile dintr-un nivel sa nu necesite schimbari si ın alt nivel.Altfel spus, problema este descompusa ıntr-un numar de subpro-bleme usor de abordat. Modul ın care acest principiu este im-plementat deosebeste ın mare masura SO contemporane. Vomprezenta ın continuare modelul structurii ierarhice a unui SO pro-pus de Brown si asociatii acestuia (vezi [2], [5]). Modelul cuprindeurmatoarele niveluri:

• nivelul 1: consta din operatii executate la nivel de circuiteelectronice. Obiectele continute la acest nivel sunt: registrii,celule de memorie, magistrale etc. Operatiile posibile cuobiectele acestui nivel revin la stergerea unui registru oricitirea unei locatii de memorie;

• nivelul 2: consta din multimea instructiunilor procesorului.Operatiile de la acest nivel sunt cele permise ın limbajulmasina: ADD, SUBTRACT, LOAD, STORE etc.;

• nivelul 3: rezida ın setul de subrutine, destinat operatiilor custiva, operatiilor de afisare etc.;

• nivelul 4: cuprinde sistemul de ıntreruperi care determinaprocesorul sa salveze contextul curent si sa apeleze o sub-rutina pentru tratarea ıntreruperii;Primele patru nivele, descrise mai sus, alcatuiesc procesorul.

Ele nu fac parte din SO. Cu toate astea, dupa cum vom constatamai tarziu, cateva elemente ale SO ıncep sa apara chiar de laaceste niveluri (rutinele de tratare a ıntreruperilor, de exemplu).

• nivelul 5: la acest nivel apare notiunea de proces (un pro-gram ın executie). Cerinta fundamentala ca un SO sa tratezemai multe procese, include capacitatea de a suspenda si re-lua procesele. Aceasta necesita salvarea registrilor asa ıncatexecutia poate fi trecuta de la un proces la altul. Mai mult,daca procesele trebuie sa coopereze, atunci sunt necesareanumite tehnici de sincronizare (semafoarele, de exemplu);

• nivelul 6: consta din dispozitivele de memorie externe ale EC.Obiectele cu care se opereaza la acest nivel sunt: blocuri de

Page 34: Arhitectura calculatoarelor

54 Capitolul 1

date, dispozitive periferice, canale de comunicatii. Operatiileposibile constau din citire/scriere date si alocare/eliberarespatii de memorie. Acest nivel se bazeaza pe nivelul 5 pentrua planifica operatiile si pentru a anunta cererea procesului determinare a unei operatii;

• nivelul 7: creeaza un spatiu logic de adrese pentru a fi utilizatde procese. Mai precis, acest nivel are sarcina de a organizaspatiul de adrese virtual ın blocuri care pot fi schimbate apoiıntre memoria principala si memoria externa. Aceste blocuripot fi pagini de dimensiune fixa si/sau segmente de lungimevariabila. Cand un bloc solicitat nu se afla ın memoria prin-cipala este invocat nivelul 6;

Incepand cu nivelul 8, SO se ocupa cu gestiunea resurselor unuisingur procesor.

• nivelul 8: se ocupa cu transferul de informatii si mesaje ıntreprocese. Unul dintre cele mai puternice instrumente pentrua realiza acest lucru este pipe-ul, care este un canal logicdestinat transferului de date ıntre procese;

• nivelul 9: consta din sistemul de fisiere. Operatiile efectu-ate cu obiectele acestui nivel (fisierele) constau ın creare,stergere, deschidere, ınchidere, citire, scriere;

• nivelul 10: consta din multimea de dispozitive ale EC. In-lesneste accesul catre acestea, prin intermediul unei interfetestandard. Operatiile si obiectele sunt aceleasi ca la nivelulprecedent;

• nivelul 11: are ın vedere structura arborescenta a sistemuluide fisiere. Responsabilitatea acestui nivel revine la a mentinelegatura dintre identificatorii interni si externi ai resurselorsistemului si obiecte. Identificatorul extern este un nume carepoate fi exploatat de o aplicatie sau de un utilizator. Iden-tificatorul intern este o adresa sau alt indicator care poate fiutilizat de nivelurile inferioare ale SO pentru a localiza si con-trola un obiect. Aceasta legatura este stocata ıntr-un direc-

Page 35: Arhitectura calculatoarelor

INTRODUCERE 55

tor. Intrarile contin atat trasaturi interne/externe, cat si altecaracteristici precum drepturile de acces. Pe langa operatiileclasice de la fisiere, asupra obiectelor acestui nivel mai pot fiefectuate si altele, precum: atasare, cautare, listare;

• nivelul 12: consta din procesele utilizatorului. La acest nivelSO furnizeaza facilitati totale pentru procese. Spre deosebirede nivelul 5 la care se mentine legatura unui proces doar cucontinutul registrilor procesorului (plus logica de terminare aproceselor), la nivelul 12 sunt prinse toate informatiile nece-sare gestiunii proceselor (spatiul adreselor virtuale ale proce-sului, lista obiectelor si proceselor cu care un proces anumepoate interactiona, parametrii asociati unui proces cu privirela crearea acestuia, precum si alte caracteristici ale proce-selor care pot fi utilizate de SO pentru a controla un pro-ces). Operatiile specifice acestui nivel sunt: abandonare, dis-trugere, suspendare, reluare;

• nivelul 13: reprezinta interpretorul shell. Aici se realizeazao interfata ıntre utilizator si SO. Shell-ul separa utilizatorulde detaliile SO si prezinta pe acesta ca o simpla colectie deservicii.

1.3 SO Unix. Aparitie si evolutie

SO Unix (cunoscut initial sub numele de UNICS: UNIplexedinformation and Computing Service) apare ın anul 1970, fiind im-plementat pe un minicalculator PDP-7. Acesta deriva din altedoua SO, anume: CTSS (Compatible Time-Sharing System), dez-voltat de MIT (Massachusetts Institut of Technology) ın 1963, siMULTICS (MULTIplexed information and Computing Service),dezvoltat de MIT si BTL (Bell Telephone Laboratories) ın anul1968. Primul pas mai important ın dezvoltarea SO Unix dupa1970 consta ın rescrierea (ıntr-un procent mare) textului sursa ınlimbajul C. In prezent, toate implementarile Unix sunt scrise ınC. Toate versiunile dezvoltate ın continuare de diferite firme, au

Page 36: Arhitectura calculatoarelor

56 Capitolul 1

fost implementate pe propriile EC precum si ın universitati.

In anul 1982, sub numele de UNIX System III, apare primaversiune de SO Unix comerciala, fiind dezvoltata de firma AT&T.Aceasta versiune a cunoscut ın timp noi ımbunatatiri, culminandcu aparitia versiunii UNIX System V care cuprindea toate dez-voltarile realizate la toate celelalte SO Unix, fiind la acea vremecel mai important SO dezvoltat vreodata.

Din punct de vedere al utilizatorului, SO Unix are trei ca-racteristici importante:

• este interactiv, utilizatorul lanseaza o comanda, SO executacomanda si transmite rezultatul comenzii, dupa care afiseazaprompterul si asteapta transmiterea unei noi comenzi;

• este un sistem multiuser, ceea ce ınseamna ca mai multi uti-lizatori se pot conecta la SC pe care ıl pot folosi simultan, ınsensul ca fiecarui proces ıi este alocata o cantitate prescrisade timp;

• este multitasking, fiecare utilizator poate sa-si lanseze ın e-xecutie, ın acelasi timp, mai multe procese (vezi sectiunea2.4). Pentru calculatoarele dotate cu procesor performant,datorita vitezei foarte mari de executie a instructiunilor di-feritelor procese active la un moment dat, avem senzatia cafiecare proces are dedicat ıntreg SC-ul.

Figura 1.10 furnizeaza o imagine generala a structurii SO Unix.Dupa cum se poate simplu deduce, partea esentiala a SO Unix esteetichetata cu numele kernel (nucleu), asta pentru a sublinia rolulacestuia de a separa partea hardware de utilizatori si aplicatii. Inrealitate, SO Unix mai contine si alte componente, precum serviciisi diverse interfete utilizator. O imagine mai detaliata a nucleuluieste ilustrata ın Figura 1.11.

Page 37: Arhitectura calculatoarelor

INTRODUCERE 57

Hardware

Editoare de text,

programe ale utilizatorilor

Kernel

Aplicatii

Co

mp

one

nte

co

mp

ila

to

r

Co

mp

ila

to

r

Figura 1.10. Structura generala a SO Unix

Remarcam astfel ca kernel-ul este divizat ın patru parti prin-cipale. Prima parte, interfata apeluri-sistem, este legatura directacu utilizatorul si permite programelor software de nivel ınalt saacceseze functii ale kernel-ului, iar ultima parte, control hardwareface legatura cu partea hardware a calculatorului. Celelalte douaparti, controlul proceselor si sistemul de fisiere, asezate ıntre primasi ultima parte, sunt destinate controlului proceselor, precum sigestiunii sistemului de fisiere si operatiilor I/O. In sarcina sistemu-lui de control al proceselor intra gestiunea memoriei, planificareasi executia proceselor si sincronizarea si comunicarea ıntre pro-cese. Sistemul de fisiere este responsabil de schimbul de date din-tre memorie si dispozitivele periferice, ca siruri de caractere saublocuri, lucru realizat cu ajutorul driverelor de dispozitiv, speci-fice fiecaruia. Pentru transferul pe blocuri se utilizeaza un buffercache (memorie intermediara), plasat ıntre spatiul de adrese aleutilizatorului din memoria principala si dispozitivele de memorieexterna (drivere).

Page 38: Arhitectura calculatoarelor

58 Capitolul 1

Prog. Utilizator

Librarii

Interfata apeluri sistem

Nivelul utilizator

Nivelul

kernel

Subsistemul

de fisiere

Buffer Cache

Caracter

Bloc

Drivere

Control hardware

Hardware

Nivel kernel

Nivel hardware

Control

procese

Comunicare

intre procese

Planificator

procese

Managementul

memoriei

Figura 1.11. Structura nucleului SO Unix

1.4 SO Linux. Aparitie si evolutie

SO Linux este o versiune a SO Unix, dezvoltata de catreLinus Torvalds la Universitatea din Helsinki, Finlanda. Acestas-a inspirat din SO Minix (o alta versiune a SO Unix, dezvoltatade care Andy Tanenbaum). SO Linux s-a dorit a fi un sistem

Page 39: Arhitectura calculatoarelor

INTRODUCERE 59

al hackerilor. Oficial, prima versiune de Linux este anuntata ınoctombrie 1991 si era capabila sa ruleze interpretorul bash (BourneAgain Sell), precum si utilitarul gcc (compilatorul C), ambelefiind produse ale GNU – o licenta ce nu implica nici un cost pentruprocurarea unui produs software.

Pe langa cateva elemente proprii, SO Linux suporta multedin trasaturile altor implementari ale SO Unix. Iata, pe scurt,cele mai importante elemente ale SO Linux:

• precum toate versiunile de Unix, Linux este un SO interac-tiv, multitasking si multiuser, adica mai multi utilizatori sepot conecta la un moment dat la un acelasi SC, executandsimultan mai multe programe.

• SO Linux este aproape integral compatibil (la nivel de sursa)cu o serie de versiuni Unix standardizate, si anume: estecompatibil cu standardul POSIX (Portable Operating Sys-tem Interface for Computer Interface), definit de IEEE (In-stitute Electrical and Electronic Engineers) ın 1988.

• SO Linux implementeaza ideea de consola virtuala care per-mite utilizatorului sa aiba active simultan mai multe sesiunide lucru.

• SO Linux recunoaste mai multe sisteme de fisiere. Anumitesisteme de fisiere, precum sistemul ext2fs (second extendedfilesystem), au fost dezvoltate special pentru Linux. Altesisteme cu care poate opera sunt: Minix-1, Xenix, MS-DOS,ISO 9660 CD-ROM.

• SO Linux furnizeaza o implementare completa a protocoluluide retele TCP/IP (Transmission Control Protocol/InternetProtocol), SLIP (Serial Line Internet Protocol), PLIP (Par-allel Line Internet Protocol), PPP (Point-to-Point Protocol),NFS (Network File System) si NIS (Network Information Ser-vice). Sunt puse la dispozitia utilizatorului si alte servicii,cum ar fi: FTP (File Transfer Protocol) – pentru transferulfisierelor la nivelul retelei, Telnet – permite unui utilizator

Page 40: Arhitectura calculatoarelor

60 Capitolul 1

care lucreaza pe un calculator sa se conecteze la un alt calcu-lator, finger – permite obtinerea de informatii despre un altutilizator al Internet-ului.

• Rutinele pentru tratarea ıntreruperilor se afla ın interiorulnucleului.

• Nucleul SO Linux este cunoscut drept un nucleu monoliticsi modular, ceea ce ınseamna ca toate driverele dispozitivelorse ıncarca dinamic si fac parte din nucleu.

• Nucleul SO Linux este capabil sa substituie coprocesorul ma-tematic.

• Nucleul SO Linux este realizat pentru a utiliza structura de”mod-protejat” al procesorului Intel 80x86, care permite im-plementarea notiunii de multitasking.

• Nucleul SO Linux permite pastrarea ın memorie doar a seg-mentelor de program utilizate la un moment dat. De aseme-nea, pentru a creste cantitatea de memorie disponibila, SOLinux implementeaza pe disc spatiul de memorie swap (me-morie virtuala).

• Nucleul implementeaza o zona de memorie comuna progra-melor utilizator pentru comunicarea acestora cu dispozitiveleexterne, numita disk ”cache”. Astfel, toata memoria disponi-bila este folosita ın schimbul de date, cu precizarea ca ın mo-mentul ın care se lanseaza ın executie un program ce necesitao cantitate mai mare de memorie, acest ”cache” este reduspentru a permite ıncarcarea lui ın memorie.

• Progamele folosesc ın comun biblioteci de functii care se aflastocate sub forma de fisier.

• SO Linux a preluat toate comenzile de baza care puteau fiıntalnite la versiunile standardizate de Unix (ls, awk, tr, sed,bc, more etc.). Sunt disponibile, de asemenea, multe editoarede texte, precum: vi, ex, pico, jove, emacs, joe.

• Cel mai important utilitar pus la dispozitia utilizatorilor decatre SO Linux este programul shell. Acesta citeste si executa

Page 41: Arhitectura calculatoarelor

INTRODUCERE 61

comenzile introduse de utilizator, redirectioneaza intrarile siiesirile si dispune de un limbaj propriu pentru scrierea defisiere script (similarul fisierelor ”batch” din MS-DOS).

• SO Linux dispune de sisteme de procesare a textelor, cum arfi: groff, TEX, Latex.

• SO Linux permite utilizarea sistemului de ferestre XFree86care este o versiune a sistemului de ferestre X (X WindowSystem).