Vous êtes sur la page 1sur 21

Sistemas Operacionais

Processos Threads Escalonamento Sincronizao Deadlock

Gerncia de Processos

NDICE

ndice
2 - THREADS
2.1 - Particulari a es 2.1.1 - Cria!"o #Thread Creation$ 2.1.2 - Termino #Thread termination$ 2.1.3 - %un!"o #Thread join$ 2.1.4 - T&rea 'iel #Rendimento do thread$ 2.2 - Escalonamento 2.2.1 - Linha de execuo ao nvel do usurio 2.2.2 - Linha de execuo ao nvel do ncleo 2.2.( - Compara!"o entre lin&a e e)ecu!"o e processo 2.( - *o elos e +era!"o e *ultit&rea s 2.3.1 - odelo !itos-Para-"m 2.3.2 - odelo-"m-Para-"m 2.3.3 odelo- !itos-Para- !itos 2., - Cancelamento

( - ESCA.ONA*ENTO
(.1 - Escalona ores e curto pra/o (.2 - Escalona ores e m0 io pra/o (.( - Escalona ores e lon1o pra/o (.(.1 - De2ini!"o (., - O34eti5os o Escalonamento

2#$#4$2#11
(.6 - 7uali a es o Escalonamento

(.8 - Al1oritmos escalona ores (.8.1 - Esta os e processos (.8.2 - Dia1rama e Esta o e Processos (.8.( - Distri3ui!"o e Priori a es (.8.(.1 - Alteran o priori a es no 9in o:s (.8.(.2 - Trocas e conte)to (.; - T&rea s

, - SINCRONI<A=>O DE PROCESSOS
,.1 - Sincronismo ,.2 - Sem?2oros ,.( - *onitores e processos

6 - DEAD.OC@
6.1 - Con i!Aes necess?rias para a ocorrBncia e deadloc 6.2 - Tratamento e ea locC6. ( - Al1oritmo o A5estru/ #I1norar a situa!"o$ 6., - Detectar a deadloc e recuperar o sistema 6.6 - Detec!Aes e deadloc com 5?rios recursos e ca a tipo 6.8 - Estruturas

2 - THREADS
%inha de e&ec!o 'em in(ls- thread) * !ma +orma de !m ,rocesso di-idir a si mesmo em d!as o! mais tare+as .!e ,odem ser e&ec!tadas concorrentemente. / s!,orte a thread * +ornecido ,elo ,r0,rio sistema o,eracional 'S/)1 no caso da linha de e&ec!o ao n2-el do n3cleo '4ernel-%e-el thread '4%T))1 o! im,lementada atra-*s de !ma 5i5lioteca de !ma determinada lin(!a(em1 no caso de !ma "ser-%e-el thread '"%T). "ma linha de e&ec!o ,ermite .!e o !s!6rio de ,ro(rama1 Por e&em,lo1 !tilize !ma +!ncionalidade do am5iente en.!anto o!tra linha de e&ec!o realiza o!tros c6lc!los e o,era7es. Em hard8ares e.!i,ados com !ma 3nica 9P"1 cada linha de e&ec!o 'Thread) * ,rocessada de +orma a,arentemente sim!lt:nea1 ,ois a m!dana entre !ma linha e o!tra * +eite de +orma to r6,ida .!e ,ara o !s!6rio isso est6 acontecendo ,aralelamente. Em hard8ares com m3lti,las 9P"s o! m!lti-cores as linhas de e&ec!o 'Threads) ,odem ser realizadas realmente de +orma sim!lt:nea; < /s sistemas .!e s!,ortam a,enas !ma 3nica linha de e&ec!o so chamados de monothread e a.!eles sistemas .!e s!,ortam m3lti,las linhas de e&ec!o so chamados de !ltithread.

E)emplo "m e&em,lo sim,les ,ode ser e&,resso atra-*s de !m =o(o onde o mesmo ,ode ser modelado com linha de e&ec!7es di+erentes1 sendo !ma ,ara desenho de ima(em e o!tra ,ara 6!dio; neste caso h6 !m thread ,ara tratar rotinas de desenho e o!tro thread ,ara tratar 6!dio; >o ,onto de -ista do !s!6rio1 a ima(em * desenhada ao mesmo tem,o em .!e o 6!dio * emitido ,elos a!to +alantes; Por*m1 ,ara sistemas com !ma 3nica 9P"1 cada linha de e&ec!o * ,rocessada ,or -ez; 2.1 - Particulari a es 9ada linha de e&ec!o tem o mesmo contexto de software e com,artilha o mesmo es,ao de mem0ria 'endereado a !m mesmo ,rocesso ,ai)1 ,or*m o contexto de hardware * di+erente. Sendo assim o overhead ca!sado ,elo escalonamento de linha de e&ec!o * m!ito menor do .!e o escalonamento de ,rocessos1 entretanto1 no h6 acesso ,rote(ido a mem0ria nati-amente 's!a im,lementao +ica a car(o do ,ro(ramado) de-ido ao com,artilhamento do es,ao da mem0ria. "m 5ene+2cio do !so das linhas de e&ec!o ad-*m do +ato do ,rocesso ,oder ser di-idido em mais de !ma linha de tare+as; .!ando !ma linha est6 es,erando determinado dis,ositi-o de entrada/sada (I/O) o! .!al.!er o!tro rec!rso do sistema1 o ,rocesso como !m todo no +ica ,arado1 ,ois .!ando !ma linha de e&ec!o entra no estado de 5lo.!eio1 o!tra thread a(!arda na +ila de ,ronto ,ara e&ec!tar. "ma linha de e&ec!o ,oss!i !m con=!nto de com,ortamentos ,adro1 normalmente encontrados em .!al.!er im,lementao o! sistema o,eracional. "ma linha de e&ec!o ,ode? < 9riar o!tra da mesma +orma .!e !m ,rocesso1 tal ad-ento * conhecido como thread-create1 onde a thread retorna !m @D ao ,rimeiro como ,rimeiro ar(!mento como res!ltado da +!no de criao. < Es,erar o!tra ,ara se A=!ntarB 'sincronizao)1 tal ad-ento * conhecido como join. < Col!ntariamente AdesistirB da 9P"1 ,or no ser ,reciso mais o ,rocessamento ,ro,osto ,or ela o! ,ela -ontade do !s!6rio1 tal ad-ento * conhecido como thread-yield. < De,licar-se sem a necessidade de d!,licar todo o ,rocesso1 economizando assim mem0ria1 ,rocessamento da 9P" e a,ro-eitando o conte&to '-ari6-eis1 descritores1 dis,ositi-os de @$/). Estado de !ma linha de e&ec!o. Easicamente !ma linha de e&ec!o ,ode ass!mir os se(!intes estados? < 9riao- >este estado o ,rocesso ,ai est6 criando a thread .!e * le-ado a +ila de ,rontos; < E&ec!o- >este estado a linha de e&ec!o est6 !sando a 9P";

< Pronto- >este estado a linha de e&ec!o a-isa a 9P" .!e ,ode entrar no estado de e&ec!o e entra na +ila de ,rontos; < Elo.!eado- >este estado1 ,or al(!m moti-o1 a 9P" 5lo.!eia a linha de e&ec!o1 (eralmente en.!anto a(!arda al(!m dis,ositi-o de @$/; < T*rmino- >este estado so desati-ados os conte&tos de hard8are e a ,ilha * deslocada. "%T e 4%T "s!almente as linhas de e&ec!o so di-ididas em d!as cate(orias? %inha de e&ec!o ao n2-el do !s!6rio '"ser-%e-el Thread '"%T)) e a linha de e&ec!o ao n2-el do n3cleo '4ernel-%e-el Thread '4%T)). T&rea em mo o @ernel usu?rio T&rea em mo o

Fs linhas de e&ec!o da ,rimeira cate(oria so s!,ortadas ,ela a,licao1 sem conhecimento do n3cleo e (eralmente so im,lementadas ,or ,acotes de rotinas 'c0di(o ,ara criao1 t*rmino1 escalonamento e armazena(em de conte&to) +ornecidas ,or !ma determinada 5i5lioteca de !ma lin(!a(em como * o caso do thread. h '5i5lioteca ,adro da lin(!a(em 9). Estas linhas de e&ec!o s!,ortam as mesmas o,era7es .!e as linhas de e&ec!o 4%T 'criao1 =!ntar1 d!,licar e desistir). Poss!i como -anta(ens a ,ossi5ilidade de im,lementao em sistemas o,eracionais .!e no

s!,ortam nati-amente este rec!rso1 (eralmente so mais r6,idas e e+icientes1 ,ois dis,ensam o acesso ao n3cleo1 e-itando assim m!danas no modo de acesso1 e s!a estr!t!ra de dados +ica no es,ao do !s!6rio le-ando a !ma si(ni+icati-a .!eda de o-erhead1 al*m de ,oder escolher entre as di-ersas +ormas de escalonamento em .!e melhor se ad*.!a. / (erenciamento de linha de e&ec!o '4%T) no * realizado atra-*s do c0di(o do ,r0,rio ,ro(rama; todo o ,rocesso * s!5sidiado ,elo S/. Esse modelo tem a -anta(em de ,ermitir o s!,orte a m!lti,rocessamento e o +ato do 5lo.!eio de !ma linha de e&ec!o no acarretar 5lo.!eio de todo o ,rocesso1 no o5stante1 temos a des-anta(em de ter .!e m!dar o ti,o de ,rocesso sem,re .!e o escalonamento +or necess6rio1 a!mentando assim o to temido o-erhead. So .!atro o,era7es 56sicas do (erenciamento de linha de e&ec!o! criao" t#rmino" thread join e thread $ield. 2.1.1 - Cria!"o #Thread Creation$- Easicamente !ma linha de e&ec!o ,ode di-idir o!tra em linha em d!as1 de,ois estas linhas 'threads) e&ec!tam sim!ltaneamente1 a thread criadora * a thread pai e a thread criada * a thread filho. 2.1.2 - Termino #Thread termination$- Para a maioria dos casos os threads no so criadas e e&ec!tadas eternamente. De,ois de terminado se! tra5alho1 a thread termina. >o +ato1 a thread .!e crio! estas d!as threads +ilho terminam tam5*m ,or.!e s!a tare+a atri5!2da se com,leta. Em (eral .!ando a tare+a atri5!2da a thread se com,leta esta ,ode ser terminada. Fl*m disso1 se a thread ,ai terminar1 todas as threads +ilho terminam tam5*m. @sso * im,ortante ,or.!e as threads +ilho com,artilham rec!rsos com a thread ,ai1 incl!indo -ari6-eis. G!ando a thread ,ai termina1 todas as -ari6-eis so ,erdidas e a thread +ilho no ,oder6 acessar os rec!rsos .!e a thread ,ai ,oss!i. Fssim1 se a thread ,ai termina mais cedo .!e a thread +ilho ha-er6 !m ,ro5lema. "ma thread ,ode terminar das se(!intes maneiras? < Detornando da s!a rotina mais e&terna1 a thread criadora; < G!ando termina a rotina em .!e +oi comeada; < 9hamando ,threadHe&it1 +ornecendo !m estado de sa2da; < Terminando atra-*s da +!no ,threadHcancel. 2.1.3 - %un!"o #Thread join$- @ma(ine a se(!inte sit!ao? Coc est6 est!dando ,ara !ma ,ro-a. Ento -oc ,ede ao se! irmo mais no-o ,ara com,rar !ma pizza. >este caso -oc * a thread ,rinci,al e se! irmo a thread +ilha. "ma -ez .!e -oc de! a ordem am5os comeam a Ae&ec!tar !ma tare+aB sim!ltaneamente. F(ora h6 dois casos a se considerar? Primeiro? Se! irmo traz a pizza e termina en.!anto -oc est!da. >este caso -oc ,ode ,arar de est!dar e comer a pizza. Se(!ndo? Coc aca5a de est!dar mais cedo e dorme e de,ois a pizza che(ar6.

2.1.4 - T&rea 'iel #Rendimento da thread$- S!,!nha .!e -oc e&ec!ta certo n3mero de ,ro(ramas o tem,o todo no com,!tador. @sso * ,oss2-el de-ido a 9P" destr!ir ,o!co a ,o!co o!tros ciclos de 9P"1 assim o!tros ,ro(ramas ,odem ser e&ec!tados. @sso ,ode ser !m ,ro5lema de ,ol2tica de ,lane=amento do S/. Entretanto1 .!ando n0s escre-emos nossos ,ro(ramas com m3lti,las threads1 nos temos .!e +azer certo ,ara .!e al(!mas das threads no oc!,em a 9P" eternamente1 o! ,or !m tem,o m!ito lon(o sem a5andon6-lo. Seno terminar6 na sit!ao acima1 .!ando !ma o! d!as threads e&ec!tam en.!anto o!tras sim,lesmente es,eram ,ar retornar. %i5eramos es,ao na mem0ria (raas a thread Iield. G!ando a thread e&ec!ta o thread Iield1 a e&ec!o da thread * s!s,ensa e a 9P" ,assa ,ara !ma o!tra thread em e&ec!o. Essa thread a(!ardar6 at* a 9P" tornar-se dis,on2-el no-amente. 2.2 - Escalonamento Da mesma +orma .!e os ,rocessos so+rem escalonamento as threads tam5*m tm a mesma necessidade. G!ando -6rios ,rocessos so e&ec!tados em !ma 9P" eles do a im,resso .!e esto sendo e&ec!tados sim!ltaneamente1 com as threads ocorrem o mesmo1 elas es,eram at* ser e&ec!tadas1 como essa altern:ncia * m!ito r6,ida h6 a im,resso .!e toda as threads so e&ec!tadas ,aralelamente. 2.2.1 - Linha de execuo ao nvel do usurio Fs "%T so escalonadas ,elo ,ro(ramador1 tendo a (rande -anta(em de cada ,rocesso !sar !m al(oritmo de escalonamento .!e melhor se ada,te a sit!ao1 o sistema o,eracional neste ti,o de thread no +az o escalonamento1 em (eral ele no sa5e .!e elas e&istem. >este modo o ,ro(ramador * res,ons6-el ,or criar1 e&ec!tar1 escalonar e destr!ir a thread. "m e&em,lo ,r6tico de ,rocesso chamado P1 .!e contem tais threads? P1T11 P1T21 e P1T31 .!ando o sistema o,eracional da a 9P" ,ara o ,rocesso P1 ca5e a ela destinar .!al thread ser6 e&ec!tada1 caso esta thread !se todo ,rocesso do .!ant!m1 o sistema o,eracional chamar6 o!tro ,rocesso1 e .!ando o ,rocesso P1 -oltar a e&ec!tar1 P1T1 -oltar6 a ser e&ec!tada e contin!ar6 e&ec!tando at* se! t*rmino o! inter-eno de P11 este com,ortamento no a+etar6 o!tros ,rocessos1 ,ois o sistema contin!a escalonando os ,rocessos normalmente. 2.2.2 - Linha de execuo ao nvel do ncleo Fs 4%T so escalonadas diretamente ,elo sistema o,eracional1 com!mente so mais lentas .!e as threads "%T1 ,ois a cada chamada elas necessitam cons!ltar o sistema1 e&i(indo assim a m!dana total de conte&to do ,rocessador1 mem0ria e o!tros n2-eis necess6rio ,ara alternar !m ,rocesso. "m e&em,lo ,r6tico de ,rocesso chamado P2 .!e contem as threads P2T11 P2T2 e P2T3 e !m ,rocesso chamado P3 .!e contem as threads P3T11 P3T2 e P3T3. / sistema o,eracional no a(re(ar6 a 9P" ao ,rocesso e sim a !ma thread deste ,rocesso1 note a(ora .!e o sistema * res,ons6-el ,or escalonaras threads e este sistema tem .!e s!,ortar threads1 a cada

interr!,o de thread * necess6rio m!dar todo o conte&to de 9P" e mem0ria1 ,or*m as threads so inde,endentes do ,rocesso ,odendo ser e&ec!tadas P3T21 P2T11 P2T21 P2T11 P3T11 P2T31 P3T31 o! se=a1 a ordem em .!e o escalonador do sistema determinar. J6 com as threads em modo !s!6rio no se conse(!e ter a mesma inde,endncia1 ,ois .!ando ,assamos o controle ao ,rocesso1 en.!anto se! .!ant!m +or -6lido ele ir6 decidir .!e thread ir6 rodar. "m escalonamento t2,ico do sistema * onde o escalonador sem,re escolhe a thread de maior ,rioridade1 .!e so di-ididas em d!as classes? Deal Time e >acional. 9ada thread (anha !ma ,rioridade ao ser criada .!e -aria de # a 31 'o # * a menor e 31 a maior)1 ,rocessos com ,rioridade # a 1K 'Deal Time) tem ,rioridade a=!stada no tem,o de e&ec!o como nos ,rocessos de E$S .!e tm a ,rioridade a!mentada -ariando o ,eri+*rico1 ,rocesso com ,rioridade 1L a 31 so e&ec!tados at* terminar e no tem ,rioridade alterada1 mas somente !ma thread rece5e a ,rioridade # .!e * a res,ons6-el ,or zerar ,6(inas li-res no sistema. E&iste ainda o!tra classe chamada de Idle, !ma classe mais 5ai&a ainda1 s0 * e&ec!tada .!ando no e&istem threads a,ta1 threads dessa classe no inter+erem na ,er+ormance. 2.2.( - Compara!"o entre lin&a e e)ecu!"o e processo "m sistema 5aseado em linha de e&ec!o * di+erente de !m sistema o,eracional m!ltitare+a tradicional1 em .!e os ,rocessos so ti,icamente inde,endentes1 carre(am consider6-el estado da in+ormao1 tem endereo de mem0ria se,arado e intera(em somente atra-*s de mecanismo de inter-,rocessos de com!nicao. Fs threads1 ,or !m lado com,artilham o estado da in+ormao de ,rocessos 3nico1 e com,artilham mem0ria e o!tros rec!rsos diretamente. F troca de conte&to atra-*s da linha de e&ec!o n!m mesmo ,rocesso * ti,icamente mais r6,ida .!e a troca de ,rocessos di+erentes. Sistemas como o Mindo8s >T e o /S$2 so +eitos ,ara ter linha de e&ec!o A5aratasB e ,rocessos AcarosB1 en.!anto em o!tros sistemas o,eracionais no h6 (randes di+erenas. / m ltithreadin! * !m modelo de ,ro(ramao ,o,!lar .!e ,ermite a e&ec!o de m3lti,las linha de e&ec!o dentro de !m conte&to sim,les1 com,artilhando rec!rsos do ,rocesso1 e ca,azes de e&ec!tar de +orma inde,endente. / modelo de ,ro(ramao em linha de e&ec!o +ornece ao desen-ol-edor !ma e&ec!o sim!lt:nea. Entretanto1 a a,licao mais interessante da tecnolo(ia ocorre .!ando ela * !tilizada em !m ,rocesso sim,les ,ermitindo !ma e&ec!o ,aralela em sistemas m!lti-,rocesados. "m sistema m lti-threaded ,oss!i !m melhor desem,enho .!e !m sistema de com,!tadores com m3lti,las 9P"s e com m3lti,los n3cleos1 o! .!e !m cl ster de m6.!inas. @sto acontece ,or.!e a linha de e&ec!o em,resta a ela mesmo !ma e&ec!o sim!lt:nea. Em al(!ns casos1 o ,ro(ramador ,recisa ter c!idado em e-itar condi7es de concorrncia e o!tros com,ortamentos ines,erados.

Para !m dado ser mani,!lado corretamente1 as linhas de e&ec!o +re.Nentemente ,recisar6 ser sincronizadas1 ,ara .!e os dados se=am ,rocessados na ordem correta. Fs linhas de e&ec!o ,odem tam5*m e&ec!tar o,era7es atOmicas '+re.Nentemente im,lementadas !sando sem6+oros) com int!ito de ,re-enir .!e dados com!ns se=am sim!ltaneamente modi+icados o! lidos en.!anto o ,rocesso esta sendo modi+icado. /s sistemas o,eracionais im,lementam as linhas de e&ec!o de d!as +ormas? ,reem,o m ltithreadin! o! m ltithreadin! coo,erati-a. F ,reem,o m ltithreadin! * (eralmente considerada !ma im,lementao s!,erior1 ,or.!e ,ermite ao sistema determinar .!ando !ma troca de conte&to ,ode acontecer. F m ltithreadin! coo,erati-a1 ,or o!tro lado1 con+ia nas threads ,ara ceder o controle1 !ma -ez .!e elas esto ,aradas em !m ,onto. @sto ,ode criar !m ,ro5lema se a linha de e&ec!o esti-er es,erando !m rec!rso tornar-se dis,on2-el. F des-anta(em da ,reem,o m ltithread * .!e o sistema ,ode +azer !ma troca em !m tem,o ina,ro,riado1 ca!sando !ma in-erso de ,ro,riedade o! o!tros e+eitos r!ins .!e ,odem ser e-itados !ma m ltithreadin! coo,erati-a. Em (eral? 9riar !m ,rocesso ,ode ser caro em termos de tem,o1 mem0ria1 e sincroniza"#o entre processos. Fs linhas de e&ec!o ,odem ser criadas sem a re,licao do ,rocesso inteiro. / tra5alho de criar !m alinha de e&ec!o ,ode ser +eito no es,ao do !s!6rio. 9omo as linhas de e&ec!o ,artilham o es,ao de endereamento a com!nicao entre elas * mais r6,ida. / tem,o (asto ,ara a troca de linha de e&ec!o * menor1 em ,arte ,or .!e no h6 necessidade de troca de es,ao de endereamento. 2.( - *o elo e +era!"o e *ultit&rea s 2.3.1 - odelo !itos-Para-"m / modelo m!itos-,ara-!m ma,eia m!itos threads de n2-el de !s!6rio ,ara threads do kemel. / (erenciamento dos threads * realizado no es,ao do !s!6rio e a assim * e+iciente1 mas o ,rocesso inteiro +icar6 5lo.!eado. Flem disso1 como somente !m thread ,ode acessar o kemel de cada -ez1 m3lti,los threads so inca,azes de e&ec!tar em ,aralelo em m!lti,rocessadores. 2.3.2 - odelo-"m-Para-"m / modelo-!m-,ara-!m ma,eia cada thread de !s!6rio ,ara !m thread de kemel1 (era mais concorrncia do .!e o modelo m!itos,ara-!m. Permite a !m o!tro thread ser e&ec!tado1 en.!anto !m thread realiza !ma chamada de sistema de 5lo.!eio1 ele tam5*m

,ermite .!e m3lti,los threads e&ec!tem em ,aralelo em m!lti,rocessadores. F 3nica des-anta(em deste modelo * .!e a criao de !m thread de !s!6rio re.!er a criao do corres,ondente thread de kemel. 2.3.3 odelo- !itos-Para- !itos / modelo m!itos-,ara-m!itos m!lti,lica m!itos threads de n2-el de !s!6rio ,ara !m n!mero menor o! i(!al de threads de kemel. / n3mero de threads de kemel ,ode ser es,eci+ico tanto ,ara !ma a,licao em ,artic!lar .!anto ,ara !ma ma.!ina em ,artic!lar. /s desen-ol-edores ,odem criar tantos threads de !s!6rio .!antos +orem necess6rios1 e os corres,ondentes threads de kemel ,odem e&ec!tar em ,aralelo em m!lti,rocessador. Fl*m disso1 .!ando !m thread realiza !ma chamada de sistema de 5lo.!eio 1 o kemel ,ode a(endar !m o!tro thread ,ara e&ec!o. 2., - Cancelamento / cancelamento de threads corres,onde P tare+a de terminar !m thread antes .!e se com,lete. Por e&em,lo1 se m3lti,los threads esto ,es.!isando concorrentemente em !m 5anco de dados e !m thread retorna o res!ltado1 os threads .!e ainda esto sendo e&ec!tados ,odem ser cancelados. "ma o!tra sit!ao ,ode ocorrer .!ando !m !s!6rio ,ressionar !m 5oto em !m na-e(ador da Me5. 9om +re.Nncia1 !ma ,a(ina da Me5 * carre(ada em !m thread se,arado. G!ando !m !s!6rio ,ressionar o 5oto sto,1 o thread .!e esta-a carre(ando a ,a(ina * cancelado. "m thread .!e esta ,ara ser cancelado * +re.Nentemente denominado thread-al-o.

( - ESCA.ONA*ENTO
/ escalonamento de ,rocessos o! a(endador de tare+as 'em in(ls sched lin!) * !ma ati-idade or(anizacional +eita ,elo escalonador 'sched ler) da 9P" o! de !m sistema distri5!2do1 ,ossi5ilitando e&ec!tar os ,rocessos mais -i6-eis e concorrentes1 ,riorizando determinados ti,os de ,rocessos1 como os de @$/ Eo!nd e os com,!tacionalmente intensi-os. / escalonador de ,rocessos de 2 n2-eis escolhe o ,rocesso .!e tem mais ,rioridade e menos tem,o e coloca-o na mem0ria ,rinci,al1 +icando os o!tros alocados em disco; com essa e&ec!o o ,rocessador e-ita +icar ocioso. Ti,os 56sicos (.1 - Escalona or e curto pra/o Seleciona entre os ,rocessos em estado de ,ronto .!e esto na mem0ria1 ,ara serem e&ec!tados ,elo ,rocessador. / escalonador de c!rto ,razo +az decis7es de escalonamento m!ito mais +re.Nentemente .!e os de m*dio e lon(o ,razo.

(.2 - Escalona or e m0 io pra/o Seleciona entre os ,rocessos .!e esto na mem0ria -irt!al1 red!z o (ra! de m!lti,ro(ramao. Ele tem,orariamente remo-e o ,rocesso da mem0ria ,rinci,al e coloca na mem0ria sec!ndaria 's8a,) +azendo as o,era7es de swappin! in e swappin! o t. (.( - Escalona or e lon1o pra/o Seleciona entre os ,rocessos no-os1 .!e so limitados ,or entrada$sa2da e os .!e so limitados ,or 9P"1 dando ,rioridade a.!eles limitados ,or @$/1 =6 .!e !tilizam menos tem,o o ,rocessador. Este escalonador * o res,ons6-el ,elo (ra! de m!lti,rocessamento1 o! se=a1 a .!antidade de ,rocessos .!e o sistema ira tra5alhar. (.(.1 - De2ini!"o Para .!e a 9P" no +i.!e m!ito tem,o sem e&ec!tar tare+a al(!ma1 os sistemas o,eracionais !tilizam t*cnicas ,ara escalonar os ,rocessos .!e esto em e&ec!o ao mesmo tem,o na ma.!ina. / escalonamento de ,rocessos * !ma tare+a com,licada1 ,ois nenh!m * totalmente e+iciente e a ,ro-a de +alhas1 ,rinci,almente em se tratando de sistemas interati-os1 como o Mindo8s1 ,ois a interao co o !s!6rio * +!ndamental ,ara este sistema onde .!em o !tiliza ,roc!ra res,ostas r6,idas e a todo o momento ,rocessos so interrom,idos ,elo !s!6rio. / escalonador do S/ !tiliza al(!ns crit*rios de escalonamento1 como? a ta&a de !tilizao de 9P"1 .!e * a +rao de tem,o d!rante a .!al ela est6 sendo oc!,ada; thro !hp t .!e so n3meros de ,rocessos terminados ,or !nidade de tem,o; t rnaro nd .!e * o tem,o transcorrido desde o momento em .!e o so+t8are entra e o instante em .!e termina s!a e&ec!o; tem,o de res,osta? inter-alo entra a che(ada ao sistema e inicio de s!a e&ec!o; tem,o de es,era? soma dos ,er2odos em .!e o ,ro(rama esta-a no se! estado ,ronto. Des,ons6-eis ,or essa tare+a so al(oritmos .!e so estendidos mais +acilmente1 est!dados se,aradamente1 mas na ,ratica os sistemas o,eracionais !tilizam com5ina7es deles ,ara melhor escalonar os ,rocessos. (., - O34eti5os o Escalonamento / ,ro=eto de !m escalonador ade.!ado de-e le-ar em conta !ma serie de di+erentes necessidades1 o! se=a1 o ,ro=eto de !ma ,ol2tica de escalonamento de-e contem,lar os se(!intes o5=eti-os? Ser =!sto? Todos de-em ser tratados i(!almente1 tendo ,ossi5ilidades idnticas de !so do ,rocessador1 de-endo se e-itado o adiamento inde+inido. a&imizar a ,rod!ti-idade 'thro!(h,!t)? Proc!rar ma&imizar o n!mero de tare+as ,rocessadas ,or !nidade de tem,o. Ser ,re-is2-el? "ma tare+a de-eria ser sem,re e&ec!tada com a,ro&imadamente o mesmo tem,o e c!sto com,!tacional. inimizar o tem,o de res,osta ,ara !s!6rios interati-os.

a&imizar o n!mero ,oss2-el de !s!6rios interati-os. inimizar a so5recar(a 'o-erhead)? Dec!rsos ,ara o sistema ,ode ,ermitir maior e+icincia. Qa-orecer ,rocessos A5em com,ortadosB? Processos .!e tenham com,ortamento ade.!ado ,oderiam rece5er !m ser-io melhor. Ealancear o !so de rec!rsos? o escalonador de-e manter todos os rec!rsos oc!,ados1 o! se=a1 ,rocessos .!e !sam rec!rsos s!5!tilzados de-eriam ser +a-orecidos. E&i5ir de(radao ,re-is2-el e ,ro(ressi-a em sit!a7es de intensa car(a de tra5alho. 9omo ,ode ser -isto +acilmente1 al(!ns destes o5=eti-os so contradit0rios1 ,ois dado .!e a .!antidade de tem,o dis,on2-el de ,rocessamento 'tem,o de ,rocessador) * +inita1 assim como os demais rec!rsos com,!tacionais1 ,ara .!e !m ,rocesso se=a +a-orecido o!tro de-e ser ,re=!dicado. / maior ,ro5lema e&istente no ,ro=eto de al(oritmos de escalonamento esta associado P nat!reza im,re-is2-el dos ,rocessos1 ,ois no * ,oss2-el ,re-ermos se !m dado ,rocesso !tilizara intensamente o ,rocessador1 o! se ,recisara (randes .!antidades de mem0ria o! se necessitara n!merosos acessos aos dis,ositi-os e E$S. (.6 - 7uali a e o Escalonamento E&istem -6rios crit*rios .!e ,ermitem a a-aliao da .!alidade do ser-io o+erecido ,or !m al(oritmo de escalonamento. So eles? !so do ,rocessador1 thro!(h,!t1 tem,o de res,osta e tem,o de ,ermanncia. / tem,o de ,ermanncia1 tem,o de retorno o! t!rnaro!nd time1 * !m crit*rio sim,les dado ,ela soma do tem,o de es,era com o tem,o de ser-io o! tem,o de e&ec!o. Em (eral dese=a-se .!e o tem,o de ,ermanncia se=a o menor ,oss2-el. "ma o!tra +orma de a-aliar a .!alidade do escalonamento * !tilizando-se do tem,o de ,ermanncia normalizado1 o! se=a1 a razo entre o tem,o de ,ermanncia e o tem,o de ser-io. (.8 - Al1oritmos escalona ores E&istem al(oritmos ,reem,ti-os e os no ,reem,ti-os. /s ,reem,ti-os so al(oritmos .!e ,ermitem .!e !m ,rocesso se=a interrom,ido d!rante se! e&ec!o1 .!er se=a +ora de !ma interr!,o de entrada$sa2da1 .!er se=a em decorrncia da ,ol2tica de escalonamento adotada e a,licada ,or ,arte do escalonador de ,rocessos o! sim,lesmente ,or +ora do termino da e&ec!o do ,rocesso. F,0s a interr!,o desse ,rocesso1 ocorre o .!e se chama de troca de conte&to1 .!e consiste em sal-ar o conte3do dos re(istradores e a mem0ria !tilizada ,elo ,rocesso e conceder a o!tro ,rocesso o ,ri-ile(io de e&ec!tar na 9P"1 resta!rando assim o conte&to deste !ltimo ,rocesso. 9a5e ressaltar .!e nos al(oritmos no ,reem,ti-os1 ,or serem !tilizados e&cl!si-amente em sistemas mono,rocessados1 esse +ato no ocorre1 sendo cada ,ro(rama e&ec!tado ate o +im.

E&em,los de Fl(oritmos? Q@Q/ 'Qirst in1 +irst o!t) o! Q9QS 'Qirst come1 +irst ser-ed)? /nde como se! ,r0,rio nome =6 diz1 o ,rimeiro .!e che(a ser6 o ,rimeiro a ser e&ec!tado; SJQ 'Shortest Jo5 Qirst)? /nde o menor ,rocesso (anhara a 9P" e atr6s do mesmo +ormar !ma +ila de ,rocessos ,or ordem crescente de tem,o de e&ec!o; SDT 'Shortest Demainin( Time)? >este al(oritmo * escolhido o ,rocesso .!e ,oss!a o menor tem,o restante1 mesmo .!e esse ,rocesso che(!e P metade de !ma o,erao1 se o ,rocesso no-o +or menor ele ser6 e&ec!tado ,rimeiro; Fl(oritmo %oteria? / Sistema /,eracional distri5!i tokens '+ichas)1 n!merados entre ,rocessos1 ,ara o escalonamento * sorteado !m n!mero aleat0rio ,ara .!e o ,rocesso (anhe a -ez na 9P"1 ,rocessos com mais tokens tem mais chance de rece5er antes a 9P". Escalonamento (arantido? Este al(oritmo 5!sca c!m,rir ,romessas de alocao de 9P" o mais ,reciso ,oss2-el. DD 'Do!nd-Do5in)? >esse escalonamento o sistema o,eracional ,oss!i !m timer1 chamado de .!ant!m1 onde todos os ,rocessos (anham o mesmo -alor de .!ant!m ,ara rodarem na 9P". 9om e&ec!o do al(oritmo DD e escalonamento (arantido1 todos os o!tros so+rem do ,ro5lema de @nanio 'starvation). 3lti,las Qilas? So !sadas -arias +ilas de ,rocessos ,rontos ,ara e&ec!tar1 cada ,rocesso e colocado em !ma +ila1 e cada +ila tem !ma ,ol2tica de escalonamento ,r0,ria e o!tra entre +ilas. Todos os al(oritmos classi+icam os ,rocessos em estados? @niciando1 Pronto1 E&ec!tando1 Entrada$Sa2da e Terminando. Finda e&istem -6rios. (.8.1 - Esta os e processos Para o sistema o,eracional or(anizar os ,rocessos .!e sero atendidos eles so atri5!2dos estados ,ara os mesmos. (.8.2 - Dia1rama e Esta o e Processos G!em armazena essas in+orma7es como os estados de ,rocessos e o!tras como? tem,o e e&ec!o1 ,or e&em,lo1 * o P9E 'Process 9ontrol Elock). (.8.( - Distri3ui!"o e Priori a es Para melhorar essa distri5!io da 9P" entre os ,rocessos1 al(!ns al(oritmos !tilizam di+erentes ,rioridades1 essas ,rioridades ,odem ser m!dadas no Mindo8s1 ,or e&em,lo1 ,elo ,r0,rio !s!6rio. 9om int!ito de (erenciar melhor as ,rioridades de ,rocesso1 o sistema o,eracional cria +ilas de ,rocessos. Em cada +ila e&istem ,rocessos de mesma ,rioridade1 e e&iste tam5*m +ila ,ra ,rocesso de entrada e sa2da. Prioridades ,odem ser m!dadas ,elo !s!6rio1 o! atri5!2das a!tomaticamente ,elo sistema o,eracional em .!esto.

esmo com a a,licao de ,rioridades e al(oritmos melhor im,lementados1 al(!ns ,rocessos ainda correm o risco de so+rer starvation '+icar m!ito tem,o sem rece5er a 9P") ,or isso em determinado momento ,ode ocorrer o .!e chamamos de a(in( '/ a(in( ocorre .!ando a ,rioridade de !m ,rocesso -ai se alterando com o Atem,o de -idaB do mesmo1 controlando o star-ation)1 .!e m!da momentaneamente a ,rioridade de !m ,rocesso .!e no * e&ec!tado h6 m!ito e =o(a s!a ,rioridade ,ara a mais alta ,oss2-el ,ara .!e ele se=a atendido1 lo(o a,0s as ,rioridades -oltam ao normal. /!tro caso em .!e ,rioridades so alteradas * .!ando !m ,ro(rama de 5ai&a ,rioridade comeo! a +azer !so de al(!m ,eri+*rico de entrada e sa2da antes de o!tro de ,rioridade alta. >este caso ,rocesso de alta ,rioridade so o5ri(ados a es,erarem os de 5ai&a terminar s!a E$S ,ara ,oderem !sar este ,eri+*rico. (.8.(.1 - Alteran o priori a es no 9in o:s E&istem ainda sistemas em .!e .!ando !m ,rocesso inicia s!a e&ec!o1 o sistema (arante .!e este ,rocesso -ai ser terminado1 so chamados sistemas (arantidos. >estes sistemas a inter-eno do !s!6rio * m2nima1 ao contrario do .!e ocorre em sistemas em tem,o real como o Mindo8s em .!e o !s!6rio interrom,e ,rocessos a todo instante ,or isso o sistema no (arante .!e !m ,rocesso -ai ser Terminado. (.8.(.2 - Trocas e conte)to Processos so interrom,idos e retomados a todo tem,o. Para .!e o sistema o,eracional ,ossa +azer esse ti,o de ao1 * necess6rio a troca de conte&to. Para .!e o sistema o,eracional ,ossa interrom,er !m ,rocesso e retomar ele mais tarde1 ele !sa a P9E '$rocess %ontrol &loc') ,ara (!ardar todas as in+orma7es .!e a 9P" esta-a !sando na.!ele momento e ,ossa cons!lt6-la mais tarde ,ara .!e retome e&atamente no ,onto em .!e +oi interrom,ido anteriormente. (.; - T&rea s Threads? Processos ,odem ser di-ididos em A,edaosB ,ara .!e ele no dei&e de res,onder ,or al(!m moti-o e&terno1 onde isto ,ossa atra,alhar a e&ec!o do mesmo1 o! ,ara a(ilizar a ,ro(ramao e e&ec!o. G!ando ,ro(ramas so di-ididos em threads1 ,odemos ter ,artes do ,rocesso rodando em ,aralelo1 threads tam5*m so escalon6-eis.

, - SINCRONI<A=>O DE PROCESSOS
F com,!tao como a conhecemos ho=e em dia1 m!ltim2dia e m!lti!s!6rio1 de,ende das im,lementa7es de se(!rana ,ara acesso a dados com,artilhados ,or di-ersos ,ro(ramas o! !s!6rios. >esse conte&to se inserem os conceitos da sincronizao de ,rocessos e dos

deadlocks1 os .!ais constit!em a 5ase do tratamento da concorrncia de ,rocessos ,elos sistemas o,eracionais. ,.1 - Sincronismo e processos /s sistemas o,eracionais modernos ,ermitem a e&ec!o concorrente de -6rios ,rocessos. Para e-itar incoerncias na mani,!lao dos dados com,artilhados ,or esses 3ltimos1 torna-se necess6ria a im,lementao de mecanismos .!e (arantam !m retorno correto ao acessar determinado endereo l0(ico. Para isso1 de-e e-itar .!e dois ,rocessos acessem ao mesmo tem,o al(!m dado com,artilhado1 sendo .!e no caso disso acontecer1 !m res!ltado incorreto e aleat0rio seria desi(nado no es,ao da mem0ria em .!esto no es,ao da mem0ria em .!esto. F sincronizao de ,rocessos -isa (erenciar o acesso a dados com,artilhados1 im,lementando sol!7es .!e satis+aam os se(!intes re.!isitos? E)clus"o mDtuaE se !ma thread o! ,rocesso esta e&ec!tando !ma ,arte de se! c0di(o .!e lida com dados com,artilhados1 nenh!ma o!tra thread o! ,rocesso ,ode e&ec!tar ,artes do c0di(o .!e lidem com se!s dados com,artilhados. Pro1ressoE a seleo das threads o! ,rocessos .!e iro e&ec!tar s!as se7es cr2ticas em se(!ida1 * desi(nado Ps threads o! ,rocessos .!e =6 esto e&ec!tando s!as se7es cr2ticas. Espera limita aE !ma thread o! ,rocesso no ,ode es,erar inde+inidamente ,ara e&ec!tar !ma seo cr2tica1 !ma -ez .!e a mesma tenha realizado !m ,edido de ,ermisso ,ara essa e&ec!o. ,.2 - Sem?2oros /s sem6+oros constit!em !ma +erramentas ,ara realizar o sincronismo de ,rocessos de !ma +orma 5raal1 o! se=a1 .!e os ,r0,rios ,ro(ramadores1 de +orma ,ro,ensa a erros1 so encarre(ados ,ela de+inio do comeo e do +inal dos trechos de c0di(os onde dados com,artilhados sero mani,!lados. F im,lementao dos sem6+oros * dada ,ela -ari6-el (eralmente chamada deBSB1 a .!al somente ,ode ser acessada ,or meio de d!as o,era7es? ac.!ire ' )1 a .!al de+ine .!ando a seo cr2tica termino! s!a e&ec!o. >o e&em,lo a se(!ir -emos como !m sem6+oro ,ode ser im,lementado? Fc.!ire 'S); criticalSection ' ); release ' ); 9omo se ,ode notar1 al(!ns ,ro5lemas ,odem s!r(ir em caso do desen-ol-edor de so+t8are no +azer !so ade.!ado das o,era7es ,ara acesso a -ari6-el ASB. Por e&em,lo1 se o ,ro(ramador no !tilizar o comando release ' ) a,0s determinada seo cr2tica1 o direto de e&ec!o n!nca ser6 ,assado ,ara o!tro ,ro=eto .!e realizo! !m ,edido de seo cr2tica. ,.( - *onitores Para lidar com os erros do ,otencial inerentes dos sem6+oros ,ara sincronizar ,rocessos1 ,es.!isadores desen-ol-eram constr!7es de

lin(!a(em de alto n2-el .!e ,ermitem controlar melhor a man!teno de dados. "ma dessas constr!7es .!e ,ermitem o sincronismo de alto n2-el so os monitores. "m monitor * !m ti,o a5strato de dados .!e a,resenta !m con=!nto de o,era7es o! sess7es cr2ticas1 as .!ais rece5em e&cl!so m3t!a1 o! se=a1 .!e somente ,odem ser e&ec!tadas !ma ,or -ez. F estr!t!ra interna do monitor =6 (arante .!e a,enas !ma thread o! ,rocesso ,ode estar ati-o dentro dele em !m determinado momento. Fssim1 o desen-ol-edor do al(oritmo ,ode dis,ensar a ,reoc!,ao de codi+icar o sincronismo e&,licitamente.

6 - DEAD.OC@
Dea locC 'inter5lo.!eio1 5loca(em1 im,asse)1 no conte&to do sistemas o,eracionais 'S/)1 caracteriza !ma sit!ao em .!e ocorrem !m im,asse e dois o! mais ,rocessos +icarem im,edidos de contin!ar s!as e&ec!7es1 o! se=a1 +icam 5lo.!eadas. Trata-se de !m ,ro5lema 5astante est!dado no conte&to dos Sistemas /,eracionais1 assim como em o!tras disci,linas1 como 5anco de dados1 ,ois * inerente P ,r0,ria nat!reza desses sistemas. / deadloc' ocorre com !m con=!nto de ,rocessos e rec!rsos no,reem,t2-eis1 onde !m o! mais ,rocessos desse con=!nto esta a(!ardando a li5erao de !m rec!rso ,or o!tro ,rocesso .!e1 ,or s!a -ez1 a(!arda a li5erao de o!tro rec!rso alocada o! de,endente do ,rimeiro ,rocesso. F de+inio te&t!al de deadloc' normalmente1 ,or ser m!ito a5strata1 * mais +6cil de se com,reender do .!e a re,resentao ,or (ra+os1 .!e ser6 res!mida mais adiante. >o entanto1 al(!mas o5ser-a7es so ,ertinentes? / deadloc' ,ode ocorrer mesmo .!e ha=a somente !m ,rocesso no S/1 considerando .!e este ,rocesso !tilize m3lti,los threads e .!e tais threads re.!isitem os rec!rsos alocados a o!tros threads no mesmo ,rocesso; / deadloc' inde,ende da .!antidade de rec!rsos dis,on2-eis no sistema; >ormalmente o deadloc' ocorre com rec!rsos como dis,ositi-o1 ar.!i-os1 mem0ria1 etc. F,esar da 9P" tam5*m ser !m rec!rso ,ara o S/1 em (eral * !m rec!rso +acilmente ,reem,t2-el1 ,ois e&istem os escalonadores ,ara com,artilhar o ,rocessador entre os di-ersos ,rocessos1 .!ando se trata de !m am5iente m!ltitare+a. "m e&em,lo onde erros de deadloc' ocorrem * no 5anco de dados. S!,onha .!e !ma em,resa tenha -6rios -endedores e -6rios ,ontos

de -enda$cai&as. / -endedor F -ende! 1 martelo e 1 +!radeira. / sistema ento solicita o tra-amento do re(istro da ta5ela EST/G"E .!e contem o total de martelos em esto.!e e em se(!ida solicita o tra-amento do re(istro .!e contem o total de +!radeiras em esto.!e. De ,osse da e&cl!si-idade de acesso aos dois re(istros1 ele l a .!antidade de martelos1 s!5trai 1 e escre-e de no-o no re(istro1 o mesmo com re(istro de +!radeiras . /5ser-e1 no entanto .!e e&istem di-ersas cai&a o,erando sim!ltaneamente de +orma .!e se al(!m o!tro cai&a na.!ele e&ato instante esti-er -endendo !ma +!radeira1 ele +icara a(!ardando a li5erao do re(istro das +!radeiras ,ara de,ois alter6-lo. >ote .!e ele s0 altera os re(istros de,ois .!e +or dada e&cl!si-amente ,ara ele de T/D/S os rec!rsos .!e ele ,recisa1 o! se=a1 de todos os re(istros. S!,onha a(ora .!e em o!tro cai&a a -enda +oram -endidos 1 +!radeira e 1 martelo e .!e o o!tro cai&a solicito! o tra-amento de re(istro com a .!antidade de +!radeiras e a(ora .!er o acesso ao de martelos1 no entanto o de martelos esta tra-ado ,ara o ,rimeiro cai&a. >enh!m deles de-ol-e o rec!rso 're(istro) so5re o .!al tem e&cl!si-idade e tam5*m no conse(!e acesso ao o!tro re(istro .!e +alta ,ara terminar a o,erao. @sto * !m deadlock. 6.1 - Con i!Aes necess?rias para a ocorrBncia e deadloc >o te&to acima +oi dito .!e o deadloc' ocorre nat!ralmente em al(!ns sistemas. >o entanto1 * necess6rio ressaltar .!e tais sistemas ,recisam o5edecer a al(!mas condi7es ,ara .!e !ma sit!ao de deadloc' se mani+este. Essas condi7es esto listadas a5ai&o1 onde as trs ,rimeiras caracterizam !m modelo de sistema1 e a !ltima * o deadloc' ,ro,riamente dito? ,rocessos .!e este=am de ,osse de rec!rsos o5tidos anteriormente ,odem solicitar no-os rec!rsos. 9aso estes rec!rsos =6 este=am alocados a o!tros ,rocessos1 o ,rocesso solicitado de-e a(!ardar ,ela li5erao do mesmo; Caso e n"o-preemp!"o? rec!rsos =6 alocados a ,rocessos no ,odem ser tomados a +ora. Eles ,recisam ser li5erados e&,licitamente ,elo ,rocesso .!e det*m a s!a ,osse; Con i!"o e e)clus"o mDtua? cada rec!rso o! esta alocado a e&atamente !m ,rocesso o! esta dis,on2-el; Con i!"o e posse-e-espera? cada rec!rso ,ode solicitar !m rec!rso1 ter esse rec!rso alocado ,ara si e +icar 5lo.!eado es,erando ,or !m o!tro rec!rso;

Con i!"o espera circular? de-e e&istir !ma cadeia circ!lar de dois o! mais ,rocessos1 cada !m dos .!ais es,erando ,or rec!rso .!e esta com o ,r0&imo mem5ro de cadeia. Representa!"o e ea locC em 1ra2os

E&em,lo de re,resentao de deadloc' em (ra+os de alocao de rec!rsos1 com dois ,rocessos A e FG e dois rec!rsos R1 e R2. / deadloc' tam5*m ,ode ser re,resentado na +orma de (ra+os diri(idos1 onde ,rocesso * re,resentados ,or !m circ!lo e o rec!rso1 ,or !m .!adrado. G!ando !m ,rocesso solicita !m rec!rso1 !ma seta * diri(ida do circ!lo ao .!adrado. G!ando !m rec!rso * alocado a !m ,rocesso1 !m seta * diri(ira do .!adrado ao circ!lo. >a +i(!ra do e&em,lo1 ,odem-se -er dois ,rocessos di+erentes 'A e F)1 cada !m com !m rec!rso di+erente alocado 'R1 e R2). >esse e&em,lo cl6ssico de deadloc'1 * +acilmente -is2-el a condio de espera circular em .!e os ,rocessos se encontram1 onde cada !m solicita o rec!rso .!e esta alocado ao o!tro ,rocesso. 6.2 - Tratamento e ea locC Fs sit!a7es de deadlock ,odem ser tratadas o! no em !m sistema1 e ca5e aos desen-ol-edores a-aliar o c!sto$5ene+icio .!e essas im,lementa7es ,odem trazer. >ormalmente1 as estrat*(ias !sadas ,ara detectar as sit!a7es de deadloc's (eram (rande so5recar(a1 ,odendo ate ca!sar !m dano maior .!e a ,r0,ria ocorrncia do deadloc'1 sendo1 as -ezes1 melhor i(norar a sit!ao. E&istem trs estrat*(ias ,ara tratamento de deadloc's? @(norar a sit!ao; Detectar o deadloc' e rec!,erar o sistema; e E-itar o deadloc';

6.( - Al1oritmo o A5estru/ #I1norar a situa!"o$ F estrat*(ia mais sim,les ,ara tratamento 'o! no) do AdeadlockB1 conhecida como Fl(oritmo do F-estr!z1 * sim,lesmente i(nor6-lo. !itos de+endem .!e +re.Nncia de ocorrncia deste ti,o de e-ento * 5ai&a demais ,ara .!e se=a necess6rio so5recar(a a 9P" com c0di(os e&tras de tratamento1 e .!e1 ocasionalmente1 * toler6-el reiniciar o sistema como !ma ao correti-a. 6., - Detectar a deadloc e recuperar o sistema >essa estrat*(ia1 o sistema ,ermite .!e ocorra o deadloc' e s0 ento e&ec!ta o ,rocedimento de rec!,erao1 .!e se res!me na deteco da ocorrncia e na rec!,erao ,osterior do sistema. R na e&ec!o desse ,rocedimento .!e ocorre a so5recar(a1 ,ois e&istem dois (randes ,ro5lemas? ,rimeiramente1 como$.!ando detectar o deadloc' e de,ois1 corri(i-lo. Para detectar o deadloc'1 o sistema de-e im,lementar !ma estr!t!ra de dados .!e armazene as in+orma7es so5re os ,rocessos e os rec!rsos alocados a eles. Essas estr!t!ras de-ero ser at!alizadas dinamicamente1 de modo .!e re+litam realmente a sit!ao de cada ,rocesso$rec!rso no sistema. S0 o mero ,rocedimento de at!alizao dessas estr!t!ras =6 (era !ma so5recar(a no sistema1 ,ois toda -ez .!e !m ,rocesso aloca1 li5era o! re.!isita em rec!rso1 as estr!t!ras ,recisam ser at!alizadas. Fl*m disso1 o S/ ,recisa -eri+icar a ocorrncia da condio de espera circular nessas estr!t!ras ,ara a e+eti-a deteco de deadloc'. Esse ,rocedimento1 ,or s!a -ez1 (era o!tra so5recar(a1 .!e ,ode ser mais intensa se no +or de+inido !m e-ento em ,artic!lar ,ara ser e&ec!tado1 como a li5erao de !m rec!rso1 ,or e&em,lo. Fssim1 o! o S/ -eri+ica ,eriodicamente as estr!t!ras 'o .!e no * aconselh6-el1 ,ois ,ode a!mentar considera-elmente o tem,o de es,era dos ,rocessos no-5lo.!eados)1 o! ,ode-se im,lementar !ma ,ol2tica1 onde o S/ -eri+ica as estr!t!ras .!ando o mesmo realizar al(!m ,rocedimento de man!teno do sistema1 ,or e&em,lo. Qinalmente1 s0 a,0s detectar a ,resena do deadloc' no sistema1 o S/ ,recisa corri(i-lo1 e&ec!tando !m ,rocedimento de rec!,erao. G!anto P deteco do deadlock1 -amos a,resentar !ma das t*cnicas !sa das ,ara detectar a ocorrncia de deadlock em sistemas .!e ,oss!em -6rios rec!rsos de cada ti,o. 6.6 - Detec!"o e deadloc com 5?rios recursos e ca a tipo / al(oritmo de deteco de deadloc' com -6rios rec!rsos de cada ti,o 5aseia-se em !m am5iente .!e ,oss!a -6rios rec!rsos do

mesmo ti,o e os ,rocessos solicitam a,enas ,elo ti,o de rec!rsos1 no es,eci+icado .!al rec!rso dese=am !tilizar. Fssim1 !m ,rocesso ,ode re.!isitar !ma !nidade de 9D ,ara leit!ra. Se o sistema ,oss!ir d!as1 o ,rocesso ,ode !tilizar a .!e esti-er dis,on2-el1 em -ez de es,eci+icar !ma delas. Dessa +orma1 o ,rocesso solicita o rec!rso ,elo ti,o1 sem discriminao. / al(oritmo ,ara essa deteco tra5alha com d!as -ari6-eis1 trs matrizes !nidimensionais '-etores) e d!as matrizes 5idimensionais1 descritas a se(!ir? 6.8 - Estruturas o n( Cari6-el inteira. De,resenta a 7uanti a e e Processos Ati5os; o m( Cari6-el inteira. De,resenta a 7uanti a e e Tipos e Recursos; o atriz ES ? atriz !nidimensional1 de tamanho m. De,resenta a *atri/ e Recursos E)istentes; o atriz AS ? atriz !nidimensional1 de tamanho m. De,resenta a *atri/ e Recursos Atualmente DisponH5eis; o atriz WS ? atriz !nidimensional1 de tamanho m. De,resenta !ma *atri/ Au)iliar1 ,resente somente ,ara +acilitar o calc!lo1 d!rante a e&ec!o do al(oritmo; o atriz CS ? atriz 5idimensional1 de tamanho n & m. De,resenta a *atri/ Aloca!"o Corrente; o atriz RS ? atriz 5idimensional1 de tamanho n & m. De,resenta a *atri/ e Recursos ReIuisita os. 1. Qaa ',ara ,reenchimento das estr!t!ras)? 2. Preencher a atriz E com as .!antidades de instancias de cada ti,o de rec!rso; 3. Preencher a atriz C com as .!antidades de instancias de cada ti,o alocadas aos ,rocessos1 sendo .!e a somat0ria de cada col!na da atriz C de-e ser menor o! i(!al P .!antidade de rec!rso corres,ondente na atriz E 'os ,rocessos n!nca ,odem re.!isitar mais rec!rsos .!e e&istentes no sistema); 4. Preencher a atriz W com o res!ltado da s!5trao da .!antidade de rec!rso da atriz E com o -alor do somat0rio de cada col!na do rec!rso corres,ondente da atriz C1 o! se=a?

K. Preencher inicialmente a atriz A com os -alores da atriz W. >ote .!e? L. Preencher a atriz R com as ,r0&imas re.!isi7es dos ,rocessos1 se(!indo as mesmas re(ras da atriz C. Qaa ',ara deteco do deadloc')? 1. @nicialmente1 desmarcar todos os ,rocessos; 2. Para !m ,rocesso Pi desmarcado1 -eri+icar se todos os elementos da linha i na atriz R so menores o! i(!ais aos da atriz A; 3. Se +or1 ento mar.!e o! e&ec!te o ,rocesso Pi e li5ere os rec!rsos re.!isitados ,elo ,rocesso na atriz C 'adicionar a linha i da atriz C na atriz A); 4. Detornar ao ,asso 2. F l0(ica do al(oritmo * a se(!inte? cada ,rocesso * considerado como a,to a ser e&ec!tado at* .!e a deteco ,ro-e o contrario. F deteco a,enas -eri+ica se os ,rocessos re.!isitam mais rec!rsos do .!e esto dis,on2-eis1 o .!e caracteriza !m deadloc'. 9aso o ,rocesso re.!isite !ma .!antidade dis,on2-el1 ento ele ,ode ser e&ec!tado 1 e os rec!rsos .!e +oram solicitados antes ,odem ,ermitir .!e o!tros ,rocessos tam5*m concl!am s!as e&ec!7es e li5erem os rec!rsos. !m e&em,lo do ,reenchimento das matrizes encontra-se na +i(!ra a5ai&o1 considerando-se nS2 e mS3.

atriz E Dec!rso G!antidade 1 2 2 4 3 3

atriz F Dec!rso G!antidade 1 1 2 3 3 2

atriz 9 Dec!rso Processo 1 Processo 2 1 1 # 2 1 # 3 1 #

Stat!s Deadlock /k

atriz D Dec!rso Processo 1 Processo 2 1 2 1 2 4 2 3 3 1

Vous aimerez peut-être aussi