+ All Categories
Home > Documents > Sisteme de Operare!!!!

Sisteme de Operare!!!!

Date post: 24-Jul-2015
Category:
Upload: dragos-spafiu
View: 1,643 times
Download: 41 times
Share this document with a friend
61
CURS 1 TIPURI DE SISTEME DE CALCUL SI CARACTERISTICILE LOR: Sistemele de calcul se impart in: MICROCALCULATOARE, accesibile d.p.d.v al pretului, dimensiunii reduse, portabile, pot fi folosite in orice domeniu, lucreaza in retea, putand realize schimburi de date; MINICALCULATOARELE – au dimensiuni medii, mai scumpe decat PC- urile, au fost create pentru executarea unor functii specializate: aplicatii multiutilizator, masini cu control numeric, automatizari industrial, au putere si capacitate de stocare mai mare, UCP complexa, system de I/O foarte dezvoltat in sensul comunicarii prin retea de periferice in sistem multi-utilizator; MAIN-FRAME-uri situate intre supercalc. Si minicalc. procesor foarte complex, volum mare de stocare in UM, sistem de I/O complex, orientat pe gestionare de statii de lucru, permite acces multi-utilizator, functioneaza de regula fara intrerupere, ceea ce presupune accesul controlat la date si un sistem de protectii adecvat; SUPERCALCULATOARELE – cele mai puternice, complexe si scumpe, au procesorul format dintr-un numar mare de microprocesoare, proiectate pentru calcul paralel. FUNCTIILE SO: Functiile de baza ale unui SO sunt extinderea masinii si gestionarea resurselor din perspectiva multiplexarii intre timp si spatiu. CE TIP DE MEMORIE SE CITESTE INITIAL LA RESTARTAREA UNUI SISTEM DE CALCUL? Memoria ROM se citeste initial. CE REPREZINTA ISA? Industry Set Architecture este o magistrala de date inventata de IBM. LA CE SE REFERA TERMENUL DE MULTIPLEXARE Multiplexarea este mijlocul prin care gradul de utilizare al unei resurse este imbunatatit ca urmare a deservirii simultane a mai multor utilizatori. DEFINITI TERMENUL DE MULTIPROGRAMARE Multiprogramarea este tehnica de exploatare a SO care permite existenta simultana in memoria interna a mai multor programe care se executa concurent, in alte parti fixe de memorie. DEFINITI TERMENUL DE SPOOLING
Transcript
Page 1: Sisteme de Operare!!!!

CURS 1

TIPURI DE SISTEME DE CALCUL SI CARACTERISTICILE LOR:

Sistemele de calcul se impart in: MICROCALCULATOARE, accesibile d.p.d.v al pretului, dimensiunii reduse, portabile, pot fi folosite in orice domeniu, lucreaza in retea, putand realize schimburi de date; MINICALCULATOARELE – au dimensiuni medii, mai scumpe decat PC-urile, au fost create pentru executarea unor functii specializate: aplicatii multiutilizator, masini cu control numeric, automatizari industrial, au putere si capacitate de stocare mai mare, UCP complexa, system de I/O foarte dezvoltat in sensul comunicarii prin retea de periferice in sistem multi-utilizator; MAIN-FRAME-uri situate intre supercalc. Si minicalc. procesor foarte complex, volum mare de stocare in UM, sistem de I/O complex, orientat pe gestionare de statii de lucru, permite acces multi-utilizator, functioneaza de regula fara intrerupere, ceea ce presupune accesul controlat la date si un sistem de protectii adecvat; SUPERCALCULATOARELE – cele mai puternice, complexe si scumpe, au procesorul format dintr-un numar mare de microprocesoare, proiectate pentru calcul paralel.

FUNCTIILE SO:

Functiile de baza ale unui SO sunt extinderea masinii si gestionarea resurselor din perspectiva multiplexarii intre timp si spatiu.

CE TIP DE MEMORIE SE CITESTE INITIAL LA RESTARTAREA UNUI SISTEM DE CALCUL?

Memoria ROM se citeste initial.

CE REPREZINTA ISA?

Industry Set Architecture este o magistrala de date inventata de IBM.

LA CE SE REFERA TERMENUL DE MULTIPLEXARE

Multiplexarea este mijlocul prin care gradul de utilizare al unei resurse este imbunatatit ca urmare a deservirii simultane a mai multor utilizatori.

DEFINITI TERMENUL DE MULTIPROGRAMARE

Multiprogramarea este tehnica de exploatare a SO care permite existenta simultana in memoria interna a mai multor programe care se executa concurent, in alte parti fixe de memorie.

DEFINITI TERMENUL DE SPOOLING

Spooling reprezinta un mod eficient de exploatare a sistemelor de calcul seriale, bazat pe principiul separarii operatiilor de intrare de op. de iesire si de restul operatiilor.

CE REPREZINTA GUI?

Graphical User Interface.- este numit sistemul de afișaj grafic-vizual pe un ecran, situat funcțional între utilizator și dispozitive electronice cum ar fi computere, dispozitive personale de tip hand-held (playere MP3, playere media portabile, dispozitive de jucat), aparate electrocasnice și unele echipamente de birou. Pentru a prezenta toate informațile și acțiunile disponibile, un GUI oferă pictograme și indicatori vizuali, în contrast cu interfețele bazate pe text, care oferă doar nume de comenzi (care trebuie tastate) sau navigația text.

Page 2: Sisteme de Operare!!!!

CARE ESTE DIFERENTA DINTRE SO PENTRU RETEA SI SO PENTRU OPERARE DISTRIBUITE?

Diferenta este ca intr-un sistem distribuit existenta mai multor calculatoare autonome este transparenta pentru utilizator. Utilizatorul unui sistem obisnuit nu este constient ca exista mai multe procesoare, in schimb intr-un sistem central, utilizatorii trebuie sa se conecteze explicit la o anumita masina.

TIPURI DE SISTEME DE OPERARE

Main-frame, Server, Multiprocesor,Pc,Real-Time, Sensor mode, Smart card.

AVANTAJELE SISTEMELOR PARALELE:

Avantajele unui sistem paralel sunt: executarea simultana a doua sau a mai multor preocese, castigandu-se astfel timp.

DESCRIETI MULTIPROCESAREA ASIMETRICA/SIMETRICA

In multi-procesarea asimetrica(slaba conectare) procesoarele sunt dedicate unui anumit tip de sarcini; de accea un procesor poate fi neutilizat daca sarcinile sale nu sunt necesare. In multi procesarea simetrica(conectare stransa) fiecare procesor este disponibil pentru orice task.

DESCRIETI SISTEMELE CLUSTER

Sunt sisteme multiprocesor, compuse din doua sau mai multe sisteme, individuale. Definitia acceptata in general este ca sistemele cluster impartasesc depozitarea si sunt legate via LAN.

CLASIFICATI SO DUPA DESTINATIA LOR

In functie de sistemul de calcul pe care vor fi utilizate SO sunt: Main-frame(SO), Server(SO), Multiprocesor(SO), PC SO, Real-Time SO, Embedded SO, Smart card So, Sensor mode SO.

CICLUL DE BAZA AL FUNCTIONARII UNUI PROCESOR

Faza de pregatire/Extragere instructiune – Decodificarea – Executarea instructiunii

DEFINITII

PSW – program status word

IP – Instruction pointer

SP – stack pointer

RAM- Random acces memory

ROM – read only memory

EEPROM – electrically erasable programable read only memory

CMOS – complimentary metal oxide semiconductor

Page 3: Sisteme de Operare!!!!

APEL DE SISTEM

Apelul de sisteme inseamna de fapt apel de Kernel, deci invocarea SO

TIPURI DE MEMORIE

Memorie temporara – Cache si RAM

Memorie Permanenta – ROM,HDD, CD-ROM, FLASH MEMORY.

MODALITATEA DE FUNCTIONARE A MEMORIEI CACHE

Pentru a se recupera din timpul necesar la memorie se apeleaza la memoria CACHE care retine date necesare pentru rularea programelor active.

STRUCTURA UNUI HDD

D.p.d.v constructiv, HDD-ul contine unul sau mai multe suporturi magnetice(platane) fixate pe un ax vertical, care are rolul sa imprime miscarea de rotatie a acestora. Pentru stocarea informatieieste necesara formatarea si eventual partitionarea

MMU

Memory Management Unit = Translatarea – un proces de atribuire si organizare(„mopare”) a adreselor logice si adrese fizice de memorie

PLUG & PLAY

Sistemul PLUG & PLAY faciliteaza folosirea unei componente hardware intr-un sistem fara a fi nevoie de configurarea dispozitivului sau interventia utilizatorului in rezolvarea conflictelor de resurse.

MULTI-TASKING – capacitatea de a executa mai multe task-uri concomitent

PROCESOARELE MULTITHREADING SI MULTI-CARE

Firele de executie aduc noutatea pentru modelul proceselor, ca permit executiile multiple, independente in interiorul unui proces. Deoarece firele de executie au proprietati asemanatoare cu ale proceselor, acestea sunt numite procese usoare. Termenul MULTITHREADING este folosit pentru a descrie situatia in care esre permisa alocarea fiecarui fir, catre un CPU separat. Procesoarele MULTI-CARE sunt cele care au mai mult de un nucleu.

CE REPREZINTA O INTRERUPERE?

De fiecare data cand un proces isi incepe felia de timp, executoru initializeaza un circuit de temporizare care va masura urmatoarea cuanta. La sfarsitul cuantei , circuitul de temporizare genereaza un semnal care poarta numele de intrerupere.

CUM FUNCTIONEAZA O INTRERUPERE?

UCP reactioneaza la acest seamnal foarte asemanator ca atunci cand este intrerupt in timpul desfasurarii unei activitati: opreste activitatea, memoreaza unde anume se afla in operatia respectiva, si acorda apoi atentia cuvenita sursei intreruperii. La primirea unui semnal de intrerupere UCP completeaza ciclul curent de extragere-decodificare-executare, salveaza pozitia din procesul curent si incepe executia unui program de tratare a intreruperilor.

Page 4: Sisteme de Operare!!!!

DMA- direct memory acces – este un proces prin care un dispozitiv extern preia controlul magistralei, in locul procesorului. Ideea fundamentala este de a transfera blocuri de date in mod direct intre memorie si periferice, fara interventia UCP.

PCI – perifheral component interconnect. Componentele PCI fac legatura intre dispozitivele hardware si computer

SCSI – small component system interface. Controloarele SCSI sunt folosite in special in sistemele care au nevoie de performanta si stabilitate ridicata.

USB – universal serial bus

IDE – integrated drive electronics

IEEE 1934 (firewire) – defineste o interfata seriala de viteza inalta care se poate utiliza pentru conectarea la PC a dispozitivelor periferice.

BIOS – basic imput/output system

DIFERENTA DINTRE MODELUL DE FUNCTIONARE PIPELINE SI MODELUL DE FUNCTIONARE AL UNEI UCP SUPER SCALARE.

In cazul in PIPELINE - UCP are unitati separate pentru extragere, decodare si executare, deci in timp ce se executa instructiunea n, se decodeaza instructiunea n+1 si se extrage instructiunea n+2. In cazul modelului super scalar sunt mai multe unitati de executare, deci doua sau mai multe operatii sunt prelucrate in acelasi timp, decodate si descarcate intr-un buffer de asteptare pana pot fi executate.

SENSOR NODE OPERATING SYSTEM

Este un SO constituit dintr-o retea de senzori. Acesti senzori comunica intre ei si cu o statie de baza, folosind o conexiune wireless. Acesti senzori reprezinta de fapt mici calculatoare bazate pe o baterie cu un radio incorporat. Au putere limitata si nu pot functiona pe perioade lungi de timp. Fiecare senzor este un calculator cu CPU, RAM, ROM. Sistemul de operare trebuie sa fie mic si simplu, deoarece senzorii au putin RAM si baterii. Un sistem de operare cunoscut este TINY OS.

Curs 2

Ce reprezinta un proces?

Executia unui program se defineste ca o succesiune de procese care se realizeaza sub controlul sistemului de operare. Procesul reprezinta o secventa de activitati care se executa la un moment dat in sistemul de calcul si care se caracterizeaza prin:

- prelucrarile care se realizeaza, determinate de secventa de instructiuni care controleaza procesul;

- prelucrarile care se realizeaza, determinate de secventa de instructiuni care controleaza procesul;

- contextul de lucru asupra caruia actioneaza procesul, prin intermediul prelucrarilor, si care include resursele alocate procesului.

De ce avem nevoie de o memorie virtuala?

Atunci cand spatiul de adresare este prea mic este necesara memoria virtuala.

Page 5: Sisteme de Operare!!!!

Sistemul de protectie al fisierelor (directoare si fisiere obisnuite) in Unix.

~ este destinat controlului accesului la fisiere. Sistemul Unix realizeaza o buna separare a contextelor de executie. Exista trei tipuri de acces la fisiere:

R (read) – dreptul la citire, ce permite vizualizarea continutului;

W (write) – dreptul de sccriere, ce permite modificarea fisierului;

X (execute) – dreptul la executie, ce permite incarcarea fisierului in memorie si lansarea lui in executie sau citirea si executia unui fisier de comenzi Shell.

In cazul directoarelor, drepturile R, W, X sunt interpretate astfel:

R permite utilizatorului sa deschida si sa citeasca fisierul director cu comanda ls;

W permite utilizatorului sa creeze si sa stearga fisiere in directorul respectiv;

X permite ca sistemul sa caute in directorul respectiv in cursul prelucrarii unei cai de acces.

Pentru sistemul Unix exista trei categorii de utilizatori:

U (user) – proprietar;

G (group) – grup;

O (other) – alti utilizatori;

A (all) – pentru toate cele trei categorii.

Sistemul Unix este astfel conceput si elaborat incat fiecare fisier are un proprietar, de obicei persoana care l-a creat. Mai multi utilizatori care fac parte dintr-un compartiment de lucru (teme comune, domeniu comun etc) formeaza un grup.

Sistemul de protectie a accesului la un fisier se bazeaza pe confruntarea cererilor utilizatorului (r, w, x) cu drepturile asociate categoriei din care acesta face parte (u, g, o). Pentru precizarea completa a drepturilor de acces la un fisier sunt necesari 9 biti, 3 biti pentru fiecare categorie de utilizator.

Page 6: Sisteme de Operare!!!!

Ce este file descriptor?

Pentru a putea actiona asupra unui fisier, este nevoie inainte de toate de o metoda de a identifica in mod unic fisierul. In cazul functiilor discutate, identificarea fisierului se face printr-un asa-numit descriptor de fisier – acesta este un numar intreg care este asociat fisierului in momentul deschiderii acestuia.

Tipuri de fisiere Unix.

In Unix se deosebesc 4 tipuri de fisiere: ordinare (obisnuite), pipe, speciale si directoare. Unele documentatii considera fisierele pipe in categoria fisierelor speciale.

Un fisier obisnuit este creat de un proces. El poate contine o sursa (text) sau un fisier executabil (binar). Doua sau mai multe procese pot sa citeasca si sa scrie concurent in acelasi fisier. Rezultatul depinde de ordinea in care cererile individuale de I/E apar si sunt in general imprevizibile.Pana nu demult Unix-ul nu avea mecanisme eficiente pentru controlul accesului concurent. Versiunile mai noi de Unix detin un control al concurentei prin semafoare.

Un fisier pipe este un fisier care este citit de un proces o singura data si este de natura temporara. Daca data a fost citita din pipe o citire ulterioara este posibila doar daca procesul care a creat fisierul pipe recreeaza datele intr-un nou fisier pipe. Fisierele pipe sunt cunoscute ca fisiere FIFO (first in first out).

Fisierele speciale sunt fisiere atasate dispozitivelor de I/E. De exemplu, pentru fiecare partitie a unui hard disc se gaseste cate un fisier special – detine un i-node, care insa nu refera un bloc de date pe disc; in schimb, acest i-node contine un numar de dispozitiv care este folosit ca index intr-o tabela

Page 7: Sisteme de Operare!!!!

kernel de proceduri pentru dispozitive periferice. Pentru identificarea fiecarui dispozitiv se folosesc 2 numere: minor (identifica numarul dispozitivului de tipul dat) si major (identifica tipul dispozitivului).

Un director face legatura intre numele fisierelor si locul unde acestea sunt memorate pe disc. El nu contine efectiv fisierele care ii apartin, ci doar referintele la acestea, sub forma unei succesiuni neordonate de intrari de 16 biti.

Memoria tampon =>un tampon este o locatie temporara de memorie, care este utilizata in mod traditional, deoarece instructiunile UCP-ului pur si simplu nu pot referi in mod direct date stocate in dispozitivele periferice. Astfel, memoria adresabila este utilizata ca stadiu intermediar. In plus, astfel de tampoane pot fi viabile cand un bloc mare de date este asamblat sau dezasamblat (ca cerinta intr-un dispozitiv de stocare a datelor), sau cand datele trebuie trimise in alta ordine decat cea in care sunt produse. Castiful este prezent chiar daca datele tamponate sunt scrise in memoria tampon o singura data si citite din acesta o singura data.

Caracterizati o conducta.

Shell permite comunicarea intre procese prin conducte (pipes). Conductele sunt canale de date ce conduc la iesirea unui program catre intrarea altui program, fara crearea unor fisiere intermediare.

Ce inseamna a monta un sistem de fisiere?

Un disc fizic poate contine mai multe partitii logice, realizate de catre driverul de disc. Fiecare partitie are un nume de fisier dispozitiv. Un proces poate accesa datele unei partitii deschizand fisierul asociat acesteia, fisier tratat ca o succesiune de blocuri disc in care se poate scrie sau citi. O astfel de partitie disc poate contine un sistem logic de fisiere ce consta din: un bloc de boot, superblocul, lista de inoduri si blocuri de date. Un sistem de fisiere poate fi conectat logic (montat) intr-unul din nodurile arborelui unui alt sistem de fisiere prin intermediul apelului sistem „mount”. Demontarea se face folosind apelul sistem „umount”.

Ce reprezinta lseek?

Operatia lseek repozitioneaza cursorul de fisier, astfel incat o operatie read/write va lucra incepand cu aceasta noua pozitie.

Win32API – o interfata destinata programarii aplicatiilor pentru sistemul de operare Microsoft Windows; prin el, programatorul are acces direct la o mare parte a functiilor de nivel de baza ale sistemului de operare, putand crea aplicatii intr-un mod foarte flexibil.

Structura unui sistem de operare monolitic:

- un program principal care invoca procedurile de servicii necesare;- un set de proceduri de servicii care duc la indeplinire apelurile sistem;- un set de utilitare care vin in ajutorul procedurilor de servicii.

Page 8: Sisteme de Operare!!!!

Sistemele stratificare ofera o constructie mai clara si o administrare mai facila a sistemului de operare, cu anumite neajunsuri: definirea diferitelor nivele trebuie realizata cat mai clar inaintea conceperii efective a sistemului de operare, iar realizarea de apleuri sistem din nivelele superioare necesita un overhead mare pentru a putea identifica nivelul tinta si nivelul de origine al apelului sistem.

Masina virtuala – face posibila rularea unui alt sistem de operare intr-o „fereastra” a sistemului de operare principal, fara a repartitiona hard-disc-ul.

Structura unui microkernel – structura modulara, uniformitate a functiilor oferite de drivere, lejeritate in scrierea driverelor, mod unificat de acces la functiile similare a h/w-ului facut de producatori diferiti.

Structura unui sistem de operare bazat pe modelul client server:

~ este o structura sau arhitectura aplicatie distribuita care partajeaza procesarea intre furnizorii de servicii numiti servere si elementele care solicita servicii numite clienti. Clientii si serverele comunica printr-o retea de calculatoare, de obicei prin internet, avand suporturi hardware diferite, dar pot rula si pe acelasi sistem fizic.Un server (fizic) ruleaza unul sau mai multe programe server, care partajeaza resursele existente cu clientii. Clientul nu partajeaza niciuna dintre resursele proprii, ci apeleaza la resursele serverului prin functiile server.Clientii initiaza comunicatia cu serverele si asteapta mesajele acestora. Pentru mentinearea legaturii intre cei doi, indiferent de pauzele care intervin, se foloseste conceptul de sesiune, care de obicei este limitata in timp.

Curs 3:

Definiti procesul.Un proces este un program secvential in executie, impreuna cu zona sa de date, stiva si

numaratorul de instructiuni (program counter). Orice proces este executat secvential, iar mai multe processe pot sa ruleze in paralel. De cele

mai multe ori, executia in paralel se realizeaza alocand pe rand procesorul cate unui proces. Desi la un moment dat se executa un singur proces, in decurs de o secunda de exemplu, pot fi executate portiuni din mai multe procese. Din aceasta schema rezulta ca un process se poate gasi, la un moment dat, in una din urmatoarele stari:

- in executie (RUNNING) – procesul se gaseste in executie atunci cand procesorul ii executa instructiunile;

- pregatit pentru executie (READY) – este un proces care, desi ar fi gata sa isi continue executia, este lasat in asteptare din cauza ca un alt proces este in executie in mod voit sau procesul efectureaza o operatie in afara procesorului, mare consumatoare de timp (cum e cazul operatiilor de intrare – iesire – acestea sunt mai lente si intre timp procesorul ar putea executa parti din alte procese);

- blocat (BLOCKED).

Cum se creaza un proces?Sunt patru pasi principali care duc la crearea unui proces:- initializarea sistemului;- executarea unui sistem de apel pentru crearea unui proces de catre un proces aflat deja in

rulare;- o cerere de creare proces a utilizatorului;

Page 9: Sisteme de Operare!!!!

- initializarea unui set de “batch jobs” (secventa de comenzi care se executa fara interventie din afara).

Cum se incheie executia unui proces?Un proces se poate incheia din cauza unuia din patru motive:- iesire normala (voluntara);- iesire pricinuita de eroare (voluntara);- eroare fatala (involuntara);- incheiere pricinuita de alt process (involuntar).

Caracterizati ierarhia de procese.In unele sisteme, cand un proces creaza un altul, procesul parinte contiua sa fie asociet cu cel

copil. Procesul copil poate si el sa creeze unul sau mai multe procese, astfel creandu-se o ierarhie.

Ce reprezinta un thread?Threadul este cea mai mica unitate de procesare care poate fi programata de un sistem de

operare.

Ce inseamna multithreading?Termenul multithread se poate referi la faptul ca mai multe threaduri exista in acelasi proces

sau rularea in paralel a mai multor threaduri, echivalentul mai multor procese rulate pe acelasi calculator.

Modele:Kernel-level threading – threaduri create de utilizator care au corespondenta 1-1 cu entitati

din kernel. Este cea mai simpla implementare de threaduri.User-level threading (many to one)- toate threadurile de la nivel de aplicatie ajung intr-o

singura entitate de la nivel kernel. Singurul dezavantaj major este ca nu poate beneficia de accelerare hardware pe procesoarele multithread sau pe sistemele multi-procesor.

Hybrid threading (many to many) – un numar de threaduri de aplicatii ajung la un numar de entitati kernel (‘procesoare virtuale’). Acesta este un compromis intre ULT si KLT. Este mai complex de implementat decat celelalte doua.

Justificati necesitatea threadurilor.Principalul motiv pentru existenta threadurilor este ca in multe aplicatii au loc mai multe

activitati in acelasi timp,care se pot bloca ocazional. Prin descompunerea unor astfel de aplicatii in secvente thread care ruleaza cvasi paralel, modelul de programare devine mai simplu.

Un alt motiv este ca sunt mai usor de creat si distrus decat procesele dat fiind faptul ca nu au resurse atasate.

Ce reprezinta o masina cu stari finite?Masinile cu stari finite reprezinta o metoda foarte eficienta pentru modelarea circuitelor

secventiale. Prin modelarea masinilor cu stari finite intr-un limbaj de descriere hardware si utilizarea programelor, programatorul se poate concentra asupra modelarii secventei dorite de operatii fara a-si pune problema in privinta implementarii circuitului (aceasta operatie este lasata programului).

Care sunt avantajele si dezavantajele thread-urilor?Ele partajeaza acelasi spatiu de adrese si sunt mai rapide decat procesele (la task-switch, nu se

mai schimba si spatial de adrese).Marele dezavantaj este problema la sincronizare.Fiecare thread are propriul context, format din registri CPU si stiva.

Descrieti thread-urile pop-up.

Page 10: Sisteme de Operare!!!!

Sunt threaduri create de sistem la aparitia unui mesaj, pentru a se ocupa de mesajul respectiv.

Caracterizati notiunea de concurenta intre doua procese.Concurenţa reprezinta situaţia în care mai multe procese citesc sau scriu pe un set de date partajate şi rezultatul final depinde de care proces ruleaza si când anume. Procesele concurente numiteşi procese paralele, presupun că la un moment dat, mai multe programe pot fi urmărite între punctul de începereşi terminare a execuţiei; în acest caz procesele interacţionează în două moduri: - indirect, prin concurarea la aceiaşi resursă a sistemului; - direct, prin utilizarea simultană a aceloraşi resurse. Se constată situaţia în care procesele îşi afectează reciproc, într-un mod nedorit, execuţia activitaţilor critice ( să presupunem ca două procese încearcă în acelaşi timp să aloce ultimul 1MB de memorie). Dificultatea apare pentru că un proces B începe sa folosească una din variabilele partajate înainte ca un proces A să se termine. Acestă situaţie poate fi evitată dacă se interzice citirea si scrierea de către mai multe procese simultan a datelor partajate.Pentru a fi evitată concurenţa şi a avea o soluţie buna trebuiesc îndeplinite patru condiţii: i. Oricare două procese nu se afla simultan în regiunile lor critice. ii. Nici un fel de presupunere nu se poate face asupra vitezelor sau numarului de UCP-uri. iii. Nici un proces care rulează în afara regiunii lui critice nu poate bloca alte procese. iv. Nici un proces nu trebuie să aştepte la infinit pentru a intra în regiunea lui critică. (Tanembaum, 2001)

Caracterizati notiunea de sincronizare intre doua procese.Sincronizarea proceselor include mecanisme prin care anumite procese vor fi oprite la un moment dat, până ce apar anumite evenimente ce se află sub controlul altei activităţi. Problema sincronizării apare datorită partajării resurselor în legătură cu alocarea proceselor pentru execuţia şi comunicaţia între procese . Sincronizarea este necesară la uniprocesoare, multiprocesoare şi in reţelele de calculatoare. Un program paralel constă din mai multe procese independente ce cooperează pentru a rezolva o problemă. Cooperarea se poate realiza prin intermediul unei memorii partajate.Sistemul de operare trebuie să ofere cel putin un mecanism de bază care să permită comunicarea şi sincronizarea în cadrul unui set de procese. În sistemele multiprogramate, aceste operaţii de comunicaţie se pot realiza prin intermediul fişierelor.Un proces poate oferi unui proces informaţii scriind date într-un fişier astfel încât celălalt proces să poată deschide fişierul şi să poată citi informaţiile respective. În general,comunicarea şi sincronizarea prin intermediul fişierelor partajate este greoaie, iar procesele trebuie să fie capabile să se sincronizeze pe baza unui mecanism mai simplu decât acela de a partaja accesul la un fişier. Sistemele de tip timesharing stimulează nevoia unei metode mai facile de comunicare şi sincronizare între procese. În astfel de sisteme, un singur utilizator poate să creeeze două procese, rezultatul primului proces putând fi rutat spre intrarea celui de-al doilea proces. Conductele (pipe) UNIX implementează o astfel de facilitate. Programele bazate pe conlucrare trebuie să fie construite astfel încât procesele să poată accesa informaţiile comune, totuşi fară a interfera unul cu altul pe parcursul unor porţiuni critice ale execuţiei lor. Această condiţie introduce o problemă de sincronizare numită problema secţiunii critice. O a doua problemă este existenţa unui punct de blocare ( deadlock) în cadrul proceselor cooperante. Acest lucru înseamna că două sau mai multe procese pot fi în situţia în care fiecare deţine resursele necesare celuilalt proces şi nici unul nu poate continua executia fără ca să îi cedeze celuilalt resursele. (Dodescu, 2003)

Dati un exemplu de situatie in care doua procese se gasesc în conditii de competitie. Considerăm existenta a doua procese A şi B a căror scop este tipărirea unui fişier la imprimantă. Când un proces vrea să tiparească un fişier, introduce numele fişierului într-un catalog de tipărire special (spooler directory). Alt proces, care se ocupă de tipărirea documentelor (printer daemon), verifică periodic dacă există fişiere de tipărit şi, dacă există, le tipareşte şi apoi şterge numele lor din catalog. Acest catalog de tipărire are un număr foarte mare de locaţii, identificate prin 0,1,2... fiecare fiind capabilă să memoreze numele unui fişier în fiecare lot. De asemenea există două variabile partajate,

Page 11: Sisteme de Operare!!!!

out, care indică următorul fişier care trebuie tiparit şi in, care indică următorul loc liber în catalog.Aceste doua variabile pot fi păstrate foarte bine într-un fişier de doua cuvinte, disponibil tuturor proceselor.

În figură se constată că loturile de la 0 pana la 3 sunt libere (fişierele au fost deja tipărite) şi loturile de la 4 pâna la 6 sunt încarcate (cu numele fişierelor care aşteaptă să fie tipărite). Situaţia care o discutăm este următoarea: mai mult sau mai puţin simultan, procesele A şi B solicită să înscrie un fişier pentru tipărire. Poate apărea situaţia în care procesul A citeşte variabila in şi salvează valoarea 7, într-o variabilă locală numită următorul_loc_liber. Chiar atunci apare o întrerupere de ceas şi UCP decide că procesul A s-a executat suficient, aşa că va comuta la procesul B. Procesul B citeşte şi el in şi primeşte tot un 7. Şi el o va salva în variabila sa locală următorul_loc_liber. În acest moment ambele procese consideră că următorul loc disponibil este 7. Procesul B continuă sa se execute. Salvează numele fişierului lui în locul cu numărul 7 şi actualizează in la valoarea 8.Apoi, se execută mai departe. La un moment dat, procesul A îşi va relua execuţia. Verifică următorul_loc_liber, găseşte valoarea 7 acolo şi scrie numele fişierului lui în locul cu numărul 7, ştergând numele pe care procesul B tocmai îl scrisese acolo.Apoi calculeaza urmatotul_loc_liber +1, adica 8 şi setează in la valoarea 8. Catalogul de tipărire are acum o stare internă consistentă, aşa că procesul care se ocupă de imprimare nu va observa nimic în neregulă, dar procesul B nu va primi niciodata un rezultat. Utilizatorul B va aştepta lânga imprimantă ani de zile, tânjind după rezultatul care nu va veni niciodata. Situaţii ca acestea, în care două sau mai multe procese citesc sau scriu date partajate şi rezultatul final depinde de care proces rulează şi când anume sunt numite condiţii de cursa (race conditions). (Tanembaum, 2001)

Doua procese sunt mutual exclusive.Explicati.Pentru a preveni efectele generate de condiţiile de competiţie este necesar ca procesele să fie mutual exclusive.Dacă un proces rulează şi partajează resurse cu alt proces, acesta din urmă nu se poate lansa în execuţie până la finalizarea execuţiei primului.Zona în care două procese accesează memoria partajată de ambele se numeşte secţiune critică.

Page 12: Sisteme de Operare!!!!

Dacă reuşim ca două procese să nu se afle în secţiunea critică simultan putem evita competiţiaîn sine. Condiţiile obţinerii exclusivităţii mutuale sunt: i. Două procese nu se pot afla simultan în zona critică. ii. Nu ne raportăm la numărul şi viteza de prelucrare a procesoarelor. iii. Niciun proces, care rulează în afara secţiunii sale critice nu poate bloca un alt proces. iv. Un proces nu poate fi blocat la infinit la intrarea sa în secţiunea critică. Exemplu: Situaţia pe care o discutăm este următoarea: Două procese A şi B doresc simultan tipărirea unui fişier.Procesul A citeşte variabila In şi o stocheza 7.Procesorul blochează execuţia Procesului A şi redă controlul Procesului B. Procesul B se execută şi plasează numele fişierului de tipărit în 7 şi seteaza In=8. Procesotul blochează Procesul B şi transferă controlul Procesului A. Procesul A citeşte In=7 şi plasează numele fişerului său de tipărit în lot 7 şi seteayă In=8. În această situţie putem spune că peocesele A şi B se exclud mutual. Situaţiile în care mai multe procese citesc sau scriu pe un set de date partajate şi rezultatul final depinde de care proces rulează şi când anume, se numesc condiţii de cursa .

Ce reprezinta o sectiune critica?Secţiunea crtitică reprezintă zona în care două procese accesează memoria partajată de ambele procese. Problema evitării condiţiilor de cursă poate fi de asemenea formulată într-o manieră abstractă. O parte din timp un proces este ocpuat cu execuţia calculelor interne şi a altor lucruri care nu conduc la condiţii de cursă. Totuşi, un proces trebuie uneori să eceseze memoria sau fişierele partajate, sau să execute alte activităţi critice care pot conduce la curse. Partea de program în care memoria partajată este accesată se numeşte regiune critică (critical region) sau secţiune critică (critical section). Daca s-ar putea aranja lucrurile astfel încât oricare din două procese să nu fie niciodată în acelaşi timp în regiunile lor critice, am putea evita cursele. (Tanembaum, 2001)

Doua procese obtin exclusivitate mutuala prin metoda de dezactivare a intreruperilor. Prezentati dezavantajele metodei.Exclusivitatea mutuală utilizând busz waiting-ul are ca primă soluţie dezactivarea întreruperilor. Această abordare prezintă următoarele dezavantaje: a) Dacă două procese pot dezactiva întreruperile există posibilitatea ca acestea să blocheze activarea ulterioară a întreruperilor.

b) Dacă lucrăm pe un sistem multiprocesor există posibilitatea ca un proces să dezactiveze întreruperile doar pentru unu din procesoare , metoda devenind astfel ineficientă. c) Deoarece sistemul de operare pentru buna sa operare realizează periodic apeluri de sistem, dezactivarea întreruperilor la un moment inoportun poate afecta funcţionalitatea sistemului de operare.

Concluzia este : O astfel de metodă poate fi folosită cu succes doar de procese care opereaza la nivel Kernel.

Ce reprezinta un bit de atentie? Un mecanism de sincronizare pentru coordonarea şi comunicarea între procese este :biul de atenţie. Prin această modalitate, orice resursă partajată de "n" procese va dispune de un bit de atenţie "lock-bit" folosindu-se convenţia: lock-bit = 0 - resursa este disponibilă; lock-bit =1 - resursa este în folosinţă.

Înainte ca un proces să aibă acces la un procesor, acesta va verifica starea lock-b it-ului: dacă lock-bit = 0 atunci este permis acestui proces să aibă acces la procesor, iar la terminarea execuţiei va trece lock-bit-ul în starea iniţială 0; dacă pe parcursul execuţiei un alt proces va solicita procesorul, acesta va găsi lock-bit-ul în starea 1, el fiind trecut în starea de aşteptare până când lock-bit-ul devine 0.

Page 13: Sisteme de Operare!!!!

Prezentati metoda de alternare stricta a executiei proceselor si dezavantajele ei. Presupunem două procese A şi B. Această soluţie este o soluţie care impune celor două procese Aşi B să alterneze accesul in regiunile lor critice, de exemplu in inregistrarea fişierelor pentru tipărire. Nici unul dintre procese nu va avea voie să zicem să inregistreze consecutiv două fişiere. Astfel spus un proces care nu se află in zona critică poate să blocheze un alt proces. Ştiind de cele patru condiţii de cooperare ne dăm seama că această soluţie incalcă condiţia de eficienţă care spune că nici un proces care rulează in afara zonei critice să nu blocheze alte procese. Deşi acest algoritm evită cursele nu este eficient. În secvenţa de mai jos, variabila de tip întreg turn, inițial cu valoarea 0, determină al cui rând este să intre în regiunea critică și să verifice sau să actualizeze memoria partajată.Inițial, procesul 0 verifică turn, observă că are valoarea 0 și intră in regiunea critică.Procesul 1 gasește tot valoarea 0 și de aceea ciclează într-o bucla mică, verificând mereu turn până devine 1.Verificarea în continuu a unei variabile până când are o anumită valoare se numește așteptare opcupată (busy waiting).Aceasta trebuie evitata întotdeauna, deoarece irosește timp pe procesor. Așteptarea ocupată este folosită doar atunci când probabilitatea ca așteptarea să fie scurtă esterezonabilă.Un zăvor care folosește aşteptarea ocupată se numește spin lock while(TRUE) { while(TRUE) { while(turn!=0) /*loop*/ ; while(turn!=1) /*loop*/ ; critical_region(); critical region(); turn=1; turn=0; noncritical_region(); noncritical_region; } } (a) Procesul 0 (b) Procesul 1

Când procesul 0 părăsește regiunea critică, va seta turn pe 1, pentru a permiteprocesului 1 să intre în regiunea lui critică.Să presupunem că procesul 1 termină execuția regiunii lui critice repede, astfel că ambele procese sunt în afara regiunii lor critice, cu turn având valoarea 0.Acum, procesul 0 execută rapid intreaga buclă, ieșind din regiunea lui critică și modificănd turn la valoarea 1.În acest moment turn are valoarea 1 și ambele procese se execută în afara regiunilor lor critice. Brusc, procesul 0 termină și execuția regiunii sale necritice și reia bucla.Din păcate, acum nu îi este permis să intre în regiunea critică, deoarece turn are valoarea 1, iar procesul 1 este ocupat cu execuția regiunii sale necritice.Procesul 0 va rămâne agățat în bucla while până când procesul 1 va seta turn pe 0.Cu alte cuvinte, alternarea nu este o idée bună atunci când unul dintre procese este mult mai lent decât celălalt. Această situație nu respectă condiția 3 stabilită mai sus: procesul 0 este blocat de un proces care nu se află în regiunea sa critică.Întorcându-ne la catalogul de tipariredespre care am vorbit mai sus, procesul 0 nu ar putea tipări alt fisier pentru că procesul 1 execută altceva. De fapt, acestă soluție impune celor 2 procese să alterneze stict in regiunile lor critice, de exemplu în înregistrarea fisierelor pentru tipărire.Niciunuia dintre procese nu i se va permite să înregistreze consecutive 2 fisiere.Deși acest algoritm evită cursele, nu este candidat serios pentru o soluție deoarece nu respect condiția 3. {pentru a avea o soluție bună trebuie îndeplinite 4 conditii: 1.oricare 2 procese nu se pot afla simultan în regiunile lor critice 2.niciun fel de presupunere nu se poate face asupra vitezelor sau numărului de UCP-uri 3.niciun proces care rulează în afară regiunii lui critice nu poate bloca alte procese 4.niciun proces nu trebuie să aștepte la infinit pentru a intra în regiunea lui critică.}

Descrieti solutia lui Peterson.Prin combinarea ideii de alternare cu ideea variabilelor zăvor si a variabilelor de avertizare, un matematician olandez T.Dekker. a fost primul care a nascocit o solutie de tipul sistemelor de programe pentru problema excluderii mutuale, care nu impunea alternarea stricta.

Page 14: Sisteme de Operare!!!!

In 1981, G.L. Peterson a descoperit un mod mai simplu de obtinere a excluderii mutuale umbrind Solutia lui Dekker. Algoritmul lui Peterson este prezentat in figura 2-201. Acest algoritm este format din 2 proceduri scrise ANSI C, ceea ce inseamă că trebuie menţionate prototipurile tuturor funcţiilor.

Solutia lui Peterson pentru obţinerea excluderii mutuale.Înainte de a folosi variabilele partajate (adica înainte de a intra in regiunea lui critica), fiecare proces apelează enter_region cu numărul său de ordine, 0 sau 1, drept parametru. Acest apel îl va face să aştepte dacă este cazul, până când este în regulă să intre. După ce a terminat de utilizat variabilele partajate, procesul apelează leave_region pentru a indica faptul că a terminat pentru a permite altui proces să intre, dacă doreste. Să vedem cum functionează aceasta soluţie.Iniţial, niciun proces nu se află în regiunea lui critică.În acest moment procesul 0 apeleaza enter_region. Îsi arată interesul prin setarea elementului din vector corespunzător lui şi setează turn pe 0. Din moment ce procesul 1 nu este interesat, enter_region se termină de executat imediat. Dacă procesul 1 apelează acum enter_region, va rămâne agăţat acolo până când interested[0] devine FALSE, eveniment care se întâmplă doar când procesul 0 apelează leave_region pentru a părasi regiunea sa critică. Să considerăm acum cazul în care ambele procese apelează enter_region aproape simultan.Ambele vor salva numărul propriu de ordine turn. Salvarea care se face ultima va conta: prima va fi suprascrisa şi pierdută. (Tanembaum, 2001)

Ce reprezinta TSL?Multe calculatoare, mai ales cele proiectate ţinând cont de un număr mai mare de procesoare, au o instrucţiune (TSL RX, LOCK) (Teste and Set Lock) care funcţionează după cum urmează. Citeşte conţinutul lui Lock în registrul RX şi apoi salveaya o valoare diferită de zero la adresa de memorie a lui Lock. Operaţiile de citire a cuvântului şi salvării în el sunt garantat indivizibile – nici un alt proces nu poate accesa cuvântul de memorie până când instrucţiunile nu s-au terminat. Procesorul care execută instrucţiunea TSL blochează magistrala memeoriei pentru a interzice altor procesoare să acceseze memoria până ce nu a terminat de executat instrucţiunea. Pentru a utiliza TSL, se va folosi o variabilă partajată, Lock, pentru a coordona accesul la memoria partajată. Când Lock are valoarea 0, orice proces o poate seta la 1 folosind instrucţiunea TSL şi apoi să citească sau să scrie în memoria partajată. După ce termină, procesulresetează Lock înapoi la 0 folosind instrucţiunea Move.

Page 15: Sisteme de Operare!!!!

Pentru a împiedica două procese să intre în acelaşi timp în regiunile lor critice, soluţia este prezentată mai jos:

Ceea ce este prezentat mai sus este o subrutină de patru instrucţiuni, într-un limbaj de asamblare fictiv (dar tipic). Prima instrucţiune copiază vechea valoare a lui Lock în registru şi seteaya apoi Lock la 1. Apoi, vechea valoare este comparată cu 0. Dacă nu este 0, înseamnă că LOCK esra deja setat, astfel că programul reia codul de la început şi testează din nou condiţia. Mai devreme sau mai târziu va deveni 0 (atunci când procesorul se afla în regiunea lui critică va termina cu aceasta), iar subrutina se va termina, cu LOCK setat. Eliberarea lui LOCK este simplă. Programul salvează pur şi simplu un 0 în lock. Nu sunt necesare instrucţiuni speciale.O soluţie la problema regiunii critiice este clară. Înainte de a intra în regiune critică proprie, un proces apelează enter_region, care execută aşteptare ocupată până când LOCK este liber: apoi, preia LOCKulşi se intoarce din apelul enter?region. După regiunea critică, procesul apelează leave_region, care salvează un 0 în zăvor. La fel ca în cazul tuturor soluţiilor bazate pe regiuni critice, procesele trebuie să apeleze enter_region şi leave_region la momentele de timp corecte pentru ca mecanismul să funcţioneze. Dacă un proces trişează, excluderea mutuală va eşua. (Tanembaum, 2001)

De ce avem nevoie de metoda sleep/wakeup? Datorită faptului că soluţia lui Peterson nu poate gestiona problema inversării priorităţii s-a propus metoda Sleep and Wakeup.Să presupunem că două procese partajează un buffer de dimensiune fixă. Un proces adaugă date, celălalt extrage date.Această problemă se mai numeşte problema producător-consumator, unde p. care adaugă date în buffer este producător, iar cel care extrage date este consumator.Dacă se întâmplă ca procesorul să întrerupă execuţia procesului consumatorului şi din punct de vedere logic consumatorul se află încă în starea wakeup, producătorul va genera un semnal de wakeup, care se va pierde datorită faptului ca nu există o structură care să reţină câte apeluri wakeup au fost realizate.

Tratati problema producator consumator utilizand metoda sleep/wakeup.Metoda cu apeluri sleep/wake-up este o metodă simplu de implementat unde folosim apelul de sistem sleep care are ca efect blocarea apelantului, adică suspendarea execuţiei acestuia şi apelul de sistem wake/up pentru a trezi un proces. Funcţionarea acestei metode este următoarea: Fiecare dintre procese va verifica dacă este cazul să îl trezească pe celălalt şi dacă da, îl va trezi. Condiţia de cursă apare pentru că accesul la condiţia Memoria tampon plină? este nerestricţionat. Poate apărea următoarea situaţie- zona tampon este goală şi consumatorul tocmai a verificat condiţia Memoria tampon goală? pentru a verifica dacă este DA. În acest moment planificatorul de procese decide să suspende execuţia consumatorului şi începe să execute producătorul. Producătorul introduce un element în memorie şi observă că acum condiţia Memoria tampon plină? este acum DA. Deoarece condiţia tocmai a fost NU şi deci consumatorul este suspendat, producătorul apelează wakeup pentru a trezi consumatorul. Consumatorul nu este şi logic suspendat şi semnalul de trezire se va pierde şi astfel data următoare când consumatorul se va executa acesta va verifica condiţia

Page 16: Sisteme de Operare!!!!

Memoria tampon goală? Citită anterior, va găsi DA şi îşi va suspenda execuţia. După câtva timp producătorul îşi va suspenda şi el execuţia. Ambele procese vor fi suspendate. (stst.elia.pub.ro)

Prezentati cazul in care metoda sleep/wakeup devine ineficienta pentru rezolvarea problemei producator consumator. Problema acestei metode este pierderea suspendării consumatorului. Din păcate, consumatorul nu este şi logic suspendat, astfel că semnalul de trezire este pierdut. Data următoare când se va executa consumatorul, acesta va verifica valoarea lui count citită anterior, va găsi 0 şi îţi va suspenda execuţia. După câtva timp, producătorul va umple zona tampon şi îşi va suspenda şi el execuţia. Ambele procese vor fi suspendate pentru totdeauna.Soluţie : memorarea bitului de trezire, dacă se trimite unui proces treaz. Ulterior, dacă acesta vrea să se autoblocheze, nu o va face, dar va şterge bitul de memorare a trezirii. Fiecare proces care poate trezi un proces încă treaz va trebui să îşi aibă bitul memorat, împreuna cu adresa procesului la care se referă.

Curs 5:

Motivatia planificarii proceselor.În cazul folosirii multiprogramării pe un calculator, acesta conţine frecvent mai multe procese care concurează simultan pt controlul UCP. Această situatie apare ori de cate ori doua sau mai multe procese se află simultan în starea gata de execuţie.Dacă este disponibilă o singura UCP, trebuie facuta o alegere cu privire la procesul care va rula în continuare. Componenta sistemului de operare care face această alegere se numeşte planificator(scheduler) şi algoritmul folosit de aceasta se numeste algoritm de planificare.

Definitia algoritmului de planificare preemtiv.Un algoritm de planificare preemtiv alege un proces şi îl lasă să se execute o durată maximă fixată. În caz că procesul este încă în execuţie la sfârşitul intervalului de timp, este suspendat şi planificatorul alege alt proces (daca există un proces disponibil). Efectuarea unei planificări preemtive necesită o intrerupere de ceas la sfărşitul intervalului menţionat pentru a muta controlul asupra UCP inapoi la planificator.Dacă nu există un ceas, singura opţiune este planificarea non-preemtivă.

Definitia algoritmului de planificare nonpreemtiv.Un algoritm nonpreemtiv alege un proces pentru execuţie şi apoi îl lasă să ruleze până se blochează (fie la o operaţie I/E sau în aşteptarea altui proces) sau până când procesul renuntă voluntar la UCP. Chiar daca rulează ore intregi, procesul nu va fi suspendat forţat. De fapt, nu se ia nicio decizie in timpul întreruperilor de ceas. Dupa ce s-a terminat procesarea întreruperii, procesul care rula înainte de întrerupere este executat în continuare.

Definitia compute-bound process.Anumite procese petrec majoritatea timpului efectuând calcule, acestea se numesc procese limitate de calcule (compute-bound). Ele au în mod obişnuit rafale de utilizare a UCP mai lungi si ca atare perioade de aşteptare a operaţiilor I/E rare.

Definitia I/O-bound process.Există de asemenea anumite procese care işi petrec majoritatea timpului aşteptând completarea operaţiilor de I/E, acestea se numesc procese limitate de I/E (I/O- bound). Procesele limitate de I/E au rafale UCP scurte şi perioade( frecvente) de asteptare a operaţiilor de I/E. Să observam că factorul cheie este lungimea rafalei UCP şi nu lungimea rafalei I/E. Procesele limitate de I/E sunt de acest tip pentru că nu efectuează multe calcule între cererile de I/E, pentru că nu au cereri I/E deosebit de lungi.

Care sunt obiectivele generale ale unui algoritm de planificare. 1. Corectitudine: fiecare proces primeşte o capacitate egală de UCP.

Page 17: Sisteme de Operare!!!!

2. Respectarea politicilor: politica declarată trebuie respectată.

3. Echilibrul: menţinerea tuturor părţilor sistemului în operare.

Care sunt obiectivele generale ale unui algoritm de planificare pentru un sistem batch. 1. Productivitate: maximizarea numărului de sarcini pe oră.

2. Timpul de răspuns: minimizarea timpului între introducerea sarcinii şi terminare.

3. Gradul de utilizare a UCP: menţinerea UCP ocupată tot timpul.

Care sunt obiectivele generale ale unui algoritm de planificare pentru un sistem interactiv. 1. Timpul de raspuns: răspuns rapid la cereri.

2. Proporţionalitate: îndeplinirea aşteptărilor utilizatorului.

Care sunt obiectivele generale ale unui algoritm de planificare pentru un sistem în timp real. 1. Respectarea termenelor: evitarea pierderii datelor.

2. Predictibilitate – evitarea degradării calităţii sistemelor multimedia.

Sistemele în timp real sunt acele sisteme pentru care timpul joacă un rol esenţial. Astfel de calculatoare sunt conectate de regulă la un dispozitiv extern care trimite anumite semnale către calculator, iar calculatorul trebuie să raspundă la aceste semnale intr-un interval de timp bine stabilit. Exemple de astfel de sisteme sunt pilotul automat într-un avion sau un sistem de monotorizare a unui reactor nuclear.

Algoritmi de planificare utilizati pentru sistemele batch.1. Primul venit-primul servit (first-come first-served). În cazul acestui algoritm, procesele primesc UCP în ordinea în car cer.În principiu, există o singură coadă de procese gata de execuţie. Atunci când este introdusă prima sarcină din exterior, dimineaţa, este pornită imediat şi i se permite să ruleze cât timp doreşte. Pe măsură ce sosesc celelalte sarcini, ele sunt plasate la sfârşitul cozii. Atunci când procesul în execuţie se blochează este plasat la sfarşitul cozii, ca şi în cazul unei sarcini nou sosite.

2. Cea mai scurtă lucrare la început(shortest job first). Atunci când mai multe sarcini, la fel de importante, aşteaptă în coada de intrare pentru a fi pornite, planificatorul alege cea mai scurtă lucrare la început.

3. Urmatorul timp minim rămas(shortest remaining time next). În cazul acestui algoritm, planificatorul alege mereu procesul al cărui timp de executie rămas este cel mai scurt. Timpul de rulare trebuie cunoscut a priori, atunci când soseşte o nouă lucrare, durata sa totală este comparată cu timpul rămas pentru procesul curent. Dacă noua lucrare necesită mai puţin timp decât procesul curent, acesta este suspendat şi se porneşte noua lucrare. Această schemă permite sarcinilor noi şi scurte să obţină un serviciu de calitate.

4. Planificare pe trei nivele. Pe masură ce sosesc noi sarcini în sistem, ele sunt iniţial plasate într – o coadă de intrare situată pe disc. Planificatorul de primire decide ce sarcini va admite în sistem. Celelalte sunt ţinute în coada de intrare până când sunt selectate. Al doilea nivel de planificare constă în a decide care procese ar trebui păstrate in memorie şi care ar trebui ţinute pe disc, această sarcină este îndeplinită de planificatorul de memorie. Iar al treilea nivel de planificare consta de fapt în a alege unul din procesele gata de execuţie din memoria principală pentru a rula. Această componentă este numită planificatorul UCP.

Algoritmi de planificare utilizati pentru sistemele interactive.1. Planificare Round Robin. Fiecărui process i se atribuie un interval de timp numit cuantă în care i se permite să ruleze. Dacă procesul este încă în execuţie la sfârşitul cuantei, UCP se ia forţat de la

Page 18: Sisteme de Operare!!!!

respectivul proces şi se atribuie altui proces. Dacă procesul s-a blocat sau s-a terminat înainte de terminarea cuantei de timp, comutarea UCP se face în momentul blocării procesului.

2. Planificarea bazată pe priorităţi. Fiecare process are o prioritate şi se permite rularea procesului gata de execuţie cu cea mai mare prioritate. Pentru a preîntâmpina cazurile în care procesele cu prioritate mare rulează la infinit, planificatorul poate decreşte prioritatea procesului curent la fiecare semnal de ceas (adică la fiecare întrerupere de ceas). Daca această acţiune determină prioritatea respectivului proces să scadă sub a urmatorului din ierarhie, acest ultim proces are posibilitatea să se execute.

3. Cozi multiple. Poiectanţii creează clase de prioritate. Procesele din cea mai mare clasă erau rulate pentru o cuantă de timp. Procesele din urmatorarea clasă se rulau pe trei cuante de timp, urmatoarele pe patru cuante de timp ş.a.m.d. Când un proces folosea în întregime cuanta alocată, era mutat în jos o clasa.

4. Shortest process next. Procesele interactive urmează de obicei modelul în care se asteaptă o comandă, se execută comanda, se asteaptă comanda, se execută comanda ş.a.m.d. Dacă privim execuţia fiecărei comenzi ca pe o lucrare separată, atunci putem minimiza întreg timpul de răspuns executând în continuare cea mai scurtă lucrare. Singura problemă constă în a realiza care din procesele executabile este cel mai scurt. O abordare constă în a face estimări bazate pe comportamentul anterior şi a rula procesul cu cel mai mic timp de execuţie estimate. Tehnica prin care se estimează următoarea valoare într – o serie prin considerarea sumei ponderate a întregii valori curente măsurate şi a valorii estimate anterioare se numeşte îmbătrânire (aging). 5. Planificarea garantată. O abordare complet diferită la problema planificării constă în a face promisiuni reale utilizatorilor referitoare la performanţă şi de a le respecta. Dacă există n utilizatori conectaţi în sistem în timp ce noi lucrăm, vom primi aproximativ 1/n din puterea de calcul; în mod similar, pe un sistem cu un singur utilizator pe care rulează n procese, toate fiind egale, fiecare ar trebui să beneficieze de 1/n din ciclurile procesorului. Pentru a respecta această promisiune, sistemul trebuie să ţină evidenţa capacităţii de calcul consumate de fiecare proces de la crearea sa. Se calculează apoi capacitatea la care are dreptul fiecare, mai precis intervalul de la creare este împartit la n.

6. Planificarea în sistem de loterie. Ideea fundamentală este de a atribui proceselor bilete de loterie pentru diferite resurse ale sistemului, cum ar fi timpul alocat pe UCP. Atunci când trebuie luată o decizie de planificare se alege un bilet de loterie la întamplare şi procesul care deţine biletul primeşte resursa. Aplicat planificării proceselor pe UCP, acest sistem poate desfăşura o loterie de 50 de ori pe secunda, fiecare câştigător primind ca premiu 20 msec de timp alocat pe UCP.

7. Planificare cu părţi egale(Fair-Share Scheduling). Unele sisteme iau în considerare şi posesorul procesului inainte de planificare. În acest model, fiecare utilizator are alocată o anumită proporţie a capacităţii UCP, iar planificatorul alege procesele astfel încât să se respecte această regula. Astfel dacă 2 utilizatori au primit promisiunea că li se va aloca aproximativ 50 % din capacitatea UCP, fiecare va primi exact atat , indiferent de câte procese are.

Algoritmi de planificare utilizati pentru sistemele în timp real.Algoritmii de planificare pentru sistemele de timp real pot fi statici sau dinamici. Primii iau deciziile de planificare înainte de inceperea rulării sistemului. Cei din urmă iau deciziile in timpul rulării, adica chiar în momentul apariţiei evenimentelor externe. Planificarea statistică funcţionează numai dacă sunt disponibile informaţii perfecte apriori despre operaţiile ce trebuie efectuate şi termenele care trebuie respectate. Algoritmii de planificare dinamică nu au aceste restricţii.(Tanembaum, 2001) Unul dintre algoritmii de planificare în timp real foarte utilizaţi este algoritmul monotonic. Acesta acordă priorităţi proceselor proportional cu frecvenţa de apariţie a evenimentului ce declanşează procesul respectiv. De exemplu, un proces ce este declanşat de un eveniment ce apare cu o perioadă de 25 ms va primi prioritatea 40, în timp ce un proces ce este declanşat cu o perioada de 125 ms va primi prioritatea 8.

Page 19: Sisteme de Operare!!!!

Un al doilea algoritm este cel al timpului de rezerva minim. De exemplu, dacă un proces are nevoie de 100 ms pentru a fi rulat, iar el trebuie terminat în cel mult 200 ms, atunci sistemul calculează timpul de rezervă pe care îl are la dispoziţie pentru acest proces: 200-100=100 ms. Planificatorul menţine o lista a proceselor ordonată dupa acest timp de rezervă si atribuie UCP procesului cu timpul de rezervă cel mai mic. Alt algoritm de planificare în timp real este algoritmul termenului limita cel mai scurt . Atunci când apare un eveniment extern, procesul care tratează acel eveniment va fi adaugat la o lista cu procese gata de execuţie. Această lista este menţinută sortată după termenul limită în care trebuie tratat evenimentul. Procesul cu termenul limita cel mai apropiat va fi primul rulat. (Dodescu, 2003)

Planificarea user-thread-urilor.În cazul în care mai multe procese au fiecare fire de execuţie multiple, există doua nivele de paralelism: procese si fire. Planificarea în astfel de sisteme este substanţial diferită, depinzând de tipul de implementare suportat (în spaţiul user, în spaţiul kernel, sau ambele). În cazul firelor de execuţie implementate în spaţiul utilizator, nucleul nu este conştient de existenţa firelor şi operează în modul obişnuit alegând un proces , pe care îl numim A si dă procesului controlul pe parcursul cuantei sale de timp. Planificatorul de fire de execuţie din interiorul procesului A decide ce fir sa ruleze, să spunem A1. Deoarece nu există vreo întrerupere de ceas pentru a multiprograma firele, acest fir poate continua să se execute cât timp doreste. Dacă foloseste toata cuanta procesului, nucleul va selecta un alt proces spre execuţie. Atunci când procesul A rulează din nou, firul A1 va reîncepe să se execute. Firul ca continua să consume timpul procesului A pâna când termină. În orice caz, comportamentul său antisocial nu va afecta celelalte procese. Acestea vor obţine cuanta considerată potrivită de planificator, indiferent de ce se intamplă în interiorul procesului A. Considerând cazul în care firele de execuţie ale lui A au relative puţin de procesat într-o rafală de utilizare a UCP, să spunem 5 msec de lucru într-o cuantă de 50 msec. În consecinţă, fiecare rulează o perioadă scurtă de timp, apoi cedează UCP planificatorului de fire. Această comportare poate duce la secvenţa A1, A2, A3, A1, A2, A3 ,A1, A2, A3, A1, înainte ca nucleul să comute la procesul B. Această situaţie este ilustrată în figura urmatoare:

Page 20: Sisteme de Operare!!!!

Algoritmul de planificare folosit de executive poate fi oricare din cele descrise mai sus.În practică, cele mai des folosite sunt round şi planificarea bazată pe priorităţi. Singura constrângere este lipsa unui ceas pentru a întrerupe un fir de execuţie care a rulat prea mult.

Planificarea kernel-thread-urilor.În cazul firelor implementate în nucleu, nucleul alege un anumit fir spre execuţie. Nu este nevoie ca nucleul să ţină seamă de procesul căruia îi aparţine firul, dar poate face acest lucru dacă doreşte. Firul primeste o cuanta de timp şi este suspendat forţat dacă depaşeşte această cuantă. Cu o cuantă de 50 msec, dar cu fire de execuţie care se blochează dupa 5 msec, ordinea firelor pentru o perioadă de 30 msec ar putea fi A1, B1, A2, B2, A3, B3, ceea ce nu era posibil cu aceeasi parametrii în cazul firelor implementate în spaţiul utilizator. Această situaţie este ilustrată parţial în urmatoarea figură:

Deoarece nucleul ştie că a comuta de la un fir al procesului A la un fir al procesului B este mai costisitor decât să ruleze un al doilea fir al lui A ( datorită necesităţii schimbării harţii de memorie şi stricării memoriei ascunse), poate lua această informaţie în considerare atunci când ia o decizie. De exemplu, dacă luăm două fire care sunt la fel de importante , dintre care unul aparţine procesului al cărui fir tocmai s-a blocat şi celălalt aparţinând unui alt proces, preferinţele se îndreaptă spre primul fir de execuţie.

Avantaje si dezavantaje ale planificării user-thread-urilor comparativ cu kernel-thread-urilor Performanţa reprezintă o diferenţă majoră între firele din spaţiul utilizator şi cele din nucleu.Efectuarea unei comutări de fire în spaţiul utilizator este formată din câteva instrucţiuni.În cazul firelor din nucleu, este necesară o comutare de context completă, schimbarea harţii de memorie, invalidarea memoriei ascunse, operaţia fiind mai lentă cu cateva ordine de mărime. Pe de altă parte, în cazul firelor implementate în nucleu, blocarea unui fir la o operaţie I/E nu cauzează blocarea procesului cum se întamplă în cazul implementării în spaţiul utilizator.

Page 21: Sisteme de Operare!!!!

Un alt factor important este acela că firele din spaţiul utilizator pot angaja un planificator specific aplicaţiei. Dacă am considera spre exemplu cazul serverului de web, presupunem că un fir de lucru tocmai s-a blocat şi firul de dispecerizare şi 2 fire de lucru sunt gata de execuţie.Executivul ştiind ce poate face fiecare thread, poate să aleagă cu uşurinţă firul de dispecerizare, pentru că acesta să pornească execuţia unui alt fir de execuţie.Această strategie maximizează paralelismul într-un mediu în care firele de lucru se blochează frecvent în memorii de I/E. În cazul firelor implementate în nucleu, nucleul nu ar putea ştii niciodata ce a facut fiecare fir (deşi acestea ar putea avea prioritaţi diferite):

CURS 6

Definiti blocajul. deadlock

Un set de procese este blocat daca fiecare process din setul respective asteapta un eveniment care poate fi cauzat doar de un alt process din acest set. Niciunul din procese nu poate rula, elibera resurse, sau sa treaca in starea awake.

Ce este o resursa preemptibila?

O resursa care poate fi luata de la procesul care o detine fara efecte nedorite. Memoria este un exemplu de resursa preemtibila.

Ce este o resursă nonpreemptibila?

Este o resursa care nu poate fi luata de la detinatorul ei fara ca executia acestuia sa esueze. Daca un process a inceput sa inscriptioneze un cd-rom, de exemplu, si deodata I se ia accesul la unitatea de inscriptionare si se da altui process, va rezulta un cd cu informative amestecata, fara sens. In general blocajele sunt non-preemtibile.

Care sunt conditiile de aparitie a unui blocaj?

-excluziune mutual “ o resursa este fie ocupata de un process, fie este libera

-de detinere-asteptare a unei resurse : un process ce detine resurse poate solicita resurse noi

-nonpreemtivitatii: resursele ocupate nu pot fi retrase fortat unui process.

-de asteptare circular: lantul circular de asteptare este format din cel putin 2 procese, fiecare resursa solicitata este detinuta de urmatorul process din lantul circular.

Cum se pot modela blocajele?

Cu ajutorul grafurilor orientate. Grafurile au doua tipuri de noduri : procesele, reprezentate prin cercuri, si resursele, reprezentate prin patrate. Un arc de la un nod tip resursa catre un nod de tip process arata ca acea resursa a fost ceruta, accesul la ea a fost acordat si ea este in present detinuta de procesul respectiv.

Caracterizati algoritmul strutului.

Se bazeaza pe prezumtia ca nu exista blocaje. Prezumtia este rezonabila daca blocajele apar foarte rar sau costul prevenirii blocajelor este mare.Unix si Windows utilizeaza aceasta abordare. Este un compromise intre comoditate si corectitudine.

Cum se realizează detectia si rezolvarea blocajelor?

Page 22: Sisteme de Operare!!!!

Cand se foloseste tehnica aceasta , sistemul nu incearca sa previna aparitia blocajelor. In schimb, le lasa sa apara, incearca sa detecteze cand ele se intampla si apoi sa ia masuri pt recuperare. Poate fi dentificat un ciclu care denota aparitia unui blocaj. In acest caz, se trece larezolvarea blocajelor :

1.prin preemtiune. Eliberarea unei resurse allocate unui alt process; metoda dependent de natura resursei; 2. Prin rollback. Marcarea punctelor de executie ale uni process, salvarea starii unui process si utilizarea ei; restartarea procesului din punctual de executie marcat daca se identifica blocaj. 3. Oprirea proceselor. Sea mai simpla si eficienta metoda, pp. oprirea proceselor a caror executie poate fi rulata de la inceput de exemplu nu se opreste un process de actualizare a unei baze de date.

Cum se evita blocajele?Evitarea permite sistemului intrarea în starea de interblocare şi rezolvă apoi această situaţie, reprezentând de multe ori o soluţie destul de dificila şi de costisitoare,presupune folosirea de informaţii suplimentare referitoare la modul în careprocesele vor formula cererile de acces la resurse.Cunoscând toată secvenţa de cereri şi eliberari de resurse pentru fiecaredintre procese se poate hotărî pentru fiecare cerere în parte dacăva fi sau nu satisfăcută. În cazul fiecărei formulări de cerere se impune ca sistemul să

ia în considerare resursele disponibile în momentul respectiv, resurselealocate deja, precumşi viitoarele cereri şi eliberari de resurse corespunzătoare fiecărui proces, pentru a putea decide dacă cererea curentă poate fi satisfăcutăsau trebuie să aştepte în vederea evitării apariţiei unei interblocări.Pentru implementarea acestei metode se folosesc în prezent mai mulţi algoritmi care diferă între ei prin tipul şi cantitatea de informaţie necesară.

Caracterizati starea sigura si nesigura.

O stare este numita sigura-safe- daca sistemul nu se afla in interblocare in acel moment si exista o ordine de planificare in care fiecare process poate rula pana la terminare, chiar daca procesele arc ere deodata numarul lor maxim de resurse.

O stare nesigura nu este o stare in care sistemul se afla in interblocare. Dintr-o astefel de stare nu se poate garanta faptul ca toate procesele se vor termina, pe cand la cea sigur avem aceasta garantie.

Caracterizati algoritmul bancherului pentru o singura resursa

Un algoritm de planificare care poate evita blocajele este o extensie a lgoritmului de detectare a blocajelor. Algoritmul este modelat dupa felul in care un bancher dintr-un oras mic gestioneaza un grup de client carora le-a deschis linii de credit. Acesta verifica daca acceptrea unei cereri va duce la o stare nesigura.Daca da, cererea este respinsa. Daca cererea duce la o stare sigura, ea este indeplinita. Algoritmul ia in considereare fiecare cerere pe masura aparitiei ei si se uita daca acceptarea va duce la o stare sigura. Pentru a verifica asta, verifica daca are suficiente resurse pentru a satisface cativ client. IN caz ca are, se presupune ca aceste imprumuturi vor fi returnate si in continuare va fi verificat clientul cel mai apropiat de limita si asa mai departe. Daca toate imprumuturile pot fi retunate, starea este sigura si cererea initiate va fi acceptata.

Caracterizati algoritmul bancherului pentru resurse multiple.

Cauta pe rand, un R, ale carui nevoi de resurse sunt mai mici sau egale cu A. Daca nu exista niciun astfel de rand, sistemul se va bloca in cele din durma deoarece niciun process nu va putea relua pana la terminare. Presupunem ca procesul ales cere toate resursele de care are nevoie si se termina. Marcheaza acest proces ca fiind terminat si adauga toate resursele in vectorul A. Repeta acesti pasi fie pana cand toate procesele sunt marcate ca fiind terminate, in acest caz starea initiala este sigura, fie pana cand aparet un blocaj, caz in care starea initiala este nesigura. Acest algoritm este foarte bine

Page 23: Sisteme de Operare!!!!

reliefat in teorie, dar practice este nefolositor deoarece rareori procesle stiu in avans care vor fi nevoile lor maxime de resurse, iar numarul de procese variaz pe masura ce apar sau dispar utilizatori.

Cum se previn blocajele?

Blocajele se previn cu ajutorula patru conditii. Daca ne asiguram ca cel putin una dintre ele nu va fi niciodata satisfacuta, atunci este imposibil sa apara blocaje.

1.Combaterea contidiei de excludere mutuala. Daca nicio resursa nu ar fi alocata exclusive pt un rproces, nu am avea niciodata blocaje. Totusi, daca am permite ca doua procese sa scrie in acelasi timp s-ar crea haos. Prin introducere in coasa de asteptare(spooling) mai multe rpocese pot genera simultan date de iesire. Insa, nu toate dispozitivele pot face spooling. Procesele care gestioneaza o actiune, sunt programate sa actioneze doar dup ace sunt disponibile doate datele de iesire. In acest caz avem doua procese care au furnizat fiecare o parte din datele de iesire, dar nu toate si de acees nu se poate continua. Niciunul dintre procese nu se va termina vreodata, asadar avem un blocaj. Totusi frecvent, se evita alocarea unei resurse cand aceasta nu este absolute necesara si se incearca asigurarea ca vor exista ca mai putine procese care ar putea cere resursa.

2. Combaterea conditiei de detinere si asteptare. Daca am putea impiedica procesele care detin resurse sa mai astepte prolucrarea altor resurse, am pute alumina blocajele. Un mod de a face asta este sa le cerem tuturor proceseloe sa ceara toate resursele inainte de inceperea executiei. Daca totul este disponbil, procesului ii va fi alocat tot ceea ce ii trebuie si va putea rula pana se va termina. Daca una sau mai multe resurse sunt ocupate, nu se va aloca nimic si procesul doar va astepta. Un alt mode de combatere a cond de detinere si asteptare este ca fiecarui process care doreste o resursa sa I s e ceara sa elibereze temporar toate resursele pe care le detine in present. Apoi va incerca sa ia dintr-o data tot ce are nevoie.

3.Combaterea lipsei de preeemptie este destul de rar folosita . Daca uni process i-a fost alocata imprimanta de ex, si se afla in mijlocul tiparirii datelor de iesire, faptul ca I s-ar lua fortat imprimanta deoarece un trasator cerut nu este disponibil, ar fi derutant sau chiar imposibil.

4. Combaterea conditiei de asteptare circular. Asteptarea circular poate fi eliminate in mai multe fe;luri. Un mod ar fi sa impunem regula ca orice process are dreptul la o singura resursa la un moment dat. Daca are nevoie de o a doua, trebuie sa o elibereze pe prima. Pt un proces care are nevoie sa scoata la imprimanta un fisier urias pe o banda magnetic, aceasta restrictive este inacceptabila. Un at mod ar fi realizarea unei numerotari globale a resurselor. Regula este urmatoarea : procesele pot cere resurse oricand vor, dar toate cererile rebuiesc facute in ordinea numerelor. Un process poate cere mai intai o imprimanta si apoi o banda magnetic, dar nu va putea cere mai intai un trasator si apoi o imprimanta.Cu aceasta regula, nu pot exista niciodata cilcuri. Desi ordonarea numerica a resurselor elimiba problema blocajelor, ar putea fi indisponibila alegerea unei ordini in care sa satisfaca pe toata lumea. Cand resursele include intrari in tabela de procese, spatial de pe disc alocat pt spooling, intregistrari detinute din baza de date si alte surse, atat ele cat si diverse folosiri pot fi atat de numeroase a.i. nicio abordare nu mai este posibila.

Explicati si dati exemplu de two-phase blocking.

Desi atat evitarea cat si prevenirea blocajelor nu sunt foarte promitatoare, in multe sisteme de date, o operatie care apare frecvent este blocarea ccesului ca cateva inregistrari si avoi vizualizarea lor. In momentul in care exista mai multe procese care ruleaza in acelasi timp exista un real risc de aparitie a interblocarii. Abordarea folosita este denumita blocarea in doua faze. Aici, procesul incearca mai intai

Page 24: Sisteme de Operare!!!!

sa blocheze accesul pe rand la toate inregistrarile de care are nevoie. Dca reusese, incepe faza a doua in care realizeza actualizarile si apoi blocheaza accesul. In rima faza nu este realizata nicio modificcare. Daca in prima faza este nevoie de o inregistrare care este déjà blocata de altcineva, procesul deblocheaza toate inregistrarile si reia aceasta etapa. Intr-un anumit sens aceasta abordare este similara cu cereaza in avans a tuturor resurselor necesar, sau cel putin inainte de a se realize ceva ireversibil. In ultimele versiuni ale blocarii in doaua faze nu are loc eliberarea si reluarea in cazul in care prima faza este intalnita cu o resursa déjà blocata. In aceste versiuni poate aparea un blocaj. Algoritmul functioneaza doar in acele situatii in care programatorul are lucrurile aranjate foarte atent astfel incat programul sa poata fi oprit in orice punct in timpul unei faze si reluat. Multe aplicatii nu pot fi structurate in acest fel.

Explicati si dati exemplu de comunication deadlock.

Exemplificati notiunea de starvation.

Intr-un system dynamic, au tot timpul loc cereri de resurse. Este necesara o politica pt a stabili cine sa ia o anumita resursa sic and. Aceasta politica, dei pare rezonabila, poate duce sa ramanerea in asteptare a unor procee care nu vor fi niciodata luate in considerere, desi ele nu se afla in blocaj. Ca exemplu , sa luam alocarea imprimantei. Sa ne imaginam sa un system foloseste un anumit tip de algoritm pt a se asigura ca alocarea imprmantei nu duce la interblocare. Sa presupunem ca acum exista cateva procese cre o vor toate deosata. Care o va primii? Un posibil algoritm de alocare este ca ea sa fie data asta procesului cu fisierul cel mai mic de tiparit . Aceasta abordare maximizeaza numarul clientilor fericiti. Daca un system aglomerat are un fiesier urias de tiparit, de fiecare data cand imprimanta este libera, se va uita in jur-sistemul- si va allege procesul cu fisierul cel mai mic. Dca nu exista un flux constant de procese cu fisiere mici, imprimanta nu-I va fi alocata niciodata procesului cu fisierul uriam. Pur si simplu acesta va muri de foame(amanat la nesfarsit, chair daca nu e blocat). Infometarea poate fi evitata prin folosirea unor politici de locare a resurselor de tip primul sosit primul servit. In aceasta abordare este servit procesul care a asteptat cel mai mult. In timp, fiecare process va devein in cele din urma cel mai vechi si astfel isi va primi resursa de care are nevoie.

Page 25: Sisteme de Operare!!!!

CURS 7

Caracterizati cazul in care utilizam tehnica de multiprogramare pe partitii fixate de memorie.

Cea mai simpla modalitate de a face multiprogramare este de a diviaza memoria in n partitii. Cand un proces trebuie executat va fi pus in coada de intrare a celei mai mici partitii care este suficient de mare pt a-l cuprinde. Deoarece partitiile sunt fixe, orice spatiu care nu este folosit de un proces va fi pierdut. Dezavantajul sortarii proceselor executate in cozi de asteptare devine evident cand o coada pt o partitie mare este goala iar una pt o partitie mica este plina

Cum se realizeaza translatarea adreselor logice în adrese fizice?

Alocarea spaţiului din memoria interna se realizeazăîn funcţie de disponibilitatea memorieiîn acel moment, fapt care nu permite cunoaşterea adreselor reale ocupate de program la momentul execuţiei (numite şi adrese fizice) în etapele scrierii şi translatării programelor a căror adrese de memorie, sunt simbolice (numiteadrese logice). Translatarea adreselor logice în adrese fizice se realizeazăprintr-o funcţie de translatare care precede execuţia instrucţiunii respective.Activitatea de gestiune a memoriei are la bază trei algoritmi :1) algoritmul detransfer care determină când un bloc trebuie transferat din memoria externăîn memoria internă- înaintea execuiei sau în timpul execuţiei;2) algoritmul de plasarecare determină ce zonănealocată din memoria internă este folosită  pentru plasarea blocului încărcat din memoria externă;3) algoritmul dereamplasarecare determină care blocuri şi la ce moment trebuie reîncărcate în memoria internă.

Cum se realizeaza swapping-ul ?Exista mai multe metode de gestiune a memoriei,dintre acestea metodele cu partitii.In sisteme multiutilizator cu partajare a timpului, sau in computere care au de indeplinit sarcini consumatoare de memorie apare problema ca memoria principala nu este suficienta.Solutia in acest caz este ca o parte din procese sa fie stocate pe hard disk si adus in memoria principala atunci cand este nevoie. Se folosesc doua strategii generale in acest caz:cea mai simpla, numita swapping, consta in mutarea proceselor cu totul intre memorie si hard fixe pot fi utile in cazul unui sistem cu prelucrare pe loturi.Avantajul la swapping este practic ca partitiile memoriei sunt de marime variabila, in functie de process si astfel memoria poate fi utilizata mai eficient, principalul dezavantaj insaeste ca se complica algoritmul de alocare a memoriei.Dupa folosirea swappingului un timp e posibil sa se creeze mai multe zone dememorie libera care sa fie prea mici pentru a putea incarca un proces intreg in ele, pentru a rezolva aceasta problema se poate compactata memoria astfel incat sa avem o singura zona de memorie libera foarte mare si compacta.

Managementul memoriei utilizand bitmap(harta de biti)

O metoda de gestiune a memoriei in cazul swappingului este cu ajutorul hartilor de biti(bitmaps). Metoda presupune creerea unei harti in care fiecare bit corespunde unei zone dememorie de dimensiune fixa, bitul fiind 0 pentru o zona libera si 1 pentru o zona ocupata.

Memoria este impartita in unitati de alocare care pot fi de la cativa octeti pana la cativa KB. Fiecarei unitati de alocare ii corespunde un bit in harta de biti. Bitul este 0 daca unitatea este libera si 1 daca este ocupata; (AICI) avem 5 procese cu 3 regiuni libere. Cu cat unitatea de alocare este mai libera, cu atat harta de biti este mai mare. Totusi, daca unitatea de alocare e de 4 octeti, atunci pentru 32 de biti de memorie va fi necesar un singur bit in harta. O memorie de 32n biti va necesita o harta de n biti. Asadar, harta de biti va ocupa doar 1\33 din memorie.

Descrieti cum se realizeaza managementul memoriei utilizând liste.Utilizarea listelor inlantuite pentru gestiunea memoriei presupune creerea une

liste in care fiecare element se refera la o zona de memorie astfel: zona poate fiocupata sau libera, se retine adresa de inceput a zonei si adresa de sfarsit a zonei si un pointer catre elementele vecine. Lista de obicei este ordonata dupa adrese astfel incat atunci cand trebuie

Page 26: Sisteme de Operare!!!!

modificata aceasta sa se faca usor : atunci cand se dezaloca memorie dintr-o zona elementele corespunzatoare zonelor vecine libere impreuna cu elmentul respectiv se combina formand un nou element cu adresa de inceput a primului si adresa de final a ultimului si marcat ca liber. Pentru a aduce un proces din memorie trebuie cautata o zona de memorieadecvata, pentru aceasta exista mai multi algoritmi cum ar fi first fit (care alege prima zona suficient de mare pentru a tine procesul respectiv, dupa care la urmatorul process cautarea se face din nou de la inceput), next fit (alege prima zona suficient de mare, dupa care la urmatorul proces cautarea se face incepand cu ultima zona unde s-a ajuns), best-fit (se cauta prin toata lista pana se gaseste cea mai mica zona liberacapabila sa acomodeze procesul respectiv), worst fit (se cauta prin toata lista si se alege cea mai mare zona libera).

Caracterizati memoria virtuala.Memoria virtuală reprezintă o metodă de organizare a memoriei prin intermediul căreiaprogramatorul "vede" un spaţiu virtual de adresare foarte mare care este mapat în memoriafizic disponibilă, fără ca programatorul să "simtă” aceasta. Aceasta „soluţie” a aparut din nevoia unui spatiu mare de memorie, pentru programe prea mari pentru a intra in memoria disponibila. Soluţia folosită în mod uzual a fost împărţireaprogramului respectiv în bucăţi numite overlay. Overlay 0 începea să ruleze primul. Atuncicând acesta termină, chemă un alt overlay. Unele sisteme bazate pe overlay erau destul decomplexe permiţând mai multe overlay-uri în memorie, în acelaşi timp. Overalay-urile erauţinute pe disc şi erau schimbate între ele în memorie, în mod dinamic, conform cerinţelor.Schimbarea efectiva a overlay-urilor si operaţia de împărţire a programului în bucăţi estefăcută de sistem, cu ajutorul memoriei virtuale. Ideea de bază a memoriei virtuale este aceea că mărimea totală a programului, a datelor, poate depăşi mărimea memoriei fizice disponibile pentru acesta. Programul menţinepărţile ce sunt folosite în memorie iar restul părţilor sunt ţinute pe disc. De exemplu, unprogram de 16 MB poate rula pe un sistem cu 4MB alegând cu grijă care 4MB trebuie să fiemenţinuţi în memorie în orice moment, iar părţile de care este nevoie se vor schimba întredisc şi memorie. Prin mecanismele de memorie virtuală se măreşte probabilitatea ca informaţia ce se doreşte a fi accesată de către CPU din spaţiul virtual (disc), să se afle în memoria principală, reducându-se astfel în mod semnificativ timpul de acces de la 10-15 ms (timp acces discuri), la 50-80 ns (timp acces DRAM-uri) în tehnologiile actuale.

Ce reprezinta TLB ?

TLB-uri – Translation Lookaside Buffers.

În majoritatea schemelor de paginare tabelele sunt ţinute în memorie din cauza mărimii lor.Din moment ce viteza de execuţie este limitată de rata cu care CPU-ul poate lua instrucţiuni şi date din memorie, faptul că este necesar să se facă referinţe la tabel pentru două pagini duce la reducerea performanţei.Soluţia cu care s-a venit a fost echiparea calculatoarelor cu un dispozitiv hardware mic pentru maparea adreselor virtuale în adrese fizice fără a trece prin tabel. Dispozitivul se numeşte TLB sau uneori o memorie asociativă, este de obicei în interiorul MMU şi este alcătuit dintr-un număr mic de intrări, opt în acest exemplu, dar rareori sunt mai mult de 64. Fiecare intrare conţine informaţii cu privire la o pagină inclusiv numărul paginii virtuale, un bit ce este setat când pagina este modificată, codul de protecţie (permisii decitire/scriere/executare), şi cadrul de paginii fizice în care pagina este situată. Aceste câmpuri au o corespondenţă unu la unu cu câmpurile din tabelul de pagină.Un alt bit indică dacă o intrare este validă sau nu. Atunci când o adresă virtuală este prezentată la MMU pentru translaţie, hardware-ul verifică mai întâi să vadă dacă numărul paginii virtuale este presetat în TLB comparându-l simultan cu toate intrările (în paralel). Dacă se găseşte o pereche validă şi accesul nu încalcă biţii de protecţie cadrul paginii este luat din TLB, fără a mai merge la tabel. Dacă numărul paginii virtual este prezent în TLB dar instrucţiunea încearcă să scrie pe o pagină ce nu poate fi scrisă, o eroare de protecţi este generată, la fel cum s-ar fi întâmplat şi din tabel.

Prezentati algoritmii de inlocuire a paginilor.

Page 27: Sisteme de Operare!!!!

OPTIMAL. Fiecare pagină se etichetează cu numărul de instrucţiuni ce se vor executa până când este referită pagina pentru prima dată. Atunci când trebuie eliminată o pagină din memorie, se selectează pagina cu cea mai mare valoare a etichetei. Deşi acest algoritm generează cea mai mică rată de pagini invalidate, el nu poate fi implementat, deoarece sistemul de operare nu poate determina când urmează să fie referită o pagină. Acest algoritm este utilizat doar pentru studii comparative. De exemplu, pentru un algoritm care nu este optimal, este util de ştiut că are performanţe cu 12% mai slabe decât cele optimal.

NRU. Pentru fiecare pagină existentă în memorie, intrarea corespunzătoare din tabela paginilor conţine doi biţi de stare: R şi M: – bitul R este pus pe 1 ori de câte ori pagina este referită (în citire sau scriere), – bitul M devine 1 atunci când pagina este modificată. Aceşti biţii trebuie actualizaţi la fiecare referire a memoriei. Dacă un bit devine 1, el rămâne pe aceeaşi valoare până când este resetat explicit de către sistemul de operare. La prima intrarea în execuţie a unui proces, biţii R şi M asociaţi paginilor ce aparţin procesului sunt puşi pe 0 de către sistemul de operare. Periodic (ex. la fiecare întrerupere de ceas) bitul R este pus pe 0 pentru a putea face distincţie între paginile care nu au fost referite recent şi cele care au fost referite. În momentul generării unei întreruperi de pagină invalidă de operare inspectează toate paginile şi le împarte în 4 categorii pe baza valorilor biţilor R şi M. Clasa 0: nereferită, nemodificatăClasa 1: nereferită, modificatăClasa 2: referită, nemodificatăClasa 3: referită, modificatăPagina care va fi eliminată din memorie este selectată aleator din clasa nevidă având cel mai mic indice.

FIFO.Acest algoritm asociază fiecare pagini momentul la care a fost adusă în memorie. Când se pune problema înlocuirii unei pagini se selectează pagina cea mai veche. Nu mai trebuie memorat momentul la care o pagină este adusă în memorie dacă sistemul de operare menţine o listă înlănţuită a paginilor din memorie, pagina din capul listei fiind cea mai veche, iar cea de la sfârşitul listei fiind cea mai nouă. Pagina eliminată din memorie va fi pagina din capul listei, iar atunci când se aduce în memorie o pagină ea va fi înserată la sfârşitul listei.

SECOND CHANCE ALGORITHM.Folosind algoritmul FIFO există posibilitatea de a elimina din memoriei o pagină utilizată intens. Eliminarea unei astfel de pagini va conduce doar la creşterea ratei de pagini invalide. Pentru a evita o astfel de problemă se poate modifica algoritmi FIFO astfel încât să se verifice bitul R al celei mai vechi pagini. Dacă R este 0 pagina este veche şi neutilizată, deci va fi înlocuită imediat. Dacă R este 1, se resetează bitul R, pagina este mutată la sfârşitul listei şi procesul de căutare continuă. Această variantă modificată a algoritmului FIFO este denumită algoritmul celei de a doua şanse. Acest algoritm caută o pagină veche care nu a fost referită în perioada anterioară de ceas.

LAST RECENTLY USED. Este o aproximare bună a algoritmului optimal şi se bazează pe observaţia că paginile care au fost utilizate intens în ultimele câteva instrucţiuni vor fi, probabil, utilizate intens şi în următoarele câteva instrucţiuni. Aceste observaţii sugerează că atunci când se referă o pagină inexistentă în memorie se va înlocui pagina care a fost neutilizată cel mai mult timp. Algoritmul LRU poate fi implementat în 2 moduri: a) cu ajutorul unei liste înlănţuite a tuturor paginilor din memorie. În capul listei sunt plasate pagini referite recent, iar la sfârşitul listei se găsesc pagini nereferite de mult timp. La fiecare referire a unei pagini din memorie ea trebuie căutată în listă şi mutată în capul listei. În cazul în care trebuie eliminată o pagină din memorie se va alege ultima pagină din listă. b) cu ajutorul unui contor C (contor hardware) care este incrementat după fiecare instrucţiune. Fiecare intrare din tabela paginilor trebuie să deţină un câmp în care să se poată stoca valoarea contorului C. După fiecare referire la memorie, valoarea curentă a lui C se stochează în intrarea din tabela paginii corespunzătoare paginii referite. La o întrerupere de pagină invalidă se va selecta pagina din memorie având cea mai micăvaloare a contorului C (care a fost neutilizată cel mai mult timp).

Care este diferenta dintre o adresa fizica si una virtuala?

Page 28: Sisteme de Operare!!!!

CURS 8

Probleme de proiectare a sistemelor cu paginareAlocare globală vs alocare locală.Când un proces declansează un page fault (pagina accesată nu se găseşte înmemoria principală), un algoritm de alocare locală a paginilor selecează pentru înlocuire opagină care aparţine acelui proces (sau un grup de procese care împart aceeaşi partiţie dememorie). Algoritmul de alocare globală a paginilor poate selecta orice pagină din memoriepentru înlocuire.Alocarea locală a paginilor presupune existenţa unei partiţionări a memoriei caresă determine câte pagini sunt alocate unui proces sau unui grup de procese. In general, algoritmii de alocare globală sunt mai eficienţi decât cei de alocarelocală, mai ales când dimensiunea setului în lucru variază pe toată durata procesului. Daca sefoloseşte un algoritm pentru alocare locală, iar dimeniunea setului în lucru creşte, va rezultathrashing-ul. Daca dimeniunea setului scade, algoritmii locali folosesc memoria în modineficient. Pentru un algoritm de alocare globală, sistemul trebuie să decidă mereu câte paginisă aloce pentru fiecare proces. O metodă este de a monitoriza dimensiunea setului în lucru cuajutorul biţilor de vârstă, dar în acest caz nu se poate spune cu certitudine dacă nu va rezultathrashing-ul. Dimeniunea setului se poate modifica în câteva microsecunde, pe când biţii devârstă durează câteva tacturi de ceas.O altă metodă este existenţa unui algoritm care să aloce pagini proceselor în lucru.Se determină numarul proceselor în lucru şi se alocă pentru fiecare un număr egal de pagini. La folosirea unui algoritm de alocare globală, este posibil să alocăm pentru începutun număr de pagini proporţional cu dimensiunea procesului, dar alocarea trebuie updatată pemăsură ce procesele se execută. Astfel se foloseşte algoritmul frecvenţei page fault-urilor(PFF – page fault frequency), care stabileşte când să se mărească sau să scadă numărul depagini alocate unui proces. Acest algoritm nu dă nici o informaţie asupra cărei pagini sa fieînlocuită când apare un fault, ci doar controlează dimensiunea setului alocat.Controlul alocării paginilorChiar dacă se folosesc cei mai buni algoritmi de alocare a paginilor, se poateîntâmpla să rezulte tharshing-ul. De fapt, de fiecare dată când suma tuturor seturile în lucruale proceselor este mai mare decât capacitatea memoriei, rezulta thrashing-ul. Acest lucru se poate observa atunci când algoritmul PFF indică existenţa unuiproces care are nevoie de mai multă memorie, dar nici un proces nu are nevoie de mai puţinămemorie. Situaţia în care se ajunge este destul de delicată: nu se poate aloca memorie înplus procesului care are nevoie, deoarece nu avem de unde. Trebuie să “scăpăm” temporarde anumite procese. Singura metodă pentru a realiza acestu lucru, fără a termina forţatprocese, este să le mutăm pe disc (swap). Astfel, paginile rămase libere de la procesle mutatevor fi acum alocate proceselor care au mai multă nevoie de memorie. Dimensiunea paginilorDimensiunea paginilor este de obicei determinată de arhitectura procesorului. Un sistem cu dimensiune mică a paginilor utilizează mai multe pagini, astfel cătabela de pagini (page table), care este utilizată pentru a face legătura între adresele virtualeşi adresele fizice, va ocupa mai mult spaţiu.Pentru a face legătura între adresele fizice si adresele virtuale, procesoarele aunevoie de o tabela speciala, numita Translation Lookaside Buffer, sau TLB, care este“consultata” la fiecare acces de memorie. TLB nu are o dimensiune fixă, iar când nu poatecompleta cerere de adresă (TLB miss), tabelele de pagini trebuie cautate manual (hardwareor software), pentru a se gasi adresa cautată. Daca dimensiunea paginilor este mare, atuncitabela TLB poate memora mai multe legături între adresele virtuale si adresele fizice,evitându-se astfel acele TLB misses, mari consumatoare de timp.Rareori se întâmplă ca un proces sa aibă nevoie de un număr fix (întreg) de pagini.Astfel, ultima pagină va fi parţial ocupată, restul de memorie neocupată din acea paginăneputând fi utilizată. Astfel, dimensiunea mare a paginilor va creşte probabilitatea ca porţiunimari din memorie să nu poată fi utilizate. Dimensiunea mică a paginilor asigură o mai bună

Page 29: Sisteme de Operare!!!!

egalitate între dimensiunea memoriei si dimensiunea totală a proceselor. Spaţiul datelor şi spaţiul instrucţiunilorInstrucţiunile şi datele ocupă spaţii de adrese diferite în memorie. Astfel, există oadresa 0 în spaţiul adreselor instrucţiunilor, care pointează către o locaţie unde estememorată o instrucţiune; la fel şi pentru date. La un calculator cu acest design, ambele spaţii de adrese (al instrucţiunilor şi aldatelor) sunt paginate independent una de cealaltă. Fiecare are tabela ei de pagini, cu legăturiindependente între adrese virtuale si adrese fizice de date şi instrucţiuni. Când este nevoie deo instrucţiune, procesorul ştie ca trebuie să folosească spaţiul instrucţiunilor si tabela depagini a instrucţiunilor. La fel şi pentru date. Pagini partajateIntr-un sistem multiprogramat, este ceva normal ca mai mulţi utilizatori să rulezeacelaşi program în acelaşi timp. Este evident că este mai eficient să se utilizeze aceleaşipagini, decât să fie mai multe copii ale acelor pagini în memorie. 41Dacă există spaţii separate pentru date şi instrucţiuni, este evident că pentru apartaja programele, procesele vor folosi aceeasi tabelă de pagini pentru instrucţiuni, dartabele de pagini diferite pentru date. Tabelele de pagini sunt structuri de date independentede tabela de procese. Fiecare proces are doi pointeri în tabela de procese: unul pentru tabelade date şi unul pentru tabela de instrucţiuni. Când mai multe procese folosesc aceleaşi instrucţiuni, apar probleme cu paginilepe care le folosesc. Daca un proces se execută si este eliminat din memorie, toateconţinuturile paginilor care i-au fost alocate sunt şterse, iar paginile vor fi alocate altorprocese. Astfel, procesele care foloseau paginile primului proces vor genera multe fault-uri,pentru a încărca în memorie paginile necesare lor. Similar, când un procesul îşi terminăexecuţia, este esenţial să se ştie care dintre paginile lui sunt folosite de alte programe, pentrua nu fi golite din greşeală. Se folosesc astfel structuri de date speciale care memorează carepagini sunt folosite de mai multe procese şi care sunt aceste procese. În cazul datelor, fiecărui proces îi este alocată o tabelă de pagini, fiecare pointândcăre acelaşi set de date. Nu este nevoie să sa copieye setul de date, pentru fiecare proces.Paginile de date sunt Read Only pentru fiecare proces în parte. Atâta timp cât procesele nu modifică datele, ci doar le citesc, nu este nici oproblemă. Când un proces modifică o anume data din memorie, se crează o copie a paginii,astfel ca fiecare proces are acum pagina lui de date. Acestea sunt acum Read Write, astfel căviitoare modificări ale datelor nu vor produce nici o violare în sistem. Această strategie măreşte performanţele sistemului, deoarece paginile al cărorconţinut nu este modificat nu vor fi copiate.Eliberarea (curăţarea) paginilorCând este nevoie de o nouă pagină, iar nu este nici o pagină goală în memoriespre a fi scrisă cu noua informaţie, una din paginile actuale trebuie mutată pe disc (swap). Toate sistemele au un proces numit “paging daemon“, care cercetează periodicmemoria şi menţine un numar suficient de pagini goale spre a fi folosite la nevoie. Elselectează şi transferă pe disc, prin algoritmii specifici de alocare a paginilor, paginile care aufost modificate după ce au fost încărcate.Interfaţa memoriei virtualeMemoria virtuală este transparentă proceselor şi utilizatorlor, este un spaţiu marede adrese vituale, pe un calculator cu puţina memorie fizică. În unele cazuri, utilizatorii au puţin control asupra memoriei şi pot modifica modulde comportare al diveselor programe.Cea mai utiliyata tehnică de management a memoriei este DSM – DistributedShared Memory. Scopul este acela de a permite mai multor procese într-o reţea să aibăacces la acelaşi set de pagini, printr-un singur spaţiu de adrese. Când apare un fault,procedura de tratare a fault-urilor detectează în reţea ce calculator are pagina cerută şi trimiteun mesaj prin care pagina este eliminată din tabela de pagini si din memoria sursă, estetrimisă prin reţea celui care a cerut-o, care o va indexa intr-o tabela de pagini şi o va alocaprogramului care are nevoie.

Page 30: Sisteme de Operare!!!!

Segmentarea .Într-un spațiu de adresare unidimensional cu tabele de pagini în creștere există posibilitatea ca la un moment dat acestea să se suprapună.Din acest motiv au apărut segmentele care permit fiecărei tabele de pagini să-și modifice dimensiunea în mod independent. Segmentele sunt spații de adresare independente.Segmentarea permite partajarea de date sau cod între mai multe programe.

Diferente dintre paginare si segmentare.

Considerație Paginare Segmentare

Programatorul trebuie să știe ce tehnică se utilizează?

Nu Da

Câte spații contigue de adresare există?

1 Mai multe

Spațiul de adresare total poate depăși dimensiunea memoriei?

Da Da

Datele și codul pot fi identificate și protejate separat?

Nu Da

Tabelele de pagini de dimensiune variabilă pot fi gestionate ușor?

Nu Da

Partajarea codului între utilizatori este facilă?

Nu Da

De ce a fost inventată tehnica? Pentru a simula un spațiu de adresare contiguu mai mare fără a achiziționa mai multă memorie

Pentru a permite ca zona de date și zona de cod să fie două zone de adresare logice independente ajutând astfel la protecția și partajarea acestora.

Translatarea unei perechi (selector,deplasament) în adresă fizică în cazul segmentării pure

Page 31: Sisteme de Operare!!!!

Fragmentarea externa.

Problema golurilor aflate intre diferitele procese aflate in memorie poarta numele de fragmentare externa. Memoria care nu este alocata devine in timp din ce in ce mai fragmentata.Fragmentarea externa poate fi eliminata prin tehnici costisitoare de compactare a memoriei

Ce reprezinta un selector?

Selectori = Registre: cs, ds, ss, es, fs, gs Index: Indexează tabela de descriptori .TI: indică tabela: GDT sau LDT .Tabelele sunt ținute în memorie la adrese specificate în registre: gdtr şi ldtr .RPL: dacă selectorul este încărcat în CS, specifică nivelul curent de privilegiu (CPL).

Un selector e un numar reprezentat pe 16 biti dintre care unul din bitii selectorului precizeaza daca selectorul e local sau global

Ce reprezinta un descriptor?

descriptorii - plasaţi într-un tabel ;accesul la un segment - pe baza indicelui în tabelul de descriptori (selector).adresa virtuală - 2 componente: indicele în tabelul de descriptori si deplasamentul în cadrul segmentului .adresa fizică = adresa de început a segmentului + deplasamentul

Fiecare program are un tabel de segmente, cu acte un descriptor pentru fiecare segment.Deoarece exista mai bine de un sfert de milion de intrari in tabel, descriptorul este el insusi un segment si este paginat.Descriptorul de segment contine o indicatie care atesta, sau nu, apartenenta segmentului la memoria principala.Daca vreo parte din segment se afla in memorie, atunci se considera ca segmentul si tabelul sau de pagini se afla in memorie.Daca segmentul este in memorie, descriptoul sau contine un pointer de 18 biti catre tabelul sau de pagini.

Ce reprezinta algoritmul PFF?

PFF (Frecvenţa de eroare de pagină) Este un algoritm de spaţiu variabil care foloseşte o abordare mult mai “ad-hoc”. Monitorizează frecvenţa de eroare pentru fiecare proces.Dacă aceasta este peste un prag înalt ales, i se dă procesului mai multă memorie, astfel încât să fie mai puţine defecte,dar nu funcţioneză întotdeauna (Ex.: FIFO, anomalia lui Belady).Dacă frecvenţa de eroare este sub un alt prag ales, jos, se ia memorie de la proces.Ar fi normal ca el să producă mai multe defecte, dar nu este regulă. Este greu să se utilizeze PFF pentru a distinge între schimbările de localitate şi schimbările în dimensiunea WS-ului.

Cum se calculeaza rata de defecte de pagina?

Una din propietatile placate ale sirului distanta este ca paote fi folosit pentru predictia numarului de defecte de pagina ce vor avea loc cu memorii de diferite marimi.Scopul este realizarea unei treceri prin sirul distantelor si din informatia adunata, predictia nr de defecte de pagina pe care procesul le va avea in memorii cu 1,2,3….,n cadre de pagina, unde n este nr de pagini virtuale in spatiul de adrese al procesului.Algoritmul incepe prin parcurgerea sirului distantelor, pagina cu pagina.Aceasta tine evidenta nr de aparitii ale lui 1, numarul de aparitii ale lui 2 s.a.m.d.Fie C numarul de aparitii ale lui i.Fie C∞ nr de aparitii ale lui ∞ in sirul distantelor.Clacula acum vectorul F in functie de formula:

Page 32: Sisteme de Operare!!!!

Valoarea lui Fm reprezinta numarul de defecte de pagina care vor avea loc cu sirul distantelor date si m cadre de pagina.De exemplu:Daca F1 este 20 ,insemnand ca , in conditiile in care o memorie sticheaza doar 1 cadru de pagina , din cele 24 de referinte din sir , toate vor genera defecte de pagina cu exceptia celor 4 cadre care sunt la fel cu referinta paginii precedente.Un defect de pagina este genrat de fiecare data cand un element al sirului distanta este egal cu m+1 sau ami mult.Suma din formula de mai sus aduna numarul de aparitii ale unor astefl de elemnte.

O pagina se poate regasi în doua seturi de lucru simultan?Nu.

Explicati diferentele dintre fragmentarea interna si fragmentarea externa.

Translatarea unei perechi selector , depalsament se realizeaza astefel:1.se identifica pe baza selectorului, descriptorul de segment2.se verifica daca depalasemtul depaseste limita segmentului3.daca nu se depaseste adaug la campul de baza de 32 de biti din descriptorul de segment la deplasament si formez adresa liniara.

CURS 9.

Fisier:definitie, structura, tipuri, modalitati de acces, atribute, operatii cu fisiere

Sistemul de fişiere este o bucată dintr-un sistem de operare (adică o parte dintr-un program, de fapt); această bucată este vizibilă utilizatorului ca un set de proceduri (apeluri de sistem, pentru a fi mai precişi) care operează cu fişiere, manipulînd o structură de date pe un suport permanent de memorie.

   Sistemul de fişiere oferă structura modului de organizare a informaţiilor în sistem: structura arborescentă (ierarhică) de directoare şi fişiere. De fapt, această concepţie a fost preluată de celelalte sisteme de operare(DOS, Windows, Netware).            Ideea care stă la baza sistemului de fişiere este ierarhia. Se ceează astfel imaginea unui sistem de fişiere ierarhizat sub formă de arbore, în vârful căruia se află directorul radacina (root), notat “\”, la care se pot conecta un număr de directoare şi fişiere. Fiecare director poate conţine alte directoare şi fişiere, directoare care la rândul lor pot conţine alte directoare şi fişiere, pe un număr nelimitat de nivele. Această structură arborescentă este folosită de sistemul UNIX pentru gestionarea şi localizarea fişierelor proprii şi ale utilizatorilor.              Sistemul Unix utilizează patru tipuri de fişiere: ordinare, director, speciale, pipe.

• Acces . Acces secvențial .Citirea octeților/înregistrărilor de la începutul fișierului ;Se păstrează ordinea de citire în fișier,fișierele se pot derula înapoi sau salva ;Convenabil când mediul de stocare era banda magnetică

• Acces aleator .Citirea octeților/înregistrărilor în orice ordine .Esențial pentru sistemele de baze de date .Citirea se realizează prin două metode:Mutarea marcatorului de fișier (seek), apoi citește sau …; Citește și apoi muta marcatorul de fișier .

Atribute.

-protection. Cine si cum poate accessa fisierul

Page 33: Sisteme de Operare!!!!

-password

-creator .idul persoanei care a creat fisierul

-owner….

-read-only flag. 0 pt citire sau scriere , 1 pt read only

-hidden flag. 0 pt normal 1 pt a nu fi afisat

-archive flag,ascii, random access flag, temporary flag,lock flags,record length, key position, key length, creation time, time of acess, time of last change, current size, maximum size.

Operatii.Create Delete Open Close Read Write Append Seek Get attributes Set Attributes Rename.

Director:definitie, forme, cale, operatii

Definitie:Directorul este un caz particular de fişier ce arată ca un cuprins decarte. El conţine două coloane de informaţie - numerele inode ale fişierelorşi numele fişierelor. Fiecare director conţine o referinţă către el însuşi(identificat prin semnul „.”) şi către directorul părinte (identificat prin „..”).Chiar şi directorul rădăcină – root – conţine o referinţă către directorulpărinte, care în acest caz este o referinţă către el însuşi. Directoarele potconţine subdirectoare şi fişiere. La rândul lor, subdirectoarele pot conţinealte subdirectoare şi alte fişiere. Orice sistem de operare posedă o anumitămodalitate de structură a directoarelor pentru organizarea informaţiei pehard-disc; în UNIX un director se numeşte directory, iar în Windows şiMacOS un director se numeşte folder, având însă aceeaşi semnificaţie.

Forme:Aceste directoare au următorul conţinut:/bin Comenzi UNIX/dev Director pentru dispozitive speciale/etc Programe şi fişiere de date suplimentare/lib Directorul bibliotecii de programe C/mnt Directorul mount; rezervat pentru montarea sistemelor defişiere/opt Conţine aşa numitele „software storage objects” (SSO's)/tmp Director temporar/usr Conţine rutine utilizator/var Fişiere obiect nepartajate/home Directorul utilizatorilor sistemului

Cale:

Operatii:1. Create-creaza2. Delete-sterge3. Opendir-deschide4. Closedir-inchide5. Readdir-citeste6. Rename-redenumire7. Link-creaza o legatura-o legatura hard

Page 34: Sisteme de Operare!!!!

8. Unlink-sterge o legatura

Implementarea fisierelorSchema generală a unui sistem de fișiere

(a) Alocarea contiguă a spațiului de pe disc pentru 7 fișiere (b) Starea discului după ștergerea fișierelor D și F

Stocarea unui fișier ca o listă înlănțuită de blocuriO listă înlănțuită de blocuri ce utilizează FAT(file allocation table) în RAM

Implementarea directoarelor

(a) Un director simpluIntrări de dimensiune fixăAdresele și atributele intrărilor se regăsesc în director(b) Director în care fiecare intrare referă un i-node

Două metode de tratare a fișierelor cu denumiri lungi într-un director(a) In-line(b) In a heap

Sistem de fisiere: definitie, schema generală, tipuri cunoscute.Sistemul de fişiere reprezintă o construcţie logică ce oferăposibilitatea stocării şi regăsirii informaţiei ce se află pe un dispozitiv destocare cu acces aleator. Un sistem de fişiere este parte integrantă asistemului de operare şi este format din fişiere, directoare precum şiinformaţii necesare pentru localizarea şi accesul acestora. Sistemul de fişiereUNIX ordonează şi grupează din punct de vedere logic fişierele într-omanieră eficientă, prin cuprinderea acestora în directoare ce suntasemănătoare dosarelor ce conţin mai multe documente.UNIX posedă un sistem de fişiere ierarhic, cu o structurăarborescentă multi-nivel ce pleacă de la directorul rădăcină (root),simbolizată prin caracterul „/” (slash), putând de fapt să fie suportate maimulte sisteme de fişiere simultan pe acelaşi disc. Fiecare disc este divizat înporţiuni (partiţii) ce pot găzdui un sistem de fişiere, un domeniu de swap sauun domeniu de date speciale.

Ce reprezinta numărul magic?

un număr magic (o constantă rezervată) pentru a indica tipul sistemului de fişiere (ex.: sistem de fişiere SCO Unix);Numarul magic precizeza daca fisierul este executabil sau nu.

Cum este implementat accesul aleator la fisier sub MS-DOS?

Precizati avantaje si dezavantaje ale legaturilor simbolice comparativ cu cele hardware

Page 35: Sisteme de Operare!!!!

Caracterizati FAT, FAT32, NTFS

Sistemul de fişiere al unui SO determină modalitatea în care fişierele sunt denumite, modul şi locul în care acestea sunt stocate pe hard-disk sau pe alt mediu de stocare. SO Windows, Macintosh, UNIX şi Linux posedă sisteme de fişiere ce utilizează o structură ierarhică.

Într-un sistem de fişiere ierarhic, fişierele sunt plasate în aşa numite “containere logice” ce sunt aranjate într-o structură de arbore. Sistemul de fişiere porneşte cu rădăcina arborelui. UNIX şi Linux denumesc containerul din vârful structurii arborescente “director”. Containerele din cadrul fiecărui director se numesc “subdirectoare”. Windows şi Macintosh utilizează termenele de “folder” şi “subfolder” pentru a descrie directoarele şi subdirectoarele.

Sistemul de fişiere al unui SO determină modul în care fişierele şi directoarele sunt organizate din punct de vedere logic. Tipul sistemului de fişiere utilizat de către calculator determină modul în care fişierele pot fi securizate (sau nu) faţă de alţi utilizatori sau programe. Sistemul de fişiere defineşte, de asemenea, modul în care datele sunt aranjate în mod fizic pe mediul de stocare. Unele sisteme de fişiere utilizează spaţiul de stocare într-o manieră mai eficientă decât altele.

Un sistem de fişiere clasic este File Allocation Table (FAT). Sistemele FAT sunt administrate pe disc de către SO. Tabela FAT conţine o hartă de fişiere precum şi modul în care acestea sunt stocate pe disc. Sistemul FAT conţine referinţe către clusterele de pe disc. Clusterul este unitatea de bază a stocării logice pe disc. Un fişier poate fi stocat pe mai mulţi clusteri, dar un cluster poate conţine date provenind de la un singur fişier. Clusterii pot fi aranjaţi (sau nu) unul lângă celălalt. SO utilizează sistemul FAT pentru a identifica toţi clusterii de pe disc în care un fişiere este stocat.

Există trei tipuri de sisteme FAT. Versiunea originală este aceea ce a păstrat numele de FAT, iar versiunile FAT16 şi FAT32 reprezintă versiuni îmbunătăţite ale acesteia.

Sistemul FAT original a fost folosit prima oară pe primele versiuni de MS-DOS, nefind capabil să fie utilizat pentru hard discuri mai mari sau pe sisteme de operare mai avansate precum Windows 3.1, Windows 95/98. Sistemul original FAT avea limitări şi în privinţa numelor de fişiere, putând recunoaşte nume de fişiere până la 8 caractere în lungime. Alte limitări erau cele legate de imposibilitatea utilizării hard discurilor de capacităţi mari şi de nerecunoaşterea de către SO avansate. Sistemul FAT nu putea să utilizeze în mod eficient spaţiul de pe discurile cu capacităţi mai mari. Această modalitate de utilizare ineficientă a reprezentat aceeaşi problemă cu care s-a confruntat şi FAT16 (şi a determinat apariţia lui FAT32). FAT16 a fost creat pentru a putea utiliza partiţii până la 4 GB.

Cu toate că discurile mari pot fi formatate folosind FAT16, această manieră este ineficientă deoarece partiţiile mari au şi dimensiuni mai mari de clusteri. Spre exemplu, la o partiţie de 512 MB, dimensiunea clusterilor este de 8 KB. Asta înseamnă că fie şi pentru un fişier de dimensiune 1 KB, el va folosi 8 KB de spaţiu pe disc, deoarece doar un fişier poate fi stocat într-un cluster. Rezultă deci 7 KB irosiţi. Pentru a rezolva această problemă, a fost dezvoltat FAT32. Acest sistem de fişiere pe 32 de biţi utilizează clusteri de dimensiuni mai mici şi oferă suport pentru partiţii până la 2 TB.

SO diferite utilizează sisteme de fişiere diferite iar unele SO pot utiliza mai multe sisteme de fişiere. Spre exemplu, deşi Windows 3.x poate utiliza doar sistemul FAT16, Windows 2000 poate utiliza FAT16, FAT32 sau NTFS (New Technology File System). Sistemul de fişiere determină convenţiile pentru denumirea fişierelor şi formatul pentru specificarea căii (drumului) către locaţia fişierului. Aceste reguli pentru stabilirea numelor fişierelor variază în funcţie de sistemul de fişiere şi cuprind următoarele probleme:

• Numărul maxim de caractere permise în numele fişierului• Numărul maxim de extensii sau sufixe• Dacă sunt admise sau nu spaţii în numele fişierelor• Dacă numele fişierelor sunt “case sensitive”• Ce caractere pot fi utilizate pentru numele fişierelor• Formatul de specificare a căii către fişier

Page 36: Sisteme de Operare!!!!

Curs 10:

Sisteme de fisiere cu jurnalizare.

• Ideea este :– Păstrarea unui jurnal a operațiilor planificate pe sistemul de fișiere astfel încât dacă

sistemul se va bloca sau va fi repornit să se poată continua operația întreruptă.– Numai după ce jurnalul este editat (se înregistrează operațiile planificate) operațiile se

vor executa.– Sistemele de fișiere NTFS și ReiserFS utilizează jurnalizare.

Sisteme de fisiere virtuale.

• SO Windows poate conține la un moment dat mai multe sisteme de fișiere eterogene pe diferite partiții

• SO Unix integrează sisteme de fișiere multiple într-o singură structură utilizând conceptul de VFS(Virtual File System)

• Sistemul de fișiere virtual se bazează pe existența : – O interfață cu procesele utilizator numită și interfața POSIX– O interfață la sistemul de fișiere propriu-zis– Unui comutator între interfețe– Un translator pentru fiecare sisteme de fișiere integrat

Descrieti un i-node.Reprezentarea interna a unui fisier si informatiile referitoare la carcateristicile sale sunt continute de o structura de date numita i-nod (information node), care contine date despre: pozitia pe disc a datelor din fisier, proprietarul fisierului, drepturile de acces, momentul ultimului acces la fisier sau ultima modificare a fisierului sau I-nodului. Un fisier poate avea mai multe nume, dar exista un singur i-nod asociat. Relatia stabilita intre nume si i-nod se numeste legatura . Fiecare i-nod are asociat un numar de ordine (inumber) ce desemneaza in mod unic numele interne ale fisierelor, iar cataloagele contin numai tabela de traducere a numelui

Page 37: Sisteme de Operare!!!!

extern al fisierului in numarul de ordine asociat. Cand un proces creeaza un nou fisier, nucleul asociaza acestuia un i-nod liber al carui numar de ordine devine identificatorul intern al fisierului si creeaza o noua intrare in catalogul corespunzator. I-nodurile sunt memorate in sistemul de fisiere dar, pentru a micsora timpul de executie a operatiilor care necesita informatii despre fisiere, o copie a tabelei de i-noduri este pastrata in memoria interna. Nucleul sistemului de operare contine urmatoarele structuri de date: o tabela de fisiere, cate o tabela de descriptori de fisier pentru fiecare proces. Tabela descriptorilor de fisier identifica toate fisierele create sau deschise de un anumit proces. Tabela de fisiere inregistreaza, pentru fiecare fisier, pozitia in octeti de la care se va face urmatoarea operatie de citire sau scriere asupra fisierului. In momentul in care procesul va lansa o comanda de deschidere sau creare de fisier, nucleul sistemului de operare ii va intoarce indexul fisierului din tabela descriptorilor de fisier alocata acelui proces. Daca procesul lanseaza o comanda de scriere/citire asupra fisierului, comanda va contine ca argument si acest index, pe baza caruia sistemul de operare va identifica descriptorul acelui fisier, apoi pozitia sa in sistemul de fisiere si in cele din urma i-nodul asociat (din informatiile cuprinse in i-nod se identifica zona de date a fisierului.

Ce reprezinta logical dump?Logical dump-cel mai comun algoritm utilizat aun unix, salveaza toate directoarele chiar si cele nemodificate , care se afla in calea fisierelor sau directoarelor , care s-au modificat de la ultima salvare.Acest algoritm pastreaza o harta indexata dupa i-node-ul fiecarui item din arbore.Fazele acestui algoritm sunt:1. Se marcheaza in harta de biti toate directoarele , nu doar cele care contin fisiere modificate

si fiecare director este inspectat recursive2. 2. Se demarcheaza directoarele care nu contin fisiere modificate sau subdirectoare cu

fisiere modificate.3. 3.se scaneza i-node-urile in ordine si se salveaza directoarele marcate4. 4. Sunt salvate si directoarele demarcate la pasul 2.

Ce reprezinta physical dump?

Physical dump-se saveaza toate blocurile de date in ordine , pornind de la blocul 0.Acantajele acestei metode sunt viteza si simplitudinea.Dezavantajele sunt mai numeroase:-se salveaza blocuri nefolosite sau blocuri defecte-nu se poate sari directoarele selectate in acest sens-nu se realizeaza salvari incrementale-nu se poate restaura fisiere individuale la cerere.

Tehnici de reducere a accesului la disc.

Accesul la disc este mult mai dificil decat accesul la memorie, exista 3 tehnici de reducere a accesului la disc:1. Prin utilizarea unui buffer cache(zona de tampon)

Page 38: Sisteme de Operare!!!!

Buffer-ul este o colectie de blocuri de date, care logic apartin de disc, dar sunt pastrate in memorie pentru a mari performanta accesului la disc.Deoarece un buffer contine f multe blocuri pentru a identifica rapid daca un anumit bloc se afla in buffer se utilizeaza o tabela hash, care contine adresele de dispositive si de pe disc.Toate blocurile ce contin aceiasi valoare hash sunt legate intre ele si formeaza o lista.Cand apare necesitatea inlocuirii sau stergerii unui bloc se utilizeaza algoritmul LRU.

2. Bloc citit inainte este o tehnica ce poate fi aplicata doar fisierelor ce pot fi accesate secvential, deoarece daca s-a citit blocul k, atunci se verifica automat daca si blocul k+1 se afla in buffer, chiar daca acesta din urma nu a fost inca solicitat.

3. Se refera la reducerea numarului de rotatii de disc prin lansarea blocurilor consecutive(care vor fi accesate secvential) preferabil in acelasi cilindru.

Un sistem de fisiere este în starea inconsistent. Descrieti.

Lista aceasta este bidirectionala sic a atare LRU este f efficient.Totusi daca se intampla ca sistemul de fisiere sa devina inconsistent algoritmul LRU.Unix rezolva problema inconsistentei prin apelul de sistem sync, care forteaza salvarea tuturor blocurilor modificate pe disc.Cand sistemul este pornit, este pornit un prag numit update, care ruleaza din 30 s in 30secunde, care ruleaza in background si al fiecare rulare se acceseaza apelul sync.Sistemul de operare unix are un asemenea apel de sistem care se numeste flushfile buffer.

Ce este cota de disc? Care sunt principalele probleme de considerat în momentul realizării unui backup? Descrieti modalitatea de functionare a bufferului cache.

Buffer-ul este o colectie de blocuri de date, care logic apartin de disc, dar sunt pastrate in memorie pentru a mari performanta accesului la disc.Deoarece un buffer contine f multe blocuri pentru a identifica rapid daca un anumit bloc se afla in buffer se utilizeaza o tabela hash, care contine adresele de dispositive si de pe disc.Toate blocurile ce contin aceiasi valoare hash sunt legate intre ele si formeaza o lista.Cand apare necesitatea inlocuirii sau stergerii unui bloc se utilizeaza algoritmul LRU.

Performanta sistemelor de fisiere.

Una dintre metodele care creste performanta este acea de a plasa i-node-urile in mijlocul discului, reducand astfel timpul mediu de cautare dintre un i-node si primul bloc la jumatate.O alta metoda ar fi de a divide discul in grupuri de cilindri, fiecare cu propiile i-node-uri, blocuri de date si liste de blocuri goale.SO windows detin programe de defragmentare care trebuie utilizat regulat de utilizator, deoarece avem nevoie de cat mai multe spatii contigue pe disc.

Page 39: Sisteme de Operare!!!!

Defragmentarea este consumatoare de timp, dar timpul poate fi redus semnificativ daca sistemul de fisiere detine un spatiu contiguu liber mai mare la sfarsitul partitiei.SO UNIX si LINUX nu necesita defragmentare la fel ca SO WINDOWS.

Curs 11:

1. Principii ale dispozitivelor hardware de I/O

Dispozitive de I/O pot fi împărţite în două categorii:

~dispozitive orientate pe blocuri – stochează informaţii în blocuri orientate de dimensiune fixă,

fiecare bloc având adresă proprie. Principala proprietate a unui dispozitiv orientat pe

blocuri constă în posibilitatea de a citi sau scrie fiecare bloc independent de celelalte.

Unităţile de disc sunt cele mai uzuale dispozitive orientate pe blocuri.

~dispozitivele orientate pe caractere – dispozitive care furnizează sau acceptă un flux de

caractere, nu sunt adresabile şi nu dispun de o operaţie de căutare (imprimante, interfaţă de

reţea, mouse-ul, tastatura, etc).

2. Ce este un controler?

Controlerul de memorie este un circuit digital care gestioneaza fluxul de date din memoria principala. Poate fi un cip separat sau integrat in alt cip.

3. Ce este o intrerupere?

Intreruperea este un semnal electric generat de controller si trimis unui circuit special numit controller de intreruperi numite IRQ(Interact Request)

4. Mecanismul DMA.

Fara mecanismul DMA, un controller de disc citeste un bloc de pe disc bit cu bit si asambleaza acest flux intr-un bloc intr un buffer intern.

Apoi, detecteaza si conecteaza posibile erori si genereaza intreruperi.Sist. De operare citeste blocul de date din bufferul controllerului si il transforma in memorie. Tot acest process este consummator de timp. Mecanismul DMA a fost creat pentru a scuti procesul de operatie de transfer a datelor.

Ca atare, procesul furnizeaza controllerului pe langa adresa blocului de date care trebuie citit si: - adresa din memoria unde va fi stocat blocul citit de pe disc

~ nr de octeti transferat

Dupa citirea blocului, controllerul transfera blocul in memorie si nu procesorul

Controllerul foloseste un contor pentru a tine evidenta tuturor octetilor transferati incheind op de transfer cand controllerul=0. Apoi, se genereaza o intrerupere pt a informa sist. ca blocul de

Page 40: Sisteme de Operare!!!!

date e disponibil in memorie. Astfel, sist de operare nu trebuie sa copie blocul pt ca acesta este deja in memoria principala.

Daca nu utilize bufferul, ar trebui sa utilizam magistrala care poate fi ocupata cu rezolvarea altor tranzactii si ca atare controllerul ar genera numeroase mesaje de eroare.

5. Principii ale software-ului de I/O

-denumirea lor e uniforma (UNIX trateaza dispoz ca niste fisiere)

-toate erorile se trateaza prin rutine de tratare a intreruperilor

6. Nivelurile software-ului de I/O

-soft I/E de nivel utilizator

-nivelul sistemului de operare independent de echipament

-drivere de echipament

-rutinele de tratare a intreruperii

-hard


Recommended