Sunteți pe pagina 1din 23

2 .

TE HNI CI DE E XE CU I E I COMUNI CA I E
Mecanismele, care dau posibilitatea unui calculator s interacioneze cu mediul exterior, pe de o parte, i s manipuleze mai
multe sarcini, pe de alta, formeaz baza oricrui sistem de operare. Cunoaterea detaliat a structurii i modului de funcionare a
acestor mecanisme este obligatorie pentru un specialist n domeniu.
2.1. Modul secvenial de execuie a unui !o"!a#
Nucleul unui calculator este format dintr-o memorie adresabil, n care sunt pstrate instruciunile i datele programului, i
procesorul, care interpreteaz instruciunile. Instruciunile i datele se afl n segmente distincte, prin segment nelegnd o mulime
de informaii, desemnate i manipulate ca un tot ntreg, care ocup n memorie o suit contigu de amplasamente. !om presupune
c segmentele care conin programul nu pot fi modificate n timpul execuiei acestuia.
"xecuia instruciunilor, care formeaz un program sec#enial, conduce la e#oluia strii calculatorului. "#oluia strii
calculatorului poart un caracter discret, starea este obser#abil doar n momente de timp numite puncte de obser#are, care
corespund, de obicei, nceputului i sfritului unei instruciuni. $nele instruciuni mai complexe pot conine puncte obser#abile
intermediare.
%tarea calculatorului este definit de starea procesorului i starea memoriei. %tarea memoriei este determinat de coninutul
locaiunilor segmentelor ncrcate n memorie. %tarea procesorului este definit de coninutul unui set de registre &programabile i
interne', ataate procesorului.
2.1.1. Noiuni $unda#en%ale
(rice program sec#enial const dintr-o mulime de proceduri, care se pot apela reciproc. )iecrei proceduri i este asociat un
segment distinct de procedur. *atele sunt reprezentate de asemenea prin segmente, care pot fi proprii unei proceduri sau parta+ate
ntre mai multe proceduri.
Numim ac%ivi%a%e fenomenul care rezult din execuia nentrerupt a unei proceduri unice. ,n acest fel, execuia unui program
sec#enial const dintr-un lan de acti#iti.
Numim con%ex% al unei acti#iti mulimea informaiilor accesibile procesorului n cursul acestei activiti. Contextul
acti#itii este compus din contextul procesorului &registrele programabile i interne' i contextul memoriei &segmentul procedurii i
segmentul datelor'. -recerea de la o acti#itate la alta este realizat de instruciuni speciale. aela!ea i !e%u!ul din procedur, care
realizeaz comutarea contextului.
Exe#lul 2.1. ( procedur p &apelant' pro#oac execuia unei proceduri q &apelate' cu a+utorul unei sec#ene de apel care conine
urmtoarele etape.
/regtirea parametrilor, transmii de ctre procedura p procedurii q,
%al#area parial a contextului lui p, necesar la retur,
,nlocuirea contextului procedurii p prin contextul lui q.
0a re#enire din procedura q a#em o sc1em practic simetric, doar contextul lui q fiind pierdut.
/regtirea rezultatelor, transmise de ctre procedura q procedurii p,
2estabilirea contextului procedurii p, sal#at nainte de apel.3
Exe#lul 2.2. ,n cazul funcionrii n co!u%ine &proceduri simetrice, recursie mutual 4 dou proceduri se pot apela reciproc',
procedurile apelant i apelat +oac un rol simetric. sec#ena de retur este identic cu cea de apel. 5cti#itatea care
rezult din apelul unei proceduri p ia n calitate de context iniial contextul sal#at la ultimul apel executat de p.
/rimul apel al unei proceduri trebuie s specifice #aloarea iniial a contextului su.
%ec#ena de sc1imbare a contextului &reluarea' conine urmtoarele etape &p este corutina prsit, q este cea reluat'.
/regtirea parametrilor, transmii de ctre procedura p procedurii q,
%al#area parial a contextului lui p, care trebuie s fie regsit la reluare,
2estabilirea contextului sal#at la ultimul abandon al lui q sau formarea contextului iniial n cazul primului apel.
3
2.1.1.1. Mecanis#e de execuie secvenial&
!om descrie un mecanism general pentru execuia programelor sec#eniale, formate dintr-o suit de acti#iti, rezultate din
execuia unei proceduri sau corutine. 5cest mecanism realizeaz funciile urmtoare.
%al#area i restabilirea contextului la apelare i retur,
-ransmiterea parametrilor ntre procedurile apelant i apelat,
5dministrarea unei zone de lucru proprii fiecrei proceduri, cu permisiunea apelurilor recursi#e.
Cazul procedurilor.
%tructura de date utilizat n acest caz este o s%iv& de execuie. %unt utilizate di#erse #ariante, care difer n mod esenial prin
specificarea detaliat a contextului i prin modul de comutare a acestuia la apelare sau retur. %c1ema execuiei poate fi programat
direct &de exemplu, n limba+ul de asamblare' sau determinat de structura mecanismului de execuie, definit de un limba+ de
programare. ,n ultimul caz prin context nelegem mulimea #ariabilelor accesibile conform regulilor de #izibilitate definite n
pag.6
limba+ &structura blocurilor, modulele, etc.'. *escriem o organizare foarte apropiat sc1emei de execuie din limba+ul de programare
C, presupunnd respectarea urmtoarelor ipoteze.
/arametrii unei proceduri sunt transmii prin #alori7 la retur un singur rezultat este returnat,
/rocedurile pot fi apelate recursi# &direct sau indirect'.
0a fiecare apelare a procedurii o structur de date numit !e"iune a #ediului &sau simplu mediul procedurii' este creat n
#rful sti#ei de execuie, care #a dispare la returul respecti#. ( procedur apelat recursi# are n sti# attea medii cte execuii
neterminate exist pentru aceast procedur. 0a un moment concret de timp mediul din top-ul sti#ei corespunde procedurii q n curs
de execuie &procedura acti#', mediul imediat urmtor este al procedurii p, care a apelat procedura q, etc. %ti#a este administrat
prin intermediul a doi pointeri &fig.8.6.'.
baza pointerul care indic baza mediului procedurii acti#e,
top pointerul care indic primul amplasament liber pentru a crea un nou mediu.
Mediul conine urmtoarele informaii.
a' informaii de sal#are i legturile de retur
un pointer la baza contextului procedurii apelante
adresa returului
un amplasament pentru rezultat
b' parametri
n+1 amplasamente, primul coninnd numrul de parametri, iar urmtoarele - #alorile acestora
#ariabilele locale i spaiul de lucru al procedurii.
5ceste informaii, cu excepia spaiului de lucru, sunt pstrate n amplasamente pentru care deplasarea n raport cu originea
mediului este cunoscut i fix, fiind posibil adresarea relati# a lor &fa de baza mediului'. %paiul de lucru este adresat din #rful
sti#ei.
(peraiile executate la apelarea i returul procedurii sunt urmtoarele.
Aela!e
6' alocarea unei zone n sti#a de execuie pentru mediul procedurii apelate &dimensiunea acestei zone, cu excepia spaiului
de lucru, este cunoscut anticipat'
temp:=baza
baza:=top
top:=top+dimensiunea mediului
8' sal#area informaiilor de retur
baza_veche:=temp
memorizarea adresei de retur
9' ordonarea parametrilor
:' executarea unei ramificaii la procedura apelat.
'e%u!
6' sal#area rezultatului ntr-un amplasament stabilit
8' restabilirea informaiilor de retur i eliberarea mediului
temp:=adresa de retur
top:=baza
baza:=baza_veche
pag.8
%ti#
p
%ti#
p
q
top
baza
baza
top
Mediul procedurii
,nainte de apelarea procedurii
q de ctre procedura p
*up apelarea procedurii q
)ig.8.6. %ti#a de execuie
9' returul
ramificare temp ramificare indirect
( e#entual sal#are i restabilire a registrelor sunt lsate n seama procedurii apelante.
Cazul corutinelor.
%c1ema precedent este funcional doar pentru cazuri simple de execuie a dou corutine pentru care mediul sal#at se reduce
la adresa de retur. /entru cazuri mai generale, ndeosebi cnd o corutin este ea nsi format din mai multe proceduri, sc1ema
sti#ei unice nu poate fi aplicat. )ie ca exemplu urmtorul caz.
corutina p corutina q
begin procedura q1

reluare q! reluare p!

reluare q retur
end q1!
end p begin

q1!

end q
,n momentul n care q execut reluarea lui p sti#a conine mediile p" q i q1. Mediul care trebuie reluat este cel al lui p, dar
mediile lui q i q1 trebuiesc pstrate. %oluia este de a a#ea cte o sti# distinct pentru fiecare corutin &fig.8.8'.
/entru un moment concret de timp sti#a curent este sti#a corutinei n curs de execuie. ( operaie schimb_stiva permite
sc1imbarea sti#ei curente, sal#nd adresa de reluare n top-ul fostei sti#e curente.
schimb_stiva #p$:
stiva_curent.top:=adresa de reluare!
stiv_%urent :=stiva#p$
%ec#ena de reluare #a arta astfel
reluare #p$:
schimb_stiva #p$!
i$ prima apelare %(en
apelare #p$ &&&& sec#ena de apel primar
else
temp:=stiva_curent.top!
ordoneaz parametrii n stiva_curent!
ramificare temp
endi$
2ezumat. con%ex%ul #e#o!iei unei acti#iti la un moment curent de timp conine, n afara segmentului procedurii n curs de
execuie i segmentele de date, )ona #ediului cu!en% din s%iva de execuie.
2.1.2. *%a!ea +i con%ex%ul !oceso!ului
%tarea procesorului este determinat de coninutul registrelor acestuia. 2egistrele pot fi.
adresabile, numite !e"is%!e "ene!ale, manipulate de programe,
registre speciale, de obicei grupate sub forma unor informaii sintetice, numite cuv,n% de s%a!e !o"!a# sau cuv,n%
de s%a!e a !oceso!ului &n englez, !o"!a# s%a%us -o!d. /*0'.
Cu#ntul de stare a procesorului conine informaii, care pot fi clasificate astfel.
6' Informaii referitoare la starea procesorului.
pag.9
sti#a lui p
p
sti#a lui q
adres
adres
reluare p
reluare q1 q
1
q
)ig.8.8. %c1ema de execuie pentru corutine
&a' *%a!ea de execuie. /rocesorul se poate afla n starea ac%iv n care ndeplinete instruciuni, sau n starea de
a+%e%a!e, cnd execuia este suspendat. -ranziia activ a'teptare se realizeaz prin ncrcarea cu#ntului de
stare sau prin executarea unei instruciuni speciale7 trecerea in#ers a'teptare activ este n mod obligator
rezultatul unei ntreruperi.
&b' Modul de $unciona!e. *in considerente de protecie este util s se permit doar programelor sistemului de
operare executarea unor instruciuni anumite &speciale', programele utilizatorilor nea#nd acces la aceste
instruciuni. 5ceasta poate fi realizat definind dou moduri de funcionare a calculatorului, care se deosebesc
printr-un bit indicator n cu#ntul de stare. modul s%&,n &#as%e!, eng., #a1%!e, fr.' sau sue!vi)o! i modul
sclav &slave. eng., esclave, fr.' sau !o"!a#. %etul de instruciuni care pot fi executate n #odul !o"!a# este o
submulime a setului corespunztor modului sue!vi)o!. 5stfel instruciunile rezer#ate modului super#izor pot fi
numite !ivile"ia%e, aici pot fi gsite instruciunile de intrare-ieire i cele legate de ntreruperi i protecie. /ot
exista i alte moduri speciale.
&c' Masca 1n%!e!ue!ilo!.
8' Informaii referitoare la contextul accesibil al memoriei i drepturile de acces asociate. tabele de segmente, indicatori de
protecie a memoriei, etc.
9' Informaii referitoare la derularea acti#itii curente. codul condiiei, contorul operaiei urmtoare &contor ordinal'. /entru
unele calculatoare contorul, care conine adresa operaiei urmtoare, poate fi un registru distinct al cu#ntului de stare,
pentru altele el este un cmp al acestui cu#nt.
2.2. 2n%!e!ue!i. devie!i. aela!ea sue!vi)o!ului
1.1. Ac%ivi%&i asinc!one
Modelul descris mai sus poate fi folosit doar pentru un singur program, reprezentat printr-o sec#en de acti#iti, executate pe
un singur procesor. $nicele mecanisme necesare pentru organizarea comunicrilor ntre acti#iti sunt operaiile de apelare i retur
pentru proceduri sau reluare pentru corutine.
/entru cazuri mai generale sunt necesare mecanisme suplimentare, cum ar fi conceptele de asinc!onis# sau de !o%ecie
!eci!oc& 1n%!e ac%ivi%&i.
/rin asinc!onis# nele(em efectul care l pot avea asupra derulrii unei activiti anumite evenimente exterioare.
Numim !o%ecie !eci!oc& 1n%!e ac%ivi%&i o modificare mai profund a contextului" atunci c)nd se trece de la o activitate la
alta" n comparaie cu ceea ce are loc n cazul unei simple apelri de procedur.
$n caz tipic de asincronism este executarea intrrilor-ieirilor simultan cu execuia unui program. -rebuie s fie asigurat
posibilitatea informrii programului despre terminarea unui transfer de informaii. ( prim posibilitate, care nu necesit utilizarea
unor dispoziti#e speciale, este cea a a+%e%&!ii ac%ive, prezentat mai +os.
5r1itectura calculatoarelor C*C C;ber 6<= coninea un procesor central *+ i 6= procesoare periferice identice **.
/rogramele sistemului de operare erau executate pe **. unul dintre acestea, numit *,, a#ea >gri+> de nlnuirea lucrrilor i
alocarea resurselor, celelalte, notate *-,#i$" erau specializate n operaii de I?". *+ i ** comunicau prin intermediul unei memorii
comune. %c1ematic, o operaie de I?" se derula n felul urmtor.
1$ /resupunem c un program al utilizatorului, executat pe *+, cere o operaie de I?". /rocedura utilizat pentru aceasta
iniializeaz un cuplu de indicatori . &cerere' i / &terminare'. .:=1" /:=0. %pecificaia precis a transferului necesar este
plasat ntr-un descriptor, adresa cruia este cunoscut de ctre *,.
1$ $n program de supra#eg1ere, executat de *,, controleaz periodic indicatorul .. ,n momentul n care l gsete pus n 1,
acest program alege unul din *-, liber, fie *-,#i$, i-i cere s execute operaia de I?". /entru aceasta sunt utilizai doi
indicatori .-2#i$ i /-2#i$, analogici cu . i /, transmind lui *-,#i$ adresa descriptorului cu informaiile necesare
operaiei de I?".
3$ /rogramul de I?", care este executat pe *-,#i$, testeaz periodic indicatorul su .-2#i$. 5tunci cnd acesta este gsit pus
n 1, programul execut transferul informaiilor cerute, utiliznd datele gsite n descriptor. 0a terminarea transferului acest
e#eniment este semnalizat de ctre program prin punerea n 1 a indicatorului /-2#i$.
4$ %uper#izorul scruteaz periodic /-2#i$. *ac acesta este gsit n 1, super#izorul face acelai lucru cu indicatorul /, care
este periodic consultat de ctre programul utilizatorului pentru a afla cnd se termin transferul.
5lgoritmic putem reprezenta toate acestea astfel.
programul utilizatorului programul super#izor programul pentru I?"
@cerere de 56-A ciclu ciclu
.:=1! if .=1 then if .-2#i$=1 then
/:=0! caut *-,#i$! execut 56-!
77 .-2#i$:=1! 8sincron9
pag.:
/-2#i$:=0! /-2#i$:=1!
endif endif
8test terminare 56-9 77 endciclu
if /=1 then 8test terminare execuie9
77 if /-2#i$=1 then
/:=1!
endif
endciclu
/ot fi fcute urmtoarele comentarii.
relaiile ntre *+ i *," pe de o parte, i *, i *-,, pe de alta, au aceeai sc1em. )iecare indicator poate fi pus n 1 sau
consultat de un sin(ur procesor.
procesorul central este n totalitate eliberat de operaiile de I?". "l poate fi ncrcat cu alte lucrri n timpul acestor operaii.
,n acelai timp, programul, care cere transferuri de informaii #erific n mod explicit terminarea operaiilor de I?".
operaiile de I?" sunt ele nsi separate n dou pri. super#izarea &alegerea procesorului de intrare-ieire n funcie de
starea lui *-, i urgena operaiei' i transferul propriu-zis al informaiilor, care poate fi realizat ntr-un mod mai eficient
de un procesor eliberat de funciile precedente.
"xemplele care urmeaz sunt c1emate s ilustreze limitele metodei de ateptare acti# pentru organizarea comunicrilor ntre
acti#itile asincrone.
Exe#lul 2.3. *is%e# #ul%i!oceso!al. )ie un calculator, ar1itectura cruia presupune o memorie comun la care sunt
asociate mai multe procesoare identice &sistem multiprocesoral cu memorie comun', aceste procesoare nefiind
specializate cum a fost n cazul precedent, ci banalizate, adic o acti#itate poate fi executat pe oricare
procesor.
Comunicarea ntre acti#itile executate pe diferite procesoare poate fi realizat prin modificarea i testarea
periodic a indicatorilor memoriei comune. ,ns ateptarea acti# conduce n acest caz la eficien sczut,
deoarece consultarea periodic imobilizeaz procesorul. 3
Exe#lul 2.4. M&su!a!ea %i#ului. ,n cadrul derulrii unui program adesea este necesar s se ia n consideraie timpul real
&cazul proceselor te1nologice, raionamente de securitate - oprirea unui program care abuzeaz de procesor din
cauza unei bucle infinite, etc.'. *eoarece ceasul calculatorului este un dispoziti# extern procesorului, el trebuie
periodic consultat de ctre program, soluie costisitoare i adesea imprecis. "ste necesar un mecanism care ar
permite ceasului la momente fixe s acioneze asupra procesorului. 3
Exe#lul 2.5. In%e!venii ex%e!ne. *in mai multe considerente &for ma+or, securitate, etc.' poate fi necesar s existe
posibilitatea ntreruperii derulrii unui program pentru a impune procesorul s execute o aciune anume.
5ceast ntrerupere poate fi declanat de ctre un operator uman, un dispoziti# automat, etc. "ste o situaie
analogic cu cea din exemplul precedent7 din aceleai considerente nu este bine#enit consultarea periodic a
unui indicator. 5#em ne#oie de un mecanism de acionare direct n acest caz. 3
1.2. Mecanis#e de co#u%a!e a con%ex%ului
Comutarea contextului unui procesor permite executarea ntr-o manier indi#izibil a urmtoarelor dou operaii.
trecerea cu#ntului de stare ntr-un amplasament specificat al memoriei,
ncrcarea n cu#ntul de stare a coninutului unui alt amplasament specificat al memoriei.
5ceasta se poate ntmpla doar dac procesorul se afl ntr-o stare obser#abil &de exemplu, ntre execuia a dou instruciuni'
sau de ateptare. *in aceste considerente noiunea de >punct de ntrerupere> este sinonim al noiunii >punct obser#abil>.
Comutarea contextului poate fi necesar din mai multe cauze distincte. /resupunem c fiecrei cauze i-a fost asociat un numr
de ordine. /ot fi ntlnite dou sc1eme de comutare a contextului.
6' *alva!e 1n a#lasa#en%e $ixe. )iecrei cauze &numrul unei cauze fiind i' i sunt ataate n mod constant o perec1e de
amplasamente n memorie adresele crora le #om nota prin csp_vechi:i; i csp_nou:i; &csp semnificnd cu#nt de stare
program'. Comutarea se produce dup cum urmeaz.
<p:csp_vechi:i;;:=8cuv)nt de stare pro(ram9
8cuv)nt de stare pro(ram9:= <p:csp_nou:i;;
,n setul de instruciuni exist o instruciune pri#ilegiat schimb_csp#adr$ cu urmtorul efect.
8cuv)nt de stare pro(ram9:= <p:adr;.
8' *alva!e 1n%!6o s%iv&. 5ici a#em acelai procedeu n ceea ce const cu#ntul de stare nou. ,ns cu#ntul de stare #ec1i nu
este sal#at ntr-un amplasament fix, ci ntr-o sti# special.
ptr :=ptr+1
stiva:ptr; :=8cuv)nt de stare pro(ram9
8cuv)nt de stare pro(ram9 := <p:csp_nou:i;;
pag.B
Instruciunea schimb_csp#adr$ este identic celei din 6'7 exist ns i o instruciune restabile'te_csp" care restabilete
cu#ntul de stare a procesorului folosind pentru acesta top-ul sti#ei.
8cuv)nt de stare pro(ram9 :=stiva:ptr;
ptr :=ptr&1
Comutarea contextului, descris mai sus, este declanat sub influena strii unor indicatori din cu#ntul de stare program pe
care procesorul i consult la interpretarea fiecrei instruciuni. Conform semnificaiei acestor indicatori i maniera n care ei sunt
modificai, pot fi e#ideniate trei mecanisme de comutare, descrise n tabelul de mai +os.
-abelul 8.6. Mecanisme de comutare a contextului
*enumirea mecanismului Cauza $tilizarea
,ntrerupere "xterioar derulrii instruciunii
curente
2eacionare la un e#eniment asincron
extern
*e#iere &excep ie' 0egat de derularea instruciunii
curente
-ratarea unei erori sau situaii
excepionale
5pelarea super#izorului Comutare explicit 5pelarea unei funcii a %.(.
5desea toate aceste trei denumiri sunt nlocuite cu una singur - 1n%!e!ue!e.
1.3. 2n%!e!ue!i
( 1n%!e!ue!e este comutarea contextului procesorului declanat de o cauz extern derulrii instruciunii curente. )izic,
ntreruperea nseamn trimiterea unui semnal procesorului, acest semnal pro#ocnd sc1imbarea strii unuia dintre indicatorii,
consultai n cursul executrii fiecrei instruciuni. %emnalul poate pro#eni de la alt procesor, de la un organ de I?", de la un
dispoziti# extern, i n genere, de la orice proces fizic, extern procesorului ntrerupt. ( ntrerupere permite s cerem procesorului s
suspende executarea programului curent, din primul punct ntreruptibil, i s treac la execuia unui program predefinit. 5cesta din
urm este numit !o"!a# de %!a%a!e a 1n%!e!ue!ii &interrupt handler, eng., traitant de l=interruption, fr.'. /rogramul de tratare a
ntreruperii este executat ntr-un context diferit de cel al programului ntrerupt, diferena fiind legat de modul de tratare, protecie,
informaiile accesibile, etc.
Nivele de !io!i%a%e. Cauzele care duc la necesitatea ntreruperii unui procesor sunt diferite, drept rezultat i programele
predefinite, care trateaz ntreruperile difer. Mecanismul ntreruperilor trebuie s poat deosebi aceste cauze. *ou sc1eme de
baz sunt utilizate n acest scop.
"xist un indicator unic pentru toate ntreruperile i acestui indicator i este asociat un program unic de tratare a
ntreruperilor. ( informaie suplimentar &codul ntreruperii', care se conine n cu#ntul de stare sau ntr-un amplasament de
memorie, d posibilitatea de a deosebi cauzele. /rima obligaie a programului de tratare a ntreruperilor este de a consulta
codul ntreruperii pentru a stabili originea acesteia, doar apoi se #a trece la tratarea propriu-zis.
)iecrei cauze este ataat un indicator, se mai spune c fiecare cauz este ataat unui ni#el de ntrerupere. )iecrui ni#el i
corespunde un program distinct de tratare a ntreruperii, acti#at n mod automat de ctre mecanismul de comutare a
contextului.
pag.C
/!io!i%&i +i #asca!ea 1n%!e!ue!ilo!. 5tunci cnd exist mai multe ni#ele de ntrerupere este posibil necesitatea modificrii
simultane a doi indicatori, legai de dou cauze diferite. Conflictul poate fi reglat stabilind o ordine de prioritate n cadrul ni#elelor
de ntrerupere. 5ceast ordine poate fi fixat odat pentru totdeauna sau modificabil prin microprogramare.
5desea este util prote+area, contra unor ntreruperi anume, a execuiei unei suite de instruciuni &de exemplu, poate fi interzis
ntreruperea unui program de tratare a ntreruperii'. 5ceasta ar nsemna ntrzierea comutrii contextului, comutare, pro#ocat de
sosirea unui semnal asociat unui ni#el oarecare de ntrerupere. %e zice atunci, c ni#elul este #asca% sau in(i7a% &1n%!e!ue!e
#asca%&'. 2idicarea in1ibrii &>demascarea>' #a autoriza sc1imbarea ulterioar a contextului. Informaiile asociate mascrii
ntreruperilor se afl n cu#ntul de stare a procesorului.
/entru unele ni#ele de ntrerupere efectul sosirii semnalului de ntrerupere poate fi suprimat &nu doar ntrziat'. -otul se #a
petrece n acest caz ca i cum nsi cauza ntreruperii a fost suprimat. ni#elul ntreruperii este de)a!#a%. $n ni#el dezarmat poate
fi !ea!#a%, adic repus n ser#iciu.
Declan+a!e !o"!a#a%&. /entru unele calculatoare, ndeosebi cele utilizate n controlul proceselor, exist o instruciune de
declanare programat care permite modificarea indicatorului, asociat unui ni#el de ntrerupere, din interiorul unui program. ,n
acest fel este posibil simularea apariiei unei cauze externe de ntrerupere.
5tunci cnd toate condiiile necesare pentru ca o ntrerupere s fie luat n consideraie sunt prezente, ni#elul se numete ac%iv.
5ceast stare corespunde executrii programului de tratare a ntreruperii. Notm, c aceast execuie poate fi suspendat pentru a
permite tratarea unei ntreruperi cu o prioritate mai nalt. Ieirea din starea acti# se face prin ac(i%a!ea ntreruperii. 5c1itarea este
realizat folosind instruciunea schimb_csp, care termin tratarea sc1imbnd contextul.
(peraiile de armare, dezarmare, mascare, demascare i declanare a ntreruperilor sunt totdeauna realizate prin intermediul
unor instruciuni pri#ilegiate.
pag.<
)ig.8.9. %trile unui ni#el de ntrerupere
*ezarmat
D /unct de ntrerupere E
5rmat
5teptare
5cti#
5rmare
*eclanare
programat
,ntrerupere *ezarmare
DNi#el nemascatE
DNu exist ni#el acti# cu o prioritate mai mareE
5c1itare
)igura 8.9 prezint sc1ematic tranziiile de stare pentru un ni#el de ntrerupere.
*c(e#a unui !o"!a# de 1n%!e!ue!e. ( ntrerupere foreaz procesorul s reacioneze la un e#eniment. "xecutarea
programului curent este suspendat, comanda fiind transmis programului de tratare a ntreruperii. /rogramul reluat de ctre
procesor dup tratarea ntreruperii nu este n mod obligator programul ntrerupt &ntreruperea putea a#ea drept scop realocarea
procesorului'. %c1ema general de tratare a unei ntreruperi este prezentat n fig.8.:.
1.4. Devie!i +i aela!ea sue!vi)o!ului
%pre deosebire de o ntrerupere, o de#iere sau un apel al super#izorului sunt pro#ocate de o cauz legat direct de derularea
instruciunii curente.
O devie!e &trap, exeption, eng., dFroutement, exeption, fr.' semnalizeaz o anomalie n derularea unei instruciuni, care
pro1ibiteaz executarea instruciunii. (riginile pot fi di#erse.
date incorecte, care conduc la imposibilitatea execuiei corecte a instruciunii &mprirea la zero, de exemplu',
tentati#a executrii unei operaii interzise de mecanismul de protecie &#iolarea proteciei memoriei, executarea unei
instruciuni pri#ilegiate n modul program, etc.',
instruciune neexecutabil &cod neautorizat de operaie, adres n afara memoriei existente, utilizarea unui dispoziti#
opional, care este lips n configuraia dat, .a.'.
*e#ierile pot fi clasificate, ca i ntreruperile, conform cauzelor care le genereaz. "fectul unor cauze poate fi suprimat &de
exemplu de#ierile legate de operaiile aritmetice, erorile fiind semnalate doar de #aloarea codului condiiei'. Na%u!a unei devie!i
nu e!#i%e alica!ea noiunii de #asc&. O devie!e oa%e $i su!i#a%&. da! nici in%!6un ca) !e%a!da%&.
Un ael al sue!vi)o!ului &super#isor call, prescurtat %!C, eng., appel au super#iseur, fr.' este o instruciune c1emat s
pro#oace o comutare a contextului procesorului. 5cest efect este analogic apelrii unei proceduri, ns modificarea contextului este
mai profund, fiindc ea afecteaz ntreg cu#ntul de stare i nu numai contorul ordinal.
*estinaia unui apel al super#izorului este de a permite apelarea unei proceduri a sistemului de operare, pretinznd la drepturi
mai mari &modul master, ntreruperi mascate, drepturi de acces, etc.', direct din programul utilizatorului. Mecanismul comutrii
contextului permite asigurarea proteciei, impunnd condiiile de intrare procedurii apelate. Ca rezultat.
contextul nou &modul, masca, etc.,' este specificat n noul cu#nt de stare, amplasat intr-o zon de memorie inaccesibil
utilizatorilor,
programul de tratare a apelului super#izorului ncepe cu o sec#en de #erificare a drepturilor utilizatorului de a executa
acest apel i stabilirea #aliditii parametrilor transmii.
/arametrii sunt transmii ca i n cazul apelului unei proceduri obinuite. 2eturul n programul apelant se face prin restabilirea
cu#ntului de stare sal#at la apelare.
pag.G
-ratarea ntreruperii
%al#area contextului
programului /
Comutarea cu#ntului de stare
/rogramul ntrerupt /
-ratarea specific ntreruperii, care
presupune determinarea programului H
pentru lansare &poate fi c1iar / sau altul'
2estabilirea contextului programului H
ncrcarea cu#ntului de stare a lui H
Instruciunea schimb_csp &ac1itare'
/rogramul nou H
)ig.8.:. %c1ema general a tratrii unei ntreruperi
5legerea procedurii accesibile n cazul unui apel al super#izorului este determinat de un parametru suplimentar, aflat ntr-un
registru sau n partea de adres a instruciunii de apelare. /utem considera, c mulimea procedurilor accesibile utilizatorului n
acest mod constituie o extensie a setului de instruciuni, formnd astfel o >main> nou. (peraiile de accesare a fiierelor i de
intrare-ieire sunt disponibile utilizatorilor sub forma apelrii super#izorului.
)igura 8.:, care descrie sc1ematic ntreruperile, este aplicabil i pentru cazul de#ierilor sau a apelrii super#izorului.
1.5. Exe#le de sis%e#e de 1n%!e!ue!i
)uncionarea sistemelor de ntrerupere este ilustrat prin dou exemple reprezentati#e, unul pentru un calculator mare, altul
pentru calculatoarele personale.
Exe#lul 2.8. IIM 9<=.
Cu#ntul de stare &C: bii' conine urmtoarele cmpuri.
@=-<A masca ntreruperii @6C-96A codul ntreruperii
@G-66A c1eie de protecie @98-99A lungimea instruciunii
@68A codul caracterelor @9:-9BA codul condiiei
@69A masca ntreruperii @9C-9JA suprimarea de#ierii
@6:A 6 - ateptare, = - acti# @:=-C9A contor ordinal
@6BA = - stpn, 6 - scla#.
%istemul de ntreruperi are B ni#ele &n ordinea de descretere a prioritilor'. eroare 1ardKare, de#iere, apelare super#izor,
extern i intrare-ieire. )iecrui ni#el i corespunde n memoria operati# un cuplu de amplasamente rezer#ate cu#intelor de stare
#ec1i i nou. )iecare ni#el conine mai multe cauze de ntrerupere. /entru a face o deosebire a acestor cauze este utilizat un cod al
ntreruperii format din biii 6C - 96 ai cu#ntului de stare. 5cest cod este n mod automat pus la zi n cazul unei ntreruperi. *e
exemplu, pentru o ntrerupere de intrare-ieire el #a conine adresa canalului i a perifericului care au pro#ocat ntreruperea7 pentru
o ntrerupere extern acest cod permite s se stabileasc originea - ceasul, apel al operatorului, adresare a unui organ extern, etc.
Iiii = - < i 69 ai cu#ntului de stare permit introducerea mtii ntreruperii. "i permit mascarea ni#elelor de ntrerupere extern,
eroare 1ardKare i, selecti#, ntreruperile de intrare-ieire, care pro#in de la diferite canale. Iiii 9C - 9J permit in1ibarea a : cauze
de de#iere.
(bser#m, c de#ierile i apelrile super#izorului sunt tratate ca i ntreruperi particulare.3
Exe#lul 2.9. IIM /C. "ste propus ca exerciiu.
2.3. I#le#en%a!ea #ecanis#elo! de co#u%a!e a con%ex%ului
Implementarea mecanismelor descrise mai sus este ilustrat printr-o serie de exemple, legate de utilizarea lor.
!om preciza notaia utilizat n sc1emele programelor.
coninutul unui cu#nt de stare este reprezentat prin notaia @activitate" mod" mascare" contor ordinalA. /rimele trei
cmpuri pot lua, respecti#, #alorile. ateptare?acti#, master?sla#e, mascat?demascat. *ac csp desemneaz un cu#nt de
stare, cmpurile sale #or fi desemnate de csp.act" csp.mod" csp.masc i csp.co.
operatorul ad! aplicat unui identificator de #ariabil sau de procedur, desemneaz adresa amplasamentului unde se afl
#ariabila sau prima instruciune a procedurii,
notaia <p:adr; desemneaz coninutul amplasamentului cu adresa adr.
Notaiile svc_vechi" dev_vechi" intr_x_vechi" svc_nou" dev_nou" intr_x_nou desemneaz amplasamentele unde sunt plasate
i de unde sunt ncrcate cu#intele de stare.
!om mai presupune c
apelarea super#izorului este de forma ,?+ 8cod9" unde 8cod9 reprezint un numr care permite identificarea
funciei cerute,
un indicator 8cauz9 permite stabilirea cauzei care pro#oac o de#iere.
%c1emele prezentate conin un program de iniializare, executat la prima ncrcare a sistemului. )uncia acestui program este
de a iniializa cu#ntul de stare asociat tratrii ntreruperilor, de#ierilor i apelurilor super#izorului.
1.1. U%ili)a!ea devie!ilo! +i ael&!ii sue!vi)o!ului
Simularea instruciunilor lips. $nele instruciuni din setul de baz de instruciuni ale procesorului pot fi opionale i, deci,
pot lipsi n unele configuraii ale calculatorului. -entati#a executrii unei instruciuni opionale lips genereaz o dri#ere de tipul
instruciune inexistent. Mecanismul de#ierilor poate fi utilizat pentru a realiza prin program instruciunea inexistent n setul de
baz. *e exemplu, pentru o configuraie n care operaiile aritmetice n #irgul mobil nu sunt disponibile ele pot fi simulate prin
apelarea procedurilor corespunztoare. 5ceste proceduri trebuie executate n mod sla#e pentru a permite tratarea explicit a
erorilor. ele sunt apelate prin ncrcarea cu#ntului de stare respecti#. ( adres de retur trebuie s fie pregtit de ctre programul
de tratare a de#ierii n top-ul sti#ei pentru a asigura returul la instruciunea care urmeaz instruciunii de operaie aritmetic
simulat.
pag.J
2ealizarea prin program.
!ocedu!a iniializare!
dev_nou:=8activ"master"mascat" ad! tratare_deviere97
csp:@.._/A;:= 8activ"slave"demascat" ad! @.._/A97
::
csp :.5?_/A;:= 8activ"slave"demascat" ad! .5?_/A97
!ocedu!a tratare deviere!
7e"in
save#zon$!
case cauz o$
::
instruciune inexistent:
cod_op:=<p:dev_vechi.co;.cod_operaie!
case cod_op o$

@.._/A: determinarea operanzilor!


introdu_n_stiv#stiv_utilizator"dev_vechi.co+1$!
ncarc_csp#csp:@.._/A;$

else -- caz de eroare


8tratarea erorii9
end;
end;
restabilire#zon$!
ncarc_csp#dev_vechi$
end
(peranzii #or fi determinai prin analiza coninutului instruciunii, care conine adresele lor7 returul rezultatelor utilizeaz
con#eniile proprii instruciunii n cauz &plasarea ntr-un registru, etc.'.
Msurarea capacitii memoriei. $n sistem de operare presupune a fi utilizat pentru di#erse configuraii ale calculatorului.
Capacitatea memoriei, numrul i natura dispoziti#elor periferice, etc., pot fi diferite. %istemul de operare trebuie s se adapteze
configuraiei concrete, ca i condiiilor particulare de utilizare &numr de utilizatori, prioriti, etc.'. Crearea unei asemenea #ersiuni
specifice se numete "ene!a!ea sistemului de operare. /entru a reduce frec#ena generrilor %.(. unii parametri de configurare pot
fi determinai n mod automat la iniializare.
5stfel, poate fi determinat capacitatea memoriei operati#e utiliznd o de#iere pentru adresa amplasamentului de memorie
inexistent. Memoria const dintr-un numr nbloc de blocuri &care trebuie determinat', fiecare bloc coninnd p cu#inte. $n program
executat la iniializarea sistemului ncearc s acceseze ciclic primul cu#nt al fiecrui bloc7 tentati#a de accesare a primului bloc
inexistent n configuraia curent pro#oac, prin de#iere, prsirea buclei. Numrul de blocuri este egal cu numrul primului bloc
neimplantat &blocurile fiind numerotate ncepnd cu ='.
2ealizarea prin program.
pro(ram principal:
7e"in
de#Lnou.M 8activ"master"mascat" ad! msurare97
i:=1!
ciclu
8accesare cuv)nt cu adresa i.p9!
i:=i+1!
endciclu;
ie'ire ciclu. nbloc:=i!
dev_nou := 8activ"master"mascat" ad! tratare_deviere97
end
!ocedu!a msurare! && apelare prin de#iere
i$ cauz = adres n afara memoriei %(en
csplucrare:= 8activ"master"mascat" ad! ie'ire ciclu97
ncarc_csp#csplucrare$
endi$
0a ieirea din programul de msurare a capacitii memoriei se #a restabili tratarea normal a de#ierilor &procedura
tratare_deviere'.
pag.6=
<es%iona!ea devie!ilo! de c&%!e u%ili)a%o!ul sis%e#ului. 2eacia standard la o de#iere care are loc n timpul execuiei unui
program utilizator este apelarea unei proceduri de sistem, care pro#oac emiterea unui mesa+ de eroare, oprirea programului curent
i trecerea la programul urmtor.
"ste de dorit ca fiecare utilizator s aib posibilitatea s asocieze fiecrei cauze distincte de de#iere i o procedur proprie,
tratarea creia ar nlocui reacia standard. /entru a e#ita o bucl infinit, o de#iere din aceeai cauz i n interiorul acestei proceduri
trebuie s apeleze procedura standard.
5socierea unei proceduri proc de reluare a cauzei i de de#iere se face cu a+utorul unui apel al super#izorului &%!C
asociere_deviere' cu parametrii i i proc.
/entru trecerea la programul urmtor se #a apela o procedur a sistemului de operare, apel realizat prin ncrcarea unui cu#nt
de stare, numit schimbare.
2ealizarea prin program.
cons% ndev=8numrul de cauze de deviere9!
va! += a!!a>:0..ndev&1; o$ boolean!
adrtratare: a!!a>:0..ndev&1; o$ adres!
!ocedu!a iniializare!
7e"in
svc_nou:=8activ"master"mascat" ad! tratare_svc 97
$o! i:=0 %o ndev&1 do -- tratare standard
+:i;:=false!
end$o!;
dev_nou:=8activ"master"mascat" ad! tratare_dev 97
end
!ocedu!a tratare_svc!
7e"in
save#zon$!
case cod o$
::
asociere_deviere: -- parametrii i, proc
+:i;:=true!
adrtratare:i;:=ad! proc!
restabilire#zon$!
ncarc_csp#svc_vechi$
77
endcase
end
!ocedu!a tratare_dev#i$!
7e"in
save#zon$!
i$ +:i; %(en
+:i;:=false! && restabilire tratare standard
introdu_n_stiv#stiv_utilizator"dev_vechi.co$! && pentru retur
dev_vechi.co:= adrtratare:i;!
restabilire#zon$!
ncarc_csp#dev_vechi$!
else
8tratare standard:i;9!
ncarc_csp#schimbare$! && programul urmtor
endi$
end
/rogramul de tratare a de#ierii, specificat de ctre utilizator se #a executa n modul slave, iar returul se #a face cu a+utorul
mecanismului standard de retur dintr-o procedur, deoarece adresa de retur a fost pus n #rful sti#ei de execuie.
1.2. Exe#le de u%ili)a!e a 1n%!e!ue!ilo!
/rincipala utilizare a ntreruperilor este msurarea timpului i administrarea operaiilor de intrare-ieire. /rezentm mai +os
cte#a exemple de utilizare a ceasului calculatorului.
$n ceas de calculator este realizat cu a+utorul unui oscilator cu cuar, care emite impulsuri periodice. /erioada de emitere, de
obicei poate fi aleas dintr-o pla+ de #alori prestabilit, de exemplu de la =.6 pn la 6== microsecunde. 5ceste impulsuri sunt
utilizate pentru a decrementa #aloarea unui contor, coninut ntr-un registru special sau ntr-un cu#nt de memorie, rezer#at acestui
pag.66
scop. Cnd acest contor trece prin zero este declanat o ntrerupere, numit ntrerupere de ceas, care corespunde unui ni#el
rezer#at acestui efect.
/entru aplicaiile care urmeaz #om presupune, c fiecare impuls decrementeaz cu 1 coninutul unei locaiuni de memorie,
notat ceas.
Limitarea timpului de execuie a unei proceduri. "ste necesar s fie executat o procedur p astfel, nct dac dup un
inter#al de timp prestabilit q" numit timeout, executarea nu se #a termina, ea #a fi ntrerupt i o procedur specificat
tratare_eroare este apelat.
2ealizarea prin program.
!ocedu!a iniializare!
intr_ceas_nou:=8activ"master"mascat"ad! intr_ceas9!
svc_nou :=8activ"master"mascat"ad! tratare_svc 9!
dezarmare#intr_ceas$!
!ocedu!a tratare_svc!
save#zon$!
case cod o$
:
apel_lim_timp_ex: && parametrii p" q" tratare_eroare
ceas:=q!
cspretur:=svc_vechi! && sal#are pentru retur
csplucrare:= 8activ"slave"demascat"ad! p9!
csperoare:= 8activ"slave"demascat"ad! tratare_eroare9!
armare#intr_ceas$!
restabile'te#zon$!
ncarc_csp#csplucrare$!
7
retur: -- datorat terminrii procedurii p
dezarmare#intr_ceas$!
ncarc_csp#cspretur$!
7
endcase
!ocedu!a intr_ceas! -- expirarea timpului limit
dezarmare#intr_ceas$!
ncarc_csp#csperoare$!
/rimul e#eniment, care #a a#ea loc &expirarea timpului q" rezer#at executrii, sau returul din p', dezarmeaz ceasul i acti#eaz
procedura adec#at pasndu-i contextul curent. 2eturul din p trebuie s se fac prin apelarea super#izorului i nu printr-o
instruciune obinuit de retur. 0a fel se #a proceda i cu returul din tratare_eroare" dac se cere re#enirea la contextul apelrii
iniiale a procedurii p.
Culegerea unor date de msurare. $n calculator are obligaiunea s preia periodic datele unor msurri legate de o instalaie
industrial. /erioada ceasului este de B Ns. *atele trebuie culese fiecare 6== ms &perioada de eantionare'. *eoarece timpul necesar
culegerii datelor este cu mult inferior perioadei de eantionare, calculatorul poate executa alte lucrri n regim de fond.
2ealizarea prin program.
cons% q = 10000 -- 6==ms?BNs
!ocedu!a iniializare!
7e"in
intr_ceas_nou:=8activ"master"mascat"ad! intr_ceas9!
csplucrare:= 8activ"slave"demascat"ad! fond9!
cspmsurare:= 8activ"slave"demascat"ad! msurare9!
ceas:=q!
ncarc_csp#cspdev$
end
!ocedu!a intr_ceas!
7e"in
save#zon$! sal#area contextului de fond
cspsave:=intr_ceas_vechi! sal#area cu#ntului de stare pentru fundal
ceas:=q!
ncarc_csp#cspmsurare$ programul de culegere a datelor
end
/rogramul de msurare trebuie s se termine printr-o apelare a super#izorului ,?+ retur efectul creia este de a restabili
contextul lucrului n fond. 5cest apel execut sec#ena.
pag.68
restabile'te #zon$!
ncarc_csp#cspsave$!
%c1ema de mai +os ilustreaz funcionarea sistemului descris.
'e#a!c&. /utem include procedura msurare direct n programul de tratare a ntreruperii, care ar fi a#ut n forma
save#zon$!
ceas:=q!
msurare!
restabile'te#zon$!
ncarc_csp#intr_ceas_vechi$
*ar n acest caz programul de msurare #a trebui s fie executat n modul master i ntreruperile s fie mascate, ceea ce nu ar
permite modificarea sau nlocuirea lui de ctre un utilizator nepri#ilegiat. 5ceast remarc ilustreaz un principiu general, care cere
ndeplinirea independent &decuplat' a programelor de tratare a ntreruperilor &sec#ene de scurt durat, executate cu pri#ilegii
nalte' i programele acti#ate de ctre procedurile de tratare a ntreruperilor i apelate prin ncrcarea unui cu#nt de stare &tratare
primar i secundar a ntreruperii'.
dministrarea lucrrilor n timp parta!at. ( mulime de programe sau lucrri trebuiesc executate pe un calculator, utiliznd
procesorul n regim de parta+are a timpului. procesorul este alocat succesi# lucrrilor ntr-o ordine prestabilit, pentru trane de timp
de durat fix q &cuanta de timp'. *ac o lucrare este nc1eiat nainte de expirarea cuantei q, procesorul este imediat alocat lucrrii
urmtoare.
0ucrrile sunt numerotate de la 0 la n&1. "ste definit o zon de amplasare a cu#ntului de stare a procesorului csp:i; pentru
fiecare lucrare i i o alt zon re(:i; pentru registrele acesteia. 5ceste zone permit sal#area contextului procesorului de fiecare dat
cnd o lucrare este ntrerupt pentru a permite reluarea ulterioar a lucrrii ntrerupte.
2ealizarea prin program.
/entru nceput, presupunem c lucrrile nu se #or termina niciodat. !om utiliza un fir circular de lucrri, notat fir_lucr i
gestionat de trei proceduri intrare" ie'ire i urm.
!ocedu!a iniializare!
7e"in
$o! i:=0 %o n&1 do
csp:i; := 8activ"slave"demascat"ad! lucrare:i;9!
intrare#i" fir_lucr$!
end$o!
intr_ceas_nou:=8activ"master"mascat"ad! intr_ceas9!
svc_nou:=8activ"master"mascat"ad! trattare_svc9!
lucr_ales:=0! && ncepem cu lucrarea 0
ncarc_csp#csp:lucr_ales;$!
end
!ocedu!a intr_ceas!
7e"in
csp:lucr_ales;:=intr_ceas_vechi!
save_re(istre#re(:lucr_ales;$!
lucr_ales:=urm#lucr_ales$!
ceas:=q!
ncarc_re(istre#re(:lucr_ales;$!
ncarc_csp#csp:lucr_ales;$!
end
/entru a lua n consideraie terminarea lucrrilor, fiecare lucrare trebuie s ntiineze sistemul atunci cnd execuia sa a luat
sfrit printr-un apel al super#izorului ,?+ end dup cum este prezentat mai +os.
!ocedu!a tratare_svc!

case cod o$
:
term:
pag.69
Msurare
)ond
Msurare
)ond
Msurare
)ond
Msurare
)ond
6== ms 6== ms 6== ms 6== ms
Iniializare
6== ms
suc:=urm#lucr_ales$!
ie'ire#lucr_ales" fir_lucr$!
lucr_ales:=suc!
ceas:=q!
ncarc_re(istre#re(:lucr_ales;$!
ncarc_csp#csp:lucr_ales;$!
endcase
5m presupus c firul de lucrri nu #a de#eni niciodat #id. ,n practic aceasta poate fi obinut prin trecerea la o lucrare de fond,
care poate e#entual fi redus la o bucl.
1.3. Conclu)ii
"xemplele precedente ilustreaz modurile elementare de comunicare dintre programele unui sistem de operare i mediul
exterior. /rogramele sistemului sunt acti#ate.
6' fie de ctre programul utilizatorului, care semnaleaz o anomalie &de#iere' sau cere ac1itarea unui ser#iciu &apelarea
super#izorului',
8' fie de ctre un dispoziti# extern &ceas, proces comandat, organ periferic sau linie de comunicaii', care semnaleaz
producerea unui e#eniment i care cere o reacie imediat a sistemului.
Ca i rezultat putem afirma c un sistem de operare este pilotat de e#enimente &event&driven" eng.'. Notm de asemenea, c
pentru comunicarea intern ntre programele unui sistem se folosete apelarea super#izorului dac un anumit tip de protecie trebuie
s fie acti#at &program executat n modul sla#e, de exemplu' i apelarea unei proceduri obinuite n caz contrar. ( sec#en de
execuie a unui program de sistem se termin prin ncrcarea unui cu#nt de stare a procesorului care permite controlul total al
contextului restabilit.
2.4. /!o"!a#a!ea oe!aiilo! de in%!a!e6ie+i!e
/rin noiunea de in%!a!e6ie+i!e &prescurtat I?"7 eng. input?output, I?(7 fr. entrOe-sortie, "?%' numim orice transfer de informaii
din sau spre nucleul calculatorului. (peraiile de I?" semnific.
transferurile de informaii dintre diferite ni#ele ierar1ice ale memoriei,
transferurile de informaii din sau spre mediul exterior &organe periferice locale sau la distan, captoare sau dispoziti#e de
acionare, alte calculatoare, etc.'.
1.1. O!"ani)a!ea "ene!al&
2.4.1.1. /e!i$e!ice. con%!ole!e. canale
$n organ de intrare-ieire este un dispoziti# capabil s transfere informaii ntre procesorul sau memoria calculatorului i un
suport extern de informaie. 5cest transfer este comandat de ctre procesorul central. ,n cel mai simplu caz, o instruciune special a
procesorului permite transferarea informaiei ntre suportul extern i un registru al procesorului, care #a fi deci ocupat pe toat
perioad transferului informaiei. (dat cu e#oluia calculatoarelor, n scopul unei mai bune utilizri a procesorului s-a a+uns la
necesitatea acordrii unei autonomii organelor de intrare-ieire ncredinndu-le funcii tot mai complicate de nlnuire i comand,
procesorului central lsndu-i-se doar iniiati#a de lansare i de control a operaiilor. *in considerente economice mai apoi s-a
trecut la separarea dispoziti#elor de comand a perifericelor de perifericele propriu-zise, pentru ca dispoziti#ele de comand s
poat fi parta+ate ntre mai multe periferice.
Cte#a sc1eme de organizare a perifericelor sunt prezentate n fig.8.B. %c1ema &c' este proprie unui calculator de putere mare,
&a' i &b' corespund configuraiilor calculatoarelor de putere mai mic. /recizm funciile organelor reprezentate n aceast figur.
6' $n canal &sau unitate de sc1imb' este un procesor specializat n operaiile de intrare-ieire. "l poate fi lansat doar de un
procesor central, nu posed ntreruperi, dar poate ntrerupe un procesor central. %etul de instruciuni ale canalului i
permite s acioneze controlerele i perifericele, care-i sunt conectate. Mini- i microcalculatoarele pot poseda organe,
numite Bniti de acces direct la memorie #@.<$, care sunt nite canale simplificate.
8' $n con%!?le! este un dispoziti# de comand adaptat la un tip concret de ec1ipament periferic. 5utonomia sa este limitat
de operaii foarte elementare. *estinaia principal a unui controler este de a permite conectarea a mai multor periferice de
acelai tip la un singur controler. $n singur dispoziti# periferic poate transmite informaii prin intermediul controlerului la
un moment de timp dat. ,n acelai timp, este posibil executarea simultan a unor operaii pe alte periferice, operaii care
nu implic transferul de informaii &rebobinarea unei bande magnetice, deplasarea braului unui disc, etc.'. /arta+area
funciilor ntre periferic i controler depinde de tipul perifericului. *e obicei, funciile logice &nlnuirea i sincronizarea
operaiilor, emiterea unor semnale n caz de accident sau terminarea normal a execuiei' sunt ncredinate controlerului,
iar funciile fizice &transferul propriu-zis' - perifericului. ,n programarea intrrilor-ieirilor nu este necesar, de obicei, s se
fac o deosebire ntre un controler i un periferic.
pag.6:
9' $n e!i$e!ic este un organ capabil s transfere informaii din sau spre un suport extern. Controlerul este legat de periferic
printr-o interfa, care conine un set de funcii &intrare, ieire, semnalizri de comand i de accident' i o linie de
comunicaie, care ser#ete la transferul informaiilor.
$n canal poate comanda un singur dispoziti# periferic cu debit ridicat &disc, de ex.' sau poate fi multiplexat pentru mai multe
periferice cu debitul mai mic. ,ncercarea mai multor procesoare &uniti centrale sau canale' de a accesa simultan memoria
operati# poate genera conflicte. Conflictele sunt reglate de ctre dispoziti#ul 1ardKare de accesare, care impune o ordine de acces
conform unor prioriti prestabilite. Canalele au prioritate fa de unitile centrale, deoarece ele trebuie s reacioneze ct se poate
de rapid la e#enimentele externe.
2.4.1.2. Ad!esa!ea diso)i%ivelo! e!i$e!ice
*iferite organe sunt desemnate, la fiecare ni#el, printr-o adres care permite s e#ideniem.
canale legate de memorie,
controlere ataate fiecrui canal,
dispoziti#e periferice ataate fiecrui controler.
0a un ni#el anume adresa este un simplu numr de ordine. $n periferic este desemnat printr-o adres compus
@numrul canalului" numrul controlerului" numrul dispozitivului perifericA.
$n controler poate fi conectat la mai multe canale, iar un periferic la mai multe controlere, care #or fi, obligator, de acelai tip.
5stfel, un periferic are mai multe ci de acces la memorie &doar una singur poate fi acti# la un moment de timp dat' i poate fi
desemnat prin mai multe adrese &fig.8.C'.
pag.6B
$C
M
5*M
Magistral
Cp
p
Cp
p
$C
M
Cp
p
Cp
p
Magistral
&a' &b'
M
C
Cp
C
Cp
Magistral
&c'
Cp
p p p p
$C $C
$C . unitate central
M . memorie
C . canal
5*M . acces direct la memorie
Cp . controler
p . dispoziti# periferic
)ig. 8.B. (rganizarea intrrilor-ieirilor
5ceast organizare permite ameliorarea performanelor i disponibilitii sistemului. "xistena mai multor ci de acces la un
periferic diminueaz riscul unor indisponibiliti din cauza saturaiei sau ieirii din funciune a unui canal sau controler.
,n cazul unor calculatoare, cum ar fi de exemplu *"C, adresarea perifericelor utilizeaz amplasamente de memorie rezer#ate,
care sunt asociate cu#ntului de stare sau registrului de date a unui controler specificat. 5ccesarea cu#ntului de stare sau a
registrului de date este realizat prin intermediul instruciunilor obinuite de accesare a memoriei. 5ceast sc1em simplific
desemnarea perifericelor i programarea intrrilor-ieirilor.
1.2. Me%ode de co#and& a e!i$e!icelo!
/rogramul, care controleaz funcionarea elementar a unui dispoziti# periferic se numete d!ive!. *ri#erul gestioneaz n
mod direct interfaa controlerului perifericului, trateaz ntreruperile generate de acesta, detecteaz i trateaz cazurile de eroare. "l
este, de obicei, in#izibil unui utilizator obinuit al sistemului, care apeleaz funcii de intrare-ieire prin intermediul unor ser#icii de
nalt ni#el, realizate prin apelri ale super#izorului. !om prezenta mai +os modurile principale de control ale perifericelor i
primiti#ele elementare de intrare-ieire.
2.4.2.1. In%!&!i6ie+i!i sinc!one
,n acest caz nu exist nici un fel de paralelism ntre procesare i transferul informaiilor. /rocesorul este ocupat pentru toat
durata transferului.
%c1ema care urmeaz nu descrie doar un caz particular, ci este reprezentati# pentru organizarea intrrilor-ieirilor sincrone
pentru mai multe tipuri de calculatoare.
1$ ,pecificarea mecanismului
(peraia de baz const n transferarea unor informaii elementare de #olum fix ntre un amplasament de memorie i un
dispoziti# periferic. /resupunem c #olumul informaiei transmise, care depinde de perifericul considerat, este un octet. %tarea
ansamblului controler-periferic este definit printr-un cu#nt de stare, aflat n controler. 5cest cu#nt de stare conine o mulime de
indicatori booleeni, dintre care doar 9 ne #or interesa aici.
pre( : perifericul este pregtit &gata' de funcionare,
term . transferul este terminat7 perifericul este gata s transfere un nou caracter,
err : n cursul transferului a a#ut loc o eroare7 natura ei este precizat de un cod care face parte din cu#ntul de stare.
Controlerul este comandat de unitatea central cu a+utorul a trei instruciuni de intrare-ieire, efectul crora este descris mai +os.
5C#adr_mem" adr_perif$ . cerere de transfer tip intoducere a unui octet,
DBE#adr_mem" adr_perif$ . cerere de transfer tip extragere a unui octet,
E-,E#adr_perif$ . copie cu#ntul de stare ntr-un registru cu scopul de a consulta indicatorii.
/rin adr_mem i adr_perif sunt desemnate adresele amplasamentului memoriei i perifericului.
1$ *ro(ramul driver&ului
)ie c #rem s extragem o sec#en de n caractere care se afl ntr-un masi# E:0..n&1;. Caracterul E:i;" dac i90" poate fi extras
doar dac a fost transferat E:i&1;. /entru a #erifica aceast condiie se testeaz iterati# &ateptare acti#' indicatorul term.
iniializare : term:=false!
pag.6C
66
=6, 6=
==
6
=
6
=
6
=
6
=
6
=
6
=
Canal
Canal
Controler
Controler
Controler
p
p
p
p
p
==6
===
666
=66
6=6
66=
=6=
6==
)ig.8.C. 5dresarea perifericelor
E-,E#adr_perif$!
i$ preg M false %(en ?? perifiericul nu este pre(tit
8tratare eroare9
endi$;
$o! i:=0 %o n&1 do
DBE#ad! E:i;" adr_perif$!
ciclu : E-,E#adr_perif$!
i$ err = true %(en
8tratare eroare9
endi$7
i$ term = false %(en "o%o ciclu
endi$7
end$o!
Intrrile-ieirile sincrone sunt folosite la microprocesoarele cele mai simple sau atunci cnd procesorul nu poate fi exploatat n
mod util n timpul transferului &nregistrri de msurare, ncrcarea iniial a unui sistem'.
2.4.2.2. In%!&!i6ie+i!i asinc!one cu 1n%!e!ue!i
1$ ,pecificarea mecanismului.
-erminarea procesului de transferare a caracterului E:i; este semnalizat printr-o ntrerupere. *ac acest caracter nu este
ultimul &i8n&1$" urmtorul caracter poate fi transmis. /rocesul este declanat de transferul primului caracter. 5cest transfer este
cerut de ctre programul principal prin intermediul unui apel a super#izorului #,?+ intrare sau ie'ire$, care are drept parametri.
adresa perifericului,
numrul de caractere care #or fi transferate,
adresa de origine sau de destinaie a primului caracter,
booleanul term, #aloarea EFB- a cruia semnalizeaz sfritul transferului.
/rogramul principal programul de tratare a ntreruperii
term:=/@A,- #la prsirea lui E:i;$
,?+ i:=0!
ie'ire DBE#ad! E:i;" adr_perif$!
save context!
E-,E#adr_perif$!
i$ err %(en
8tratare eroare9
else
i$ i@n&1 %(en
@tratare paralelA i:=i+1!
DBE#ad! E:i;" adr_perif$
: else
term:=EFB-
i$ term %(en endi$
: endi$7
@restabilire contextA
2.4.2.3. In%!&!i6ie+i!i !o"!a#a%e e canal sau acces di!ec% la #e#o!ie
$n canal este un procesor capabil s execute o sec#en de operaii de intrare-ieire, definite de un program din memorie,
pentru un periferic conectat la acest canal. "l conine un cu#nt de stare n care este inclus un contor ordinal ca i un set de
indicatori despre starea operaiei curente. /rogramul unui canal este compus dintr-o suit de instruciuni, fiecare specificnd o
operaie elementar de intrare-ieire. 5cest program trebuie s fie pregtit anticipat de procesorul central. /rincipiul de funcionare
a unui canal este urmtorul.
6' $n canal poate fi lansat doar de un procesor central cu a+utorul unei instruciuni ,5D &,tart 5nput&Dutput" eng.'. 5ceasta
iniializeaz cu#ntul de stare a canalului, specificnd adresa primei instruciuni care trebuie executat i adresa
perifericului origine sau destinaie a transferului. *up aceasta, acti#itatea canalului i a procesorului central decurg n
mod paralel.
8' (dat lansat, canalul execut programul su. 5ceast execuie se poate termina n trei moduri.
a' terminarea execuiei programului,
b' terminare cauzat de o eroare &pan 1ardKare, program incorect, etc.',
pag.6<
c' la comanda unui procesor central, care poate n orice moment stopa execuia programului canalului cu a+utorul unei
instruciuni speciale stop_canal #G5D" Galt 5nput&Dutput" eng.'.
Cazul a' este cel al funcionrii normale. /rocesorul central este informat despre terminarea executrii programului canalului
prin intermediul unei ntreruperi. -oate datele necesare derulrii intrrii-ieirii sunt prezente n cu#ntul de stare a canalului, care
poate fi consultat de ctre procesorul central cu a+utorul unei instruciuni testare_canal &adesea notat prin E5D" eng. Eest 5nput
Dutput'. ,n cazul b' o ntrerupere oricum are loc, cu excepia, e#ident, a cazului n care nsui dispoziti#ul ntreruperii a fost
afectat. Cu#ntul de stare a canalului conine toate informaiile necesare despre cauza opririi. /entru o oprire de urgen, dac
procesorul central detecteaz o situaie anormal, este folosit instruciunea stop_canal &cazul c'.
9' /rocesorul central, la orice moment de timp, poate consulta cu a+utorul instruciunii testare_canal starea canalului. 5ceast
consultare nu mpiedic executarea programului procesorului central. %tarea obinut este starea corespunztoare ultimului punct
obser#abil.
/rogramul unui canal reflect specializarea acestuia n operaii de intrare-ieire. ( instruciune a canalului specific
urmtoarele.
natura operaiei care #a fi executat &citire, scriere, deplasarea braului unui disc, etc.',
adresa de nceput a zonei de memorie origine sau destinaie,
numrul caracterelor care urmeaz a fi transmise.
"xist o instruciune, care permite un salt condiionat n cadrul programului. /ot fi de asemenea programate iteraii.
Exe#lul 2.B. Canalele calcula%oa!elo! ICM 39D. Instruciunile canalului conin informaiile menionate mai sus la care sunt
adugai trei indicatori.
un bit de 1nl&nui!e a ins%!uciunilo!. *ac acest bit este pus n 1, la terminarea instruciunii curente se #a
executa instruciunea urmtoare, n caz contrar execuia se oprete,
un bit de 1nl&nui!e a da%elo!. *ac acest bit este pus n 1, canalul execut, la terminarea instruciunii
curente, o instruciune, care are acelai cod al operaiei i este ataat aceluiai periferic, ca i instruciunea
precedent, dar care utilizeaz o zon de memorie, specificat n instruciunea urmtoare. 5ceasta permite
executarea unui transfer spre sau dintr-o zon non-contigu de memorie,
un bit de ce!e!e a unei 1n%!e!ue!i. *ac #aloarea acestui indicator este 1" o ntrerupere are loc atunci
cnd canalul ncepe execuia instruciunii date. 5ceasta permite culegerea unor date statistice.
$n canal este lansat cu a+utorul unei instruciuni %I( care specific adresa perifericului. ,n prealabil adresa
primei instruciuni, care #a fi executat i c1eia de protecie utilizat n timpul transferului, trebuiesc plasate
ntr-o locaiune rezer#at de memorie.3
Mai sus au fost prezentate doar aspectele eseniale ale funcionrii unui canal. "xist ns cte#a mecanisme, care complic n
mod substanial descrierea unui sistem real de intrare-ieire.
#ul%ilexa!ea canalelo! +i a con%ole!elo!. %untem impui s tim a determina imediat momentul de timp n care canalul
sau controlerul de#in disponibile, pentru a le utiliza n mod eficient. /entru aceasta sunt folosii indicatori i ntreruperi
speciale,
necesi%a%ea de a ine con% de ca!ac%e!is%icile dive!selo! e!i$e!ice. ceea ce complic n mod substanial relaiile de
ordonanare,
de%ec%a!ea +i %!a%a!ea e!o!ilo!, crora sunt consacrate ma+oritatea programelor unui administrator al intrrilor-ieirilor.
$n 5*M este o form simplificat a unui canal. >programul> unui 5*M conine o instruciune unic, care specific o adres n
memorie, o adres de periferic, numrul octeilor care #or fi transferai, sensul transferului i semnalul terminrii transferului &s se
cear sau nu o ntrerupere'. 5cest program nu este plasat n memorie, ci ntr-un registru al 5*M, utilizat ca i cu#nt de stare, care
poate fi consultat n timpul transferului pentru a duce e#idena octeilor rmai pentru a fi transmii.
1.3. In%!&!i6ie+i!i 7u$e!i)a%e 1n #e#o!ie
2.4.3.1. *eci$ica!ea !o7le#ei
*iferena considerabil dintre #iteza de lucru a unitii centrale i cea a organelor periferice impune >buferizarea> intrrilor-
ieirilor, adic introducerea unei zone de memorie-tampon ntre periferic i programul utilizatorului. %copul este de a reduce timpul
de inacti#itate a unitii centrale, dezlegnd funcionarea acesteia de periferice. /rogramul utilizatorului #a transfera informaiile
din sau spre zona-tampon, iar aceast zon-tampon #a ser#i, n mod paralel, drept surs sau destinaie la sc1imbul de date cu
perifericul. *ezlegarea unitii centrale de periferic este cu att mai bine realizat cu ct este mai mare capacitatea zonei-tampon.
5desea, pentru a nu suprancrca memoria principal, zona-tampon este situat pe discul fix.
/entru descrierea modelului sunt necesare urmtoarele specificaii.
sc1imburile de informaii cu perifericele se #a face prin nregistrri de lungime fix,
zona-tampon este de #olum fix egal cu C nregistrri,
pag.6G
pentru un program utilizator, sc1imbul de informaii cu zona-tampon trebuie s simuleze sc1imbul cu perifericul, drept
consecin, ordinea de depozitare sau de extragere a informaiilor trebuie s fie bine stabilit i nici o nregistrare s nu fie
pierdut,
ateptrile inutile trebuie reduse la minimum, att n cazul unitii centrale, ct i a perifericului,
capacitatea suporturilor nu este limitat. n cazul unei operaii de citire organul de intrare #a fi totdeauna alimentat7 n
cazul unei operaii de scriere, organul de ieire poate accepta ntotdeauna o nregistrare,
transferul se #a efectua fr eroare.
2.4.3.2. Desc!ie!ea al"o!i%#ilo!
1$ +itire
$n program de citire este o procedur citire#nre(istrare$" care prezint drept rezultat #aloarea nregistrrii citite. 5ceast
procedur, realizat printr-o apelare a super#izorului, are ca efect citirea din zona-tampon a nregistrrii urmtoare. Citirea este
posibil doar dac zona-tampon conine cel puin o nregistrare, care nu a fost nc citit. ,n caz contrar, acti#itatea apelant trece n
starea de ateptare.
,n ambele cazuri, continuitatea alimentrii zonei-tampon este asigurat de introducerea unei nregistrri de la perifericul de
intrare, dac un transfer nu are de+a loc. -erminarea transferului unei nregistrri n zona-tampon pro#oac o ntrerupere. /entru a
menine perifericul n stare acti#, programul de tratare asociat acestei ntreruperi trebuie s relanseze transferul urmtor, dac mai
exist loc n zona-tampon. /lus la aceasta, dac acti#itatea apelant era n ateptarea sosirii unei nregistrri, ea trebuie relansat.
5cest mod de funcionare poate fi sc1ematic prezentat conform sc1emei programului de mai +os.
!ocedu!a citire#nre($ %!a%a!e 1n%!e!ue!e
&apelare super#izor'
i$ tamponul_nu este_vid %(en i$ tamponul_nu este_plin %(en
extra(ere#nre(" tampon$! lansare_transfer!
lansare_transfer n caz de necesitate! i$ a'teptare %(en ?? ateptare pentru citire
else reluare citire
lansare_transfer n caz de necesitate! endi$
a'teptare
endi$
,n acest program >n caz de necesitate> semnific >dac un transfer nu este deHa n curs>. %istemul este iniializat de citirea
primei nregistrri, care pro#oac transferuri succesi#e pn la umplerea zonei-tampon.
1$ ,criere
%c1ema care corespunde unei scrieri se obine din precedenta, nlocuind dup cum urmeaz.
citire prin scriere
extra(ere prin introducere
tampon_vid prin tampon_plin
tampon_plin prin tampon_vid
!ocedu!a scriere#nre($ %!a%a!e 1n%!e!ue!e
&apelare super#izor'
pag.6J
periferic de
intrare
programul utilizator
citire #nre($
Pon-tampon cu C locaiuni
periferic de
ieire
programul utilizator
scriere #nre($
Pon-tampon cu C locaiuni
i$ tamponul_nu este_plin %(en i$ tamponul_nu este_vid %(en
introducere#nre(" tampon$! lansare_transfer!
lansare_transfer n caz de necesitate! i$ a'teptare %(en
else reluare scriere
lansare_transfer n caz de necesitate! endi$
a'teptare
endi$
3$ *ro(rame
/rogramele sunt o transcriere a sc1emelor de mai sus. Pona-tampon este un fir de ateptare, gestionat circular cu a+utorul a doi
pointeri. tcitire &top-ul )5' - indic urmtoarea nregistrare care urmeaz a fi preluat, qcitire &coada )5' - indic amplasamentul
unde se #a introduce urmtoarea nregistrare. )uncia suc realizeaz nlnuirea amplasamentelor7 o realizare simpl pentru o zon-
tampon sec#enial, care are C nregistrri a cte A amplasamente este de forma.
suc#ptr$ = #ptr + A$ #od #AC$
!om presupune, c acti#itatea care cere operaia citire este unica care #a utiliza procesorul7 trecerea acesteia n starea de
ateptare se #a realiza trecnd n starea de ateptare procesorul. 5ceast soluie este impracticabil n cazul unor acti#iti multiple
&este necesar de a relansa o alt acti#itate', dar o #om accepta din moti#e de simplitate.
Mai subliniem c transferul este comandat de un canal sau un 5*M, fr a detalia programul respecti#, pregtit de obicei
anticipat7 numai #alorile parametrilor se #or sc1imba de la o execuie la alta. /rocedurile lansare_citire i lansare_imprimare
realizeaz pregtirea programului i lansarea transferului.
!ariabile %emnificaie !aloare iniial
A lungimea unei casete &nregistrri' const.
Ccitire numrul de casete a zonei-tampon const
nvcitire numrul de casete #ide Ccitire
citire_activ indicator al acti#itii perifericului de intrare false
tcitire" qcitire pointeri top i coad =, =
suc#$ pointer spre caseta urmtoare Q
citire#nre($ tratare_ntrerupere_perif_de_intrare
save#zon_svc$! save#zon_ntrerupere$!
nceput: qcitire:=suc#qcitire$!
i$ nvcitire8Ccitire %(en nvcitire:=nvcitire&1!
nre(:=tampon:tcitire;! i$ nvcitire90 %(en
tcitire:=suc#tcitire$! lansare_perif_de_intrare#qcitire$
nvcitire:=nvcitire+1! else
i$ non citire_activ %(en citire_activ:=false
citire_activ:=true! endi$7
lansare_perif_de_intrare#qcitire$ i$ a'teptare_citire %(en
endi$ ntrerupere_veche.act:=activ!
else a'teptare_citire:=false
i$ non citire_activ %(en endi$7
citire_activ:=true! restabilire#zon_ntrerupere$!
lansare_perif_de_intrare#qcitire$ ncrcare_csp#ntrerupere_veche$!
endi$7
csplucrare:=8a'teptare"slave"demascat" ad! nceput97 lansare_perif_de_intrare#qcitire$
a'teptare_citire:=true! elaborare pro(.canal:
ncrcare_csp#csplucrare$! 8sens=citire
endi$7 adr.memorie=ad! tampon:qcitire;
restabilire#zon_svc$! contor_octei=A9
ncrcare_csp#svc_vechi$! ,5D
pag.8=
periferic de
intrare
programul utilizator
&%!C'
citire #nre($
Pon-tampon
qcitire tcitire
8pro(=pro(.canal
perif= perif_de_intrare9
"xecuia programelor de mai sus ne impun s facem o remarc foarte important. -rebuie s notm, c executarea tratrii
ntreruperii este declanat de sfritul transferului fizic al unei nregistrri, acti#itate, care are loc paralel cu executarea
programului primiti#ei citire#nre($ pe procesor. *rept rezultat, este posibil ca ntreruperea s sur#in ntr-un punct oarecare
&obser#abil' al executrii acestei primiti#e, ceea ce #a nsemna intercalarea executrii programului de tratare a ntreruperii ntre
dou puncte oarecare ale programului citire#nre($. Consecinele pot fi catastrofale, cum ne arat exemplul urmtor.
% considerm instruciunea a doua
i$ non citire_activ %(en
citire_activ:=true!
lansare_perif_de_intrare#qcitire$
endi$
din programul citire#nre($. "a se descompune n urmtoarele instruciuni elementare.
#a$ load F" citire_activ
#b$ Ei$) F" urm && ramificare dac true
#c$ Q
urm: 7
8a'teptare9
/resupunem c ntreruperea sosete ntre instruciunile &a' i &b', #aloarea citit n F de &a' este true7 programul de tratare a
ntreruperii pune citire_activ n false. *up prelucrarea ntreruperii, instruciunea &b' este executat cu F a#nd #aloarea true i
acti#itatea apelant trece n starea de ateptare n care rmne un timp indefinit, deoarece perifericul nu a fost relansat. /ot exista i
alte cazuri de funcionare incorect, legat de momentul sosirii unei ntreruperi.
/utem afirma, c #aliditatea #ariabilelor comune &de ex. citire_activ" nvcitire etc."' nu poate fi garantat dac autorizm sosirea
ntreruperilor de terminare a operaiilor de intrare-ieire n orice moment de timp. 5pelarea super#izorului pentru a realiza sec#ena
de cod citire_nre( trebuie executat cu ntreruperile de intrare&ie'ire mascate. %ituaia dat este cunoscut sub numele de
exclude!e #u%ual& i este o consecin a execuiei acti#itilor asincrone.
/rogramele pentru un periferic de ieire &imprimare, de ex.' sunt analogice. 2emarca despre mascarea ntreruperilor rmne
#alabil.
!ariabile %emnificaie !aloare iniial
A lungimea unei casete &nregistrri' const.
Cimp numrul de casete a zonei-tampon const
nvimp numrul de casete #ide Cimp
imp_activ indicator al acti#itii perifericului de intrare false
timp" qimp pointeri top i coad =, =
suc#$ pointer spre caseta urmtoare Q
scriere#nre($ tratare_ntrerupere_imp
save#zon_svc$! save#zon_ntrerupere$!
nceput: qimp:=suc#qimp$!
i$ nvimp90 %(en nvimp:=nvimp+1!
tampon:timp;:= nre(! i$ nvimp8Cimp %(en
timp:=suc#timp$! lansare_imp#qimp$
nvimp:=nvimp&1! else
i$ non imp_activ %(en imp_activ:=false
pag.86
imprimant
programul utilizator
&%!C'
scriere #nre($
Pon-tampon
timp qimp
imp_activ:=true! endi$7
lansare_imp#qimp$ i$ a'teptare_imp %(en
endi$ ntrerupere_veche.act:=activ!
else a'teptare_imp:=false
i$ non imp_activ %(en endi$7
imp_activ:=true! restabilire#zon_ntrerupere$!
lansare_imp#qimp$ ncrcare_csp#ntrerupere_veche$!
endi$7
csplucrare:= :=8a'teptare"slave"demascat" ad! nceput97 lansare_imp#qimp$
a'teptare_imp:=true! elaborare pro(.canal:
ncrcare_csp#csplucrare$! 8sens=ie'ire
endi$7 adr.memorie=ad! tampon:qimp;
restabilire#zon_svc$! contor_octei=A9
ncrcare_csp#svc_vechi$! ,5D
8pro(=pro(.canal
perif= imprimant9
1.4. 2nc&!ca!ea iniial&
/entru a ncepe lucrul maina >goal> trebuie s aib ncrcat n memoria operati# programul sistemului de operare i s
execute un salt la prima instruciune a acestui program. 5ceasta presupune prezena n memorie a unui program de citire, care el
nsui trebuie ncrcat n prealabil. 0a primele calculatoare, un program de cte#a instruciuni, introdus manual n memorie cu
a+utorul unor comutatoare ale pupitrului de comand la o adres fix, permitea ncrcarea unui program de citire mai ele#at capabil
s citeasc #ersiunea complet a sistemului de operare. 5cest proces era numit 1nc&!ca!e &bootstrapping, eng.'.
,n calculatoarele contemporane, programul de iniializare se afl permanent ntr-o memorie constant &II(%'. "xecuia acestui
program este declanat odat cu punerea sub tensiune a calculatorului &autoncrcare'.
Exe!ciii
Exe!ciiul 2.1.
"laborai sc1ema unui program de intrare-ieire cu tratare a ntreruperilor conform sc1emei date n 8.:.8.8. cu modificrile
urmtoare.
a' n cazul detectrii unei erori de transfer, se #a ncerca repetarea operaiei pn la un numr maxim de ncercri nmax, nainte
de a anula intrarea-ieirea,
b' dac transferul nu a fost realizat ntr-o perioad de timp tmax specificat, s se anuleze operaiile de intrare-ieire.
/entru ambele cazuri s se apeleze o procedur specificat de tratare a erorii.
Exe!ciiul 2.2.
$n calculator este utilizat pentru culegerea unor date de msurare. "l execut periodic &cu perioada E' un ciclu de acti#iti.
culegerea rezultatelor de msurare de la captoare &durata tm'
procesarea rezultatelor de msurare &durata tp'
#ida+ul pe disc al rezultatelor &durata tv'
-oate cele trei operaii de mai sus trebuie s fie executate consecuti# pentru fiecare ciclu. "xist un ceas, care pro#oac o
ntrerupere la trecerea unui contor prin zero. % se elaboreze programele acestui sistem &programul principal, programul de tratare a
ntreruperilor' pentru urmtoarele trei cazuri &formulnd pentru fiecare caz, dac #a a#ea loc, condiia posibilitii tratrii n funcie
de durata diferitor operaii'.
a' Captoarele i controlerul discului sunt comandate de unitatea central. Ciclurile succesi#e de msurare trebuie executate
consecuti# i un tasR de fond este executat pentru perioada timpului mort.
b' /resupunem c tm+tp 8 E 8 tm+tp+tv. !ida+ul ciclului i trebuie efectuat paralel cu preluarea datelor ciclului i+1.
%e presupune c discul este comandat de 5*M.
c' /resupunem c tm 8 E 8 tm+tp. -rebuie executat n paralel i preluarea datelor i #ida+ul pentru ciclurile consecuti#e.
Exe!ciiul 2.3.
( instruciune citire_poziie#x"I$ permite citirea poziiei curente pe ecran a mouse-ului, definit prin coordonatele sale
carteziene x i I. ( alt instruciune init_mouse permite s definim poziia curent a mouse-ului drept origine a sistemului de
coordonate.
% se elaboreze un program, care #a permite urmrirea deplasrii mouse-ului pe ecran.
pag.88
a' 5dmitem c #iteza maxim de deplasare a mouse-ului este de 6= cm6s. Care este frec#ena de preluare a coordonatelor
dac se cere s localizm poziia mouse-ului definit printr-un pixel pe un ecran de 30x30 cm i care conine 6=8:x6=8:
pixeliS
b' Mouse-ul este gestionat de un program acti#at periodic, cu perioada E aleas n funcie de rezultatul obinut.
a$ % se elaboreze acest program presupunnd disponibile dou proceduri.
afi'are_cursor#x"I$, care afieaz un cursor centrat pe x" I"
deplsare_cursor#dx"dI$" care deplaseaz cursorul, presupus afiat, la distana dictat de #ectorul #dx"dI$.
5#em la dispoziie un ceas cu ntrerupere la trecerea prin zero.
pag.89

S-ar putea să vă placă și