Documente Academic
Documente Profesional
Documente Cultură
1
4. Tipuri de sisteme de operare, obiective i funcii
Valorile concrete ale atributelor sistemelor de operare i combinaii ale acestora determin diverse tipuri
de SO. Conform acestor atribute pot fi evideniate urmtoarele tipuri de sisteme de operare:
Un sistem secvenial (tratare pe loturi, engl. batch processing, fr. traitement par lots) execut la un
moment dat un singur program, care trebuie terminat nainte de a ncepe execuia unui alt
program.
Sistemele cu multiprogramare accept la un moment dat mai multe programe n memoria central,
acestea aflndu-se n diferite stadii de execuie.
Un sistem de calcul cu prelucrare multipl dispune de mai multe procesoare, care pot s execute
simultan unul sau mai multe programe. Sistemele de timp real funcioneaz, de obicei, n cadrul
unor sisteme de comand i este necesar ca valorile anumitor atribute s se ncadreze n limite
destul de restrictive, dictate de dinamica proceselor comandate.
3
12. Alte puncte de vedere asupra sistemelor de operare. Abordare funcional.
Abordare din punctul de vedere al interfeei cu utilizatorul
Sistemele de operare pot fi abordate din diferite puncte de vedere, cum ar fi SO i procesele, SO
i maina extins sau SO i maina ierarhic. Exist i alte puncte de vedere asupra sistemelor de
operare pe care un specialist ar trebui s le cunoasc.
Abordare funcional
Abordare funcional-Pentru un utilizator obinuit, convins c un calculator este doar un
instrument care l ajut n soluionarea unor probleme din domeniul su de activitate, noiunile,
cum ar fi administrarea memoriei cu paginaie sau driverele dispozitivelor, nu semnific prea
multe. Destinaia principal a unui sistem de operare pentru aceast categorie de utilizatori este
punerea la dispoziie a unui set de programe care l-ar ajuta n formularea i soluionare
problemelor concrete ce in de domeniul su de activitate.
Abordare din punctul de vedere al interfeei cu utilizatorul
Interfaa sistemului de operare cu utilizatorul prezint un interes aparte. Progresul n acest
domeniu este spectaculos, dac vom lua n consideraie c n primele sisteme de operare
utilizatorul era obligat s indice n mod explicit i manual (n regim textual) fiecare pas, orict de
nesemnificativ ar fi prut. Formularea pailor cu ajutorul unui limbaj specializat, cum ar fi Job
Control Language (JCL), nu a schimbat substanial situaia.
5
Paralel cu evoluia tehnic i funcional a sistemelor de operare a avut loc i o important
evoluie conceptual, care a permis o mai bun nelegere a funcionrii sistemelor de operare i
a condus la elaborarea unor metode proprii de concepere.
Debutul unei cercetri tiinifice a sistemelor de operare poate fi considerat anul 1964, care a
succedat o etap important de dezvoltare tehnic: primele sisteme cu partajare a timpului (Thor,
CTSS). Sistemul de operare UNIX, primul sistem mobil care asigur un mediu fiabil de
dezvoltare i utilizare a softului de aplicaie, este fundamentul practic de elaborare a sistemelor
fizico-logice deschise.
S UNIX i standardele sistemelor deschise
Sistemul de operare UNIX, primul sistem mobil care asigur un mediu fiabil de dezvoltare i
utilizare a softului de aplicaie.
Implementarea larg a sistemului de operare UNIX a permis trecerea de la declararea sistemelor
deschise la dezvoltarea practic a acestui concept. Variantele SO UNIX, propuse de compania
SCO i destinate exclusiv platformelor Intel, sunt bazate pe modulele iniiale ale System V 3.2,
fiind total compatibile cu toate standardele de baz
6
Un program secvenial = o mulime de proceduri, care se pot apela reciproc. Fiecrei proceduri i
este asociat un segment distinct de procedur. Datele sunt reprezentate prin segmente, pot fi
proprii unei proceduri sau partajate ntre mai multe proceduri.
Numim activitate fenomenul care rezult din execuia nentrerupt a unei proceduri unice.
!!Execuia unui program secvenial const dintr-un lan de activiti!!!!
Numim context al unei activiti mulimea informaiilor accesibile procesorului n cursul acestei
activiti. Contextul activitii este compus din contextul procesorului (registrele programabile i
interne) i contextul memoriei (segmentul procedurii i segmentul datelor). Trecerea de la o
activitate la alta este realizat de instruciuni speciale: apelarea i returul din procedur, care
realizeaz comutarea contextului.
Starea i contextul procesorului
Starea procesorului este determinat de coninutul registrelor acestuia. Registrele pot fi:
adresabile, numite registre generale, manipulate de programe, registre speciale - cuvnt de stare
program (program status word, PSW). PSW conine informaii:
Referitoare la starea procesorului:
Starea de execuie. Procesorul se poate afla n starea activ n care ndeplinete instrucii, sau n
starea de ateptare, cnd execuia este suspendat. Modul de funcionare:
Protecie - se permite doar programelor SO executarea unor instruciuni anumite (speciale),
programele utilizatorilor neavnd acces la aceste instruciuni.
Masca ntreruperilor.
Referitoare la contextul accesibil al memoriei i drepturile de acces asociate: tabele de segmente,
indicatori de protecie a memoriei, etc. Referitoare la derularea activitii curente: codul
condiiei, contorul operaiei urmtoare (contor ordinal).
19. ntreruperi.
8
intr_ceas>; svc_nou
:=<activ,master,mascat,adr tratare_svc >;
dezarmare(intr_ceas);
procedura tratare_svc;
save(zon);
case cod of
apel_lim_timp_ex: -- parametrii p, q, tratare_eroare
ceas:=q;
cspretur:=svc_vechi; -- salvare pentru retur
csplucrare:= <activ,slave,demascat,adr p>;
csperoare:= <activ,slave,demascat,adr
tratare_eroare>; armare(intr_ceas);
restabilete(zon);
ncarc_csp(csplucrare);
retur: -- datorat terminrii procedurii p
dezarmare(intr_ceas);
ncarc_csp(cspretur);
endcase
procedura intr_ceas; -- expirarea timpului limit
dezarmare(intr_ceas);
ncarc_csp(csperoare);
schema 3 are loc un paralelism real, iar n schema 2 un pseudo-paralelism. Paralelismul real
necesit dou procesoare distincte. Dou observaii importante sunt necesare:
Diferena acestor scheme de execuie este legat de alegerea nivelului de observare. Astfel, la
nivelul de baz, diferena dintre schemele 1 i 2 dispare: ambele sunt secveniale.
11
Excluderea mutual const n extinderea pentru secvena de aciuni a proprietii de
indivizibilitate a aciunilor nivelului de baz (aciuni atomare). Posibilitatea executrii unor
aciuni atomare se afl la baza mecanismelor care realizeaz sincronizarea.
14
Definind tm1, tm2 i td ca tablouri de elemente de lungimea unei linii i pointerii top i coad
locali fiecrui monitor, procedurile de depozitare i preluare pot fi:
<pentru tm 1> <pentru tm 2>
procedura intrare(l:linie); procedura intrare(l:linie);
tm1[coad] := l; tm2[coad] := l;
coad := coad+1 mod N1 coad := coad+1 mod N2
procedura ieire(var l:linie); procedura ieire(var l:linie);
l := tm1[top]; l := tm2[top];
top := top+1 mod N1 top := top+1 mod N2
2. Sincronizarea n Windows
Platforma pe 32 de bii pune la dispoziia programatorului instrumente evoluate pentru
multiprogramare, att la nivelul unei mulimi de lucrri, ct i a unei lucrri singulare. Poate s
apar ntrebarea CND s fie utilizat multiprogramarea n cadrul unei singure aplicaii.
Rspunsul este foarte simplu: atunci cnd dorim ca mai multe fragmente de cod s fie executate
simultan. De exemplu, dac dorim ca unele activiti s fie ndeplinite n regim de fond sau
programul s continue s reacioneze la unele evenimente exterioare n timpul ndeplinirii unor
calcule foarte costisitoare
8. Evenimentele n Windows
Obiectele-evenimente sunt utilizate pentru a informa firele, care sunt n ateptare, despre
producerea unui eveniment. n Windows exist dou tipuri de evenimente cu resetare manual
i automat. Resetarea manual se execut cu funcia ResetEvent. Aceste evenimente sunt
folosite pentru informarea mai multor fire, iar evenimentele cu resetare automat sunt utilizate
pentru informarea unui anumit fir, celelalte rmnnd n ateptare.
16
Funcia CreateEvent creaz un obiect-eveniment, funcia SetEvent seteaz evenimentul n starea
set, iar funcia ResetEvent reseteaz evenimentul. Funcia PulseEvent seteaz evenimentul, iar
dup semnalizarea firelor, care erau n ateptare reseteaz obiectul
9. Semafoarele n Windows
Un obiect-semafor este n ultim instan un mutex cu contor. Acest obiect permite s fie
ocupat de un numr anume de fire, dup care ocuparea va fi posibil numai dac unul din
fire va elibera semaforul. Semafoarele sunt utilizate pentru a limita numrul de fire, care
lucreaz simultan cu resursa.
22
6. Realizarea unui nucleu de sincronizare. Realizarea monitoarelor.
Monitorul, descris mai jos, n raport cu noiunea clasic de monitor, prezint urmtoarele
diferene: Semantica primitivei semnalizare. Specificarea iniial a primitivei c.semnalizare
precizeaz c unul din procesele care sunt n ateptarea condiiei c (dac exist) este imediat
deblocat, ceea ce implic trecerea temporar n starea blocat a procesului, care execut
semnalizare. Verificarea validitii monitorului este simplificat, deoarece condiia de depire
este consultat n timpul deblocrii: procesul care execut semnalizare poate s se mulumeasc
cu garantarea unei condiii mai slabe dect condiia de depire.
23
Distrugerea unui proces trebuie s implice eliberarea resurselor, care i fuseser alocate. Printre
aceste resurse, doar numele i contextul sunt gestionate direct de nucleu; celelalte resurse, cum ar
fi fiierele, sunt preluate de mecanisme specifice.
Distrugerea unui proces, care se afl n seciunea critic poate conduce la o blocare.
1. Suspendarea i reluarea
Primitiva suspendare permite procesului-printe s controleze activitatea unui proces
descendent, ntrerupnd n mod forat execuia acestuia. O utilizare curent este suspendarea
unui proces, angajat ntr-o bucl infinit. Procesul ntrerupt n acest mod este transferat ntr-un
fir de ateptare special,
Efectul primitivei suspendare poate fi ca i al unei devieri i programul de tratare poate fi
analogic. Suspendarea unui proces pune o problem analogic celei de distrugere. Primitiva de
reluare permite unui proces s deblocheze un fir suspendat, dup modificarea eventual a
contextului su.
24
6. Crearea i distrugerea proceselor. Demoni n Linux. Obinerea informaiilor despre
procese
Crearea proceselor
Procesele sunt create prin utilizarea funciilor din familia exec ale bibliotecii Linux standard:
execl, execlp, execle, execv, execve, execvp. Dei formatul de apelare este diferit, n ultim
instan execut acelai lucru: nlocuiesc codul din procesul curent cu codul, care se afl n
fiierul indicat. Fiierul poate fi un fiier binar executabil Linux, un script al interpretorului
limbajului de comand, un fiier binar de un alt format.
Distrugerea proceselor
La terminarea execuieia unui proces , el este distrus elibernd toate resursele, care fusese alocate
anterior. Dac procesul printe se termin naintea procesului descendent, ultimul devine orfan
. Toi orfanii sunt nfiai n mod automat de programul init, executat de procesul cu numrul
1, care duce evidena terminrii execuiei lor. Dac a fost terminat deja execuia procesului
descendent, iar procesul printe nu este gata s recepioneze de la sistem semnalul despre acest
eveniment, descendentul nu dispare total, ci este transformat n Zombie; n cmpul Stat aceste
procese sunt notate cu litera Z. Procesele
Zombi nu cer timp de procesor, dar n tabelul proceselor este pstrat linia lor i structurile
respective ale nucleului nu sunt eliberate. Dup terminarea execuiei procesului printe, procesul
Zombi orfan devine pentru o perioad scurt de timp descendentul lui init, ca mai apoi s
moar definitiv.
Demoni n Linux
Demon n Linux este numit procesul predestinat s lucreze n regim de fond fr terminal i care
execut anumite operaii pentru alte procese
De obicei, demonii i ndeplinesc n linite lucrul i ne amintim de ei doar n cazul unor situaii
ieite din comun: spaiu insuficient demonul singur informnd utilizatorul despre aceasta, sau
refuz s lucreze i suntei ntrebat de ef cnd se vor termina problemele cu imprimant .
Obinerea informaiilor despre proce
Pentru obinerea informaiilor despre procese, vizualizate de programele ps i top, Linux-ul
utilizeaz un sistem special de fiiere, numit procfs. n majoritatea distributivelor el este
25
iniializat la lansarea sistemului de operare cu titlul de catalog /proc. Datele despre procesul cu
numrul 1 se afl n subcatalogul /proc/1, despre procesul cu numrul 182 - n /proc/182, etc.
Toate fiierele, deschise de un proces, sunt reprezentate sub forma unor referine simbolice n
catalogul /proc/<pid>/fd, iar referina la catalogul rdcin este pstrat ca /proc/<pid>/root.
Program compilat
28
20. Etapele de via a unui program
Program interpretat
2.Program compilat
Compararea acestor dou scheme pune n eviden diferena important ntre interpretare i
compilare: modificarea unui program interpretat are efect imediat, n timp ce n cazul compilrii
suntem nevoii s parcurgem toate etapele, ncepnd cu translatarea.
29
22. Funcionarea unui editor de legturi
Principiile de funcionare a unui editor de legturi:
El este obligat:
s determine adresa de implantare a acestuia, s ndeplineasc modificrile informaiilor
translatabile, s realizeze legarea referinelor externe
23. Legarea prin substituie
n cazul editrii legturilor prin substituie fiecare referin la un obiect extern n cadrul unui
modul este nlocuit prin adresa absolut a acestui obiect.
Prin definiie, un modul A utilizeaz un modul B dac programul lui A face referine la obiecte,
coninute n B. Deoarece graful relaiei utilizeaz poate conine circuite, editarea legturilor
folosete un algoritm n doi pai. Primul pas construiete planul implantrii modulelor i
determin adresa absolut a tuturor obiectelor externe; al doilea pas soluioneaz referinele la
aceste obiecte.
30
26. Gestiunea fiierelor. Noiuni generale
Acest capitol este consacrat studierii detaliate a gestiunii fiierelor n sistemele de operare:
organizarea logic, reprezentarea informaiei, realizarea funciilor de acces, protecia i
securitatea. Noiunile menionate sunt ilustrate cu exemple de gestionare a fiierelor n sistemele
de operare Windows i Unix.
31
30. Organizarea logic a fiierelor. Acces direct. Cheie unic
n cadrul organizrilor cu acces direct funciile de acces sunt exprimate ca funcii ale atributelor
nregistrrilor; aceste atribute sunt valori ale diferitor cmpuri. Se numete cheie orice cmp al
unei nregistrri valoarea cruia poate servi la identificarea nregistrrii. Conform organizrii
adoptate, una sau mai multe cmpuri pot servi drept cheie.
Cheie unic
ntr-un fiier cu cheie unic fiecare nregistrare conine o singur cheie, care identific
nregistrarea fr ambiguitate; restul nregistrrii este informaia propriu-zis. Dou nregistrri
distincte vor avea totdeauna dou valori diferite ale cheii. Definim o procedur cutare(cheie,
al), care pentru orice valoare a cheii:
sau pune la dispoziie adresa logic al (unic) a nregistrrii pentru care cheia posed valoarea
dat (caz de succes)
sau semnalizeaz cu ajutorul unui mecanism descris, c o atare nregistrare nu exist (caz de
eec): excepie, cod de condiie; valoarea al este adresa la care nregistrarea ar putea fi inserat
(valoare special, dac nu mai este spaiu liber).
32
mecanismului de derulare a benzii. O operaie cutarea EOF-ului fiierului permite saltul de la
un fiier la altul pentru cutarea unui fiier cu numele dat.
Implantare non contigu
Dac abandonm restricia contiguitii implantrii, memoria secundar se transform ntr-o
resurs banalizat, blocurile memoriei secundare fiind echivalente din punctul de vedere al
alocrii lor. Pentru nceput introducem informaiile necesare pentru realizarea funciilor de acces
33. Organizarea fizic. Blocuri nlnuite. Tabele de implantare. Alocarea memoriei
secundare
Blocurile fizice, care conin amplasamente logice consecutive sunt nlnuite ntre ele; pentru
aceast nlnuire trebuie s fie rezervat n fiecare bloc un pointer.
Tabele de implantare
n cazul accesului direct timpul de acces la un bloc trebuie s nu depind de adresa sa, ceea ce
poate fi obinut punnd toi pointerii ntr-un tabel unic de implantare. Descriem mai multe
variante ale acestei metode, care difer prin modul de organizare a tabelului. Problema principal
este garantarea uniformitii timpilor de acces pentru tabelele de lungime mare i permiterea
inserrii i distrugerii blocurilor n orice punct al fiierului.
Tabel unic
Tabel nlnuit
Tabele cu mai multe nivele
Alocarea memoriei secundare
Problema alocrii memoriei secundare poate fi pus n termeni similari cu cea a memoriei
principale; restriciile principale sunt:
alocarea prin blocuri de lungime fix,
costul ridicat al accesului,
caracteristicile proprii fiecrui suport: organizarea pe piste, dispozitive de citire-scriere mobile
sau fixe.
Interfaa alocatorului memoriei secundare conine dou primitive:
cerere_zon(n,a) date : n (ntreg), numrul de blocuri contigue cerute
rezultat : a (adres), adresa primului bloc
excepie : numr de blocuri insuficiente
eliberare_zon(n,a) date : n (ntreg), numrul de blocuri contigue eliberate
a (adres), adresa primului bloc
excepie : numr de blocuri eliberate
33
35. Organizarea fizic a fiierelor. Informaii de utilizare
Informaiile, legate de utilizarea unui fiier pot fi clasificate dup cum urmeaz:
Informaii de stare. Aceste informaii definesc starea curent a fiierului: deschis sau
nchis, gradul de partajare (numrul de utilizatori, care au deschis simultan fiierul),
disponibilitatea pentru modificare, etc.
Informaii despre coninutul fiierului. Aceste informaii permit interpretarea coninutului
fiierului. Este posibil s se asocieze unui fiier un tip, care specific operaiile permise.
Sunt utilizate, de exemplu, tipurile text ASCII, binar translatabil, binar absolut,
catalog, etc. Chiar la deschiderea unui fiier putem verifica, dac utilizarea pretins
este compatibil cu tipul fiierului.
Informaii despre structura logic. Aici pot fi plasate informaiile care permit trecere de
la structura logic la structura fizic a fiierului. De exemplu, n cazul nregistrrilor de
lungime fix este convenabil s se aleag lungimea nregistrrii multiplu sau submultiplu
al lungimii blocului fizic. Raportul lungimea blocului/lungimea nregistrrii, adesea
numit factor de bloc, figureaz n cadrul descriptorului.
Informaii despre utilizrile precedente. Aceste informaii pot fi de natur statistic
(numrul deschiderilor, accesrilor, intervalul mediu timp de ntre accesri, gradul mediu
de partajare, etc.) i au scopul de a nelege mai bine funcionarea sistemului pentru
ameliorarea lui. De exemplu, informaiile despre utilizare pot ajuta la o gestiune
automat a ierarhiei memoriei secundare: fiierele neutilizate o perioad lung pot fi
transferate ntr-o memorie de arhivare pentru a elibera loc n memoriile cu acces rapid.
Aceste informaii mai pot fi utilizate pentru diferite funcii de securitate: nregistrarea
datei ultimului acces sau a ultimei modificri permite un control al utilizrii fiierului.
34
36. Crearea i distrugerea fiierelor.
Specificarea interfeei
Parametrii furnizai sunt:
1. numele fiierului
2. tipul (opional)
3. lungimea (opional)
4. starea iniial (opional)
Cel mai frecvent, parametrii starea iniial i lungimea nu sunt furnizai, avnd valori implicite:
lungimea = 0, fiierul este nchis, lista de acces predefinit.
Operaii
1. s se creeze un descriptor pentru fiier, obinem astfel un nume intern,
2. dac numele furnizat este un nume extern, s se creeze o intrare a acestui nume n
catalogul curent,
3. s se aloce memorie fiierului; chiar dac lungimea sa este nul, un fiier conine un
antet, care ocup primul su bloc,
4. s se iniializeze descriptorul cu informaiile de localizare, lungime, protecie (lista
drepturilor iniiale de acces),
5. dac descriptorul nu se conine direct n catalog, s se introduc o intrare n catalog cu
numele intern al fiierului (adresa descriptorului).
Cazuri anormale
1. nume furnizat incorect (incorect construit sau care desemneaz un fiier deja existent);
2. memorie insuficient n memoria secundar.
Distrugerea
Specificarea interfeei
Unicul parametru furnizat este numele fiierului. Efectul operaiei este de a suprima orice acces
ulterior la fiier, invalidnd toate numele acestuia i elibernd toate resursele pe care fiierul le
utilizeaz (intrri n tabele, memorie).
Operaii
1. s se elibereze toat memoria, care a fost alocat fiierului;
2. s se elibereze memoria alocat descriptorului i numele intern s devin reutilizabil (sau
invalidat definitiv);
3. suprimarea numelui extern al fiierului n catalogul, care-l include, de asemenea, dac
este cazul, n tabelul numelor locale.
36
Securitatea fiierelor este asigurat, dup cum a fost menionat, prin redundana informaiilor.
Redundana poate fi introdus n dou moduri: salvarea periodic a unor informaii, pentru a
putea restabili o stare anterioar n caz de distrugere, i redundana intern, care permite
reconstituirea unor informaii devenite incoerente din cauza unui accident de origine fizic sau
logic, care a provocat o alterare parial.
Redundana intern i restabilirea informaiilor
Principiul redundanei interne const n organizarea structurilor de date astfel, nct orice
informaie s poat fi obinut prin cel puin dou ci distincte. Se reduce astfel probabilitatea c
distrugerea accidental a unei pri a informaiei va conduce la pierderea iremediabil a
coninutului fiierului.
Tehnicile frecvent utilizate n acest scop sunt urmtoarele:
pentru un fiier pstrat pe disc n blocuri nlnuite se va folosi nlnuirea dubl
(succesor-predecesor),
se va include n fiecare bloc un pointer la blocul, care conine descriptorul, sau
indicaia c blocul este liber,
se va include n descriptor numele simbolic al fiierului i un pointer la catalogul
n care se conine fiierul,
parte a descriptorului va fi dublat (de exemplu, n primul i ultimul bloc al
fiierului).
Salvare periodic
Se poate apriori conveni s fie salvate, la intervale regulate de timp, toate informaiile coninute
ntr-un SGF. Admind o salvare pe discul dur la un debit de 20 Mo/s, durata acestei operaii este
de aproximativ 50 s pentru 1 Go. Poate fi realizat salvarea doar a modificrilor, care au avut loc
pentru ultima perioad, concomitent cu lucrul normal al sistemului.
3. Protecia fiierelor
Protecia fiierelor folosete principiul listelor de acces. O list de acces, asociat unui fiier,
conine drepturile fiecrui utilizator asupra fiierului, adic mulimea operaiilor care i sunt
permise. n practic, diferite convenii permit reducerea listei. Este definit mai nti mulimea
drepturilor atribuite implicit fiecrui utilizator (mulime, care poate fi vid); lista de acces va
conine doar utilizatorii, drepturile crora difer de cele implicite. Convenii de grupare permit
asocierea unei mulimi de drepturi unui grup de utilizatori (membrii unui proiect, etc.), ceea ce
reduce i mai mult lista. Lista de acces servete la verificarea validitii oricrei operaii asupra
fiierului.
37
Sistemul de operare Windows NT posed mai multe instrumente de control a drepturilor de
acces al utilizatorilor la resursele sistemului. Aceste instrumente ar fi absolut inutile n lipsa
posibilitii de a controla dac la calculator se afl anume acel utilizator, care corespunde datelor
de eviden. Mecanismul, cu ajutorul cruia un utilizator i poate confirma autenticitatea se
numete de autentificare. Autentificarea se produce n baza unui element secret (autentificator),
aflat doar n posesia utilizatorului definit de informaia de eviden. De obicei, drept
autentificator servete parola utilizatorului, ns acesta poate fi i o cartel special (smart,
badge) sau informaii, legate de datele biometrice ale utilizatorului
Exist mai multe motivaii pentru aceasta:
Cereri suplimentare de introducere a numelui i parolei pot fi enervante pentru unii
utilizatori,
Programarea incorect a mecanismului de autentificare poate diminua securitatea
sistemului,
Windows NT permite extinderea mecanismului de autentificare. Programele, construite
cu un mecanism propriu de autentificare pot fi inutile, dac sistemul utilizeaz un alt
mecanism, dect cel presupus la elaborarea aplicaiei.
Funcia LogonUser
Funcia LogonUser din Win32 API este destinat exclusiv pentru soluionarea problemei
autentificrii i este de forma:
BOOL LogonUser(
PTSTR pszUsername, // numele utilizatorului
PTSTR pszDomain, // numele domenului
PTSTR pszPassword, // parola
DWORD dwLogonType, // tipul accesrii
DWORD dwLogonProvider, // provider-ul accesrii
PHANDLE phToken // token-ul utilizatorului
);
38
6. Funcia NetUserChangePassword n Windows.
Utilizarea acestei funcii pentru autentificare are loc conform codului care urmeaz:
BOOL CheckPassword_ChangePwd(
IN PCTSTR pszDomainName,
IN PCTSTR pszUserName,
IN PCTSTR pszPassword,
OUT PHANDLE phToken
)
{
_ASSERTE(pszUserName != NULL);
_ASSERTE(pszPassword != NULL);
_ASSERTE(phToken == NULL);
USES_CONVERSION;
if (lRes == ERROR_INVALID_PASSWORD ||
lRes == NERR_UserNotFound)
return SetLastError(ERROR_LOGON_FAILURE), FALSE;
return TRUE;
}
39
ntr-un catalog, intrarea care corespunde unui fiier conine identificatorul fiierului i un nume
intern, care este indicele descriptorului su ntr-un tabel general, asociat suportului. Descriptorul
(i-nod n terminologia Unix) conine:
tipul fiierului (ordinar, catalog, special),
numele i grupul proprietarului fiierului (v.6.5.3),
informaiile de protecie,
informaiile localizrii fizice (v.6.3.2.2),
lungimea fiierului, n caractere,
datele despre creare, ultima modificare, ultimul acces.
Implantarea fizic
Memoria secundar este organizat n blocuri de lungime fix (512 octei). n
descriptorul unui fiier este rezervat un tabel T de 13 cuvinte pentru informaiile despre
localizarea fizic. n dependen de numrul t al blocurilor ocupate de fiier, sunt utilizate
1, 2 sau 3 niveluri de direcionare (v.6.3.2.2):
cuvintele de la T[0] la T[9] conin adresele blocurilor 0 9 ale fiierului (ultimele fiind
puse n 0, dac t<10),
dac t>10, cuvntul T[10] conine adresa unui tabel de implantare de 128 de cuvinte, n
care sunt adresele blocurilor de la 10 la 137,
dac t>138, n cuvntul T[11] se afl adresa unui tabel, care stabilete adresele a 128 noi
tabele de implantare; se poate ajunge astfel pn la 10+128+1282 = 16522 blocuri,
n sfrit, dac t>16522, pentru blocurile urmtoare este utilizat o direcionare pe trei
niveluri; adresa tabelului primar este n T[12]; se poate astfel atinge o lungime maxim
de 16522+1283 = 2 113 674 blocuri.
40
de citire-scriere propriu. Acest pointer nu poate fi coninut n descriptorul fiierului, care este
unic: el este pstrat ntr-un tabel rezident, numit tabel al fiierelor deschise (TFD).
n sfrit, pentru a reduce frecvena cutrilor n cataloage i a simplifica desemnarea, un
utilizator poate desemna un fiier printr-un nume local. Acest nume, care este un ntreg din
intervalul 0..nmax (nmax avnd valori pn la 20), este alocat la deschiderea fiierului.
Primitive de acces
Funciile de acces, descrise mai jos sunt primitive realizate prin apelarea regimului supervizor.
Ele sunt utilizate pentru a realiza operaiile disponibile n limbajul de comand. Fiecare primitiv
returneaz un rezultat de tip ntreg, care servete n special pentru a semnala erorile posibile.
Primitiva dup (duplicare) permite crearea unui alt nume local pentru un fiier deja deschis. Ea
servete n special pentru a conecta tuburile i pentru a determina, dac un nume local dat este al
unui fiier deschis.
Citirea i scrierea are loc pornind de la o poziie curent, definit de un pointer. Aceste operaii
incrementeaz n mod automat pointerul cu numrul de caractere citite sau scrise. Primitiva lseek
permite deplasarea explicit a pointerului.
15. Alocarea procesorului. Prim sosit, prim servit. Cererea cea mai scurt servit prima
Algoritmii de alocare a procesorului pot fi clasificai n funcie de mai multe caracteristici.
42
1) Algoritmi cu sau fr retragere
Retragerea presupune alocarea procesorului unui alt proces nainte ca procesul curent s-i
termine execuia. Ea permite s se ia n consideraie:
prioritatea cererilor nou sosite,
timpul deja consumat de ctre procesul ales.
2) Noiuni de prioritate i modul de determinare a prioritii
Prim sosit, prim servit
Disciplina Prim sosit, prim servit (n englez, First In, First Out, sau FIFO) utilizeaz un fir
unic, fr prioritate i fr retragere. Procesul ales este executat pn la terminarea sa, iar cel care
va urma este procesul din topul firului de ateptare. Un proces nou intr n coada firului.
Cererea cea mai scurt servit prima
n acest caz cererile sunt ordonate n cadrul firului de ateptare conform timpului lor de servire,
presupus apriori cunoscut, cererile cu durata de servire cea mai scurt aflndu-se n top.
Algoritmi de profilaxie
Atunci cnd nu se cunoate anticipat nimic despre cererile proceselor, metodele de prevenire
constau n nlturarea uneia din condiiile 1) 4) de mai sus.
Metoda alocrii globale vizeaz eliminarea condiiei 2: fiecare proces cere toate resursele de
care are nevoie n bloc; el poate elibera o resurs dac nu mai are nevoie de ea. Metoda dat
conduce la imobilizarea unor resurse n mod neproductiv, i aduce adesea n practic la
suprimarea oricrui paralelism n execuie; totui aceast metod nu trebuie refuzat din start.
Metoda claselor ordonate vizeaz eliminarea situaiei unei ateptri circulare (condiia 4).
Resursele sunt divizate n clase C1, C2,..., Cm. Un proces poate primi o resurs din clasa Ci numai
dac el a primit deja toate resursele necesare n clasele Cj, j<i. Toate procesele cer resursele de
care au nevoie n aceeai ordine, cea a claselor.
45
face tot posibilul pentru a reduce probabilitatea ca o informaie s fie lips n memorie atunci
cnd avem nevoie de ea (acest eveniment este numit absen a segmentului sau paginii
segment (pagin) absent).
Vor fi utilizate mai multe criterii pentru evaluarea i compararea algoritmilor de alocare a
memoriei:
criterii legate de utilizarea memoriei, msurat, de exemplu, prin rata spaiului
neutilizat,
criterii legate de accesarea informaiei, cum ar fi timpul mediu de acces sau rata
paginilor absente,
criterii mai globale, care caracterizeaz performane influenate de alocarea memoriei:
rata utilizrii unitii centrale sau timpul de rspuns al unui sistem interactiv.
46
ncrcat trebuie s ia locul unei pagini deja prezente; aceasta se va stabili conform unui algoritm
de reamplasare.
Comportamentul programelor segmentate
Considerm un program executat ntr-un spaiu virtual segmentat. Noiunea de lan de referine,
introdus pentru un spaiu virtual liniar, se va extinde pentru un spaiu segmentat, nlocuind
referinele la pagini prin referine la segmente. Putem studia repartiia referinelor diferitor
segmente, ca i performanele pentru o memorie limitat n cazul unei politici de alocare
segment la cerere. Noiunea de mulime de lucru (mulimea segmentelor, care au fcut obiectul
referinelor celor mai recente) poate fi utilizat n mod analogic i poate fi regsit proprietatea
localizrii pentru referirea segmentelor.
47
1) Registre de baz (v.5.3.3.2). Amplasarea n memoria fizic a unui singur segment este
definit de o pereche de registre, numite registrul de baz i registrul limit. Registrul de
baz RB conine adresa fizic a originii segmentului; registrul limit RL joac un rol de
protecie, interzicnd accesul accidental la locaiuni situate n afara segmentului. Pentru o
adres virtual (RB, RL, d), la fiecare accesare este efectuat urmtorul calcul al adresei:
a := RB+d;
if a RL then
adr.fiz.:= a
else
<eroare> - deviere tratat de sistem
endif
2) Segmentare (v. 5.4.1). Segmentarea poate fi considerat o extensie a adresrii cu ajutorul
registrelor de baz, care evit problemele realocrii acestor registre, atunci cnd este
necesar schimbarea segmentului. Fiecrui segment i este asociat un descriptor, care
conine printre altele, adresa sa de origine i capacitatea; descriptorii sunt aranjai ntr-un
tabel, desemnat de un registru special. Calculul adresei fizice corespunztoare adresei
segmentate (s, d) este urmtorul:
desc := tab_desc[s];
if d < desc.capacitate then
adr.fiz.:= desc.orig+d
else
<eroare> - deviere tratat de sistem
endif
48
2) De ctre utilizatori: sistemul pune la dispoziie, sub forma unui apel supervizor,
primitivele cerere alocare i eliberare memorie. Aceste primitive sunt utilizate, de
exemplu, de compilatoare pentru gestiunea variabilelor dinamice.
ntr-un sistem cu partiionare variabil i reamplasare dinamic, o zon de memorie este alocat
de ctre sistem pentru a duce evidena fiecrei lucrri.
npf
Funcie de
paginare
pagin lips
npv
50
cu partiie variabil, numrul de pagini fizice, atribuite fiecrui proces variaz n timp. Paginile
fizice fiind banalizate, anume numrul lor (i nu identitatea) este un parametru semnificativ.
2) Paginare la cerere sau prencrcare. Paginaia la cerere a fost definit n 8.2.1.2: o pagin
este ncrcat n memorie drept rezultat a unei referine, care conduce la evenimentul pagin
lips. Dac o pagin este ncrcat n avans, nainte de orice referire la o informaie, care se
conine aici, se spune c are loc o prencrcare.
3) Reacoperire local sau global. Dac o pagin logic este ncrcat ntr-o pagin fizic
ocupat (v.8.2.1.2) are loc o nlocuire a paginii (pagina nlocuit este adesea numit victima).
Algoritmul de reacoperire este zis local sau global conform principiului de alegere a victimei
dintre paginile alocate procesului care provoac nlocuirea sau din mulimea tuturor paginilor,
prezente n memorie.
52
Exemple
Toate sistemele actuale cu multiprogramare conin un mecanism de ajustare dinamic a gradului
de multiprogramare, care utilizeaz una din metodele descrise mai sus.
Sisteme, care folosesc reglarea arjei globale
Reglarea arjei globale a fost introdus n sistemul experimental IBM M44 i este pe larg folosit
n sistemul IBM 370 VM. Principiul este acela descris mai sus: suprasolicitarea sistemului este
detectat prin msurri periodice ale activitilor de paginaie, iar regulatorul acioneaz direct
asupra gradului de multiprogramare.
Sisteme, care folosesc o estimare aproximativ a mulimii de lucru
53
Disc cu bra mobil
Un disc cu bra mobil are un singur cap de citire-scriere pentru fiecare suprafa de disc. O
deplasare radial a braului portant permite s aducem capul de asupra pistei alese. La timpul de
ateptare a sectorului ales se mai adaug timpul de deplasare radial a braului din poziia sa
iniial. Dac unitatea de disc are mai multe suprafee, toate braele portante sunt unite rigid;
mulime pistelor accesibile fr deplasarea braelor formeaz un cilindru. Au fost propui
urmtorii algoritmi:
1,Prim sosit, prim servit (FIFO
1) Cel mai apropiat servit primul (SSTF: Shortest Seek Time First)
2) Ascensor i alte variante(Scan
54
Pentru apelarea unei subrutine, codul creia se afl ntr-un alt segment (care poate aparine unei
biblioteci, unei alte lucrri sau sistemului de operare), procesorul i386 pune la dispoziie dou
variante de apel, ambele garantnd protecia prin utilizarea drepturilor de acces.
4. Interfee i specificri
Vom introduce noiunea de interfa i tehnicile utilizate pentru specificarea interfeelor. Ne vom
limita aici la interfeele pentru care mecanismul de activare este apelarea.
O interfa este asociat unei maini abstracte sau unei clase de obiecte. Ea conine doar trei
tipuri de informaii, accesibile utilizatorului mainii sau obiectului:
structuri de date,
proceduri,
o mulime de reguli de utilizare a datelor i a procedurilor.
Regulile de utilizare constituie un mod de ntrebuinare a structurilor de date i procedurilor. Ele
exprim restriciile utilizrii lor, i pot lua diverse forme:
55
restricii de accesare a datelor (numai citire, de exemplu),
restricii, legate de ordinea de execuie a procedurilor,
restricii, care afecteaz execuia simultan a procedurilor sau accesarea simultan a datelor.
Problema formulrii specificrilor unei interfee nu are nc o soluie general satisfctoare.
Doar o parte a specificrilor poate fi exprimat in mod formal i, deci, exist posibilitatea unor
validri automate: acestea sunt specificrile tipurilor variabilelor i a parametrilor procedurilor.
Pentru a specifica efectul unui apel de procedur sunt utilizate dou tipuri de tehnici:
mecanismul pre- i post-condiiilor,
echivalena cu o alt expresie a algoritmului procedurii.
56
Realizarea mainii SGF, care administreaz fiierele i fluxurile, poate de asemenea fi
simplificat dac avem la dispoziie primitive de intrare-ieire mai evoluate dect cele furnizate
direct de maina fizic. Vom defini o nou main numit PIE (primitive intrri-ieiri) cu
urmtoarea interfa:
57
if err then
<tratare eroare>
endif;
if nonterm then
go to test
endif;
O procedur analogic intrare_car(c,p) este definit pentru citire.
Pentru realizarea schimburilor cu perifericele logice este definit un tabel de asociere cu trei
intrri:
tabel_perif[tastatur]=adresa controlerului asociat tastaturii logice
tabel_perif[display]=adresa controlerului asociat ecranului logic
tabel_perif[imprimant]=adresa controlerului asociat imprimantei logice.
60
Detectarea unei erori n cursul execuiei provoac un cod de eroare sau o deviere, chiar dac ea a
survenit sau nu n cursul executrii unei primitive realizate prin intermediul unui apel al
supervizorului.
Pot fi evideniate dou cazuri n dependen de gravitatea erorii:
Eroare ntr-un program utilizator sau ntr-o component necritic a unui program de sistem, cum
ar fi interpretorul limbajului de comand. Exemplu: operaie aritmetic care nu poate fi
executat, memorie insuficient pentru ncrcarea unui program.
Eroare n cursul unei operaii critice, adic care pune n pericol integritatea datelor. Exemplu:
eroare irecuperabil la un transfer pe disc.
61
deplasarea segmentelor, ocup mai puin loc pe disc, din cauza lipsei n modulul absolut a
antetului EXE i a segmentului de stiv.
Pentru comutarea lucrrii curente vom utiliza ntreruperea 08h. Este cunoscut, c timer-ul trimite
procesorului cu o frecvena de 18.2 Hz o ntrerupere hardware i procesorul ndeplinete
procedura asociat ntreruperii a opta (int 08h), dac aceasta este armat. n stiv sunt pstrate
registrul indicatorilor (flagurilor, PUSHF) i registrele care indic instruciunea curent ((CS:IP)
PUSH CS, PUSH IP), n total 6 octei. Dup terminarea prelucrrii ntreruperii hardware, aceste
registre sunt restabilite i continu executarea programului principal. Problema noastr va fi
rezolvat dac n timpul tratrii ntreruperii vom nlocui stiva astfel nct atunci cnd registrele
vor fi restabilite s fie executat un alt program, aflat n memorie
Structura descriptorului lucrarii
n modul real memoria operativ conine 10 segmente fizice, fiecare segment avnd capacitatea
de 64 Ko (640Ko/64Ko), ns doar 8 lucrri pot pretinde regimul multitasking, deoarece dou
segmente sunt ocupate de sistemul de operare (unul pentru nucleu i altul pentru variabilele
sistemului).
Pentru fiecare dintre cele 8 lucrri i pentru nucleu va fi folosit urmtoarea structur
task8 DB ? ; char id; (255 - no task)
DD ? ; void far * pointer;
DW 255 DUP(?) ;- unsigned int stack[255]; }
n care id este identificatorul lucrrii: numrul lucrrii, dac lucrarea este ncrcat,
255, dac lucrarea nu este ncrcat,
254, dac procesorul a fost retras (starea eligibil a lucrrii, suspendare).
pointer punctul de intrare n program.
stack[255] aici vom pstra la comutare unele registre ale lucrrii, de asemenea tot aici va fi pstrat indicatorul
stivei lucrrii, n care sunt salvate celelalte registre i, la necesitate, alte informaii.
62
inc al
mov [tasknum],al
Mrim numrul de lucrri
mov [cs:di],al
; Salvm punctul de intrare n descriptorul lucrrilor
mov [Word Ptr cs:di+1],100h
mov [cs:di+3],es
Salvm punctul de intrare n descriptorul lucrrilor ES:100h
Comutarea lucrrii
Programele COM sub MS DOS pot fi terminate prin:
a) int 20h
b) mov ah,4Ch
int 21h
sau c) ret
Trecerea lucrrii n starea eligibil
Trecerea unei lucrri n starea eligibil (retragerea temporar a procesorului) se va produce prin
nscrierea valorii 254 n identificatorul (id) ei.
doStop3: call _di
mov al,254
mov [cs:di],al
mov dx,[cs:di+3]
call _ei
ret
63
numite protocoale. n sens ngust, un sistem de operare de reea este considerat sistemul unui
calculator distinct, care asigur calculatorului posibilitatea lucrului n reea.
Componetele comunicaionale
Spre reea
Fig. 10.1. Structura sistemului de operare de reea
65