Sunteți pe pagina 1din 69

Arhitectura Sistemelor de Calcul

Sisteme de operare

1
Obiective si functii
• Convenienta
—Face usor utilizabil calculatorul
• Eficienta
—Permite o mai buna utilizare a resurselor calculatorului
Niveluri si vederi ale unui sistem de calcul
SO
• Actioneaza ca si program interfata intre utilizator si hardware-
ul sistem si controleaza executia tuturor programelor
Servicii ale SO
• Managementul memoriei
• Crearea programului
• Executia programului (processor management)
• Acces la dispozitivele de I/O (Device management)
• Acces controlat la fisiere (File management)
• Acces sistem (security)
• Detectia erorii si generare raspuns
• Controlul performantei sistemului
• Urmarirea gradului de utilizare a resurselor
(Accounting) – job accounting
• Coordonare intre alte software-uri si utilizatori
SO ca si manger de resurse
Tipuri de SO
• Interactiv
• Orientat pe loturi de lucrari (Batch)

• Mono-utilizator (Uni-programming)
• Multi-utilizator (multi-programming, Multi-tasking)

• Time-sharing OS
• Distributed OS
• Network OS
• Real Time OS
Servicii oferite de SO
• Atat utilizatorilor cat si programelor
—Pt. programe asigura un mediu de executie
—Pt. utilizatori asigura servicii pentru executia programelor
intr-o maniera convenabila
Servicii oferite de SO
• Program execution
• I/O operations
• File System manipulation
• Communication
• Error Detection
• Resource Allocation
• Protection
Primele sisteme
• De la inceputul anilor 1940 pana la 1950
• Fara SO
• Programele interactioneaza direct cu hardware
• Doua pb.principale:
—Scheduling
—Setup time
Sisteme Batch Simple
• Program monitor rezident in memorie
• Utilizatorii trimit jobs-uri la operator
• Operatorul dozeaza lucrarile - batches jobs
• Monitorul controleaza secventa de evenimente pentru
procesarea batch
• Cand se termina o lucrare, se reintoarce controlul la monitor
care citeste alta lucrare
• Monitor manevreaza plamificarea (scheduling)
Batch processing

• Batch processing is a technique in which Operating


System collects one programs and data together in a
batch before processing starts.
Strcutura memoriei pentru Monitorul
rezident
Limbaj de control al Job-urilor
• Instructii la monitor
• De obicei indicate prin$
• e.g.
—$JOB
—$FTN
—... Cateva instructii FORTRAN
—$LOAD
—$RUN
—... Cateva date
—$END
Facilitati Hardware
• Protectia memoriei
—Pentru protejarea monitorului
• Timer
—Pentru prevenirea monopolizarii sistemului de un job
• Instructii privilegiate
—Executate doar de Monitor
—e.g. I/O
• Intreruperi
—Permite abandonarea si castigarea controlului
Sisteme Batch multi-programate
• Dispozitivele I/O f.lente
• Cand un program asteapta un I/O, altul poate utiliza
CPU

• Citire o inregistrare 0.0015s


• Executie 10 instructii 0.0001s
• Scriere o inregistrare 0.0015s
• TOTAL 0.0031s

• Procent utilizare CPU=0.0001/0.0031=3.2%


Mono programare
Multi-Programare cu Doua Programe
Multi-Programare cu Trei Programe
Utilizare
Multitasking
• Multiple joburi sunt executate de CPU simultan prin comutarea
activitatii intre ele
• Comutarea se face atat de frecvent incat utilizatorii pot
interactiona cu fiecare program pe parcursul rularii sale
Multiprogramare
• Cand 2 sau mai multe programe rezida
simultan in memorie, partajarea
procesorului este referita prin
multiprogramare

• Eficientizeaza utilizarea procesorului


prin organizarea job-urilor astfel incat
CPU sa aiba permanent ceva in
executie
Spoofing
• Acronim pentru operatii periferice simultane on line
• Se refera la dispunerea datelor diferitelor job-uri intr-un buffer
– spatiu de memorie dedicat (sau hard disk) accesibil
dispozitivelor I/O
Proces
• Program in executie – executia unui proces progreseaza intr-o
maniera secventiala
• Entitate ce reprezinta unitatea de baza a ceea ce se
implementeaza pentru executie intr-un sistem
• Componentele unui proces:

Componenta/descriere

1 Obiect Program
Cod pentru executie
2 Date
Date pentru utilizare in executia programului
3 Resurse
In timpul executiei programului, poate necesita anumite resurse
4 Status
Verifica stutsul executiei programului
Program
• Nu e un proces
• Este o entitate statica compusa din declaratii
program, in timp ce un proces este o entitate
dinamica
• Un program ocupa un loc in memorie
• Nu realizeaza de unul singur nici o actiune
Thread
• Un thread este un flux de executie in cadrul codului
unui proces cu PC propriu, registre proprii si stiva
Diferente intre Proces si Thread
Proces Thread

Procesele utilizeaza resursele in mod Firele de executie consuma mai putine


intensiv resurse

Comutarea proceselor necesita Comutarea firelor de executie nu


interactie cu SO necesita interactie cu SO

Intr-un mediu multi-procesor, fiecare Toate firele de executie pot partaja


proces executa acelasi cod, dar are acelasi set de fisiere deschise respectiv
memorie si resurse proprii procese copil

Cand se blocheaza un proces, nu se Cand un fir de executie este blocat sau


poate executa nici un alt proces pana in asteptare, un alt fir de executie din
la deblocarea primuluii cadrul aceluiasi task poate fi rulat

Procesele multiple ce nu utilizeaza Procesele cu mai multe fire de executie


fire de executie utilizeaza mai multe utilizeaza mai putine resurse
resurse
In procesele multimple, fiecare Un fir de executie poate citi, scrie sau
proces opereaza independent fata de schimba datele altui fir de executie
celelalte
Sisteme cu partajarea timpului (Time Sharing)
• Permit utilizatorilor sa interactioneze direct cu
calculatorul
—i.e. Interactive
• Multi-programarea permite unui numar de utilizatori
sa interactioneze cu calculatorul
Planificarea - Scheduling
• Cheia multi-programarii

— Pe termen lung
— Pe termen mediu
— Pe termen scurt
— I/O
Long Term Scheduling
• Determina ce program este supus procesarii
— i.e. controleaza gradul de multi-programare
• Odata supus procesarii, un job devine proces pentru
short term scheduler - sau devine un job swapped out
pentru medium term scheduler
Medium Term Scheduling
• Parte a unei functii swapping (mai tarziu …)
• De obicei bazata pe nevoia de manevrare a multi-
programarii
• Daca nu exista memorie virtuala, managementul
memoriei este discutabil
Short Term Scheduler
• Dispecer
• Decizii fine legate de ce job sa se execute urmatorul
— i.e. ce job urmeaza sa utilizeze procesorul in urmatorul
esantion de timp
Modelul Procesului cu 5 stari
Blocul de control al procesarii (Process
Control Block)
• Identificator
• Stare
• Prioritate
• Numarator program (program pointer)
• Pointeri la memorie
• Date de context
• Stare I/O
• Informatie de tip Accounting
Diagrama PCB
Exemplu de Scheduling
Elemente cheie a SO
Planificarea proceselor (Process Scheduling)
Managementul memoriei
• Mono-programare
—Memoria impartita in doua
—Una pentru sistemul de operare (monitor)
—Una pentru programul curent in executie
• Multi-programare
—Partea “user” este sub-divizata si partajata de procesele
active
Swapping
• Problema: I/O sunt atat de lente comparativ cu CPU,
incat chiar in sistemele cu multi-programare, CPU
este in starea idle marea majoritate a timpului.
• Solutii:
—Cresterea memoriei principale
– Scumpa
– Duce la marirea programelor
—Swapping
Ce este Swapping?
• Coada pe termen lung a proceselor memorate pe disc
• Procesele “swapped in” pe masura ce spatiul devine
disponibil
• Pe masura ce se finalizeaza un proces el este mutat
din memoria principala
• Daca unul din procesele din memorie sunt gata (i.e.
toate I/O blocate)
—Swap out un proces blocat
—Swap in un proces gata sau un proces nou
—Deci swapping este un proces I/O …
Utilizarea
Swapping
Partitionarea
• Impartirea memoriei in sectiuni pentru alocarea
proceselor (inclusiv SO)
• Partitii de dimensiune fixa
—Pot sa nu fie de dimensiune egala
—Procesul este inscris in spatiul cel mai mic ce il poate
cuprinde (best fit)
—Exista o risipa de memorie

Solutia: partitionari de dimeniune variabila


Partitionare de
dimensiune fixa
Partitionari de dimeniune variabila (1)
• Se aloca exact memoria necesara unui proces
• Aceasta duce la o gaura la sfrasitul memoriei prea
mica pentru a putea fi utilizata
—O singura gaura mica – mai putina risipa
• Cand toate procesele sunt blocate se face swap out
pentru un proces si se aduce altul
• Noile procese pot fi mai mici decat procesele
swapped out
•  O alta gaura
Partitionari de dimeniune variabila (2)
• Eventual se creaza multe gauri (fragmentare)
• Solutii:
—Fuzionare – Unirea a doua gauri adiacente intr-una mai
mare
—Compactare – Din timp in timp se parcurge memoria si,
prin mutari de zone, se compacteaza gaurile in una singura
(c.f. de-fragmentarea discului)
Efectul partitionarii dinamice
Realocarea
• Nu exista garantii ca procesul se va incarca in acelasi
loc in memorie
• Instructiile contin adrese
—Localizari de date
—Adresari pentru instructiuni (branching)
• Adresare logica – relativa la inceputul programului
• Adresare fizica – localizarea actuala din memorie (de
data asta)
• Conversia automata pe baza adresei de baza
Paginarea
• Impartirea memoriei in dimensiuni egale, mici –
pagini (small chunks -page frames)
• Impartirea programelor (proceselor) in parti mici de
dimensiuni egale – pagini
• Se aloca numarul necesar de pagini unui proces
• SO mentine lista paginilor libere
• Un proces nu necesita zone de pagini continue
• Pentru a se tine evidenta se utilizeaza o tabela de
pagini
Alocarea cadrelor libere
Adresarea logica si fizica – Paginarea
Memoria virtuala
• Demand paging
—Nu necesita in memorie toate paginile unui proces
—Aduce paginile pe masura ce sunt necesare
• Page fault
—Pagina ceruta nu este in memorie
—SO trebuie sa faca swap in pagina ceruta
—Trebuie facut swap out la o pagina pentru a face loc
—Selecteaza pe baza istoriei recente pagina ce se elibereaza
Probleme de conflict al accesului la memorie
(Thrashing)
• Prea multe procese in prea putina memorie
• SO isi petrece tot timpul facand swapping
• Se realizeaza putin sau de loc lucru util
• Luminita discului este aprinsa tot timpul

• Solutii
—Algoritmi de inlocuire a paginilor buni
—Reducere a numarului de procese ce ruleaza
—Crestere a memoriei de lucru
Avantaj
• Nu este necesar ca tot procesul sa fie in memorie
pentru rularea lui
• Se poate face swap in pentru pagini pe masura ce
sunt necesare
• Astfel, se pot rula acum procese ce sunt mai mari
decat totalul de memorie disponibil

• Memoria principala este numita memorie reala


• User/programator vede mult mai multa memorie –
memorie virtuala
Structura de inversare a paginii
Translation Lookaside Buffer (TLB)
• Fiecare referinta la memoria virtuala necesita 2
accese la memorie
—Aducerea intrarii in tabelul de aducere
—Aducere date
• Se utilizeaza cache special pentru tabela de pagini
—TLB
Operarea TLB
TLB si Operarea Cache
Segmentarea
• Paginarea nu este vizibila programatorului (de
obicei)
• Segmentarea este vizibila programatorului
• De obicei segmente diferite alocate programelor si
datelor
• Pot fi un numar de segmente de date si de program
Avantajele segmentarii
• Simplifica manevrarea structurilor de date ce se
dezvolta
• Permite modificarea si compilarea independenta a
programelor, fara re-link-editare si re-alocare
• Se preteaza la partajare intre procese
• Se preteaza usor la implementarea mecanismelor de
protectie
• Anumite sisteme combina segmentarea cu paginarea
Pentium II
• Hardware pentru segmentare si paginare
• Ne-segmentat, ne-paginat
— Adresa virtuala = adresa fizica
— Complexitate mica
— Performanta inalta
• Ne-segmentat, paginat
— Memoria vazuta ca si spatiu de adresare liniar paginat
— Protectie si management prin paginare
— Berkeley UNIX
• Segmentat, ne-paginat
— Colectie de spatii de adresare locale
— Protectie la nivel de octet
— Tabela de translatare necesara este on-chip cand segmentul este in memorie
• Segmentat, paginat
— Segmentarea utilizata pentru definirea partitiilor logice de memorie pentru
controlul accesului
— Paginarea manevreaza alocarea memoriei intre partitii
— Unix System V
Mecanismul de translatare a adreselor la
Pentium II
Segmentarea adreselor la Pentium II
• Fiecare adresa virtuala are 16 bit pentru segment si un offset
pe 32 biti
• 2 biti ai segmentului sunt pentru mecanismul de protectie
• 14 biti specifica segmentul
• Memorie virtuala ne-segmentata 232 = 4Gbytes
• Segmentata 246=64 terabytes
—Poate fi mai mare – depinde de ce proces este activ
—Jumatate (8k segmente de 4 Gbytes) este globala
—Jumatate este distincta si locala pentru fiecare proces
Protectia Pentium II
• Bitii de protectie dau 4 niveluri de privilegii
—0 cel mai protejat, 3 cel mai putin protejat
—Utilizarea nivelurilor este dependenta de software
—De obicei nivelul 3 pentru aplicatii, nivelul 1 pentru SO si
nivelul 0 pentru kernel (nivelul 2 nu e utilizat)
—Nivelul 2 poate fi utilizat pentru apps ce au securitate
interna e.g. database
—Anumite instructii lucreaza doar cu nivelul 0.
Paginarea la Pentium II
• Segmentarea poate fi dezactivata
— In cazul cand se utilizeaza adresarea liniara
• Page table lookup pe doua niveluri
— Primul, page directory
– Max 1024 intrari
– Imparte 4G de memorie liniara in 1024 grupe de pagini de 4Mo
– Fiecare tabela de pagini are 1024 intrari ce corespund la 4Kbyte
pages
– Poate utiliza o page directory pentru toate procesele, una pe proces
sau mixat
– Page directory pentru procesul curent este tot timpul in memorie
— Utilizeaza TLB ce retine 32 intrari in tabela de pagini
— Doua dimensiuni de pagina disponibile: 4k sau 4M
Hardware-ul de management al memoriei la
PowerPC
• 32 bit – paginare cu segmentare simpla
— 64 bit – paginare cu segmentare mai puternica
• Sau amandoua, blocheaza translatarea adresei
— Mapeaza 4 blocuri mari de instructiuni & 4 de memorie pentru bypass-
area paginarii
— e.g. Tabelele SO sau bufferele frame-urilor grafice
• 32 bit adresare efectiva
— 12 bit selector byte
– =pagini de 4ko
— 16 bit id pagina
– 64k pagini pe segment
— 4 indica unul din cele 16 registre
– Registrele segment de sub controlul SO
Formatele de management al memoriei la
PowerPC 32-bit
Translatarea adresei la PowerPC 32-bit
Bibliografie
• Stallings, Computer Architec, Pearsonure and
Organization
• http://www.tutorialspoint.com/operating_system/os_
quick_guide.htm