S.l. Dr. ing.Elena Cristina Stoica Notă: Următoarele definiĠii intuitive au ca scop: • realizarea unei înĠelegeri între specialiștii IT, și se… [601222]

SISTEME DE OPERARE
CURSUL 1

DEFINI ğII
Conf Dr. ing. Ștefan Stăncescu
S.l. Dr. ing.Elena Cristina Stoica

Notă:
Următoarele definiĠii intuitive au ca scop:
• realizarea unei înĠelegeri între specialiștii IT,
și se aplică:
•numai în domeniul tehnologiei informaĠiei .

•Subiect
– existență cu conștiință.
•Obiect
– existență fără conștiință.
•Semn
– obiect care reprezintă
• fie un alt obiect, de regulă mai complicat,
• fie dinamica (evoluția în timp) acestui alt obiect,
•fie efecte ale acestei dinamici în alte obiecte.

Semnificația unui semn – obiectul pe care îl reprezintă

Semantica (unei existențe, pentru un subiect
observator)
– valoarea acelei existențe pentru subiect
( reprezentarea influenței acestei existențe ,
a sensului acestei existențe, asupra subiectului
observator)

Semantica unui semn (pentru un subiect) este
semantica obiectului / semantica transformării
semnificate pentru subiect.

Semnul reține trăsături cu sens , (semantice) ,
importante
pentru un subiect observator interesat ,
î n împrejurările în care
obiectul original îl influențează pe
observator.

Semnele sunt relative la subiectul observator.

•Modelul este un semn complex, construit din
semne mai simple,
care semnifică un obiect complex cu
aceeași structură din obiecte mai simple.
Modelul este necesar ca
mijloc eficient de cunoaștere a naturii prin
experimente virtuale,
efectuate pe construcții din semne,
în locul unor experimente pe
obiectele reale.
•Semiotica este știința semnelor, a
construcțiilor de modele complexe alcătuite
din semne ale unor obiecte mai simple.

Adevărul este
o măsură a gradului de aderență la realitate
a unui model construit de un subiect.

Adevărul este astfel și
o măsură a caracterului reprezentativ
al subiectului între alți subiecți
în aprecierea valorii obiectului real

Modelul (semnificant) , adevărat
reține principalele influențe pe care
obiectul real (modelat, semnificat) ,
le are asupra unui subiect reprezentativ.

Propoziția simplă este
o aserțiune, o afirmație, exprimată minimal
prin referirea la
o acțiune concretă – un predicat
(reprezentat de un semn),
aplicată unui obiect – subiectul gramatical
al propoziției (precizat de un alt semn).

Propoziția este
un model al dinamicii obiectului real
(subiectul propoziției)
în condițiile acțiunii descrise de predicat.
Propozițiile pot cuprinde și alte descrieri și precizări
ale acestei dinamici.

Judecata este
o operație de atribuire de valoare de
adevăr asupra unei propoziții,
asupra gradului de aderență a afirmației
din propoziție
în raport cu acțiunea reală care
influențează un subiect.

Judecata referitoare la un subiect stabilește, prin
valoarea de adevăr,
o relație de ordine în mulțimea propozițiilor
cu același subiect
(a predicatelor, a acțiunilor posibile asupra
unui subiect) .

Inferența este o
operație elementară
de derivare a unei propoziții judecate
din una sau mai multe propoziții
judecate inițiale.
Logica este știința gândirii formale, care
examinează dinamica unor modele
complexe,
pe baza combinării de inferențe asupra
obiectelor
componente.

Semantica (știință) este o parte a
semioticii
care studiază
c onstrucțiile din semne și
relațiile (adevărul) acestor construcții
cu
realitatea semnificată .

Limbajul este o
mulțime de semne, numite cuvinte,
grupate în lexic și guvernate de
reguli lexicale proprii,
grupate în gramatica
lexicală,
cu care se pot construi propoziții
conforme cu
reguli sintactice proprii,
grupate în gramatica
sintactică.

Gramatica lexicală este
un set de reguli logice pentru
construcții de semne numite cuvinte .
Gramatica sintactică , sau sintaxa , este
un set de reguli logice pentru
construcții de propoziții judecate , formate din
cuvinte sau din
propoziții judecate mai simple.
Gramatica unui limbaj este
un set de reguli logice pentru
construcțiile din cuvinte ale acestui limbaj.

Limbajul reprezintă , astfel,
mecanisme de gândire logică , mijloace de
reprezentare pentru reguli (invarianți dedu și din
statistica observațiilor ),
care construiesc modele complexe noi într- un
domeniu de realitate
( experiențe dobândite în acel domeniu de
realitate).

Construirea modelelor noi se face prin adăugarea de
experiențe noi obținute nemijlocit, din observații
directe,
la modelele anterioare (modele memorate) .

Fiecare limbaj este o variantă de mecanism
de creare, conservare și de transmisie de
modele , pe baza unui set de reguli construite
conform legilor logicii.

Lexicul și legile unui limbaj sunt definite , ca
mecanisme de limbaj,
prin un set de cuvinte și o gramatică proprii ,
ierarhic superioare,
grupate într- un metalimbaj de descriere de
limbaje.

Problema este o
propoziție nejudecată nouă, relevantă față
de
propoziții judecate asemănătoare
cu acțiuni care produc insatisfacție unui
subiect.

Soluția (la o problemă) este
o construcție logică de propoziții judecate,
cu scopul de a stabili judecata
asupra
propoziției care constituie
problema.

Problema abstractă este o
generalizare a mai multor
probleme asemănătoare,
prin evidențierea invarianților.

Soluția problemei abstracte desemnează “codul”, ca
model al construcției judecății problemei abstracte

Elementele variabile ale problemelor asemănătoare se
consideră „date” ale problemei abstracte.

Problemele abstracte introduc structură ierarhică în
lumea problemelor,
problemele asemănătoare fiind incluse
într-o
clasă cu reprezentant problema abstractă.

Ierarhia claselor se organizează pe grade de
abstractizare.

Algoritmul este o structură intelectuală
elementară, definită ca o soluție
destinată rezolvării unei probleme
abstracte.

Un algoritm se construiește prin
generalizarea rezolvărilor unor probleme
asemănătoare și
se aplică la rezolvarea celorlalte probleme
asemănătoare.

Algoritmul reține „codul” procedurii rezolvării,
structura acesteia,
aplicat la fiecare problemă particulară, caracterizată
prin „date”
care diferă de la problemă la alta.

Produsul intelectual elementar este o
construcție de algoritmi simpli
destinați rezolvării unor probleme
asemănătoare concrete,
care prezintă „date” particulare de prelucrat
în scopul obținerii unor „date” rezultat proprii
fiecăreia.

Produsul intelectual complex este o îmbinare
interactivă de produse intelectuale
elementare sau mai puțin complexe,
adunate în scopul rezolvării unei categorii
de probleme complexe concrete
asemănătoare .

Pe baza unor produse intelectuale fixate pe o zonă de
propoziții cu judecăți stabilite,
se pot căuta, prin efort intelectual incremental,
construcții noi în zona adiacentă cu
probleme,
asupra cărora să se efectueze judecăți logice
noi,
constructiile validate devenind soluții la
aceste probleme noi.

•Semnalul este un semn,
de forma unui schimb de energie între două sisteme,
prin care sistemul care cedează energie, numit emițător,
face cunoscută o modificare a unei stări proprii
către sistemul care primește energie, numit receptor .

• Informația pe care o poartă un semnal este
o măsură a probabilității de apariție a stării semnificate de semnal.

Cu cât probabilitatea de apariție a unei stări este mai mică, cu atât
semnalul care semnifică apariția unei astfel de stări poartă informație
mai multă.

Informațiile despre un sistem sunt transmise de semnale emise de acesta.

În acest fel, prin semnale succesiv primite, receptorul poate construi și
întreține actual un model al sistemului emițător.

Semnalele transmit modele în spațiu

•Codul unei transmisii este un set complet de semne
reprezentate de un set de semnale
anterior convenite a fi comunicate între două sisteme
emițător și receptor,
semne care corespund cuvintelor unor gramatici locale
corespondente.

Provocarea controlată a unei stări a emițătorului
generează un semnal controlat
care să reprezinte un semn
anterior convenit între emițător și receptor,
cuvânt al gramaticii convenite.

Un cod de semne poate fi eventual modificat ulterior
printr-un mecanism de semnalizare special.

•Gramatica unui cod de semnale este
gramatica setului de semne
reprezentate de un cod de semnale convenit.

•Mesajul este o propoziție transmisă de la
emițător la receptor,
formată din semne ale codului de transmisie,
guvernate de reguli gramaticale de
compoziție.

În acest fel, semnalele emițătorului transmise spre
receptor poartă informații despre modelele
emițătorului.

•Limbajul unei transmisii este format
din
codul de semnale și
gramatica acelui cod,

care permit o reprezentare a produselor
intelectuale,
comună la emițător și receptor .

•Convenția de comunicare este
o înțelegere prealabilă transmisiei,
între emițător și receptor,
prin care este stabilit limbajul
transmisiei.

Semnalele emise transmit informații despre
modele ale receptorului și nu despre stări
reale ale sistemelor.

Limbajul comun folosește ca lexic
codul de semne al transmisiei,
iar propozițiile se numesc mesaje.

Limbajul comun convenit permite
schimbul de modele compatibile folosite de
părți
și
schimbul de soluții referitoare la problemele
acestor modele.

• Sistemul de comunicație este un mijloc material prin
care semnele se transmit în spațiu.
•Memoria este un mijloc material prin care semnele se
transmit în timp.

•Experiența intelectuală este
un set de produse intelectuale memorate,
–în vederea desfășurării lor ulterior
în timp,
–eventual în vederea transmiterii lor
în alt loc,
ca soluții la probleme asemănătoare.

• Reprezentarea standardizată , printr-un limbaj
comun agreat și memorat anterior, a produselor
intelectuale, este
o formă de reprezentare a acestor produse
intelectuale,
prin care se pot găsi probleme asemănătoare la
emițător și la receptor, astfel încât
soluția găsită la emițător se poate aplica și la receptor,
fără efort creator al acestuia,
prin copierea soluției.

În acest fel, este posibil transportul unei experiențe intelectuale,
spațial prin semnale
și
temporal prin memorarea pe semne remanente.

•Programul este o produs intelectual
complex
constrâns la o reprezentare într- o formă
standardizată.

Programul există într -un suport material de
memorare,
care îi asigură transmiterea în timp.
Programul se poate transmite în spațiu,
prin fiecare nouă reprezentare, (o copie
locală),
care începe o existență separată,
independentă de subiectul emițător.

•Procesul , task-ul, este un program în
desfășurare,
cu scop de valorificare a experienței intelectuale
incluse,
pentru rezolvarea unei probleme abstracte.
Programul constituie „codul” care
prelucrează niște „date”
care particularizează problema reală .
•Programele aplicative, numite simplu
aplicații , sunt
programe soluții la probleme concrete ale unor
subiecți utilizatori,
care urmăresc satisfacerea unor solicitări din
realitate.

•Tehnologia informației, information
technology , ca extindere a tehnicii de
calcul, este
un complex de metode și mijloace
care se ocupă de programe
pentru ca acestea s ă-și
îndeplinească eficient rolul
ca furnizoare de soluții la
probleme
prin experiența intelectuală
memorată .

Tehnica de calcul a evoluat spre tehnologia
informației,

de la automatizarea unor operații
matematice
spre reprezentarea,
memorarea și
reproducerea,

în afara omului,
a unor produse intelectuale complexe.

Tehnologia informației de ocupă de
„metaprocesul” care are ca aplicație procesul prin
care programele numite “cod” sunt
create,
memorate,
desfășurate sau
reproduse, pentru a produce,
în afara omului,
local în alt spațiu și
prezent în alt timp,
soluții la probleme cu “ date” locale
din acel spațiu și
prezente în acel timp.

Sistemul de calcul sau mașina de calcul este
un artefact local de tehnică de calcul, o
implementare a tehnologiei informației,
destinat
creației,
memorării,
desfășurării și
reproducerii
rapide și
eficiente
în prezent,
în condiții noi,
a unor programe aplicative.

Sistemul de calcul este un „metaprodus”
intelectua l, care
activează un „metaproces” intelectual ,
care rezolvă probleme din lumea
produselor intelectuale,
privite ca obiecte.

Componentele unui sistem de calcul, reunite
pentru a îndeplini destinația precizată
anterior, se împart în:
• componente hardware de sistem și
•componente software de sistem.

Componentele hardware ale unui sistem de calcul reprezintă
mijloace și procedee de
păstrare,
prelucrare și
reproducere a unor programe,
caracterizate prin
materialitate,
rezistență la trecerea timpului.

Componentele hardware, numite și echipamente hardware sau,
pur și simplu, hardware , reprezintă experiență intelectuală
materializată,

fiecare reprezentare a acestei experiențe fiind
o resursă specializată și disponibilă separat,
pentru activități în paralel.

Componentele software de sistem, sau programele
de sistem, ale unui sistem de calcul
reprezintă
procedee de utilizare a componentelor
hardware specializate,
care se folosesc de aplicații concrete
specificate,
fiind constituite din structuri logice
neremanente, modificabile .

Ordinea de utilizare a diferitelor resurse este stabilită de
necesitățile unui anumit algoritm de calcul particular,
cerut de structura unui program aplicativ concret.

O altă aplicație poate avea altă ordine de utilizare a
acelorași resurse, într -un program diferit.

Componentele software, sau simplu, software, sunt
componentele software de sistem ale unui sistem
de calcul,
dedicate componentelor hardware de
sistem,
la care se adaugă programele aplicative
care implementează soluția căutată de
aplicație .

Pentru utilizatorul unui sistem de calcul, termenul generic de
software desemnează
acel complex de mijloace și metode care sunt
specifice rezolvării problemei sale concrete,
îndeobște remarcate ca pachet de programe
din domeniului său de interes,
care înmagazinează experiența dobândită în
rezolvarea unei categorii largi de probleme asemănătoare,
dar delimitate.

Echipamentul hardware este perceput de
utilizator ca suport material, de
dispozitive și ansambluri mecanice,
electrice, magnetice, etc., constituind un
echipament comun tuturor aplicațiilor
care rulează, cu care interacționează
pentru efectuarea de prelucrări ori
operații de intrări și ieșiri.

Programele de sistem urmăresc activarea,
administrarea și optimizarea utilizării resurselor
materiale în vederea folosirii lor în programe
aplicative.

Programele de sistem sunt atât de legate de suportul
material, încât apar practic ca acea parte
nemodificată de software care se identifică în toate
aplicațiile pe diferite domenii concrete care rulează
pe același hardware.

Programele de sistem se împart în
utilitare de sistem și
sisteme de operare.

Activitatea unui sistem de calcul are în centru
programele, pentru păstrarea, prelucrarea și
reproducerea cărora pune la dispoziție
mijloace și metode ale tehnicii de calcul.

În varianta clasică a unei mașini de calcul von
Neumann, forma de activitate a acesteia este
de manipulare de structuri de „date”,
prelucrate de procese interactive
generate prin execuția de programe,
formate din liste de linii de „cod”
adecvate acestor structuri.

„Datele” sunt valori posibile pentru un cadru
organizat de informații legate de aplicație,
suferind eventuale modificări în timpul
prelucrării,

iar

„codul” reprezintă un program care înglobează
o parte din experiența intelectuală necesară
rezolvării problemei pentru setul de „date”
particularizat.

„Codul” se consideră imuabil, nu se modifică în timpul
procesării programului, dar poate fi ales în timpul
procesării, dintre mai multe variante prestabilite,
în timp ce „datele” pot fi
diferite de la o rulare la alta la începutul
fiecărei procesări,
pot suporta modificări în timpul procesării și
materializează soluția la problemă.

„Datele” sunt organizate în mai multe forme
specializate numite „structuri de date” (celule, tabele,
stive, liste, etc.), adaptate unor anumite manipulări
repetitive, algoritmice.

•Ingineria software este
o colecție de metode și proceduri
prin care
elaborarea de soluții la
probleme prin programe se îndeplinește
conform unor criterii de
calitate și
eficiență.

•În paradigma funcțională de dezvoltare de
programe , conforme ingineriei software,
elaboratorul de „cod” reprezintă direct
procesul de prelucrare a
entităților de „date”, în vederea
îndeplinirii scopului lucrativ al unei
aplicații,
modelul realității este reprezentat separat
de program,
în imaginația elaboratorului, iar
accesul la „date” este neprotejat.

•În paradigma obiectuală de dezvoltare de
programe , conforme ingineriei software,
realitatea este mai întâi simulată pe sistemul
de calcul
printr- un model cu existență separată,
care
înlocuiește obiectele reale cu
„obiecte” componente ale modelului,
devenit „cod”.

Pe model se efectuează prelucrări conforme
problemei, iar rezultatele sunt ulterior
transferate înapoi în realitate ca soluții.

Accesul la „date”, înțelese ca stări de
„obiecte”, componente ale modelului,
este
mediat și protejat prin procedeele de
acces spre starea proprie,
activate de mecanismele de
acces cu care sunt dotate „obiectele”,
preluate de la
mecanismele de interfață ale obiectului
modelat.

Paradigma obiectuală de abordare a
dezvoltării de aplicații complexe și
dinamice are
avantajele
flexibilității și
adaptabilității,
optimizând
întreținerea,
modificarea sau
refolosirea programelor.

În concluzie ,

Tehnica de calcul, devenită tehnologie a
informației
compusă din hardware și
software de sistem,
devine un cadru de reproducere,
prelucrare și
conservare a unor
produse intelectuale,
asigurând un mediu de
propagare temporală și spațială a unor
soluții numite aplicații.

În acest fel, experiența statistică dobândită
prin încercări locale, de conștientizare a
ordinii prezente în natură, este pusă la
dispoziție și devine activă spațial global și
ulterior temporal.

Mașina de calcul,
gestionată, compatibilizată și inteligibilă
prin sistemul de operare, este folosită la
dezvoltarea, rularea și întreținerea de
aplicații prin utilitare de sistem, în vederea
obținerii de
soluții concrete la problemele noi
tot mai complexe.

SISTEME DE OPERARE
CURSUL 2

INTRODUCERE
1 Conf Dr. ing. Ștefan Stăncescu
S.l. Dr. ing.Elena Cristina Stoica

TRANSFER DE MODELE PRIN SEMNALE, CODURI, LIMBAJE

–Evoluția vieții :
acumulare de experiență statistică,
dobândită prin încercări directe ale unor subiecți activi,
care acumulează un model al realității în care trăiesc.
–Reprezentarea experienței și a modelului de realitate
acumulat pe sisteme de semne,
păstrarea lor în memorii și
transmiterea lor spre semeni contemporani sau din
generațiile următoare prin mecanisme de transfer de
semnale

2

TRANSFER DE MODELE PRIN SEMNALE, CODURI, LIMBAJE
–Transferul de modele
prezintă avantajul de a le furniza destinatarilor
modelul final dedus din încercări,
scutind-i de efortul întregului proces de
experimentare.
– Modelele locale se transmit
în timp prin
mecanisme de memorie și
în spațiu prin
semnale

3

TRANSFER DE MODELE PRIN SEMNALE, CODURI, LIMBAJE

–Primele semnale de transmitere de experiente de viata:
–suport biologic genetic
chimic memorie ADN
replicat in generatii,
de la indivizi la urmasi
–suport biologic neuronal
mecanisme de asociere si de memorie ale creierului
studii statistice sau solutii intamplatoare
memorate in viata unui individ
creatoare de modele ale lumii

prezintă avantajul de a le furniza destinatarilor
modelul final dedus din încercări,
mecanisme de memorie și
în spațiu prin 4

TRANSFER DE MODELE PRIN SEMNALE, CODURI, LIMBAJE

–Semnale de transmitere de modele intre indivizi:
–suport natural
vizual – gestica
sonor – zgomote
– limbaj vorbit
–artificial
vizual – limbaj scris, pictural, spatial
electromagnetic – radio, TV, calculatoare

prezintă avantajul de a le furniza destinatarilor
modelul final dedus din încercări,
mecanisme de memorie și
în spațiu prin 5

TRANSFER DE MODELE PRIN SEMNALE, CODURI, LIMBAJE

–Sisteme le de calcul cuprind structuri și metode de
creare, transfer si folosire a experienței acumulate
–Părți de complexitate redusă de procesare intelectuală
se externalizeaza și implement eaza pe mașini,
–Beneficiind de modele deja construite
se pot rezolva probleme noi prin efort diferențial
–Modelele locale se transmit
în timp prin mecanisme de memorie și
în spațiu prin semnale

6

–Sistem de calcul:
-unul sau mai multe procesoare
-memorie principala
-discuri
-imprimante
-tastatura
-display
-interfete de retea
-alte dispozitive IO
=>sistem complex-elaborarea de programe care sa gestioneze
corect toate componentele cu utilizare in regim optim a
fiecareia dintre ele
–SO – program de baza – administrare dispozitive de sistem
– pentru utilizatori – modalitati de
interfatare mai simpla cu structura hard
–”locul” sistemului de operare in ansamblul hard -soft –
>figura

ARHITECTURA PE NIVELURI A UNUI SISTEM DE CALCUL

8 Aplicații utilizator

Utilitare de sistem

Sistem de operare

Proceduri

Microprograme

Circuite cablate
Apeluri la utilitare

Apeluri la SO

Apeluri la BIOS

Microinstrucțiuni

Microcomenzi

ARHITECTURA PE NIVELURI A UNUI SISTEM DE CALCUL

9 Circuite cablate

–la baza – structura hard – contruita pe 2 sau mai multe
niveluri

– nivelul fizic , cel mai de jos – dispozitivele fizice (circuite
integrate, fire de legatura, surse de alimentare,etc.);
constructie+functionare ing. electronisti

–circuitele cablate reprezintă
suportul material remanent de experiență intelectuală,
destinat a efectua operații elementare
prin intermediul suportului fizic accesibil direct.

ARHITECTURA PE NIVELURI A UNUI SISTEM DE CALCUL

10 Microprograme

– nivelul microarhitecturii – asambleaza dispozitivele
fizice in unitati functionale
– set de registre interne ale
CPU (Central Processing Unit) + o cale de date care
include unitatea aritmetica-logica (mod de lucru-in fiecare
perioada de ceas unul sau doi operanzi sunt preluati din
registre si sunt prelucrati in UAL; rezultatul e memorat
intr-unul sau mai multe registre-gestionat direct de catre
resursele hard/o entitate soft (microprogram)

Microprogramele reprezintă
organizări de operații necesare pentru
îndeplinirea microinstrucțiunilor, de regulă
succesiuni de manevre ale unor
structuri hardware incluse în circuite LSI,
microcomenzi interne la registre componente,
cu structuri de date specifice circuitelor/registrelor

ARHITECTURA PE NIVELURI A UNUI SISTEM DE CALCUL

12 Proceduri

–Obiectivul caii de date – executia anumitor seturi de
instructiuni (intr-unul sau mai multe cicluri de
operare/instructiune)

–Instructiunile pot folosi registre sau alte resurse hard

–nivelul ISA (Instruction Set Architecture)=structura
hard+instructiunile in limbaj de asamblare ///nivel limbaj
masina

–Limbaj masina- 50-300 instructiuni – in maj. transferuri
interne de date, operatii aritmetice, comparari de valori

– Dispozitivele IO (la acest nivel) – comandate prin
incarcarea unor valori in registrele proprii (registrele de
dispozitiv)

– Ex: un disc primeste comanda sa citeasca date prin
incarcarea in registrele sale a valorilor care reprezinta
adresa discului, adresa memoriei principale, numarul de
octeti si tipul de operatie – citire sau scriere. (in practica
sunt necesari mai multi parametri iar informatia de stare
returnata de disc in urma executarii operatiei este foarte
complexa).

Procedurile asigură efectuarea unor operații elementare
referitoare la resursele de sistem de calcul, pentru
îndeplinirea unei funcționalități elementare.

Procedurile manevrează direct resurse H/W, prin
microinstrucțiuni , pentru îndeplinirea unor algoritmi
direcți, cu rol distinct legat de o resursă, sau prin
comenzi/stari pentru registre de structuri cablate.

ARHITECTURA PE NIVELURI A UNUI SISTEM DE CALCUL

15 Sistem de operare

– Sistemul de operare – construit pentru a ascunde
complexitatea procedurilor “in spatele” unor operatii
simple pentru utilizatori.

== nivel soft care ascunde (partial) structura hard;
furnizeaza programatorului un set de instructiuni mai
comode

–Ex: citirea unui bloc de date dintr-un fisier este mult
mai simpla decat succesiunea de detalii despre
deplasarea capetelor discului, stabilizarea lor, s.a.m.d.

Sistemul de operare
coordonează componentele H/W (UC, MEM, IO, FS, etc.) în
implementarea funcțiilor de
pregătire,
lansare în execuție de programe,
ur mărire a evoluției lor în desfășurarea execuției,

sesizarea și tratarea condițiilor excepționale.
virtualizeaza H/W pentru multiprocesare
standardizeaza S/W atasat H/W

ARHITECTURA PE NIVELURI A UNUI SISTEM DE CALCUL

17 Utilitare de sistem

– Nivelul utilitarelor de sistem asistă pe elaboratorii
de aplicații – soluții, prin facilități care urmăresc
mărirea productivitat ii activității lor.
asambloare, interpretoare, macroasambloare și
macroprocesoare, compilatoare, editoare de legături,
încărcătoare de programe, editoare de texte,
depanatoare de programe, programe de gestiune de
biblioteci,
medii de dezvoltare de aplicații în general, utilitate
de configurare, întreținere, administrare, evaluare, etc.

ARHITECTURA PE NIVELURI A UNUI SISTEM DE CALCUL

18 Aplicații utilizator

Programele de utilizator – aplicațiile ,
rezolva o problemă nouă
cu experiența intelectuală
proprie și
înmagazinată în sistemele de calcul.
Programele, elaborate de dezvoltatorii de aplicații,
ofer ă soluții la situații la probleme
care provoaca insatisfacții utilizatorului,

ARHITECTURA PE NIVELURI A UNUI SISTEM DE CALCUL

19 –Sistemele de calcul, ca sisteme complexe, se organizează,
între realitatea aplicațiilor și
realitatea materialelor din care sunt alcătuite fizic,
în mai multe niveluri, fiecare cu
funcționalități proprii serviciilor îndeplinite.
–Numai nivelurile adiacente comunică între ele prin
cereri și acordări de servicii,
care se îndeplinesc în fiecare nivel prin
programe de nivel.
–Organizarea comunicațiilor numai pe
verticala și
orizontala nivelurilor
permite controlul complexității sistemelor de calcul.

PROGRAME DE SISTEM

20 Conducerea procesării
(task management) Soluția la problemă
(bussiness management )
Gestiunea interfeței cu utilizatorii
(user management)

Prelucrarea datelor
(data management)
Dirijarea comunicației
(data communication)

Gestiunea resurselor de sistem
(system resources management)
Controlul
resurselor de
sistem
(system resources
control)
Utilitare de
sistem
Aplicații

Sistem de
operare
Programe de
sistem

– pe nivelurile de deasupra SO –interpretoare de comenzi
(shell), programe pe baza de ferestre, compilatoare,
editoare, alte programe independente de aplicatie nu fac
parte din sistemul de operare (chiar daca sunt furnizate de
obicei de catre producatorul calculatorului sau SO)

– SO = partea din pachetul soft care lucreaza in mod nucleu
sau in mod coordonator (sistemul este protejat impotriva
interventiei utilizatorului de catre un modul din structura
hard; utilizatorul nu-si poate scrie propriul program pentru
gestionarea intreruperilor generate de ceas, program ce
face parte din SO si este protejat, in mod normal, impotriva
interventiilor utilizatorilor prin restrictii hard

– Compilatoarele si editoarele lucreaza in mod utilizator
(daca unui utilizator nu-i place un anumit compilator isi
poate scrie propriul compilator)

–Diferenta mai putin neta :
sistemele evoluate (la care poate sa lipseasca modulul nucleu)
sistemele incorporate (embedded systems)(cum sunt sistemele
de operare bazate pe Java, care folosesc interpretarea si nu
structura hard pentru diferentierea componentelor).
sisteme de calcul dotate cu programe care ruleaza in mod
utilizator dar care se folosesc de SO pentru a executa unele
functii speciale (ex: program care permite utilizatorilor sa-
si schimbe parolele – nu face parte de SO, nu ruleaza in
mod nucleu, dar apeleaza la o functie “sensibila” care
trebuie protejata in mod special).
sisteme in care parti de program care in mod traditional fac
parte din SO (de ex. FS) ruleaza in spatiul utilizatorilor.

UTILITARE DE SISTEM

23 Asambloarele (assemblers )
traduc automat o reprezentare a unui program
dintr-un din limbaj apropiat de structura hardware
într- un cod executabil pe aceste mașini.
Macroasambloarele (macroassemblers)
oferă procedee de adaptare a unui limbaj de asamblare
la reprezentări evidențiate de șabloane
cu secvențe a unor instrucțiuni de asamblare mai
des folosite.
Secvențele mai des folosite sunt considerate
macroinstrucțiuni și sunt tratate ca
noi elemente lexicale ale limbajului.

UTILITARE DE SISTEM

24 Compilatoarele (compilers)
traduc automat
reprezentări de programe scrise
în limbaj de nivel înalt
în module destinate a fi executate
pe o mașină concretă.
Macroprocesoarele oferă oricărui compilator
aceleași facilități pe care le aduce un
macroasamblor unui asamblor,
prin substituirea cu reprezentări mai simple a
șabloanelor de limbaj.

UTILITARE DE SISTEM

25 Editoarele de legături (linkers) reunesc
module executabile
asamblate sau compilate separat
în module compacte unitare.
Încărcătoarele (loaders) de programe sau module executabile
efectuează operații de trecere
de la programe m emorate și gestionate
de sisteme de gestiune de fișiere
în programe rezidente în memoria principală.
Bibliotecile (libraries) de module preprocesate oferă
spre legare
soluții deja elaborate profesional pentru
probleme standard din domenii specializate.

UTILITARE DE SISTEM

26 Depanatoarele (debuggers) și
analizoarele de performanțe (profilers) oferă
mijloace de control al modului obiect elaborat,
în vederea obținerii scopului urmărit
de programul elaborat.
Mediile de dezvoltare pe domenii de aplicații
generale sau specializate, oferă
metode și mijloace de urmărire
a procesului de elaborare de programe
pe parcursul întregului traseu al ciclului lor de viață
Mijloace de analiză de sistem și unelte de modelare folosite în
ingineria software, ca
mijloace de management
al procesului de elaborare de aplicații

UTILITARE DE SISTEM

27 Mașinile virtuale reprezină o expresie generalizată a
soluției de prezentare spre dezvoltator și utilizator a
unei variante
cunoscută și
standardizată a unui
sistem de operare+
platforma de lucru
privite ca mediu de lucru pentru aplicații.
MV emuleaza mediul S/W si H/W al aplicațiilor, care devine
un mediu cunoscut, stabil, prietenos
corespunzător experienței deja câștigate de
operatorul sau
dezvoltatorul de aplicație controlată și în viitor prin
versiuni compatibile

SISTEME DE OPERARE

28 –Sistemele de operare formează un
pachet compact de programe de sistem cu scop comun
facilitarea utilizării sistemului de calcul,
oferind un mediu de gestiune unitară pe
masini diferite.
–Elaboratorul de aplicat ii este eliberat de sarcina complexă
de a construi în amănunt si
de a adapta solutia unei probleme
la specificul fiecărei masini concrete
pe care aceasta poate să ruleze în viitor prin
versiuni compatibile
Sistemul de calcul devine o Ma șina Virtuala

SISTEME DE OPERARE

29 –Gestiunea de procese
Multiprocesare, multiprogramare,
Procesare paralela
–Gestiunea de spatiu de memorie pentru procese
Memorie fizica si virtuala
–Gestiunea de spatiu de IO pentru procese
Drivere de dispozitive fizice si logice
–Gestiunea de fisiere
Gestiunea spatiului memoriilor externe
Sisteme de gestiune de fisiere
–Gestiunea de fiabilitate, protectie si securitate

SISTEME DE OPERARE
CURSUL 3
1S.l. Dr. ing.Elena Cristina Stoica

SISTEMUL DE OPERARE – ADMINISTRATOR DE RESURSE
SOfurnizorul unei interfete convenabile pentru utilizator
administrator al tuturor componentelor unui sistem
complex (procesoare, memorii, discuri, mouse-uri, interfete de retea, imprimante, s.a.)
– alocare ordonata si controlata a lor in program
Pb– mai multe programe ruland pe calculatoare diferite
incearca sa tipareasca simultan la aceeasi imprimanta – linii tiparite aleator/alternat, rezultat neinteligibil rezolvare
SO: memorarea temporara pe disc a tuturor iesirilor
imprimantei, copierea rezultatelor din fisierul in care au fost memorate pe disc si transmiterea lor imprimantei cand unul dintre programe a terminat de rulat; celelalte continua generarea rezultatelor care nu sunt inca transmise imprimantei 2

– Mai multi utilizatori – interferente si/sau partajare res urse
hard/informatii (fisiere, baze de date) SO
-identifica cine ce resurse foloseste -aloca resurse la cerere -permite accesul pentru utilizatori -mediaza cererile generatoare de conflicte
venite de la diverse programe/utilizatori.
–Administrarea resurselor partajarea resurselor
(multiplexarea)
– in timp – folosirea pe rand, cine urmeaza si pt cat
timp (ex. partajarea imprimantei – cand mai multe joburi de tiparire stau la coada pentru a fi executate de o singura imprimanta, SO decide ordinea de acces pentru tiparire )

– in spatiu – folosire concomitenta, impartirea
unei resurse – de ex,
– memoria – e eficient sa pastrezi in memorie mai
multe programe la un moment dat decat sa atribui toata memoria unui singur program, mai ales daca el nu foloseste decat o mica fractiune din memoria totala) – pb. de atribuire corecta, de protectie SO
– discul magnetic – stocheaza fisierele mai multor
utilizatori in acelasi timp; SO atribuirea spatiului
pe disc si tinerea evidentei despre cine ce blocuri de pe disc foloseste

ISTORIC . PRIMA GENERATIE (1945-1955) – TUBURI CU VI D SI
PLACI DE CONEXIUNI
– SO – strans legate (dpv istoric) de arhitectura
calculatoarelor pe care rulau urmarirea generatiilor
succesive de calculatoare
– Mat. englez Charles Babbage /ˈbæb ɪdʒ/(1792-1871) a
proiectat primul calculator numeric – “motorul analitic” (nu a reusit sa-l faca sa lucreze corect, realizarea era pur
mecanica, tehnologia nu era capabila sa produca roti dintate de precizia necesara) nu avea SO; a inteles necesitatea unui soft – Ada Lovelace, prima programatoare din lume (limbajul de programare Ada a fost botezat dupa numele ei)

– Babbage – al II lea Razboi Mondial progrese reduse in
constructia calculatoarelor numerice
– mijlocul ‘40 – au construit masini de calcul
Howard Aiken (Harvard) John von Neumann(Institutul de Studii Avansate
Princeton)
J. Presper Eckert, William Mauchley (Universitatea
Pensylvania)
Konrad Zuse (Germania)
– au folosit relee mecanice – foarte lente, masinile aveau
perioade de ceas masurate in secunde
– inlocuite cu tuburi cu vid – foarte mari (camere intregi) –
foarte lente
– programarea era facuta in limbaj masina absolut, realizat
prin fire de legatura trase pe placile de conexiuni pentrua comanda functiile de baza ale masinii.

– necunoscute – limbaje de programare
– SO- limbajul de asamblare (modul de
programare introducerea placii cu conexiuni in
calculator – ore – calcule simple: tabelarea de sinusuri, cosinusuri, logaritmi)
– inceputul ’50 – progres – in locul folosirii placilor pentru
conexiuni scrierea programelor pe cartele perforate si
citirea lor pentru rulare

A DOUA GENERATIE (1955-1965). TRANZISTOARE SI SISTE ME
CU PROCESARE PE LOTURI DE LUCRARI (batch processing)
– defectarea tuburilor – tranzistoarele mai fiabile – realizar ea
“sistemelor mari de calcul” (mainframes)
-camere speciale
– pret – milioane $ – corporatii, agentii
guvernamentale, universitati
– mod de lucru – programe pe hartie in FORTRAN sau
asamblare, perforat pe cartele, in camera de intrare a calculatorului predate operatorului, dupa ore, rezultatele, imprimare, predare
– solutie – batch processing – executia unui lot de lucrari
neinteractive, primite de la mai multi utilizatori; particularitatea sistemului – sistemul nu lucreaza direct cu utilizatorul in timpul executiei iar lucrarile sunt tratate pe loturi

– ideea – colectarea mai multor job-uri in camera de intrare,
citirea si transferarea pe banda magnetica (folosind calculatoare mai mici ex IBM 1401, bun pt. citire cartele, transfer informatie pe banda magnetica, tiparire rezultate sau IBM 7094 bun si pentru calcule numerice) o ora dde
colectare si constituire a unui lot de lucrari
– banda era derulata pentru a putea fi citita de la
inceput, adusa si montata in unitatea banda in camera calculatorului
– operatorul incarca un program special (stramos al
SO) care citea prima lucrare si o rula; rezultatele erau scrise pe o a doua banda, nu tiparite; SO -ul citea si rula
urmatorul program pana la terminarea lotului
– banda de iesire dusa in afara calculatorului principal
de prelucrare pentru tiparirea finala a rezultatelor (imprimare offline )

– cartelele de comenzi elementare “inaintasii” limbajelor
moderne de comanda a programelor si interpretoarelor de comenzi
– calculatoare mari – calcule stiintifice si ingineresti (de ex., rezolvarea ecuatii lor
diferentiale cu derivate partiale)
–limbaje de programare FORTRAN si asamblare – SO – uri: FMS (sistem de monitorizare FORTRAN), IBSYS
(so-ul firmei IBM pentru 7094)

GENERATIA A TREIA (1965-1980). CIRCUITE INTEGRATE S I
MULTIPROGRAMARE
– inceputul ’60 – doua produse “incompatibile”
– IBM 1401 – mic, comercial, orientat pe caracter pentru
sortare si tiparire de pe banda
– IBM 7094 – mare, orientat pe cuvant, calcule numerice
in stiinta si inginerie
– solutia IBM – seria 360 – acceasi arhitectura, acelasi set de
instructiuni, pt rezolvarea pb stiintifice (numerice) si comerciale – succesori 370, 4300, 3080, 3090
– seria 360 – circuite integrate – imbunatatire
pret/performanta
– succesori – se folosesc inca pentru administrarea
bazelor de date foarte mari (de ex., sistemele de rezervari pentru liniile aeriene)/servere pentru site-uri Web care trebuie sa proceseze mii de solicitari pe secunda

– SO-ul OS/360 – foarte mare, foarte complex
(milioane de linii in limbaj de asamblare) – introduce tehnologii noi:
1. Multiprogramarea –prelucrare date comerciale – timpul de asteptare pentru
lucrul cu disp IO -80-90% din timpul total – UCP inactiv mult timp
–la calcule stiintifice – UCP–ul era folosit la limita , dis p IO-
inactive mult timp
– solutia – partitionarea memoriei in mai multe zone, fiecare
zona gazduind un program; in timp ce o lucrare astepta ca activitatea unui disp IO sa se termine, o alta putea sa utilizeze UCP (daca memoria principala putea sa gazduiasca la un moment dat suficiente programe, atunci procesorul putea sa fie ocupat aproape 100% din timp)
– modul hard special care sa protejeze fiecare
program pentru a nu fi spionat sau modificat de catre celelalte

2. Virtualizare (spooling –Simultaneous Peripheral
Operation On Line, operare simultana online a perifericelor) – posibilitatea de a transfera lucrarile de pe cartele pe disc de indata ce erau aduse in camera calculatorului; atunci cand programul curent termina de rulat, SO putea sa incarce unul nou de pe disc, in zona de memorie ramasa libera si apoi sa-l ruleze; tehnica era folosita si pentru iesire 1401 nenecesare, plimbatul
benzilor a disparut
3. Partajarea in timp (timesharing) – dezavantajul
prelucrarii pe loturi de programe – durata de timp mare intre predarea job-ului si receptionarea rezultatelor de catre un utilizator din lot; o greseala a altuia – intarzierea tuturor.
– fiecare utilizator are un
terminal on line ( de ex, 20 de utilizatori conectati, dintre

care 17 se gandesc – UCP e atribuit pe rand celor 3 job-uri
care solicita serviciul.
Pt ca depanatorii de programe emit, de obicei comenzi de
scurta durata –de ex, compilarea unei proceduri de 5 pagini- si doar rareori comenzi lungi -de ex, sortarea unui fisier cu un milion de inregistrari- calculatorul poate deservi rapid si interactiv un grup de utilizatori, si, in acelasi timp, poate executa, atunci cand UPC ramane liber, lucrari dintr-un lot mai mare.
Ex: – CTSS (Compatible Time Sharing System, Sistem
Compatibil cu Partajare in timp) – dezv. De M.I.T pe un 7094 adaptat
– MULTICS (MULTIplexed Information and Computing
Service, Serviciu Multiplexat pentru Calcule si Informatii)
http://www.multicians.org/

– alta linie de dezvoltare – minicalculatoarele 1961 DEC PDP-1 – doar 4k cuvinte de 18 biti, dar ieftin
(5% din pretul 7094, dar aproape la fel de rapid pt. calculele numerice)–-PDP-11.
– Ken Thompsond (Bell Labs) – versiune MULTICS
simplificata (pentru un singur utilizator) pe un PDP-7 
precursor al UNIX (SO devenit popular in lumea
academica, in agentii guvernamentale, in companii);
codul sursa era disponibil,
dezoltare de versiuni (de ex., SystemV -AT&T si BSD –
Berkeley Soft Distribution)

Pentru a putea scrie programe care sa ruleze pe orice sistem
UNIX, IEEE a dezvoltat un standard pentru UNIX numit POSIX –
– defineste o interfata minimala de apel sistem pe care
trebuie sa o suporte sistemele UNIX.
– 1987 – MINIX – clona redusa de UNIX pentru scopuri
educationale
– Linus Torvalds(st.fin.) – scrie Linux din dorinta de a realiza
o versiune gratuita de MINIX, destinata productiei

GENERATIA A PATRA (1980-prezent). CALCULATOARE
PERSONALE.
Calculatoarele personale au aparut datorita dezvoltarii
circuitelor integrate LSI (Large Scale Integration), chip-uri care contin mii de tranzistoare pe cm2 de siliciu.
Ca si arhitectura, calculatoarele personale (numite initial
microcalculatoare) nu erau deloc diferite fata de minicalculatoarele din clasa PDP-11, preturile –diferite.
– 1974 – Intel lanseaza 8080, primul UCP de uz general pe 8
biti; Gary Kildall construieste un controlor pentru discul de 8” lansat de Shugart Associates si-l cupleaza la 8080 => primul microcomputer cu disc; scrie apoi un SO bazat pe disc pentru structura nou creata CP/M (Control Program
for Microcomputer, Program de control pentru microcalculator)

– 1977 – Digital Research (compania lui Kildall, dupa ce
Intel i-a concesionat drepturile asupra CP/M) rescrie CP/M a.i. sa functioneze pe mai multe tipuri de microcalculatoare, realizate cu 8080 de la Intel, cu Z80 de la Zilog sau cu alte UCP – dominatie aprox. 5 ani
– primii ani ’80 – IBM proiecteaza IBM PC; cere lui Bill
Gates licentierea interpretorului de BASIC scris de el si gasirea unui SO – dialog cu Seattle Computer Products pentru SO -ul DOS (Disk Operating System, sistem de
operare bazat pe disc – autor Tim Paterson)
Gates le-a oferit apoi celor de la IBM pachetul DOS/BASIC,
IBM a solicitat modificari, Gates l-a angajat pe Paterson la Microsoft sistemul revizuit a fost redenumit MS-DOS
(Microsoft Disk Operating System)
– concurenta CP/M – MS-DOS – 1983 – IBM PC/AT – procesorul 80286 – MS-DOS – folosit in continuare pe calculatoare cu
procesoare 80386 si 80486

– versiunea initiala de MS-DOS – rudimentara, versiunile
ulterioare perfectionate, caracteristici avansate preluate si
de la UNIX (Microsoft nu avea nimic de a face cu UNIX)
– MS-DOS, CP/M s.a. – se bazau pe comenzi introduse de
operator de la tastatura
–’60 – Doug Engelbart – Standford Research Institute –
inventeaza GUI (Graphical User Interface, interfata grafica cu utilizatorul) realizata cu ferestre, iconite, meniuri si mouse.
– Steve Jobs – co-inventator Apple – construirea unui Apple
cu GUI – prima incercare Lisa – esec comercial
– a doua incercare Apple Macintosh
– mai ieftin ca Lisa, user-friendly (destinat utilizatorilor
comuni) – succes
– in lumea profesionala a design-ului grafic, a fotografiei
digitale,a productiei video digital Macintosh

–In 1999, Apple a adoptat un microsistem destinat initial sa
inlocuiasca BSD UNIX Mac OS X , un sistem de
operare bazat pe UNIX, cu toate ca are o interfata foarte diferita.
–Det. de succesul Macintosh Microsoft decide sa
construiasca un succesor al lui MS-DOS, bazat pe GUI => Windows :
– rula initial peste MS-DOS (era mai mult un
interpretor de comenzi decat SO)
-1985-1995 – Windows= mediu grafic peste MS-
DOS
–1995 – Windows 95 – versiune Windows de sine statatoare,
includea caracteristici de SO si se folosea de MS-DOS doar pentru initializarea sistemului (bootare) si pentru rularea vechilor programe MS-DOS.
-1998 – Windows 98 – versiune usor modificata, folosea inca
limbajul de asamblare pe 16 biti al lui Intel

– WindowsNT (NewTechnology) – compatibil cu
Windows95 dar complet rescris, de la 0
– lucreaza in totalitate pe 32 de biti – cu versiunea 4.0 reuseste sa elimine complet MS-
DOS si toate celelalte versiuni de Windows
– versiunea 5 a fost redenumita Windows 2000 in
1999, inlocuirea lui Win’98 si ’NT4.0 nu a functionat foarte bine Windows Me (Millenium Edition) , era o alta
versiune de Win’98
–2001 Windows XP – versiune imbunatatita de Win’2000
– Dupa Win’2000 Microsoft 2 linii de evolutie
– client: bazat pe XP si succesorii lui -server: Windows Server 2003, Windows Server
2008, Windows Server 2012, Windows Server 2016
o a treia linie – “embedded
world”

–2007 – Windows Vista – succesor al Win’XP – interfata
grafica noua
– securitate imbunatatita – programe utilizator imbunatatite sau complet
noi.
– s-a dorit inlocuirea completa a Win’XP –
esec – cerinte de sistem prea mari
– termeni de licenta restrictivi -suport pentru Digital Rights
Management, tehnica ce a ingreunat copierea materialelor protejate de catre utilizatorii comuni.
– Windows 7 – o versiune mai putin “flamanda” dpv al
resurselor – inlocuieste Vista, desi nu introduce prea multe caracteristici noi, dar e mai mica si mai stabila (in 3 saptamani obtine o cota de piata mai mare decat cea obtinuta de Vista in 7 luni )

– 2012 – Windows 8 – complet nou ca interfata, si orientat
catre ecranele tactile
– compania spera ca noul design
sa-l transforme in SO -ul dominant pentru o mare varietate
de device-uri: calculatoare, laptopuri, notebooks, tablete, telefoane, etc.- esec comparativ cu Win’7.

–2015 – Windows 10 – interfata revizuita pentru a usura
tranzitia dintre o interfata adaptata pentru mouse si o interfata adaptata pentru touchscreen, bazate pe dispozitivele de intrare disponibile – ambele interfete includ meniul Start ce încorporeaza elemente ale meniului Start din Windows 7 si Windows 8. – prima versiune de Windows 10 a mai introdus o caracteristica pentru a administra ferestrele si desktop-urile
virtuale numita Task View, browser-ul Microsoft Edge, suport pentru autentificarea cu amprenta sau prin recunoasterea faciala, noi caracteristici de securitate pentru sistemele enterprise, si DirectX 12, acesta îmbunatatind capabilitatile de grafica ale sistemului de operare pentru jocuri .

– Microsoft utilizeaz ă Meniul Start din ce în ce mai mult în
fiecare versiune de Windows ca o cale de a proteja utilizatorii încep ători de complexit ățile sistemului de
operare. (De exemplu, în Windows XP, Program Files și
folderele Windows sunt ascunse fa ță de utilizator în mod
implicit, iar accesul la programe trebuie atins de Meniul Start.)

– UNIX – competitor important in lumea calculatoarelor
personale (si diversele lui variante ) – puternic pe statii de lucru, servere de retea, servere enterprise ; – prezent si pe calculatoare personale, notebooks, tablete, smartphone-uri. – pe calculatoarele x86 (toate procesoarele moderne bazate pe familia de arhitecturi ce a pornit de la 8086 in anii ’70 –Pentium I, II, III,IV ), Linux devine o alternativa la Windows atat pentru studenti si corporatii. (exista o multitudine de astfel de procesoare, create de companii precum AMD si Intel; desi foarte diferite, pentru programator, arata similar si inca pot rula code 8086 scris acum 35 de ani) – variante x86-32; x86-64.

-FreeBSD – derivat UNIX din proiectul BDS (Berkeley);
toate calculatoarele moderne Macintosh ruleaza o versiune modificata de FreeBSD ( OS X )
– este popular (standard) pe statiile echipate cu procesoare RISC de inalta performanta – derivate ale sale sunt folosite pe scara larga pe dispozitivele mobile, precum cele care ruleaza iOS7 sau
Android

-aproape toate sistemele UNIX suporta un sistem de
ferestre numit X Window System (cunoscut ca X11 )
produs de M.I.T (programatorii experimentati UNIX prefera o interfata bazata pe comenzi in locul uneia bazata pe GUI) – realizeaza gestiunea de baza a ferestrelor (utilizatorii pot crea, sterge, deplasa, redimensiona cu mouse-ul ferestrele)
– adesea este disponibila o interfata completa
GUI (de ex, GNOME ,KDE ) care sa lucreze chiar peste
sistemul X11,dandu-I UNIX -ului o forma asemanatoare cu
cea a sistemului de pe Macintosh sau cu cea a Microsoft Windows (pentru utilizatorii care-si doresc)

– mijlocul ’80 – cresterea retelelor de calculatoare SO-uri
de retea – utilizatorii stiu ca exista mai multe calculatoare
si ca se pot conecta si inregistra la masini aflate la dista nta
si pot copia fisiere de pe o masina pe alta (fiecare ruleaza propriul SO si isi are utilizatorul local)
– nu sunt
fundamental diferite de SO uniprocesor; e necesar un controlor pentru interfata de retea si un soft low -level care
sa-l comande, si programe pentru conectarea si accesul fisierelor la distanta (nu schimba structura esentiala a unui SO)

SO-uri distribuite – apare utilizatorilor ca un sistem
traditional desi e scris pentru mai multe procesoare (nu stiu unde ruleaza programele lor sau unde le sunt stocate fisierele – gestionate automat, eficient de catre SO)
– diferente semnificative fata de SO centralizate
(uniprocesor), mai mult decat adaugare cod unui SO uniprocesor
– permit aplicatiilor sa ruleze pe mai multe procesoare in
acelasi timp – sunt necesari algoritmi complecsi pentru gestionarea activitatii procesoarelor pt. optimizarea paralelismului aplicatiilor.
– intarzierile de comunicatie din interiorul retelei –
algoritmii sa lucreze cu informatii incomplete, depasite (in timp), incorecte (la SO uniprocesor informatiile despre starea sistemului sunt complete)

GENERATIA A CINCEA (1990-prezent). CALCULATOARE
MOBILE
–filme- parodiau dorinta omului de a avea un dispoziti de
comunicare pe care sa-l poata purta oricand/oriunde
– 1946 – primul telefon mobil – 40kg – ’70 – primul telefon mobil ce putea fi tinut in mana – 1kg
“the brick”
– astazi – telefonia mobila – aprox 90% (nu numai telefon,
ceas de mana, si ochelari sau alte obiecte purtabile) ; nu mai conteaza atat de mult partea de telefonie (e-mail, Web, text, jocuri, trafic, video, etc.)
– ’70 – ideea de a combina telefonia si tehnica de calcul
(computing ) intr-un dispozitiv de tip telefon

– mid’90 – N9000 – Nokia – primul smartphone (combina 2
dispozitive separate – un telefon si un PDA – Personal
Digital Assistant)
– 1997 – smartphonul GS88 “Penelope” – Ericsson – primele SO -uri pt. smartphonuri – Symbian ( Nokia,
Samsung, Sony Ericsson, Motorola)
-BlackBerry OS –
2002 – BlackBerry (BlackBerry Limited – fosta RIM –
Research in Motion)
-iOS – 2007 –
primul iPhone (Apple) – bazat pe UNIX
– 2008 – Android (OS bazat pe Linux – Google)
– 2011 – Nokia anunta ca renunta la Symbian si se va
concentra pe Windows Phone ca platforma primara (oct
2010 Microsoft)

Pentru producatorii de telefoane mobile, Android a avut
avantajul ca era open source si disponibil sub o licenta
destul de permisiva – l-au putut testa si adapta propriilor platforme hardware cu usurinta; in plus, sustinut de comunitatea uriasa a dezvoltatorilor de aplicatii Java.

SISTEME DE OPERARE
CURSUL 4

1 S.l. Dr. ing.Elena Cristina Stoica

NOTIUNI DESPRE STRUCTURA HARD A CALCULATORULUI
– Un OS – croit pe masura structurii hard a calculatorului pe
care ruleaza (extinde setul de instructiuni al calculatorului
si ii gestioneaza resursele)
– Pt. a functiona SO  cunoasterea structurii hard (un minim
fiind dat de modul in care programatorul vede structura
hard, inainte de a cunoaste ce face si cum lucreaza un SO)
– principial – schema bloc functionala a unui calculator
personal simplu  figura

– unitatea centrala de prelucrare, memoria si dispozitivele
I/O sunt conectate la magistrala sistemului, prin
intermediul careia comunica intre ele (CP moderne au
structuri mai complicate, implica mai multe magistrale)

– structura hard simplificata pentru sublinierea problemelor
hard care ii preocupa pe proiectantii de SO.

PROCESOARE
– UCP = “creierul” calculatorului
– citeste instructiunile din memorie si le executa (
un ciclu de baza: citeste I instructiune, o decodifica pentru
a-i determina tipul si operanzii, o executa )  executia
programelor
– set specific de instructiuni ( un x86 nu poate sa
execute programe ARM – Advanced RISC Machine – o
familie de arhitecturi de procesoare de tip RISC – reduced
instruction set computing -si viceversa)
– contine registre in care retine variabilele cheie si
rezultatele temporare ( pt. ca apelarea memoriei pentru a
prelua o instructiune sau un cuvant de date dureaza mai
mult decat executarea unei instructiuni)

Setul de instructiuni contine, in principiu, instructiuni de
incarcare a unui cuvant din memorie intr-un registru si
stocare in memorie a unui cuvant dintr-un registru; alte
instructiuni combina doi operanzi din memorie, registre
sau din ambele intr-un rezultat – ex. adunarea a doua
cuvinte si stocarea rezultatului intr-un registru sau in
memorie.
– contine registre accesibile programatorului:
 contorul de program ( program counter ) – retine adresa de
memorie de la care a fi citita urmatoarea instructiune; dupa
citirea ei, e actualizat cu adresa urmatoarei instructiuni
 indicatorul de stiva ( stack pointer ) – indica spre
elementul din varful stivei = retine nivelul curent al stivei
aflate in memorie (stiva contine cate un nivel pentru
fiecare procedura in care s-a intrat si din care nu s-a iesit
inca – retine parametrii de intrare, variabilele locale si
variabilele temporare care nu mai sunt memorate in
registre)

cuvantul de stare a programului ( PSW – Program Status
Word ) – contine biti de conditie, setati de unele
instructiuni de comparare, biti care codifica nivelul de
prioritate al UCP, biti care specifica modul de lucru
(utilizator sau nucleu) si alti biti de control; programele
utilizator pot sa citeasca tot registrul PSW, dar nu pot sa
scrie decat in anumite campuri ale lui; rol important in
apelurile sistem si cele spre spatiul I/O.
SO trebuie sa tina cont de toate aceste registre ( atunci cand
UCP lucreaza cu multiplexare in timp, SO va opri adesea
un program care ruleaza pentru a porni/reporni un altul; de
fiecare data cand opreste un program care ruleaza, SO
trebuie sa salveze toate registrele, a.i. sa poata fi restaurate
la relansarea programului)

Pentru a creste performantele, proiectantii de UCP renunta la
modelul simplu (citire+decodificare+executia unei singure
instructiuni la un moment dat);
1. UCP moderne executa mai multe instructiuni in acelasi
timp (au unitati separate pentru citire, decodificare,
executie => in timp ce executa instructiunea n , decodifica
n+1, citeste n+2  organizare tip banda de asamblare –
pipeline )
Ex. Un pipeline cu 3 niveluri (exista si mai lungi)

O data ce o instructiune a fost introdusa in banda de
asamblare, ea trebuie executata chiar daca instructiunea
precedenta a fost un salt conditionat care s-a executat.
Pipeline-urile evidentiaza complexitatea masinii pentru care
se scriu SO-uri, compilatoare, etc. => dificultate
proiectantii
2. UCP – alt tip de organizare (decat pipeline)  UCP
superscalara

– mai multe unitati de executie (una pentru aritmetica
numerelor intregi, una pentru aritmetica in virgula mobila,
una pentru operatii boolean)
Doua (sau mai multe) instructiuni sunt citite in acelasi timp,
decodificate, plasate intr-o zona de memorie tampon pana
cand pot fi executate.
Imediat ce o unitate de executie este libera, verifica daca in
tampon se afla vreo instructiune pe care sa o poata executa
=> o preia, o executa.
Consecinta : intructiunile programului executate in alta ordine
 structura hard trebuie sa garanteze ca rezultatele
obtinute sunt aceleasi cu cele generate de o unitate
secventiala + complexitate crescuta a SO-ului.
Majoritatea UCP (exceptie – cele foarte simple folosite in
sistemele incorporate) pot lucra in doua moduri – mod
nucleu (kernel mode)/mod utilizator (user mode)  un
bit din PSW comanda modul

In mod nucleu UCP poate executa orice instructiune din setul
propriu si poate folosi orice caracteristica a structurii hard.
Pe desktop-uri si servere, SO-ul ruleaza in mod nucleu, avand
acces complet la hardware. Pe cele mai multe sisteme
incorporate, doar o mica parte ruleaza in modul nucleu,
restul SO-ului in mod utilizator.
Programele utilizator ruleaza in mod utilizator (se poate
executa doar un subset de instructiuni si este posibil
accesul doar la un subset de caracteristici ale structurii
hard).
In general, toate instructiunile care pot afecta protectia
dispozitielor I/O si a memoriei nu sunt accesibile (sunt
dezactivate) in modul utilizator.
Setarea bitului de mod din PSW pentru activarea modului
nucleu – interzisa.

Pentru a beneficia de serviciile sistemului de operare, un
program utilizator trebuie sa execute un apel de sistem
(system call ) =>trecerea in mod nucleu si activarea SO
(instructiunea TRAP comuta din mod utilizator in mod
nucleu) si porneste SO; dupa ce operatiile au fost
executate, comanda este transferata programului utilizator,
la instructiunea care urmeaza dupa apelul de sistem.
Putem gandi apelul de sistem ca un tip de apel de procedura
cu proprietatea aditionala de a schimba modul utilizator cu
modul nucleu.
Exista si alte tipuri de capcane, nu numai cele folosite pentru
apelurile de sistem; majoritatea celorlalte apeluri de tip
trap sunt generate de catre structura hard ca avertismente
in cazul unor situatii de eroare (de ex., /0).
 SO preia controlul si decide ce este de facut ( programul
trebuie oprit cu semnalizarea unei erori; sau eroarea poate
fi ignorata; sau cand programul “anunta” ca doreste sa
gestioneze singur anumite tipuri de conditii, comanda ii
poate fi inapoi transferata ca sa-si rezolve pb)

3. Replicarea nu numai a unitatilor functionale ci si a unei
cuante din controlul logic  Intel Pentium IV intrduce
aceasta proprietate multithreading/hyperthreading
procesorului x86; alte UCP – SPARC, Power5, Intel Xeon,
familia Intel Core; UCP detine starea a doua fire de
executie (thread = proces de categorie usoara) diferite,
switch intre ele = ns; nu se ofera un paralelism adevarat
(un singur proces poate rula la un moment dat); avantajul –
timpul de switch intre threaduri .
La nivelul SO fiecare thread apare ca un UCP separat (de ex.,
un sistem cu doua UCP, fiecare cu 2 thread-uri  SO
“vede” 4 UCP; daca e destul de lucru pentru a tine 2 UCP
ocupate la un anumit moment, nu e potrivita ocuparea a 2
threaduri ale aceluiasi UCP, cu celalalt UCP fizic complet
inactiv – mai eficient – ocuparea a cate unui thread din
fiecare UCP)

4. In afara de multithreading  UCP cu 4/8/mai multe
procesoare complete ( multicore chips ) – ex. Intel Xeon
Phi, Tilera TilePro – 60 core pe un singur chip  SO
multiprocesor

Quad-core chip cu/fara memorie cache partajata

5. GPU (Graphics Processing Unit) – procesoare cu mii de
nuclee minuscule – potrivite pentru multe calcule simple
executate in paralel (redarea poligoanelor, aplicatii grafice,
etc.)
– nu sunt potrivite pentru taskuri seriale
– dificil de programat
– folositoare SO-ului (criptarea sau procesarea traficului in
retea), dar nu atat de potrivite in a rula insusi SO

– a doua componenta ca importanta in orice calculator
–ideal – extrem de rapida (mai rapida decat executarea unei
instructiuni a.i UCP sa nu fie tinut in loc de catre memorie)
– cat se poate de mare
-foarte ieftina
Nici una dintre tehnologiile actuale nu le satisface pe toate 
abordare diferita
– construita ca o ierarhie de niveluri MEMORIE

– nivelurile superioare au viteza mai mare, capacitate mai
mica, cost mai mare per bit decat cele de pe nivelurile
inferioare:
1. Registrele interne ale UCP ; din acelasi material ca si UCP
=> la fel de rapide (nu exista nici o intarziere in apelarea
lor) – capacitate de memorare 32x32biti (pt un UCP de 32
biti) / 64x64biti (UCP de 64 biti) => o capacitate < 1kB in
ambele cazuri => programele trebuie sa-si gestioneze
singure registrele (sa decida ce memoreaza in ele)
2. Memoria intermediara ( cache memory ) – comandata de
catre structura hard (hardware); e impartita in linii de
memorie intermediara ( cache lines ) cu 64 de octeti (linia 0
cu adrese de la 0 la 63, linia 1, 64-127, s.a.m.d.); cele mai
folosite linii sunt retinute intr-o memorie intermediara
foarte rapida (high-speed cache) – in interiorul UCP/foarte
aproape de el.

Cand programul trebuie sa citeasca un cuvant din memorie,
structura hard a memoriei intermediare (cache hardware)
verifica daca linia solicitata se gaseste in cache:
– daca da, apelul se numeste cache hit iar cererea este
satisfacuta direct cu datele din cache, fara ca vreo cerere
suplimentara de acces la memorie sa fie transmisa pe
magistrala memoriei principale; operatiile de citire pentru
datele care se regasesc in cache dureaza aprox. 2 cicluri de
ceas.
– daca nu – cache miss – determina folosirea memoriei
principale cu penalizari importante de timp.
Memoria cache este limitata ca marime din cauza costului
ridicat. Unele masini au chiar 2/3 niveluri de cache, fiecare
mai lent si mai mare decat cel de dinaintea lui.

Caching – ul –rol important in mai multe domenii ale
computer science (nu numai la RAM)  imbunatatirea
performantei ( oricand o resursa poate fi impartita in 2
parti, dintre care unele folosite mai des)
– folosit la nivel SO tot timpul (pastreaza parti din
cele mai folosite fisiere in memoria principala pentru a nu
fi nevoit sa le incarce de pe disc in mod repetat; in mod
similar, pt. rezultatul convertirii cailor lungi de nume, gen
/home/ast/projects/minix3/src/kernel/clock.c in adresa de
disk unde fisierul e localizat – pentru a evita cautari
repetate ; rezultatul convertirii unei adrese de pagina Web
(URL) intr-o adresa de retea ( adresa IP) pt. folosiri
ulterioare, etc.

In orice sistem care il foloseste 
? Cand sa fie plasat un nou articol (item) in cache
? Pe care linie
? Care item sa fie inlaturat cand e necesar un slot
? Unde sa fie plasat in memoria principala un item abia
evacuat
In cazul transferul liniilor din memoria principala in cache-ul
UCP -ului, un nou item va fi introdus la fiecare cache miss.
Linia la care se introduce e calculata in general folosind unii
dintre bitii “high -order” ai adresei de memorie referentiate
( de ex., cu 4096 de linii de cache a 64 B si adrese a 32 b ,
bitii 6-17 ar putea fi folositi pentru a specifica linia de
cache, iar 0-5 byte-ul in interiorul liniei de cache) =>
itemul de eliminat in unele sisteme.

UCP -urile moderne au cate 2 cache-uri:
-L1 cache – intotdeauna in interiorul UCP (il alimenteaza
cu instructiuni decodate in vederea executiei); unele cipuri
au un al doilea L1 cache pentru cele mai utilizate cuvinte
de date; 16 kB fiecare.
-L2 cache – memoreaza cativa MB ai celor mai folosite
cuvinte de memorie.
Diferenta L1-L2  sincronizare (accesul la L1 e fara
intarziere, la L2 avem o intarziere de 1//2 cicluri de ceas)
Pe cipurile multicore, proiectantii trebuie sa decida unde sa
plaseze cache-urile (figura)- avantaje si dezavantaje:
Intel – un singur L2 partajat (un controller de cache
complicat)
AMD – fiecare core cu L2 (pastrarea consistentei mai
dificila)

3. Memoria principala – RAM (Random Access Memory) –
memorie cu acces aleator, numita si “memorie -miez”
(core- memory) pt. ca in ’50 -60 se foloseau pentru
realizarea ei inele de ferita al caror miez se magnetiza.
– capacitati: zeci, sute MB, GB -> cresc rapid
– ii sunt transmise toate cererile UCP care nu pot fi
satisfacute de cache

In plus fata de memoria principala, multe calculatoare –
ROM (Read Only Memory) – memorie accesibila numai
pentru citire
– bloc de memorie cu acces
aleator, nevolatila, de capacitate redusa
– nu-si pierde continutul la
intreruperea tensiunii de alimentare (ca RAM)
– programata in fabrica, nu
mai poate fi modificata
– rapida, putin costisitoare
– stocheaza aplicatia de
initializare a sistemului folosita la pornire ( bootstrap
loader ), la unele calculatoare
– unele placi IO contin
blocuri ROM pentru gestionarea comenzilor de nivel
scazut ale dispozitivelor

EEPROM (Electrically Erasable ROM) si RAM in
tehnologie flash – nevolatile
– pot fi sterse si rescrise-deosebire de ROM
-scrierea lor dureaza un timp cu cateva
ordine de marime mai mare decat scrierea in RAM, a.i
indeplinesc aceleasi functii ca si memoriile ROM, cu
singura deosebire ca eventualele erori din programpot fi
corectate prin rescrierea zonelor eronate.
Memoria flash e folosita in mod uzual ca mediu de stocare in
dispozitivele electronice portabile. Indeplineste rolul
filmului in camerele digitale si ca disc in playerele
muzicale portabile, de exemplu. Ca viteza se plaseaza intre
RAM si disc. Spre deosebire de disc, daca este stearsa de
prea multe ori, se uzeaza.

CMOS – alt tip de memorie volatila
– folosita pt. a retine data si ora curenta, de catre
unele calculatoare
– impreuna cu circuitul de ceas care incrementeaza
timpul, e alimentata de la o baterie mica, a.i. timpul e
actualizat corect chiar si in lipsa alimentarii de la retea
– poate retine si parametrii de configurare, cum ar
fi indicativul discului de pe care se incarca configuratia
sistemului
-avantaj – consumul extrem de redus de energie
a.i. bateria instalata de fabricant dureaza cativa ani
-dezavantaj – calculatorul “uita” data, ora sau
discul de pe care initializeaza sistemul atunci cand bateria
se mai descarca

DISCUL MAGNETIC
AvantajMemorarea pe hard disk este cu doua ordine de
marime mai ieftina per bit in raport cu memoria RAM si cu
doua ordine de marime mai mare.
Dezavantaj  Timpul de acces aleator la datele de pe disc
este cu trei ordine de marime mai mare (discul=dispozitiv
mecanic=>viteza scazuta)
Alcatuit dintr-unul sau mai multe platane metalice care se
rotesc cu 5400, 7200, 10800 RPM sau mai mult.
Un brat metalic se deplaseaza radial deasupra discurilor.

Informatia e scrisa pe disc sub forma unei succesiuni de
cercuri concentrice. Pentru orice pozitie a bratului fiecare
dintre capete poate citi o zona circulara numita
pista(track) . Toate pistele care corespund unei pozitii a
bratului alcatuiesc un cilindru.
Fiecare pista este impartita intr-un numar de sectoare, sectorul
avand, de obicei 512 octeti. La discurile moderne cilindrii
exteriori au mai multe sectoare decat cilindrii interiori.
Deplasarea bratului de la un cilindru la altul  1ms
Deplasarea bratului la un cilindru oarecare  5-10ms
Dupa ce bratul este pozitionat deasupra pistei corecte,
unitatea trebuie sa astepte inca 5-10ms, in functie de viteza
de rotatie, pana cand sectorul apelat se afla sub capul de
citire. Viteza pentru citire/scriere 5MB/s-160MB/s

SSD (Solid State Disks) –nu sunt propriuzis discuri, nu au
parti mobile, nu contin platane sub forma de discuri si
memoreaza datele in memorii Flash. Singura asemanare cu
discurile – memoreaza o cantitate mare de date care nu se
pierde la intreruperea alimentarii.
Memoria virtuala – functionalitate ce face posibila rularea
programelor mai mari decat memoria fizica, plasandu-le pe
disc si folosind memoria principala ca un fel de cache
pentru parti din program. Asta presupune conversia unei
adrese generate de program, numita adresa virtuala, intr-o
adresa utilizata de memorie, numita adresa fizica in RAM
unde e localizat cuvantul. Aceasta mapare (punere in
corespondenta) este realizata de MMU (Memory
Management Unit , unitate de administrare a memoriei),
plasata constructiv pe cipul UCP sau foarte aproape de el,
iar din punct de vedere logic este plasata intre UCP si
memorie.

SISTEME DE OPERARE
CURSUL 5

1 S.l. Dr. ing.Elena Cristina Stoica

DISPOZITIVE DE I/O
– UCP si memoria nu sunt singurele resurse pe care trebuie
sa le gestioneze SO. Dispozitivele IO interactioneaza
frecvent cu SO. Sunt alcatuite, in principiu, din 2 blocuri:
–un controller
–dispozitivul propriu-zis.(fig. din cursul
trecut)
– Controller-ul – este un chip sau un set de chip-uri care
comanda la nivel fizic dispozitivul.
– accepta comenzi de la SO (de ex., sa
citeasca date de la un dispozitiv si sa le prelucreze)
– pune la dispozitia SO o interfata mai
simpla (pt. ca in multe cazuri comanda reala a
dispozitivului este foarte complicata si detaliata ) De ex:

Un controller de disc poate primi o comanda de citire a sectorului
11.206 de pe discul 2. Controllerul trebuie sa converteasca acest
numar “liniar” de sector intr -o combinatie reala alcatuita din
cilindru, sector si cap de citire. Conversia poate fi complicata
datorita faptului ca cilindrii exteriori au mai multe sectoare decat
cilindrii interiori, sau pentru ca sectoarele defecte au fost rescrise
in alte sectoare. In continuare, controllerul trebuie sa determine
pe ce cilindru este amplasat bratul discului si sa genereze o
succesiune de impulsuri care sa deplaseze bratul spre interior sau
spre exterior cu numarul calculat de cilindri. Odata amplasat pe
cilindrul corect, bratul va astepta pana cand sectorul dorit se
deplaseaza sub capul de citire, dupa care poate incepe citirea si
memorarea bitilor (in ordinea data de unitate), eliminarea
preambulului si calculul sumei de control. In final, controllerul
trebuie sa asambleze bitii cititi in cuvinte pe care sa le stocheze in
memorie. Pentru a realiza toata aceasta activitate controller-ele
contin, adesea, mici calculatoare incorporate care sunt
programate sa execute operatiile prezentate.

Dispozitivele (propriu-zise) au interfete relativ simple, pentru
ca au functionalitati restranse si pentru ca este bine ca
interfetele sa fie standard (de ex., pentru ca orice controller
de disc SATA – Serial Advanced Technology
Attachment sa poata gestiona orice disc SATA –
standardul actual pentru discuri, inlocuid mai vechiul IDE
– Integrated Drive Electronics – electronica integrata in
unitate, standardul tipic pentru discurile de pe
calculatoarele din generatia Pentium).

Deoarece interfata reala a dispozitivului este ascunsa in
spatele controllerului, tot ceea ce vede SO este interfata cu
controllerul, care poate fi diferita fata de interfata cu
dispozitivul.

Pentru ca exista tipuri diferite de controllere, sunt necesare si
programe diferite pentru fiecare dintre ele. Programul care
comunica cu un controller, furnizandu-i comenzi si receptionand
raspunsuri, este numit driver de dispozitiv (device driver).
Fiecare producator de controllere trebuie sa furnizeze cate un
astfel de driver pentru fiecare SO care va interactiona cu
dispozitivul. Astfel, un scanner poate veni cu drivere pentru OS
X, Windows 7, Windows 8, Linux, de ex.
Pentru a putea fi folosit, un driver trebuie adaugat sistemului de
operare in asa fel incat sa poata rula in mod nucleu. Driverele
pot rula si in afara nucleului (kernel), posibilitate care cere
practic sa se permita unui program din spatiul utilizator sa poata
apela dispozitivul in mod comandat. Desi, atat Linux cat si
Windows ofera suport pentru acest mod de lucru, majoritatea
driverelor inca ruleaza in limitele nucleului. MINIX 3 ruleaza
toate driverele in spatiul utilizator.

Exista 3 modalitati prin care un driver poate fi adaugat
nucleului:
1. recompilarea, refacerea nucleului cu noul driver inclus,
urmata de reinitializarea (reboot) sistemului; multe
sisteme UNIX vechi lucreaza in acest fel.
2. generarea unei intrari intr-un fisier al SO, precizandu- I
ca are nevoie de driver, urmata de asemenea de
reinitializarea sistemului; la reboot, SO porneste, cauta
driverele de care are nevoie si le incarca.Windows
lucreaza in acest fel.
3. modalitate gandita pentru ca SO sa poata accepta si
instala din mers drivere noi, fara sa fie nevoie ca
sistemul sa parcurga etapa de reinitializare; putin folosita
pana acum, devine tot mai comuna. Dispozitivele ce pot
fi conectate “la cald”, cum sunt dispozitivele USB si
IEEE 1394 necesita intotdeauna drivere incarcate
dinamic.

Fiecare controller are un numar redus de registre, care sunt
folosite pentru comunicatie. De ex., un controller minimal
de disc poate avea registre care sa contina adresa discului,
adresa memoriei, numarul de sectoare si directia (citire sau
scriere). Pentru a activa controllerul, driverul primeste o
comanda de la SO, pe care o transforma conform cu
valorile specifice care sunt inscrise in registrele
dispozitivului.

La unele calculatoare registrele dispozitivului sunt puse in
corespondenta in spatiul de adrese al SO, asa incat ele pot
fi citite si scrise ca si locatii obisnuite de memorie. Pentru
astfel de calculatoare nu sunt necesare instructiuni speciale
de IO, iar programele utilizator nu vad structura hard daca
aceste adrese nu sunt la indemana utilizatorilor.

La alte calculatoare registrele dispozitivului sunt plasate intr-
un spatiu special de porturi de IO, unde fiecare registru are
o adresa de port. Pe aceste masini, in modul nucleu, sunt
disponibile instructiuni speciale IN si OUT, care permit
driverelor sa citeasca si sa scrie din/in registre.

Ambele sisteme, primul care inlatura nevoia de instructiuni
speciale de IO, dar foloseste o parte a spatiului de adrese,
precum si al doilea care nu foloseste spatiul de adrese, dar
necesita instructiuni speciale,sunt folosite in egala masura.

Operatiile de IO pot fi realizate in trei moduri diferite:
1. busy waiting – asteptare ocupata -cel mai simplu mod,
un program utilizator genereaza un apel de sistem, pe
care nucleul il transforma intr-un apel de procedura la
driverul corespunzator; acesta porneste dispozitivul de
IO si ramane intr-o bucla continua de interogare a
dispozitivului, in care verifica daca s-au realizat
operatiile cerute (de obicei exista un bit care indica daca
dispozitivul este ocupat). Dupa ce s-au finalizat
operatiile de IO driverul transfera datele (daca ele exista)
si se intoarce in program. SOcedeaza apoi comanda
apelantului; dezavantaj: retine UCP intr-o bucla de
interogare pana la terminarea activitatii dispozitivului.

2. se cere driverului sa declanseze activitatea dispozitivului
si sa solicite o intrerupere la terminarea activitatii; in
acest moment driverul nu mai asteapta, ci revine imediat
din apel. SO il blocheaza pe apelant, daca este nevoie si
cauta alte operatii de executat. Atunci cand controllerul
detecteaza sfarsitul transferului genereaza o intrerupere
care sa semnaleze incheierea activitatii.
Intreruperile sunt foarte importante pentru SO exemplu: un
proces, in trei pasi, de interactiune cu un dispozitiv IO

– Pasul 1 – driverul precizeaza controllerului ce este de facut,
prin scriere in registrele dispozitivului; controlerul
declanseaza apoi activitatea dispozitivului.
– Pasul 2 – dupa ce controllerul a terminat de citit sau de
scris numarul de octeti ce trebuiau transferati, va semnala
terminarea operatiei controlorului de intreruperi, folosind
anumite linii de magistrala.
– Pasul 3 – daca controllerul de intreruperi este pregatit sa
accepte intreruperea (poate sa nu o accepte daca este
ocupat cu o intrerupere de prioritate superioara), atunci
activeaza un pin al CPU.
– Pasul 4 – controllerul de intreruperi plaseaza numarul
dispozitivului pe magistrala, asa incat CPU sa-l poata citi
si sa stie care dintre dispozitive si-a incheiat activitatea (
mai multe dispozitive pot fi active in acelasi timp)

Procesarea intreruperii implica acceptarea intreruperii, rularea
rutinei de achitare si intoarcerea in programul utilizator.

De indata ce UCP a decis sa accepte intreruperea , contorul
program si PSW sunt memorate in stiva curenta, iar UCP
trece in mod nucleu.
Numarul dispozitivului poate fi folosit ca indice intr-o zona
de memorie (unde sunt localizate rutinele de tratare a
intreruperilor) pentru a gasi adresa rutinei de achitare
pentru dispozitivul respectiv. Aceasta zona de memorie
este numita si vector de intreruperi .
Dupa ce rutina de achitare (parte a driverului pentru
dispozitivul care a cerut intreruperea) s-a declansat, ea
salveaza contextul (contorul program si PSW) si apoi
transmite dispozitivului cererea.
Cand s-a incheiat rutina de achitare (deci operatia de IO s- a
terminat) programul se reia cu prima instructiune care nu a
fost inca executata.

3. a treia metoda de lucru cu dispozitivele IO utilizeaza un
chip special, numit DMA (Direct Memory Access , rom:
acces direct la memorie ) care poate controla fluxul de
biti intre memorie si un controller, fara interventia
sistematica a UCP.
UCP configureaza DMA, precizand numarul de octeti de
transferat, dispozitivul si adresa de memorie implicate si
directia, dupa care declanseaza transferul.
Dupa ce transferul s-a incheiat, DMA genereaza o
intrerupere, care este tratata cu metoda prezentata mai
sus.

Intreruperile pot surveni adesea, in momente mai putin
convenabile, cum ar fi intervalul in care ruleaza o alta
rutina de achitare.
UCP are la dispozitie o cale de a dezactiva intreruperile
pentru un timp si de a le reactiva mai tarziu.
Cat timp intreruperile sunt dezactivate, orice dispozitiv care
si-a incheiat activitatea mentine activ semnalul prin care
solicita intrerupere, dar UCP nu va fi intrerupt pana cand
intreruperile nu vor fi din nou activate.
Daca mai multe dispozitive isi termina executiile in timp ce
intreruperile sunt dezactivate, atunci controllerul de
intreruperi va decide care dintre intreruperi va fi achitata
prima, in functie de o ierarhie statica de prioritati atribuite
dispozitivelor. Dispozitivul cu prioritatea cea mai mare va
fi deservit primul, celelalte trebuie sa astepte.

Organizarea prezentata la inceputul cursului 4 a fost folosit pe
minicalculatoare si pe varianta originala de IBM PC. Cu
timpul, procesoarele si memoria au devenit mai rapide, iar
capacitatea unei singure magistrale (IBM PC) de a
administra tot traficul a fost extinsa la maxim.
De aceea au trebuit cautate alte solutii. Au fost adaugate
magistrale suplimentare dedicate atat traficului cu
dispozitive de IO mai rapide, cat si celui dintre UCP si
memorie. Ca o consecinta a acestei evolutii un sistem
complex x86 arata astazi ca in figura urmatoare:
MAGISTRALE

Acest sistem are mai multe magistrale (cache, memorie, PCI,
USB, SATA si DMI), fiecare dintre ele cu functii si rate de
transfer diferite. SO trebuie sa stie de existenta lor pentru
configurare si administrare.
Magistrala principala este PCIe (Peripheral Component
Interconnect Express). A fost inventata de Intel ca
succesor al magistralei PCI mai veche, care, l-a randul ei, a
fost un inlocuitor al magistralei originale IBM PC
ISA(Industry Standard Architecture) .
Capabila sa transfere zeci de GB/s, PCIe e mult mai rapida
decat predecesoarele sale. Magistrala ISA, care a fost
magistrala originala a IBM PC/AT functiona la 8.33MHz
si putea sa transfere doi octeti in acelasi timp, aceasta
insemnand o viteza maxima de 16,67MB/s. Magistrala era
gandita si pentru compatibilitate cu placile de IO mai vechi
si mai lente.

Magistrala PCI a fost inventata de Intel ca o succesoare a
magistralei ISA. Functiona la 66 MHz si transfera 8 octeti
in acelasi timp, ceea ce insemna o rata de transfer de
528MB/s.
PCIe, pe langa faptul ca e mult mai rapida decat
predecesoarele ei, este si foarte diferita de acestea. Pana la
crearea sa in 2004, cele mai multe magistrale erau paralele
si partajate.
Shared bus architecture = mai multe dispozitive folosesc
aceleasi fire pentru a transfera date. Din aceasta cauza,
atunci cand mai multe dispozitive, au date de transmis, este
nevoie de un arbitru care sa determine care dintre ele poate
folosi magistrala.
Ca diferenta, PCIe foloseste conexiuni dedicate, point- to-
point .

Parallel bus architecture = (folosita in traditionalul PCI) se
trimite fiecare cuvant de date pe mai multe fire. De
exemplu, pe magistralele PCI comune, un singur numar pe
32 de biti e trimis pe 32 de fire paralele.
Ca diferenta, PCIe foloseste serial bus architecture si trimite
toti bitii intr-un mesaj intr-o singura conexiune (cun.
banda ), asem. unui pachet de retea. Este o modalitate mult
mai simpla, pentru ca nu trebuie sa te asiguri ca toti cei 32
de biti ajung la destinatie exact in acelasi moment.
Paralelismul este inca folosit, pentru ca poti avea mai
multe benzi in paralel. De exemplu, putem folosi 32 de
benzi (lanes) pentru a transporta 32 de mesaje in paralel.
Cum viteza dispozitivelor periferice (de ex. placi de memorie,
adaptoare grafice) creste rapid, standardul PCIe este
upgradat la fiecare 3-5 ani. Momentan, 16 benzi de
PCIe2.0 ofera 16GB/s, PCIe3.0 – 32GB/s, la PCIe 4.0 – o
noua dublare-in 2017??. Pana atunci, avem inca mostenite
dispozitive pentru vechiul standard PCI. Asa cum se obs.
in fig

aceste dispozitive sunt conectate pe un hub separat. In viitor,
cand PCI va trece din “vechi” in “antic” va fi posibil ca
toate dispozitivele PCI sa fie atasate unui alt hub care se va
conecta cu cel principal, creindu-se astfel un arbore de
magistrale. (PCH ca familie de microcipuri Intel a aparut
in 2008 controleaza anumite cai de date si suporta
functiuni folosite in conjunctie cu procesoarele Intel –
system clock, display, IO controller ).
In configuratia data in figura, CPU se adreseaza memoriei
printr-o magistrala rapida DDR3, unui dispozitiv grafic
extern printr-un PCIe, si tuturor celorlalte dispozitive prin
intermediul PCH pe o magistrala DMI(Direct Media
Interface) . PCH, la randul sau conecteaza toate celelalte
dispozitive folosind Universal Serial Bus pentru a
comunica cu dispozitivele USB, SATA pentru a com. cu
hard discurile si driverele DVD, si PCIe pentru Ethernet.
(Am mentionat deja vechile dispozitive PCI care folosesc
o magistrala PCI traditionala.)

Mai mult, fiecare nucleu are un cache dedicat si un cache mai
mare care este partajat intre ele. Fiecare dintre aceste
cache-uri introduce alta magistrala.
USB (Universal Serial Bus) a fost inventata pentru a putea
conecta la calculator toate dispozitivele lente, cum sunt
tastatura si mouse-ul. (Diferenta, sa numesti un disp.
modern USB3.0 la 5Gbps “lent” – > generatia care a
crescut cu 8Mbps ISA – ca magistrala principala la primul
PC IBM.) Ea foloseste un conector de mici dimensiuni, cu
4 pana la 11 fire, depinde de versiune, parte dintre ele (de
ex. 2/4) fiind utilizate pentru a alimenta dispozitivele USB.
USB este o magistrala centralizata, la care un dispozitiv
principal (USB root) interogheaza dispozitivele IO la
fiecare 1ms pentru a verifica daca participa la trafic.
Dispozitivul central poate gestiona o “sarcina” totala de
12Mbps (USB1.0 sau 1,5MB/s), USB 2.0 mareste viteza la
480 Mbps si USB 3.0 la 5Gbps.

Toate dispozitivele USB partajeaza un singur driver de
dispozitiv USB, aceasta insemnand ca nu mai este necesara
instalarea de drivere suplimentare pentru dispozitivele
USB noi. Prin urmare, orice dispozitiv USB poate fi
conectat la un calculator si va functiona imediat, fara sa fie
necesara reinitializarea.
SCSI (Small Computer System Interface , rom: interfata de
sistem pentru calculatoare mici ) este o magistrala cu
performante ridicate, dedicata discurilor rapide,
dispozitivelor de scanare si altor dispozitive care cer
largime de banda considerabila. A fost prezenta pe
sistemele Macintosh inca de la aparitia acestora. O
intalnim atat in servere cat si in statiile de lucru. Poate
functiona cu viteze de pana la 640MB/s (evolutie,1986-
5MB/s 2004-160MB/s).

Pentru ca SO sa poata lucra intr-un mediu cum este cel din
figura, el trebuie sa stie ce dispozitive dunt conectate la
calculator si sa le configureze. Aceasta cerinta i- a
determinat pe Intel si pe Microsoft sa proiecteze un sistem
PC ce nu necesita instalare, numit plug and play
(conecteaza-l si porneste), bazat pe un concept similar cu
cel implementat prima data de Apple Macintosh. Inainte de
introducerea acestui concept, fiecare placa IO avea un
nivel de cerere de intrerupere fix si adrese fixe pentru toate
registrele de IO proprii.De exemplu, tastatura folosea
intreruperea 1 si adresele de IO 0x60 pana la 0x64,
controllerul floppy disk-ului folosea intreruperea 6 si
adresele de IO 0x3F0 pana la 0x3F7, imprimanta folosea
intreruperea 7 si adresele 0x378 pana la 0x37A s.a.m.d.

Totul parea in regula pana in situatia in care, de ex.,
utilizatorul cumpara o placa de sunet si o placa modem,
care, din intamplare, foloseau si una si alta intreruperea 4.
In acest fel ele intrau in conflict si prin urmare nu puteau
lucra impreuna. Solutia initiala a fost adaugarea unor
comutatoare DIP sau a unor jumperi pe fiecare placa IO si
instruirea utilizatorului sa seteze in asa fel nivelurile de
intrerupere si adresele incat sa evite conflictele in sistem.
Dificil de configurat sistemele in acest fel.
Conceptul de autoinstalare (plug and play) determina sistemul
sa colecteze automat informatii despre toate dispozitivele
IO, sa atribuie centralizat nivelurile de intrerupere si
adresele de IO, si apoi sa transmita datele de configurare
fiecarei placi. Acest mod de lucru e asemanator initializarii
calculatorului (booting)  BIOS (Basic Input Output
System , rom: sistem de baza pentru operatii IO).

Similar Posts