Você está na página 1de 56

2

Processos
Professor Wilson Amaral Sistemas Operacionais – Unidade 02

Capítulo

Processos e threads

. Quando > t tt'-

de o-



Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
p tulo l Processos e threads 51 51 Sistemas operaaonats modemos

·ja

do dni pmt: u

ot

(a) (b) (C)

Figur 2.1 (I>)


(r)Sun ··nl

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
Ca ttulo l Processos e threads 53 54 Sistemc!S ~racionais modemos

Jlilra nmpil<lr o pmgmrna ft'l.l .!'l' ' Mqmvn não xi~t , Por outro I<Jdn. o \ indm\ não apr enta nenhum
o c mpilador imph: mente temtina a e\crução. Pro cun eitu t.lc bk·tarquia de rrucc m . Todo o prt l'. o
tnterallvo' :om ba • l'lllteiJ ~ ralm(nte não !c ham quan· <oat tguat . lgo pare do om uma hierarquia de proces·
d parâmetro · errado-. jo fomcdt.lo . Em vel dr ~o. uma !>U~ t urre . uml'nte quando um pn><.'l' ~o e criado. Au pai r
ai\a de di.ilog em rge e pergunta ao u uario ~ le quer dado umldentifi adore pedal t hamado handl 1. que ele
pude u r para nmtrular u filho. untudu. de 4! liHe para
ra Jr t: ' i l ntifi ,1dur par,1 ai un ou1ro proc . in- 1. O processo bloqu a aguardando uma entrada
validando, as im, a hkrarquiu. O pro t~ . o no U rrx nãu 2. O escalonador seleaona outro processo
podem de<.erdar eu fi lhth. 3 O escalonador seleciona esse processo
4. Aenltada toma·se sponlvel

Qu,mn tr,ln i I iu po tr· \tadn •


wnlunnc e \'c na figura A tran i ão I uwrrc quando o
i tem.:~ J'l('ra ·on.:~l d obre qu um proc n~o pod
cal c:ha t 1 mpler2 chaplec3 1 rep Ima pro seguir. Em aJ~,:um i tema . o prof ~ o 1redsa cxccu·
o primeirn prOCl' o, qu • ~ t'Cllla cat, gera comu 'iélld.t a tJr uma hamada de i tema. rllll 15(), pJra entr.Jr M

·un atena ãn do~ tn~ arqulvt . O egundo p e · o. que e tauu bluqueildo. Em outro~ htema\, índu h e nu UN .
cxc uta Jjrtp, dction,l toda' a línha onll'ndu palavra quando um pro -.o P de um pip ou de um MtlUivo pc·
'tree' . Dependendo da \dodt.lade relati\a do doh pro- da I por e emplu, um tenninall c não há entrada tli !Xmi·
w~:.o (atrdJda~ tantu il wmplcxiúade rdativa dll't puJgra- vd, 11 (UCXc í: automati ·amentl' bloquead
ma~ quanto ao tempo de PU que ada um deteve I. pode A~ tran 1 õe - l' 3 são cau ada') pelo e<; alonadur de
ucurn:r que o '}r~·p ll'fil prunl<l para l'\C ·utar. 111 nJn pro l' o - umil par1 • du i tt•ma up •radonal-. em qul'
Hi rarqu a de pr 50S haja ntrada para d ' · Fie dt•ve. l'tli.Jo. bloqu ilr <lt qu pro o ~iba di\~1. tr<ln içiio 2 nrre qu.:~ndo cl ~ ,,.
al.:uma entrada c tcja di ponívcl. lunador dtxilk qu~ o pruu: soem~ c ·u~ao Jiltl'\C tl'llli)O
m proce o bloqueia porque obviamentl' não podl' uli · ~nte de PU l' t' m1lmento d~ d~• ar outru pro e. ·o
JHu '!:Uir- l'nt geral porqu • e ta e p ·rauJu por uma ocupar u ternpu úa CPU. A trami ão 3 m:orn.• quando tn·
'Jl' i riad 1, um pm '>(l rn ·~c1 a l' l'Clltar e L11 entrada ainda não dtsponi>vel. ~ ivel também que d nutr pr t"\ já companilht~r.lm a PU. de umil
um prores o mn itttalment~ pr mo t: apaz de e e r- mandra ju~ta . e í: hora de u prhncim pruu~u ulm·r nu a-
~u trabalho. nntudo, nada é par<~ sempre. nem mt.'mlo os
pAA~...,'>C Mar) 'I.'Uu uu nt3i~ tilnk n nm 1 ruu: u temtlll.l-
lar e teja bloqu~ado porque o istema operaciunal deci· nwme <1 P . lon:mwnto - i. to t.', ,, d4.'tisàu \(lbr'l.'
rá. normalmente em razão de alguma da seguint~ mndiçi1e~: diu ahKM a PU par<~ uulm pm ' u por algum te!llp<l. quandv e por quanto tempo cada prou o deve cxenJLar-
E· a\ dua' ondiçõc ão wmpletamente diferente. , 'o t' um túpi o muito importam e wrá • tud<Jdo depoi • ne ·
I. íd, normal (voluntária). primem, a o. a ~uspen ão e inerente au prubl.:ma (não te me mo a1 [tulo. Mum al•oritmo vt:rn endo de~n ·
2. Jida por rrw (v llullliiria . \t' podt• pm c"ar a linha dl.' comando dn 11 u.irio cn- \'Uivi in n.:1 umr.11iva de equilibrar ·~a omp •ti ãn, que
3. Erru latal (involunt.íriol. ljUJnto ell' não digitar nada). O egundo r urna tecni- e. ige efidénda para o i tema mrno um todu e igualdade
4. anceiJmento por um outro proct'\SO (involuntári ). alidade dn i tema 10iio há P uficiente pi!ra dar a 1ara u prou: o individuai\. E\tUdJremo algun dde
ada JHUfC!> u um prote Jdur c\ lu ivu). a Fi)lura 2 2. nl.'\te ilpítulo.
Na maioria das \'t'7t: , o' proce sos temtinam porque podemm ver um diagrama de e tado mo trando o tr? A trc1miçiiu t~~:orrc qu,mdo a ·nnt · e um e\· •nto ~:x­
fizeram eu trabalho. Quando acaba de compilar o progra· • tadu Ut' um pro e o: temo ~lo qual um prn o e tilva .Jguardando como J
ma atribuído a ele, o compilador e L'OJta uma chamada úe cht•gada de alguma emrad ). .: nenhum outru pmcc o
h tema para dlLcr ao i tema t pcrador1.1l que ele tcmtinou I. Em c ewç.3u (rcalnwnt • U'>clndn a CPU naquele
in\tantl'). estiver e crutando naquel momento. a transtçiio 3 er<Í
F '>c1 harnada é a il nu U1 I · Exl!Pr no\' rnt.luw .. di parada c o pmce ~ coml'\ará a executar. Ca u mura-
Programa ba t•adO'i em tela também uponam o t 'rmino 2. Pr mtu t:\~ utâvcl; 1 •mporariam ·nt~: paradn pilra
rio, ele poder.i ter d agu.ud.Jr em e tado de pnmtP por um
\'Olunt.irin. ?roce '>tld re de te to, vt ·uali7ador da Web dar lugar iltlUtro pmces o) .
pequeno intcnalu de tem( ,, até qu~ a PU c tcj di~IMlÍ·
fbm~., cr ll' pr l~ram.n imilan.-s rnprc ttm um icune ou l Bloqueadn (inCõlpa7 d vl'lcdwgu· ua\ '7.
um item de rn nu no qual ou uário pode di ar para lh7er rrcr um evento externo!. om o modelo de proce't)(), toma- e muito rnah lácil
ao proce~w que remova quaisquer arqui\'os temporários aber o que e ta ocorrendo dentro do i ti.' ma. lgun · do
que ele tenha aberto e. cmão. termme. proc o hamam programa qu e erutam comando di·
t.>gundn motim para t~mtino c qul' o pr t' \( dt.•,. gitalÜ JXIr um U\Uárin. utru\ prm; · ~ ~o parte dn 'i -
cobr um rro fat.Jl. Por exemplo, e um u uário di ita o tenta e manejam tarefas como fazer requi içõe por scnl-
wmandu u de arqu i\'u uu gercndar U'i detalhe do fun iunamentu

ex: too.c de um aáonador de dio;co ou fita. Quando ocorre uma

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral


Professor Wilson Amaral Sistemas Operacionais – Unidade 02
C.p1tulo 2 Processos e threads 55 56 Sistemas opcraaona1s modernos

Processos l'\ecutando quando ocorre uma imerm(l\~tl de diç < • O Quand n pro o temuna. o i~ ema operacional e ihe
o 1 o-2 n-1 ontador de (lrograma do pmce o do u uário 3. palilvra um caractere d prompl lprontidàtl) e l-spera um no\ O cu·
... d • tiltU du flrograma e. pu \1vclmcnt •. um c1u 111. i re-
gi traúor~ Ju culuc:ado na pilha jatuJI) pelo hard\ art:
mando. uandu r • ·bc: o etllll.1mh arrcga um novu pro-
grama na m ·mona. br rn ·ndo u 1rimciro.
de imerrupç.io. computador. então. dewia a exe uçã
Escalonador para o cnden:ço c IICCJii do no arranto d • intcrrupçõc . do a ultiprogr m çio
I o tudo o qu hard\ ar fa1. Dali em diantt'. ' pap t do
!>Oh\ an:. em panl ular. fJzcr a rotina de c ·i ·o da inter- Quando a muhípmgramaçãu ~ u..ada. a utiliz.a ão da
rupção pr eguir. PU pod )CT aumentada De modo geral, e o proce u
ml'dt<l mp~11a ap nJ durant · 20 pnr •nto dn ll'mpn em
Tod.l a mtcrmp tll"> come am -.alvando us regi tra-
que c la na mt:moria. t:om dn o prOle o na memória a
dnn . muitas \ 7' na entrada da tabela de pmc w re·
a da vez a PU deveria estar ocupada o tempo todo. F se
fen.•ntc ao pnxn)() wrrcnt~. Em·u a inl< m1a à\1 (l)ltxada
modelo é otinú ta c puu ·o reah ta. •ntrctantu, uma 'Cl
na pilha pela intcrrUP<;JO c rcmo\lda c o pomciro da pi-
qu' :upi' tilcham me qu' n 'nhum do nco pro e ~o
lha é alterado para que aponte para uma ptlha temporária
c tar.i c p·1.1ndu pCIT t.li 1'1<1 ilivt,., de E/ au me mo 1 'lllJKI.
u..ada p ·lu manipul.ltlnr elo pr l''> o 1prn , !, handt ·r).
ÇÕf'> 1mo -.alvar ti rc •i tr.ldnre r Jltt>rar o pontt'im de
Um modelo melhor é t:\aminar n emprego da PU
pilha nãu 1 xlem l'r e prc \a\ t:m lingua~en de alto ní\ d Ju ptmlu d, \'Í ta probabilí ti :o lma •m • que um pw • o,o
orno . ' im. !ao. '>.'io implrmcntada pM uma pequena pa c uma fra iin p d eu tempo t'\pt'rando que u di p l·
rotina em linguagem a .;cmbl (linguagem de montagt:m). itlvu de E/ "fjilm n h11 lo . om 11 prtl< \\0 na mc·-
rmalmt'nll.' r a ffi( ,m,, rmin,, pJm toda a int ·rn•P<· . mória 'i.imuhaneamenre. a probabilidade de que todo o 11
ja qu • u tral'lalhv dt: ai\ ar th regi tra re ~ idtmít:o. nãt pro es os e tejam e perando p<~r dlspo<;ilivo'i e E/ ( am
imponando o que au ou a interrupção. no qu<~l a PU • t.lfia ocio-.a) ~r . t\ utili1.a âo da CPU
ponanm. dadJ pt"la fórmula
uúliLJÇã 1 da CPU = I -r"
Figura 2.4 mo tra a utiliza ão da PU com função
d • 11, que ~ hamada d • gr u de multi programa ão.
De a ordu com,, figur.1, fi .l claro que, 'iC o pmc ço
pa am Opnr 'lllO d cu lemJ'I<I l' perandu por di po i ti·
vo d I • pelo meno d 1 pmce SO'i de\' m e'itar na me·
múria imulromcamcntc para que a CPU dc'tiCrt.lkc m 'IH>
de IOpor Ct"nto. e você ja notou que um procesw interJ-
tl\o e perando que um u ;uaritH.Iigilt: algo em um terminal
e ta em estado de e<;pera d FI • emã deveria ficJr claro
que tcmp ' de C'>JlCra t.lc E/ de 80 pur cento ou ma i n.iu
Gerenciam., to de processo Gerenciamento de memória Gerenciamento de arquivo iio incomun . Ma,, 1111: mo nn '>t:rvidort; • o' pro l' \ll
Reyitro Dfi!tóoo-r c'ecutando muita opera de E/ em di w muita ve-
1. terão porccntag •m igual ou mp rior a e~ 1.
Dir tóro d tratR~nlO
2. Para garantir e ·atidão completa. deve- e a s.nalar que
PaLwra de
o u moJdn prubabilt\Liw de nitu c apcna\ uma apruxima-
PoniCI'O da
3. O procodnnmlo em lw ·1100 moul n sat.tao
Estado do pmoe Pont iro para ilfonnações sobre o .omooto IOdo ron trad s.
Pri ' do texto
4. !
110 ilOO
5. o de interrupçao em C exewla ( 1 <11 ~ e ! 80
::>
armazenA tcmporMrlmc'!nte A Cfllrac1a) Q,
o 60
Gfupodepm 6. O escaloo decide qua prt>C&SO é o proxino a {!
Sllais c 40

MOI'TlOOtO 911 QUO um pmc ,. 'iO foi nici;ldo 7. 111 ~ 20


Tempo de CPU u..~o
Tem CPU do proc fíllo 8. m d montagem r · ·e o
o 10
Tempo do alam
Figura 2.4 UI CPU 001110 lur do IHitl ro d
processo na momõna..

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
Capitulo 2 Processos e threads 57 58 Sistemas opcraoonais modemos

5o. h.· ~upõe irnpl! narn ·nte <lue IOdos <h pro n n ão vidualmenre. Por exemplo. e um padrão propo to \ , x prnteger o u uári lntra a p rda ck um dia de trahalho.
independem~: .• o que ignifica que é N tanrc atcit.l\d que apru adu unl JlUU u antc-\ úc nlívro \c-golr par,\ impr ~u. a\U llll rra uma falha nu prO);rama >u nu i tt·ma ou mt: •
o em memóna tenha tré t ldas a tiC rr~ncia dt' "Padrão Prom )tio \\ '· devem mo uma queda de t'nerwa. O terceiro thrt'ad pode fazt'r o-.
li! • wm uma úni a t'r ah~rada para "Padrão • no tíltirno minuto. e o balkup t'm di co em interferir no outro d1 i . A ltua ão
ndo e ·erutad h m 1nt ·íro t"ítlver ,m um arqui u. m ger.1l um uni o co- do tr' thr <1d ~ta ilu tr, da na Figura 2.5.
mandu rxxlera fa1er toda a uh lituiçõt' . P r outm lado.
e o livro estiver dtvidido em 300 arquivo . cada um deles
dncrá \er l'dirado ')Cparadam •rue.
Ag ra, imagine nqu a comece quando ou u.irio remo-
ve, de r~peme, umil enten a da página I de um d mento
de 00 p.ígln.h. D 'J')\li\ 1k verificM J pagma altt.·rada para ·
a ~gurar de que t' tá orreta ou não. n u uári agora quer
la1er omra mudan a na pagina 600 digíta um comamlo
di1endn p.lra 11 pru{, '>Jdm de 1 \U 1r ;n • aqu la p.igtna
mllora muitu implc . o modelo d.1 Figura 2. pod •• (JlO i\•elmentc bu ando uma Ira e que apare a mcme
mt"imo a im. er u ado para [lrt'\1 õe-s c flCÓfica • amda lá). O pro e ador de te'\:to é. então, forçado a reformatar
que apr ximada . rJc de ·mJlCilh\1 tia PU. UJltntha. !>clr tudu n omcúdu ,lt; a péÍj;ína 600 - uma \Ílllclf\àu difi ti,
extm[llo. 4ue um 1mpu1ador tenha 512 \-\8 de mcmó· porque de nao 'iclbe qual o;erá a primeira linhJ da p.lginJ
ria, om um i tt•ma t pcradonal que u e 12 MB. e tJUC 600 euqualllo nãu Livcr 1wu '><Ido tooa a página ante- ev~ c tar Jaw que lrt'!> prlln">'>l~ eparado\ não Jun-
adn progr.1ma d 11 uariu tamb m empregut· 12 \18. F. - riM . Hav rá uma demora uomn ·ai ant ue a página 'nnariam no c emplo dado. poí tod l'i 11is thrcad pre·
• tamanho po. ibilitam que tré, programa de u u.irio 600 pt~. a ')C f mo trada , dei ando o u\uário dt.~t ntt'me. · am uperar t brt' o documcnw. Em vez de tr~ prt•te ~h.
e<;t('jam ~imultaneament(' na m('mória. onqder.mdo· c 1l1read , ne e ca o, p tlem ajudar. uponhc1 que o pro· ~o trt"> thrt.•ad qut comJ anilham uma mcmllria comum
que. ·m m.:di, um pr. c ~~ pa'> a O 1)()r cento de ' ·u • · ldur d • t· to "l'Ja rllo omu um pw~rarna de doi t' de ~ nwd 1, 1 m tudu u a u ao do :umcnw que t')t.i
tempo em 11era por E/S. tem- c uma utih7ação da PU thread . Um thread imrrage c mo u~u.irio e o outro fa7 a nd editJdo.
(tgnuraml 1 o g~tu t' ua- merht'ad- cau'><ld l pelo ~~­ refom1atu âo t:m ~gundu planu. Logo que umu ~mença Uma iluaçãt an.ih ga ocorre com muito outro pro-
wma op ·r, ional de I -o. . nu l r a d~ 49 por t'nto. A t rt.•mo\'lda da pagina I, o Ih r ad ínterall\ n di1 a l thr •ad ~rama'> intcrali\'U . P 1r c ·mplo, uma planilha •l •trlmi a
adição de mah 512 MB de memória permite que o i~tt'ma de rdonna tJ ão p.:~ra rdormatar tod u ltvru Enquanto é um programa que pemlitt que um u u.iriu m..1menha
aumente u grau dl· muhipmgrama c'iu de 3 para 7, ell'· 1 \O, u thread lnterati u l'Otllinua atl·ndt'ntlo au tcd du. uma matriL. na qual algum l'lt'm~mo ãu dado Come IJu\
'-<Indu a' tnl a utili1..:t ãu da PU para 7 pnr •ntu. m ao mou't' e ao l unandn 'im1 le • um rnlar a pá~ma p lo u uári . Outro elemento s.'io calculado c m bJ'it'
outra pala\'fa . a adição de r; 12 I B aumentar.la utili7ação I. t'nquanto u uutrt thrcad t: tá prtll • ando a todo vapor nO!> dado Jc elllrada, u'andu-~c furmula Jll tcndalmcn-
da PU em 30 por emo. l'm egundn plano. om um pouc de nr. a rerormata- te ompkxa . Quando um u umo altera um elt·mcmo.
tlidonand o.1mda uutw 5 I 2MB. a utili1a1,Jo da PU çãu tt.'rminará ant que o u uario pe a para v r a pagma muilll outro elemento 1xxkrãu vir a cr re alruladU'>. Já
aumenta apena de 79 por emo pam 91 por tento. ele· 600. t'. a'>'>im, ela rx'lderá er m~tratla m t.:lnt. neamcntt. que iste um thr ad em undo pl.mo para f,m•r o rc Cll-
\-ando, de ~ Jurma. a utiliza ão da CPU t'm a pena~ J 2 por Enquanto t...,tamu.. nt: ')C ~\emplu, por que não adidu- ~lo. ( thread inr~rativo Jxldc pos ibilirar ;w muárin Jazer
nto. F~'it' mod I pennitt> qu~ o dnno de um computadM nar um tert iro thread . luito pmce<õ~dor de tell.tl ~o ultera õ~ J lidonai enquanlo a mmputa Jo pro segue.
dL'lida lJUC a primdra adiçã ú~ memória é um bom im·t.• - t padtJtlo para !>ôll\'ar autom<nicamc-me wdtl o arquivu Da llll~ma maneira. um lt' clro thr.:ad pode cuidolr do
tinH·mo, ma~ não a Sl'gunda. no di u a t d,, intt·rvalc> d • tcmpu em minuto\ a fim de OJtkUJl pniódi( ra u di u.

Threads

(((

I Figura 2.5 Um ro

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
Capítulo 2 Processos e thrcads 59 60 Sis mas operaoonais modernos

gora on. idrre aindJ um outro exemplo no qual o sente na ca he de 11.ibtina da Wrb. e e Li\'er. entrega-a ao re~osta tomará, pr vJvrlmrnte, a forma de um inal ou
thr ·ad ~ n útci : um ·r. ido r para um it • da Wcb. R ·• cliente e o n1 ·rario bloqu •ia t'"fli.'rando uma nova rcquí i· de uma int ·mtp ão.
qui\1 Õt' de págma' chegam de, e a página rt"qUhttada :lu. Do ontrárío, ele bu a a página no d1 o, l'ntrega-a ao ~e<>se projeto. o modelo de 'pnl<'l"'i~o equen tal' do
é enviada de vuha ao clh:mc. Na maturia do s11~ da Wt·b. dieme e bloqueia t:'Perando uma nova requi i à . primeiro d )i a os l-st.í perdido. O l>slado da CUfiiJ)Uta·
alguma pagina apr ent<lm rnat a que nutras. Por Uma •mplifica~iio dn código é mo tradil na Figura 2.7. ção deve t.'r e\plicitamente ~Ivo re taurcJdo ncJ tabt.'la
e~cmplo. a pagin.:~ prindpaJ da e n · é muno mai" ate sada Xt~ e caso. omo nu re tallll' de te livm. TRUE ~ t>n: urnl· a cada \'l'l que o l'r\idor dt,l\eia du trabalho de uma
de qu uma página !li' ·at que omcnha e~pedlicaçi d umo a con tante I . Além di o. lm • /'d.'lt à e trutura' 1equi i ão para utro crd, d ·• tamn imulandu
técni ib de al,uma càmera de \'Ídc ) pc uliar. localiz.Hia na> apropriad~ para acomodJr uma ret~ui~i ãu de trabalho e u thr~ad l' ua piU1a~ da maneira difícil. Um pmjew
t•ntranha da .irvore qu reprt ema n itc geral d.1 on . uma igina da \ •b. r pectivam •m '· 01110 , no qual aôa nmputa ãot ·m um e til do alv
ervldtm"' da\ ·b u'>olm e -.c f,uo para mdhurar u d.., ·m· Imagine omo o rvidnr da \i h pod •ria r es rito c c i te um unjuntn de n · nlcl~ qu pnd ·m c orrc:r (Xlra
penho mantendo uma colrçJo de páginas intensivamente wm threads. Uma pu ibilidade e operar omo um úni o mudar <l t' tado. é hamadn de m quina de e. lado fi-
u'>a la na rn ·muria pnn :ípal para ·liminar a nc · idade thrcad. IJ o pnnctJ'Iill do) •n•idor d Wcb obtém uma re· nito . ' • conc.etlo é amplam ·nte u~u() na ci~n 'a da
de ir até o di o lnt,ca·la . F ~;a ok~3o C: hamadJ de a - 4U1 i ;Ju, examina-a e ex· uta ·a até u hm ant • de obter a C'omputação.
che c tJmbém é u da em muito!> uutm c me. to . \'imos pnhima. Enquanto t' pera pelo di o, o ervidor e wocio- Ag ra deve e tar laro o que
cl1 ht de PU no apitulo I, por e\emplo e não pro ~ a quai quer uutr<J n:qul u;õe.. • u ervi· le tomam po hei rnantl'r a ideia de pn c: o equen·
Um modo de organi1..:tr o ervidor da Wt.>b é mo trJdo d r da\ eb e<iti\ere · nuandnem uma máquina drd1cad.1, ciai que fa7cm hamada d ~istcma bloqueante por
11a Figura 2.6. Na ligura, um thread, u de pa hante. I~ mu é 1 nonnal. a ~ PU fie r.i imJlle lllente udo a en· c t'lllplu. I de di w) c m · mo a im un egu ·m olHe r
a~ requi içtk de tr.:~bal11o que hegam da rede. D•pot de quJnto o ervidor dJ Web t"\th er e per.:~ndo pelo dt o rarJieli mo. hamada de i temi! bloqueante tomam J
e aminar d requi i ao, de e ulhe um thread operário \1m, u thread ganham um dc .empenho wruiuerávd. ma~ programaçà mat'> fácil , e o paraleh mu melhora , de em·
nciu cl (í,tn ~. hloqu \ldn) em r· •a·lh a reqm i ão. po · adaumC:progr<Jmado equ•ncialmentc. omndt.' o tume. penho. n tdor monotiHe.1d mantém <1 ~implicidad
ivdmeme lOim:andu um p mteim para a men agem em tt' agora vimo~ doi~ projetos pth ívei~: um )ervitlor da de prugramac,.io c:aracteri!>li J UJ d1amJda de i'>ll'lllJ
uma p,liJ\Ta t"'ipcdJI a ociada a cada thread. O d pach.m · Web muhithread e um ·n idor da I. eb monothn.•ad Uf>ll- blu Jllcamc. ma dei de lado n de'> ·mrenho. A ter l'iril
te então Jl"Orda <l t pcr.irio que c tá de an~ndo. tirando· nha qut.' não ejJ JM>'> hei u tNl de thn:ad\, ma qut.' ch pm· ab()rdagem con cgue urn alto de empenho pelo llilr.:Jieli~ ·
·O do 'ít do hloqueJdo olo ando-o no e~lãdo pronto. jeti tJ de i wma' n itkrcm in a •it,h ·I a Jlt'tdJ de d ~em· mt>. m.l li rl h.11nada n.1o blllqut>ante t' int •rrup i· c.
Quando d pert.l, o operário verifi a e a 1\'tlUI'íi ãn pcnho dl'rorrt ntt· dou o de um unico threa I. e rivennoo; cllll h u, uma a pro •rama'>ão dilí 'I. E\\l'\ nw telu ~u
pod er sati leila pela a he d página' da Web• .l qual urna \'l'!"'àu da chamada de ~1'>1 ma em bl qutio~. 1 n· re umido na Tabela 2.3.
texl u' thr ·ad\ 1~m a ~ u. • nãn pu ·r. ·I · inioalllara na· e pu \IV ·I uma 1 • •tra abc)rdag~m . Quandu hq~a uma Um 1 rl inl e em(lln tm qu • thr ad ~iin útei ( til
uma npera ãu real Jlara uhter a rJwna du di n e 1 ·rm.1· rt:llui içiio. uni c apcna\ um thread a verifica. · eiJ puder na aplic.1 õe que de\ em proc; r uma quantidade mui·
n erá bloqueado até cJ lpera iio de dtsm terminar. En· ser SJtí fena a pantr da c.lChe. mu1to bem. ma • se nao pu · to grande de dado<;. abordagem nonnal é ler um bl!
quanto o thre.Jd • ti\i.'f blnqut•atln nt~ opcrJ 3o d · di o. f •r, !lera imdada uma opera ·ão d • th w ·m bloqm:io. de dado • pro t"'iSci·l l e, rmão, e re\·C:··Io nuvamcnte.
outro threJci 'it'r.i colhido para e crut.:Jr- po~~iwlment o sen ·dor gra J f"itado da requi u;â amai em uma problema é que e h U\'er somente chamada de istrma
o de pat.hame, para obter mai~ trallalhu. 1 u pu ivdmell· taiH:Ia , entãu. trJta o pró\imu l'\ ento. que pude e r tantu c:o111 bloqu ·in. o pro · 'u IICmlanc cr.l bloqueado enquan·
tt outro operário que a •ora e~teja pronto pJrcJ e enll<~r. uma requi i iio para um nmo tr.lb<llho )mo uma respm· to dado esti\·erem chegando r aindo. Ter J PU ocio~
e modelo permite qut u enidor eja crito c mo 1.1 do di o ubre uma opera .lo anteriur. e fur um nuvo quando há muita omputaçõe para fazer é ob\·iaml'nte
uma Cllk ãn dt> thread t: uen i.1i . pro rama do d l'l· trahalho, dl' era itlí 1adu. l' fnr uma re'>l ta du di '· a de perdi iu t.' algn qut•, • po íHI. d ,. • '>t'r C\'itJdu.
chante con i)te em um lac,u tnfinito para obter rt'\jUic.i õe informaçã ) rdevant~ M>rá bu ada na tabela e a respo ta O thread., ofer em uma \olw,a l . proc:n'>cl poderia
de trabalh) l' entregá·la\ a um )perário aua ôdigo de •r.:l pro c · <~da. nm ,, E/ dl' di' l •m bluqu ·io. uma er l~truturadu m um thre d de entrada. um th1ead d ·
upcr.irío wn i te m um la n infinil<l. que a ata uma r · pro es'.lmento e um thread de o;aída. O thread de entrada
qui 1 ào de um de . pa han te e verifica a págma ( tá pre· lê o Jade~ ·m um bufkr de entrad.l. O thread dl' prot · ·
am nto tira o dad do httlft'r d~,; t>ntr.1d,l. rr " ~J·() e
pi~ u rr ultado em um buffer de saída. threatl de aí·
da e' r vt.• l' · ' r ultadc)l. de vnht~ nn di o. D~-; mod(),

(a)
Threael oper no Espaço Caracteristicas
do
usuáno whlle (TR\JE) {
waJL for _'WOft((&buf)
CachO de p g.nas took_ror _paga _In _cache(&buf, &page):
Web lf (pege_not _ln_ cache(&page))
read_peoe_lrom _dlak(&buf, &pege);

Nuoteo
\~0 rwtum_pelge(Apege);

~..........~.................................................................~.(nüaoo {b)
ConoxAO do rodo
do C(Kit 10 p>~ 11 c1 F 111n 2 . '
· d operiblo ,

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
Cap tu lo 2 Processos e reads 61 61 Ststemas operaoonais modemos

t>l blnqu ia at~ que uma entrada wja dtgitadJ. Um thread pm edíllll'nll> tltrt"tulj,rill. l' >r exemplo. E _~ rmina hluqueia
pode.· blnqul·ar e (X' f ndo que algum l'Vl'nto c temu awn- n thrcad que c Cllltuu a d1amada ate.• qm: um tlttl•atl (e ~~­
tt'\il nu que algum uutro thread u de bloqut'ie. Um thread átlco) tenha termina~> . en 1 ~ nn. a ·ria ãn eu témlino
pmnh e tá e calonad , para c et'Utar c.• lo~o '>t' tomará ati· do thread ~u mu1to pareddo c.om a :ria ãu e o tcirmino de
\'0, oH im QUl' hegar \tla \'e7. A tran i õ ~ emre os t'Sio. do prc C'i'iO • in lu 1ve o m qua e a~ m~ma opçõ .
do thrcad ão a mesma tran i õc entre o c tado do utra d~amada mmum de thn:ad é a tlrn·,1d_wtld. que
pr~ o ilu tradas pela Figura 2.2. fl m1ite que um thl'l'ad desi ta voluntariamente da PU
im~ (lrtant · pt:Tlcbcr qu ada thrca Jtem ua pnipria para dei ar outro thread ~ nutar. \\iJ thamalla é impor·
pilha. conlonne moma .., Figura 2.9. ada pilha de thread tante porque nJo há uma intemtpção de relógio para for-
onu:m uma e trutura para cada rotina hanmia. ma que ar um tempn ompanilhadu, nmo c t\te 1 m prtxl.'o,o,o .
ainda nào ret1mmr F-. e tnltura pos ui as vari,i\'Ci lo· A~ im. é important que ns threat.l ejam 'cem e qu ••
ai d rotina c o cnderc de rcromo Jlar U\a-lu quan- de temJlU\ l.'m tempu • liberem de mud( vulumáriu a CPU
do ..t rotina dtaul<!dJ tcmunar. Por c\cmpln. c rotina ,\ pc1r<t dar a uutm thrcad' umn uportunid,tdc Jlélra c\c Utclr
hamar a r tina Y. e \J chamar a rouna L. enquanto l utra chamada permitem que um thread e pere que ou·
• tiver 1.' c utandn. d'> trutura · J'ilfd X. I t' l c.· tarãu 111d.1 tru thrl.'aU termine algum trilhalhu, QUI.' infnmll' il linaliJ: •
11. pilha. ildil threild g ralment~ hilmil rottn. dif rent çii< de alguma ta r la. a o;tm por dt. nte
re ultando uma lmtoria dl.' t'\Cluçãu dilerl.'ntc. Por i 1 c 1eilllo cmio útci em muita'> ' tua~oõc o tbreath
que n thread pr ~ tl.'r ua pn· pna pilha. tamht'm introdu7em \'.iria' ompli a Õl'\ n mod lo de
it~"' na primeira mluna ãu propril'dade d( pr • pmgrama Ju <Í para >meça r. wno.ider • U\ dl'itos da ha·
. nà propriedade do thread . Por e. emplo, e um m.lla dl' i.tt' ma 1041< d '.1 1 • Se o pro ' lJ ai th'l.'r mill -
thread abre um arquivo. e te lica vi ível P<Jra t outn tipltl thread • o IJJho nãu deveria tl?-lv também? Dol n·
thread no rroce \0 e el pod •m ler e e m,·er nele. I so trario, o pmce talvo nã fundone adequadam~me, jã
~ lóg.iw, JMII u pron~\u ~ a unidade lk ercnuamentu de que todo m thrcJd' JIIXkrn cr e •n iJi\,
Tl'nwm. t' não o thr ad. e C.Jda thr•ad uv e eu pro· ontudo, o pnxt o filho po uir tanto thrc.1d
pno pil 1.1 d • ender amenw. arqui\ abertos. Jlilrme quanto n pai, o que a ontece ~ um thrcad no pai e. tiver
rende me e a im por diante. ele seria um pro o epa- hlnqu •adll em uma hamada r t.l111 · lado. pm c ·mpln.
rado. que 1.: tamu tentJndu wn f.lUir m u m eltu de

l
Processo 1 Processo 2 Processo 3
AgorJ 'i5o dni thrcads bloqueJdos c crando entrada pcln
thrl•ad é a apa ith11lt>. 1 ra múltiplu tlm•ad de ex· u-.Jn. te ladu. um nu flJl c nutro nu filhu7 Quandu unt.l linha for
de cumpartillt.u um c mjuoto de recur.o,, de fonna que digitada. ambo o thread conterão uma cópia dela.> o·
•I podem o perar na n·ali1a ào d • um,l tar r.1 . mcntt u pai. rm·ntl.' o lilhn? me 1m1 pmblema C\Í te
A 'm Ccllllu •m pm ex trJdicinnai (hlo e. um pr l · com oJ m • il• d ~·d • •m aberto.
usuanodo l o wm apena um threau) , um thrl.'ad pode lar em OutrJ das e dl.' pwbltma ta rela wnada ao law de
Espaço
um do ~nos e lado : t:m .,e u ào, bloqueatiC1, pmntu ou u thr~.1d ompanílharem muita c tnllur.l d d.ulo .
finalizado. Um 1hn: d em cxcluc,:3o detem a CP c~,...,,.; ati· que awmele c um thrcad kdlar um atqui\o enqu ntu
vo. Um thread bloqu ado e t~ e<>per.mdo por algum e\ento nutm c.tiwr amda lcml c · mt mo arquivo? upunha
que o de bluqul'ic. Por c l'lllplo, quando um thrl.'ad rca- que um threal111t'r dlJ que haja JlOuca memória c ffil"tt'
Espaço do { Núcleo li7a uma hamada de i. tema pata ler a partir do te lado.
nucleo a ,,h ar mai nwmóri.l. u nwin de tarefa. 11( rrl.' um
hJ\'t\lfiltntn •ntre thread . c emjo u nnvo thr ·ad p ·r .:hc
(a)
que há pouca m mória e comcça também a alocar m i .
E'til pm avelment• ·ra alo ada llu<a \' t.'/1:\. ., pmbll.'·
Processo Thrcad 2
ma podem r rc oJ,id~ C\1111 uma ·crta tlihculdall •. rn
programa. muhithread devem er pen ado e pmjetados
com uidado para qu • fun innem orr ·ta mente.

P.uil Jl(h\'llHlllar riar programa' ()nl thTl<ld' portill 'i .


o I E definiu um padrão para thread no padrão IE E
IO 3.1c. O pa otc de threads que etc define e chamado
de Pthread . maioria do l'tl'ma U 1 o uporta.
padrão define ma i de 60 chamada de função. um mime-
(b)
m muito gmndl.' para a l'. aminado aqui. Em vez di u.
Núcleo ap na de cre\'eremo alguma das prindpai para dar uma
idda de wmu run ionam. hamaJ qul' Je~re\ crcmv,
I Figura 2.9 Cüdlt thra<td Iam ~ propnn p1l1tt aqui tilu li ta da na Tat ·la 2. '> .

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
capitulo 2 Processos e threads 6l 64 Sistemas operacionais modemos

Por fim.ptlrrtad_41Itr_dmn')' remove a Lrut ura de at ri· #mdude <pthread.h>


Chamada de thread #mdude <stdio.h>
bmo-. de um thread liberando ua memória. Ela não afr:ta
lúndude <stdlib.h>
o thrcad que o tllih7am; ·I conttnuam t'\1 tindn.
Para rwr ttwr melhor romo o Pthr a 1 fttndunam, #define NUMBER_OF _ THREADS 10
wn ítkrc u c cmplu impk da i •ura 2.1 O. l~!>C a!>o, 11
pmgrama prln tpal rcali.tJ UMBFR_OF_THRFADS ítcra- void •pnnt_hello _wotld(void •tld)
çi . crlandn um nm n th read em ada itt r.l ão, dl'))Oi de {
anun lar ua inu:nção. e a viação do thr adIra as a ele I• Esta funçao imprime o Identificador do thread e sai •I
pnntf("He lo Wortd. Greebngs from lhread %d\n", lid);
imprim uma m n agem de erro t rmina m ~ 'guida
pthread ex1t(NULL);
i\pm cnar todo O\ threJd , o pr~rJma principal termina.
Quando um thrr:ad C: riado.l'lt> imprimr: uma m n a·
~ ·m de uma linha c apre cntandu 1 •nnina em cguidcl. mt mam(mt argc, char •argv())
ordt•rn na qual il\ \JriJ m ·n a~cn <Jn intl'r ,ll,ula é (
indeterminada r: 1 lde \ariar em ewru õc wmc utha I• O programa prtnctpal cria 1Othreads e sa1. •I
do programa. pthreacLt threads[NUMBER_OF _ THREAOS]:
lnt status, I,
A hamada de Pthread- de crita anteriormente não
são de nenhum modo a unira e isteme há muita~ ou- for(i"'O: 1 < NUMBER_O _THREAOS, i++) {
Tudo o thr ·, d Pthrr:atl têm '·na pruprir:dadc,. tras. E\aminan~mus algum.h dela!> muis tarde, de()Ois dr: pnntf("Main here Creat ng thread %cl\n", i);
.ada um ll.'m um idcnuli ador. um onjunrn d · regi trns d&utirmo incmnila ào de pro e sm c thrt•atb. tatus,. plhread _create(&threads{i), NULL, pnnt . heDo_ wortd, (void ·~);
(indu in~ n omador de programa), r: um unjumo de atrl·
huto. qu · ·o Jnna7cnado ·m uma r: tnuura. O .1trihu- ,r (status !=O) {
príntf("Oops. pthread _create retum d error code %d\n•, status);
to In :lu m <>tamanho da pilha.'' parâmetr~ de ~alo­ exlt{-1);
nilmento e outm it •n n r:. Sclrios a utilihlÇiio do thread.
Um nm thread e cri.ldo u~ndo a chamad ptllrc'ad_trt;ll(. }
idr:ntificadur tlu thrcad rct..:m- ·udo retoma wmo o valor ex•I(NULL);
dil fun<ii hama a é int ndonillment mui li) ~meUtan·
te à chclm.Jdd de í tcnw I c 111 tl identiltlcldor de tlm·c1d
de'iempenhandt o papel do PIO (númrro do pn C\'14.1), prin- I Figura 2.10 Um e n lo c1e 1 . 111H II.....Uilkl thr-1:
"Jlalrn ·ntc para id -rui li ar thr ·ad rcf n:ndadt em uutra
chamada. ma~·ãnnctc ·ria 1ar reini ia.Ju é annaLcnadJ na ta bel< fi a \Cu thrcau deve entrar nu c tadu biU\jueado. Em t '>U
Quando um thread terminou o trabJlho para o qual de thread • exatamente do mesmo modo romo n nucleo afimlaii\'O. ele am1J7ena o regtstradore do thread (i tn é,
loi d i)!nadu. pudt• unduir hamantlu ptllrc'.IJ_.·xit. 'i'ia armazena a inrormaçill' bre 1 pnKe .;o na tabela d~ ~eu'> proprio 1na tahl'la de thread • bu a na tabela por um
dtamada interromJ>e o thread e libera ua pilha. prn l~. thr ad pronto pua • llar • r arrl'l!a '"' rt1ti trJdor~
Quando um thrcad faz algo que pus. a bloqueá-lo lo- da máqutna com o novo valore., '~<lho do thread . Logo
tJ!mr:nte- pm c cmJIO, t: pera que um uutro threJd llll que u ponteiro de pilha c u wmador de pmgram forem
eu pr e.so 1em1me algum trabalho -, elr: hama uma altr:mado • o no\ o thread rr:n" rá automatkamr:ntr:. Sr: a
rotina d1 i tema tk tl'ITifKl d • l'· u~ãu. E mtina vcri· maquina tivl'r unM imtru ão quc ~1\ ·e wdo o r~i\tra·

zj
Es:"of !---;,__ _...__ _ _ _ _ _ ~

nucteol

processos processos
(a) (b)


Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
capitulo 2 Processos e lhreads 65 66 Sistemas raoonais modemos

dt r e ou1r,1 que MTt>gue '' lo. I• . o hav~:anlt'ntO do u~tituida por outra que Jnte t:hama a p.igina r ui itilda er tra7ida do di o. principal deo;-
thr •ad podera er feito l'Tl1 pou a in truçtie Fazer a im o • h ama l8itd • i u lo r 'Ruru (i tu ;_ c n.lo au ar blo- amagem e que o ru to de uma chamada de 1 tema é alto
haveamemu • thr ad ~.~lo mem~. de uma ord m de queio ). ~ a dtamada mal u r bloqueio, a chamada não t.' , pnrt<~nto. a t 1rrC::nda frequente tl · CIJX'r r,~ie d, thn:ad
magnitude ma i rápida qu de 'i,u o om rol · para o nú · será kita Em H'L di o. um outro thread t' e e utado. Da que ' ·rílium ~ a' hamad 1 tem r u \tgu· (cnac;3o. t "nninoet .J ~u~r um ~obr • Jrga muno lllilwr.
clet1 - e se é um fone argum nm em la\'or do ra o1e pró ima ve1 qu a umir o commll', o iqema de tempo ra . Para aplicaçõe e<;c;encialmeme limitada pela FmllOra o<i thread d núcleo rNolvam algun proble·
de threiid d • u uJrio. Ut.' l'UJçãn p<ldcrJ " •ríli ar nu..,amcntc \t: a chamada r que raramentt• blnqueiam. qual · u nbj •ti"o de • u iJrt•m ma\. el nãu r· ulv ·m tod ,.,, Pur •.w mplu. o que at: mte c
\i t~·. llllllt • um.1 d1lerença fundam mal rntre 1hre.1d ~ l'gUra. F\\1." métodn requer qm· ·r rt.'\am pan da thread ? 'inguém propmii! ri11mente computar o pri· quando um pm 'iSO multilhr ad é bifurcado? nnvo prn·
e pma.~ • uando um thrl'ad decik' parar de e OOJtar- ptlT bibliut ·:a de dtamilda u' l u:ma, e inefi ieme e de-. ·lc- meiro~ 11númcru primo' tiU jtPar xadreL u..ando thrcad , e so tem tantu thread quJntu u anterior ou tem aJ>ena
e emplo. quando e erutcl a chamada thrtaJ_ytdd - . o CÓ· ~nt ·• rna há !XIU a altt•rnativa . O culli!ln que envol\' ·a pui n3o há \antagt'ffi alguma ni o. um? Em muito ca~o . a melhor e rolha depende do que
dit,•o d~ ta pod · ah.ar a inlmmaçãu do thr ·ad na pnípriJ hamada de i 1 ma paro:~ fa7t•r a vcrih , ãn t' hamadn d o proces\O esta planeJando lazer ~m \egUida. ~ d1amar
tabela cte threads. \1ai ainda: o escalonador cte thread jaqueta ua.ktll ou wrapper. 2.2.5 s no núdeo ex . para wmeçar um nunt 11r0Hrama, rnl\avclmente 1 ·r
JXxi • •r ·ham<Jdn pelo idigo da thn·aJ_vidd para clccin· Algu an.ilot:o a problema de hluqueto de t:hamac.las aJ)ena~ um thread é a e olha correta, ma se continua a
Con id ·rem ilgura que o nudeo aioo bn: o~ thrc d
nar um outro thre d p.1ra exerutar. rotina que o;alva o de '>htema e u pro!llema de (pa.l/ fiw/t) falta de págma. e\c ·utar. rl·plicar todo o thread provawlmente é a c ·
e o<i gerenàe. Não é neres~ario um i tema de tempo de
c ta do do threcJd e o e~ lona dor ão apenas rotina locili . · tudar ·mn. c e' prublcma no apitulu 3. 'u momen· colha ·rta J ra7er.
exl't'\1 ão, onfom1e m~trado na Figura 1 .11 (b) . 1 ã > há,
de modo que t' muito mal eficiente in\'t)(á· lth do que lazer to, ~ uliciente di1er que o computadore pndem r tamb ' m, nenhuma tabel,l de thread em cada pro · · ,, .m
uma hamada ao núcleo. F.ntre outra coisa . n3 >é ne e • wnfigurado de tal moou que nem tmlo programa fique v ·z di!.!>(l, o nú leu tem uma tJbela de thn:atb que awm1 J·
-..irlo pil!>'lolr do mudo U\uário J>ara u nultlu nú leu. nãu) · unuho~nt·amt·nte na mcrmírta principal · o programe~
preà a de nenhum ha\eamento de contl" to, a ca he dt."
nha wdt o thr(ad' nu htl'ln.l Quandu um thrt:atf qu r
lil7 uma hamada ou um lto par.l uma 111 tru 3o qu( triJr um mwuthread ou destruir um já e. ttcme. de lu
rncrmíría nãu 1 ·m de •r l'Wazíada e a"im ll(lr diante. I 1 não e teja na memória. ot:orre uma !alta de pagina e o uma thamad,, ao nú lctl, qu · reali1a cnt3o a ri.1 3n ( u
tudo agilizao e alonamentu de thrt•ath. i tema opera 'onal hu a a in trtu,ã (e eu vizinho 1 il ti~ trui .lo ;Hualíz~ndn a 1.1 •la de thr~·ath dn nu l·n.
Threild tlc u u,1río t ·m também outra \ antagcn . Por nu di' ·ti. 1· u ~ h;mladu de (alta de página. pro c 11
e emplu, pem1i1em <llle ada pro e ~1 tenha eu prllprio fi a bln JUeado enquanto a 111 tru àn nece ~ria c ther
algoritmo r<. alonamrmo pr onali7ado. P.)rJ algum<~~ ndo lo alihlda e lida e um thread cau a uma laha
aplica~) . -como aquela com thread coletor d~ li o l_qJr·
t.le p.igina, u nu leu - que nem ao menu' ale: \ubrc a
bàgt c,1//(tror) -, o faw de não 1 r de e pr~o up.lr com um '\Í t ; n Ítl dt.• thrt•ad\ - naturalllll'lll · blnqu ·ia o pro·
thrl.'ad t•r parado em moment 1 inoportuno é um ponto tn o int~m até que a E/ de d1 u temune, me mo que
J)cl'>itivo. Ele também e <1lam melhor, já que c1 thr·<~c:b outro thread po~~m er C\erutado .
de nú 1~1 tll\'ólnJ\. •lment~ n~t \ttam de ai •um 'flJ~o dt.:
tabda e t' pa~o de pilha no nu ll't>, o que pude vir a l'r um Utru problema 0111 paCUll' dl' thread de l"U.irio r
problema ca o haja um núm ·m muitu ~rilnde d • thread. . que. e um thread 1meçaa ex~utar. nenhum uutru thl'l'ad
naquch.• proc: 1c •cutará ">equer uma \ 'C/, a me no que u
AJ1t. ar uu melhor tk..cmpenho, o' pa olt: . dl· thr ·ad
primt>im thread. voluntnriamemt•, Jhra mlin da PU. Em um
de u uárlo Jpr •. entam algun~ problema\. primdru tk·
pro • ..o úni ' uãu há lnt •rrupc;i~e de rcl6 •lo. o que t\lnta
les é orno Implementar a hamilda de i tema com blo·
impo 1v ·I ( alnnar pro<:e m pelu t qu ·ma d · l' aluna-
quein. UJltlllh<l que um thrt·ad teja kndo o teclado ante
que qualquer te la tenha ido pre ionada. DeLxar t thrcad mcmo àrrular {rl'lllllf·robm, que ignifica dar a vez a ouuo1.
reali7ar de fato a hamada de q tema é maceita\'el. po~ A menu que um thread tetfa voluntariamente a \l'Z para
i o pararia todo O'i tln ·ad , Umil dil pnnopill rMÕt' d • nutro. o e .1Jc n.1dor nun a t •rá oportunidade de IJJ~ ·Io.
haver thread em primeiro lugar é pem11tir que cada um Uma oluçãu JlO 1vcl para o problema d • 'e ter thrca
dele po sa u~r chamadas c m bklQU 10. ma é tamb m 'l"Utando indelinidamcnt • é 1brigar o i tema de t mpu
im1>etlir QUI: um th rcad bloqueado afl·W o~ uut m . Em t:h · de e e 1çãn a rcqui ltar um inal de relóg1o (imerrupç:lo) Threads de mútllplos wwànos
sobre um thread do núcleo
madao; de i I 'nlil com bloqueio. r difl i! lntilginar 011111 a ada ~q;und< para dar a ele u contrnlc, ma~ í<,Jou tamllém
es e objeli\'O pode r prontamente atingido e algo gro eiro e confuso (hlrJ programar. lmerrupções
d1amada d • htcma pod ·riam r w la ilhuada de rei · gio JlCrióJi a em frequén ia ma i alta nem em-
paraqu não bloquea em (pore emplo, umrmd no teclado pre ~ pu 1\ol~~ c, me mu que Joo; em. acarretariam uma d~ tn11 fo. um thread ' mJrmd como n3o e\ecutá\' •1, mas
retomaria Obyte ~não hnu c • aracten: di mi..-ei nu grand~ obr~ Jr~a . lém di.., n. um thread J)(ld Jind,, prc· \Uas e<ilruturao; de dados nn núcleo nJo s3<l afetada Oepoi
burfen. ma · e\igir mudan " n 1 i temi! n11t>raonnal nãu ~ ' )é! r u• uma inl rrupt,ào de relcígio. interferindo em ~u quamk1 for pr ·àso riar um ruwu thrcaJ. um thn:ad anti·
lntere 'iclntl'. lt'm di .. o. um do aryumrnltl p.Jra thn·ad u o dn relt1gio pdo i 1 m. d • tempo dt.> e>.t'ruÇà >. go \t.'rá reatl\ad • ecom mizando, a tm. alguma !>(Jbrecarga.
deu uário era ju ta mente o !a tu de puder e>.l"CUtar t.'m i~l • Outro- e pm\avelmeme mai de\ a tildor- illb'lt· Are i tagcm de lhrcad tamtx'm c p<b 1\el para threads de
ma operacionais eu tmtts. ~\a1 ainda: alterar a emântica mcnw comra o thrcad de u uario c que t prog~ ma- u u no. nlil . l mu n . ., o a obre rgJ do g ren ·amen·
do t.' •)tirá mudan~a em muiH pro •rama deu u<irio. d rt> geratmente qu rem thread em aplic:açõe na qua1 10 do tlm•ad é muito menor, há m n in t'nti\O p.ua i so.
ele bloqueiam um frequênda. mo, pur exemplo. em thrc.>ad-. d nú le 1 nàt) pr ·.,..m de nenhuma ha·
um trvtdt r \ eb mulútluead. E '>e thrcad estão razen- m.:~da de'i tema nãu-bloqueante. lém dh'>(J, c um thn:ad
rm um pnK cau a uma falta de página, ( nú lt-o pode
facilmente \oerificar e o rroce o tem thread para e. ecu ão Figura 2.12 M IP XMdo lhro usucil'l sobre lhmads
rhamJda
e, em ca~o afirmativo. pode e. erutá·lo enquanto aguarda nur k

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
~ tulo 2 Processos e hfeads 67 68 Sistemas operaoonar.; modernos

que thread de u u.irit t-m um pro o que execma em Uma W7 au ado. n ·· ttma dt> tempo de t-\ tÇào pode Processo Thread pop-up cnado para ttalat a
um i tema opera ·nnal m capacidade multilhr ad. e n: • lona r -.eu thread , s 'ralrm>nt marr.mdo o thread atual mensagen:~ que chega
modelo. ada 1hre.1d d nú lco po ui algum conjunu de >m >bloqueado e te mando outm da lhta de pmnrus, confi-
thr~ad de u u.irin que aguarda ua \ ' t'Z pJra u á-lu. gurando ..cu n."W\lradorr c rcinid.llldn-o. Dl'J>tlis. quando u
nú leo d brír que o thread origmal pode e e utar OO\'tl ·
2.2.71 Ativações do e calonador mcmc por exemplo, o pipo.• dt) qual de r tava tentando lt·r
agom lntém dad . u a pa~ina hr a qual o mu uma
Embnm thread de nú !co \tjam nwlhun· qu~: thrcad falia de página fo1 trazída du di 1), o nú h1 faz um outro
de usuário m a~ecto 1mponames. também ão imli oui- upcall (lilra o i tema de tempo d C\ u ~ n pam infom1á-ln
\elmentt• ma i ll'ntn . onm con"t'quênda di u, u~ pesqui-
subrc c 11e C\ ·nto. · t ·m;~ de ll'nlflll d · cxe u~ãn. pc1r toma
<oJdorc têm pn umdu meio' de aperfeí amenttl '>t'tn d~ -
própria. poc!e r inidali7.aro thrl'ad bloqueado imediatamente
i urdr uas boa propriedade . srguir. descrewremn<; um
nu l1 J-1 1 n li ta de prumo para cxc ur.1r mai tarde.
de~ . C'> mét\Klu'>, de'>Cnvuh•h.lo Jl 1r ndcr em et ai ( 1991),
t"hamad) a ti a õe do alonador. Um rmbalhu -.em~ ­
lhanteé'disrutidoporFdleretai.09 e ottetal (1990).
aiÍ\'JÇi ., do t'\ alcm.1dor 'iCI'\' m llJr.l imitar a run - Aade
cion<llícladl' ti 1hr ad de núcl >n - por~m om nwlhor (a) (b)
de empenho t' maior flcxibilidad~ - . em geral a' o ·a-
do aos pawtc de thrcalb dt' u uario. Parlllularmenh.', Flg~.ra 2.13 C um now Ih quando c. uma lmt\Si:lgE!Itl 1111 Alll · dd1 ·r m. 'I 1ApO · a dlogai.Ja
o~ thl'\'ath de u u.irío não d 'rriilm IH de fa7t'r hamada
dt• i tt ma c l)l'óais o;em hluquein ou writicar ante 'pa·
I da1nen. 1'1
da

dameme e ~ t."gUm rt.'alizar ena d1amada de 1 tema.


vantagem dou o de thread pop-up é que a la1~nda entre outro thread de ·e-
Contudu. quando um threac.l bll)qul'ia em uma d1amada de
í 1 •ma nu •m uma fahil d • p.iJ:ina. \Cri.l l>o'> Í\'el , :urar
a h gada da men....,gcm eu início d 1 pr< e<.<iam ·mo pude
nutru tlm·ad tkntru d< mt: mo pn · o'· huun • at~:um er muito pl'QUena lmo um e emplo. con . idere a anavel t'rriM mantid.J
thrt>ad prumo. Algum plan jam ·ntn pr~i • nt.' ~rio quJnclo 5o pdo U r1 • Quandn um !lfOC · (I>U um threadl fat uma
•lid~nciu • un guidil 'VÍl<lndo·~ tr<111 i"õ ' de • interrompido presente na pilhu. Emiio. fi a a ritt:rio du 1 - u~du lhrcad~ pop-up. Pur exemplo, em qual pnx: o <1 h amada de 'li tema que falha , o código de erro e col ado
m.'Cc s.iria l'ntrc o c.-;pa o do u uario c n du núcleo. Por tema dt.' tcmJ 1 de t.' l't.U~ào deddir qual thrcad l'"-.alunar thrcau c ccuta? thn:ad pode 'l.'r ., xutJdo nu ome tu Figura 2.14. o thn:ad le\t: uta c.:hamadil d •
t'\emplo, sr um thread bloqueia aguardando que outro ~ hr aqu •!J PU; o tmerrõmpído. o ma1 k ntcmem du nú lt·o. \t.' o i tema uponilr (lmr t o que não mo tra- parJ 'k!ber e ll'nt ~rmis...lo de Jle<>~o a um
thrt.'ad filça algo, não ha ra1ão p<Jril cnvuh r <l nü I· J, t: ·1r pronto nu alguma ter ·ira Jh rnati\'J moo. o nú l·o na igurJ 2.13 ). fJL'r t"Oill que ) thr •Jd pop· u~rto arqu1vu. 1 lema UI t.'ra 10nal retoma a r o,po ta na
nomi7.Jndo a im J sobrecarga da tran i ão nú lt"O-U u.l- ·up c ccutc no 'Sfla<;o do nú k•o e em ~eral mai fálil l' \'ariavd ~ll bal trm,,. Oepoi que o controlt.' n•toma para o
rio. ~i tema d • tempo de C\ uçiio no e pil o do u ualio m.1i rapido du qu · pb-lo nu · JhlÇ!I dou u.íriu. Além di \O, thr ·ad I - ma .mu; CJUl' clt· tt.'nha upurtunídadt: dc I ·r
pod • bloquear o thr •ad d • incr ni1.a ào <.: d lllt.' mo e • urn thrcad fMIJl-up dc núcleo podL· radlme111L' ter ac u t rrno - . 11 c aluna dor dt.'ddl· qut.' othread J já teve tt•mp<
rolem r outru. a toda~ a 1.11'- la e an Ui.lltl'iitl\ o rl F/ ne t: ~rio an ufiticme ·CP t haH•ia Jl.:lra o thrcad 1. F'll' c cnua
Quando .Jo u adas ativclÇÕl" d l 1.'\calnnador. 1 nú· proc~samemo de lntem1pções. Por outro lado, um thre· uma chamada opm que talha e que fa7 com que o romeud<
leo atribuí um cenn númem de 1 ron· adore' vinuai a ad d~: nü leu Hn 'rrt)\ pcxf • au ar mai dan< qu • um d t:rm,, 'Ja 'nbr •po 10 eu udi~:n d a '"ti> thr ·ad J 'I'
CJda pmce me deixa n si tema de tl'mfM\ d e. eruçii<~ 1no thread de u uário com erro Por e\emplo. ~ a t' eru ão p r a p.1ra empre QuJndo readquire o controle, o thrcad
c pa~,o do u uário) alo ar os thrcad ao pro ·t.' adore . 2.2.8 1 lhreads pop-up llemurar rnuiw e não liberar a PU [k1ra muro riu ad. n I lerá o \alnr ·rradn e e omponJr · d milnt•ira lncorrcla.
b c me Jlli. nw tJmllém p<ldt.' \tr u'adn em um multi -
Thn:ad~ .lu ba tante útd em btcma dhtribuido~. dad I.}Ut.' hcgam p ldcr3 ·r 1crdido .
pro l' ador n l qual O\ pro e adore \oirtuai podem er
CPU~ rt.'at . n úmcw de prtKl' adotl'll \ inuais Jlocadu m e\emplo importam é como a~ mensagt•n que h •
pilra um pro t.' \ll inietalnwnte :um. ma u prtx:C,'>OJHidl' g.1m por c cmph>. requi içüc de c i1,0 1 ão tmtada!>. A 2 Converte do o códi mo oth d Tht d 1 Thread 2

~
pedir mllm e tJmbém liberar proce adore de que não abordagt•m tradJ ional ~ bl ~uear um pr ~ o nu thrt:ad em código ultith d
prcd mail>. O núdco 1 de wmar ti· \oha pnx:eo;,adort.: em um.1 thamJda de 1 tema · t.' a).luardar que uma
\uit<.., programa.' t'\1 tt.'llll'S ft mm e~Titoo, para pro-
virtuais Ja alocados para atribui·lo'i, em ~eguid,l. a outro'i m ns.a em chegue. Qu,md(), mcns.ag 'lll h ga. da é a i- Acx:ess (ermo art rado)
c ·-.o monuthr ad. mwert~ · kh para multnhrl'ad t.' muiw
proce o mai e\igcntes. ta. cu ontcudu é examinJdu c é. entãt , pro< ' \Jua.
maí complkaúo do que po a parett.'r. A t~uir, t tudar • ~
omudo. um caminho complt'tamente diferente tam·
A ideia b.isl a que fa~ e · t''>Qlll"rna fun lunar c a t:-
guinte: quando o núdt'O be que um thread bloqu u bém é po ~h·cl. no qual a hcgadJ d' uma m ·n\Jg >m f 1
lll(l'i a1 •na al~un d prullcma ímplí ado ne wrd . l
Open (ermo sobreposto)
(J>tlr c~emplu. tendu C\et'utado um hamada de istcma c.:om que u htema cric urn nuvu thrl·ad para lidar wm
com bloqueio nu o orrendo uma falta de página). elt' a' •-
..., o io;tema de tempo de eru ão dn proc o. pa ando
a mensagem. 1:: e thread e chamado thread pop-up e
é llu tradu na Fi~:ura 1 . 13. Um ~>lmtn fundamental do~ ~
uuno par.1metm na pilha u num ·ro d >thread em que tãu
e uma descr1çii d e\ emo ocorrido. A notificação ocorre
thrcad pop-up é qu • m à nov . não 1•m qu;llqucr
lllitóri.1- rel:btradon: • pilha etc. -que dt.'va er re t.lu·
f
Ermo e n peclonado
quando o nu I ·o ativa u i tcm..l d · tcmllt' de ·xt:~:ução em mda. ada um d 'I inicia rc ~m - íJdn c é id~llli<'<l a to-
um ·n1krcç11 inicial ' nheudtl, em ·lhantc a um 'inal no du~ V'> outro . I u 1 ' ibilitJ uc !ICjam <.riath ra1 idam ·n- S0 O U!iO de UI
'l . F ml' ani mo é chamado upcall. te. o no\'O thread é dada a mensagem Jl.:lra proc sar. A

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
pltulo 2 Processos e rcads 69 70 S•stemas operaàonais modernos

ana\ olu Õt'\ dO po ÍH~i~ para l"i e problema. ai Fun 'onar. Lia armazena o valor de um ponteiro na loca- imponame m n ionar tamb~m que d1)í de tôpi·
Uma dela~ c prolhlr 1 u'u dl' varkiH:i glohai' nmudu. r,ãu de rnt•nlüria a111crionu ·me criada pela hamada tWllt'_ w \l' apliLam i~ualmcmt·l>cm ao' chrcad . p1iml'iru-
por melhur que po'>sa r, ~a n~ão au)(lrá um onflito g/,,bal. Para ler uma variável global. a hamada ~ algu >mu pa ar mfonnac;ãn- é fácil . já que thread mmpanilham
wm muil ~>hware e\istcntc utra olu dO é atribuir um c•;pa~ou de enderc amentu wmum (thread em e pd o
bulplr - l g b<U;"buf Ir");
a adcl thread sua própria vnria\ci glc bai pri\'ada . con- d endt>reçamento diferente<; e qut> preds.am omuni ar
forme mo Ira a Fi~urcl 2 15; d~ c mo o. cada thrcad tem jn 3\\Unto da >munka ão l'lltre pro o ). muudo.
ua própria copia privada de (mlt' além de outras vari.wei o outro d r -manter um ala tad do outro • a t>qu ' n·
glubai • de forma que o wnllillll> !>du c\ ltadch. c c lcl~l. pró 1mo problema- •wm na um l'fL"'!/Tdltla 111CIIW· i apropriada - aplium- c igualmente bem ao thre d...
l"i a deá'iào ma um novo nível de t' opo. variaveí \lU· thr,·ad roramu/titllrtriJ"- e qu muHil muna e bibllou.'- PJra o mt>Smo problt>ma~ . a mesma soluçõe . A seguir,
\ci para todJ a rotina de um thrcad. alem dO\ nívei!. a nãn ão r ·cntranrc . Em outra~ palavra • il'> rulína nãu di curircmo is o no wmc 10 de proc.c so . ma~. por favor.
ni 1'nte d • npo d \ari5\' ·i \i ívci oment • J umil ~o projetada para qui.' e po'>sa !a1er uma t>gunda ha· tenha em mrnte qu o m~mo problema H o lu( tam-
rutina c \'ariá' ei 'i ivd em qualquer lt ai du pn grama. mada a qualquer wtina cnquamo urna thamada amcriur Um ultimo problema introduzido por threatb t: o ge- l ;an 'c apli arn a l thrcad .
Ter a n 1 à variá' ei globais privada ~.contudo, algo ainda nâ 1 ·nha lcmtmadu Pur ·xcrn1>ln u cnvi , dt: uma rcndamcmo di! pllha. Fm muiu i tema • quandt c orrc
um 1anw omple u. uma \l'l que <1 ma i< ria d<~' lingungcn men~agem obre a rede pode ser programado momando· li m 1r.m bordo da pilh, do pn e • o nucl o aJll'nil g; mn -
de pr~rama ão po« ui um modo de e pressar varijvei lo- - ·a mcn"-clRt'lllcm um buffer lo ah1aUo dcmru di! hiblin· te que o pmn• o terá autmtldli amente mai pilha uan- m al~un ll'Jlli'l opt>racíonar . rroce o . que Ir aba·
cai e van<heis gl bais, ma não furma intermediaria~. E te a e. então fa1endo um trilp Umc:rn.pção de o;c fi\ art• do po ui mtíhiplo thread • um pmc.-~: o tamh ~m dev • t r
para que o núd~: emi e a met15aRl'm O que a ontl' l' c Jham juJIIO\ f>tx.f '01 Wnlp.;lrliJhJr algum Jrnloll 'llJillCJIIII
Jll \Í\ •I alo ar um 'l)cda~ou ' d • mcmüri para ,1 gluh,li' l' múltipla pilha . C n·o l' I Í\ol'f ientc de toda~ l'\~ rilha~ . comum . .-. panir ch qual adt1 um j.l apdl d · l•r c l" n.'·
pa · á la!> 1ara ada muna no thread. como um parâmetro um thrttild tivt·r rnuntado ua m\'ll'><~& ·m no hurrcr •. cn· u nll lro não potltrá fa1é-la cre cr autt matí amcntr
tão. uma imcrrui><;ãu d · r ·I gio rurçar um ,havc.tmcnw ver. am1azcnamenw cumpartilhado l>txle C'ltJr na me·
extra. Lmbora não muito elegante. es a utu~ào funauna. por oca i:io da ocorrência d~ uma "falta d pilha· ( IJ k
p.1ra um o;egundo thread que imediatamente sobreponha mllria plinapal po 'ivrlmente em uma t>Strucura de dado
O outra man ·ira. ncwa' rtllin dl' hit'llinl · a p J ·m fault) . a verdad~:, ele pode nem pt•rteber que um erro du mídt'l>) ou em um arquivo ompanilhado; o te ai da
·r Introduzida~ para cnar. alterar e ler e sa \aria\lci ).\Ju- o bufl ·r turn ua fHliJlflil mcnSJgcm'? na mcml ria { tii reJa · nado com o cr imcmo da pilha .
Da mt"ima mant>ira. rotinas de alocação de mt>mória. m múria companilhada não altera a na1ure1a da \ muni·
ba i com abrangên ·are trita ao thread. A primeira chama· b probll.'ma tenamentc uão ãu m'uper.hei,, lliJ
p 1r '\CIIlplu. u mal/,• nu U IX. utamêmtahcla multo un- caçjo nu do probl·ma que urgem . Para entender wmu a
da pm.le wr alg > conw: nwmam qut> a mera immdu ão de thrcad' em um btema
flllnJnll'!> ~hre ou ()da me mó na- por e\.emplo. urna li ta unnunka Ju entre pr< t"'( funci ma na pracica. mn Ide·
• 1 _glo "bulptr1; e\i tentc não vai lun · lnar em um hnm rt•pmjcw. o mí- remo um ewmpk> ~imples mas lrliqueim: um pool de
·n adc.tua d · pt>rçiw di pnniwh d · mcmório1. nquanlo o
nimo. a. emãnu a da chamad de i tema JXxlcm pre- imprc ~ o. Quando quer imprimir um arquho. um pro·
Ela a loca memória para um ponteirn hamad , bufrtr nn m.z/lt,.- e tiver ocupado atualiz.andn e \J~ li ld • da podem
Ós.lr ' r rede tinida l' a. htblit trca . re~ rita.. tudo i esso emra com o nomt> do arquivo em um diretório de
he41)l ou em uma arca de nwmona c 1 · ialtnt·nle r •., •n'<Hla e. lar temporariamente em um e~lado rncon I tente, nm
para o thread que t>mitíu a chamada. Não ímpona onde a purllcaro que não arrmram paro1lu~r n•nlmm e o ·urrcr tem de er feiro a fim de manter omp.1tibilidadc com pro poot c pc tal. Urn outro pro u, o daemon de impr •
memoria e lt>ja alocada; omemeo thread queemlliu a ha · um haveamcnto de Lhread enquamo a ldbela~ e th e rem ).\ramas já e istrntt para o caso lirnílante dt um pro 1.: . o ão. H:rifi p ·nod• am •nre e h.i algum ar'wívn para e r
mada tem a c u l variá v ·I ~I >hal. c ouuo thrcad cna umo~ in on ht~nle'> • uma nuva ·h.1mad,1 h ~llr d um th~ad com apena um thread. Para ínformaçxie<õ adicionai hl't' imprc u c e huu' •r. u imprime e cntãu n·mow ·u
variá d global com o m~mo nome, ele obtem uma por- dHerentt:, podera \er ~ado um pontciru inválido. levando o thread • veja Hau er ct ai 11993) e Marsh l'l aJ. ( 19 I). n m dn dir tório.
çâo dHt•remc de memuria que não wnllha wm a e btcnte. pm •rarn3 il uma 'IJÍda ilnnrmat. on enar todo ~ ~ pm· lmaginc que no o dirclllrio de )pooltenha um gran·
Dua cht~m.1dll n ne ~na p.;~ra nbt r t1 o il blema de uma maneira adequada e efiçaz ignili a rl'C\lre- de número de vaga . numerada~ O. I. l . ... cdda uma
arl.hei glul1.1~ · uma para l''> rewr nelas c a outra para vcr. brbhocc 41lntcíra. Fillê· l l não~ urna ilti\rdild trivial. capaz de onter um nome de arqulHl. Imagine tam~rm
lê-la . Para e<;crewr nrla . algo mo Uma olu~·ão dílcrcnte é fumctcr a tada rotina uma qu hajil dua \oatiávei mtpartllhalla': aída. qui.' apon-
prot ão qu ahcra um bil para lndí r que a hiblime ..., ta para u pnhimo arqul\·u a er ímprl"i,u, cntradil, que
ufvlr", buO,
t.i em u u. Qualqu ·r 1•ntativa de outro thrca u r uma apunLJ JlJrcl a rrú ima vaga Jl(l dirt·tnlio. E a. UUtl \a-
muna da biblioteca - enquamo uma chamada ilmrri r riávei J)(ldtm mui tu bem li ar em um arquivo cum dua
ainda nãu Ih er tenninad l - • bloqueada. Embora :.. • Jlcllavra di JlOOÍ\ d a IOdt u prtx.c . o . Em um dado
m lodo po ~a lunoonar. el t>limma gr,mdl.' pan do para· momento, a vaga O a 3 e tão vana<. (o<> arqUI\'OS Ja fo -
CóÓI do
ltlread 1
lcli mo puten · I. ram impr~ \t> 1 c a-. \'ét);a 4 a 6 e\lão precn hida ( om o
Fm wglllda. con~•dere O\ in ai . Algun o;.'ín logi am n- nome do arqua\ o na fila de impre ão). \ai ou meno
Código do tc e<.pl.' ifi .," i • um thrcatf; J• uutm'>, niiu. Por emplo, imuh neam ·ntc. U'i pro ·~ U\ A l' 8 uccidcnl qul' qu •rem
lhr ad 2 • um thrcat.l [a7 uma chamada Blrrn\ tem emido para o olt ar um arquh·o na fila de impre são. a ituação ~
Plhado lnal re ultante lr an thrcad qu • fet a hamada. ' omudu. ilu lrJda na Figura 1. 16.
ttlread 1 4uand thn:ad )à<> implem •ntado inteiramente nu ~ pa· Fm a t>m que a lei de Murph} é aplicá\el ( e algo
ço dou uário, o núcleo nem me mo 'õbe obre os thread\ puder dar errado. ccnJm ·me dará 1. r~txl ncorru <) t:!(Ulll-
P1lhado · dificilm nte poderia comht7ir um in.1l para othn:ad ur·
lhread 2 le: o proce so A lê 111 c arma1ena o valor. 7, na variao,.el
relo. Uma outra complica ão ocorre o;e um pro o puder In 1 ham da pr~;ximd_\' .~a_lil're. Logo em •gurd."l o<orre
GlobaiS do ler ~omcme um alanne pendente pur \'Cle variu; thrt:ad uma interrupção do rch)gio c a PU de idl.' que o pr< ê o
lhread 1 esuverena fillendo a hamada i!Rnt indep·ndentemente. ,I já e\cCUI0\1 o ufi ·emt>: ntão haH ia para o procc·~ o
Globais do 8 E 1e também le entrada e obt~m r~:ualmt>mc um 7. te.
ltlread 2 d, me-smn mndn. .umaLena n 7 em ua variável f() ai pnhi-
IIW_ I'c7.oJ•l_ln'Tt e e in !ante, ambo <~ procc <h pen am
I Figura 2.16 TIIrCI:Ids podem ter v

t.lU • a prci i ma \'ilga a ponwel c,, 7.

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral


Professor Wilson Amaral Sistemas Operacionais – Unidade 02
capitulo 2 Processos e threads 71 72 SIStemas operacionais modernos

D~lório projeto de qualquer \i rema perJcional e um a. um o que A eo1~ na reg enlace


de spool 8 8 rcgiOO cnlle8

(
e tudar mo t:m detalhe."\ na pró íma l'Ç\les
O problema de t'\'itar mndiçõrc; de disputa também
podt: er fonnulado dt: um modu ab trato. Durame uma Processo A
4 abc out "' 4
~-----4 pane do tempo. um pro e \O eq.i ncupJdo la1endn com·

~ s 1-. . .,;prog.n
p._rog..:..c_~ puta ~ interna' t: outra\ loba que nJu lt:\ am a wndi-
: B lenta rar : B entra na
1
B detxe a

-----r----.:t-V-~-·=::-K~=re=g=o:C:II:I=~k~-r
Ca o-g--c-ri_l_Ca
~ 6 (x: tk dl pura omudo. al~uma v ?L'S um pro c u pn·-

7 cba tl.'r a c '<I à mcmc1ria ou a arqui\o mmpartilhadu uu


t~m d • la1er mura\ oi ,1 imponallll'\ qut: fl(lll ·m a io-
é~~ llilr di\pura . qut:la pJne do pr< grama em que h · J '\\<)a Pr B
memtkia compartilhada e chamada de região crítica (mtl· I '-y-----' 1 I
1/ r ogi 11 ) ou .do cri LI a {critim/ s ai,m). c pudl:... ·mu I B blOqueado • I

T, T2 T3 r•
•ljcitar a oi\<'! de mudo qut: nun doi prt • o c\tivc •
F gura 2.16 Do processos qu amomOm '>t'm em ua regaõ~ cntica ao mesmo tempo. a di pultls
con1 rt~ll<ltht fel 1 ~ no .rnpo Tempo
\Criarn cvilada\.

pmc '\ o 8 pm~ :)lU • w ' \t: u .lu. Ek amtaL ·na


FmborJ · \.:1 llu ~o impc ,1 a' condi ik de cli puta,
i 1 não ~ ulici •ntc para que prou• u paraldtl'. C\)l)(l(.'-
I Figura 2..17 ~du cnr

o num~ de ·u ;Jrqlllm na vaga 7 • .llllaliiJ in lmo . n·m 1 rrctil ·fiei m mem~· u ando da lo' m(lilnilh.-
p<~rúr di o. l'lc fará outra COI!>cl). de)). Prcruamo\ ~ri fa1er quatro cmdrc;ilt:\ para hcgM a meute wm 1 um re ull<lllo ua interru~ão do rclógio tlU de Variáveis do tipo trava (lodt)
FvenwalmL'Illl', u pm c \() ~ ua novamL•ntc.> ,, uma boa lu ão: outra mtcrrupc;ãu. Cum J' íllll·rru~õc dl~ig da . a PU lmo uma •unda tl'ntatha. bu qu •mn uma \Cllução
panir d • nnd • Jl<!Wll V rifi ,, pmnma_t'ct;a_li~·u. t.'O tmtra 1. Dua prt o' nun a podem e rar imuhan amt:n· nJo crá mab dta\t:ad para muru rmx.e o A~ im. uma de oftware. on id r que haja uma tmira variável rom-
lá um 7 c escre\·e u nome dl' arqul\o na \·aga 7. apa- te em ua rL~ill critica , vrn que lenha d. ~bílit.ldo ol tnll'ffilp1,1le\ um pro l' o pJnilhada (trlli'J ), im iJimeme untendo o valor O. Para
g.:~ndo u numc que o pro' • '<I 8 J .:1l uu dt: ilÍir lá. m.lo. 2. • ada pode er alinnado obrt' a velo idade ou obrl' pode erifi ar e aruali1ar a memória omp<l nilhada sem te· l'lllrar ~:m ua re •ião uuita , um pro ~ · o t~ ta Jllll' t' ha
•1e ul ulaJW. imll_r~a_ln•rt I. qul' \' . · p· · em m. u númeru de CPU'>. mera interven ão d um omro pro 'iSO. tra\,,, \'t'rifi anún n v.1lnr dil v.lria,cl trtlm. c tmm rur o. u
O diretório de '~ I t"\W agnra tntemamemc onsiswm~; D • mndo g ·r.ll, \J abllrd.lgl'lll nJo .,. 1111er' o,am •• prt c u ah ·r ~ vari.iv ·Ir~ ra I c entra 11;.1 região ríti ·a.
3. Nenhum pnxc . o executando fora dl' UJ rlogiãu
•h~im . o d,, mcm de 1mprc \Jo n~u mllolfil naU.1 de crr du. e tra ~u ja t<itlver om o valor I. o pmc~<;a imple mente
criti a pode bloquear ouw procc O\. porque n3 é prudente dar .10 · pmce so<; d~ usuario o
rna\ n pn ·t• , R nun i1 n• c.>bt-rj qualqu •r .,..,dll . ilguardará até que l'la 't' rumc O. A· im, um O tgnifica que
4. , enhum pn~~:es'>o d w t"il rar el ·rnamt:lll para poder de de llg.:~r interrup õ up nht1 que um dcl te·
O usuário B fi ará ett'mamcnll' ddrome a ~ala da im- nha leito i-; o e nun .1 mai a 1 nha hgJd . Eç e podena nenhum pn l' o e'lt.i ·m ua r:giàu criti a l' um I indí a
prl'' nra. J!luard,tndu e Jl rançcl. o um.l aída qu nun a entrar em ua rt'giào oitl a.
'ruflmdu ·1 tc:rnil . ltórndJ\'<l, en"\temafnrummulti· que Jlgum pn e-..o e-.r.i em ua reg~iic crítica.
virá. itua ii ., umn c ..., - na quah dni nu rnJi pm· Em um .;enrido illhlrato. omp( namt.>nto qu qlll:n.•· lnl·li7ml'nte. • o1 ídda apr..: · ·nta C).Jtamc:ntc o1 m~ ·•
pn es ador (mm dua ou mais PU ). des.Jbilitar J inter·
ce~ o c tão lendn nu e~crevendo algum ado compar- ffill' ~motrad, na Ftgura 2. 17. li. n prc l"'<' mra em
rup OC!> afetará omente a PU que: e ecuwu a in trução rr'l.1 f.1lha qu · \~mo nu dir tcíriu d · pool. u~mha que
tí lhauu c 'uju r •,ultadu lutai dept·ndl' d · qu m t• e uta ua rcgiã , crítka no u:m~t r •. Um~ u u dt:rml • nu tem pu um prtxl.' S(l leta a \ ariàvd tnm1 e H' ja que ela c O. Antt ·
d ~de abilitar). A outra wntinuarãu e\etutandu e
prl'ci am ·nte e quando- ào h amada de condi - I' . o pn , B ll'lliJ ·ntrar em ua rl'giãu crítl a. ma fa · que pt alt rar a variável trat·a para I. outro procc o i
de orrida (rclú' tJndilím.q . de11uração dc prugrama'> ltia purqut• outr l pro o já e ta cm ua rc •iiio rítka. c tendo al~ u à m ·nu)riJ wmpJntlhada.
Por outro lado. frequl'ntt:mcntl' nnvém ao própriu · alonado, e~c utJ l' ttlt~:ra a aríâvd tra~ ·a para I . i\ o exc-
qu ontenham condi õe dc omda não é nada <hwr· é pem1ltido que <~pena um por ve7 o la a .on qut·ntc· na r no\'amentc. 11 primt'rrtl pw • o também nloçara 1
tida. > rc ultado da maaoriil do IL">tt.' não Jflrt">entam mcntc. 8 lica temporariamente su ren o ai t que. no tem· núdl<tl UL">Jbilitar intcrrupçt">c~. para alguma 1 1uca In ·
na variáveltravd t', a tm, u UOI pm c o c tarão cm ua ·
pn blem '· ma .. uma hora. em um momcmo raro. al~u po r,. r1 del e sua r gião rillca. pennilindo que 8 cntre truçõ · . ·nquanru e~ti\cr ahc:ranun \ariávcí uu li\IJ . •
regiõ críti a a , m mo tempu
c Iranho e llll"\ph .ivcl aomtcce. iml-diatamcmt:. Por fim. 8'><!i em r.1 c \uhamo11 a '>iluJçâ!l otOrrer uma interrupc;ãu- ptlr e cm1~0. enquanto a li ta
gora vc> ~ p( de p ·n r qur ritl flCl \J\'el nnwmM
ri inill. em pr e !.Cl l.'m ua regiõe cnli a . de pmce o pronto e tiwr em um tado incon9 ten·
e se pr blemalendo primeir 1a \'ariavel rra1·a e. entãn, \'eri-
_____1.UJ Regiõe críti te - . podera h,wer c ndiçtle de onida. A n lu ão t':
ticâ -la no,am nte. um pouco antes de arma7enJ·Ia. \ \t1s de
útua com esp odosa de ~biHt.Jr interrupçõe muit.J vrne ê um.1 técnic,, b.J tan-
qu~ la1cr fNlta e itar wndi~tk de di [luta? rt..,~>'­ que i so adiama1ia? A disputa cnrjo owrreria ·o ~~undu
te l'uil dentro du prt" priu i tt'ma operad lnal. ma inadc· prc t'\ n mndifi a a vari.h'l'l trava um pou n depm\ de
ta para evitares e probl ma. aqui l' l'm muiiJ\ outrJ atua · l'\la 'l'\dO t: tudaremu v.iri.h ahcnlilti\ il'> para re..tli-
quadn omo um me aní'imo geral de e · lu ão múrua rara n primeir , pnKe '<I ter tcrmínaúu !lua ., •umla vcrifi çãn.
çõcs que t'mol\am memória. arquivo ou quillquer outra 7<Jr e lu ão mútua. de modo que. enquanto um procc ~
pn 1l\ d u uário.
coíc;a ompJrtilhadJ. c en ontrJr algum modo de impedir e tiver ocupado atualizando a memona wmpanalhada cm
que mar de um pro e so leia e esae\ a a l m 'mo tempo ua r giãn criti a. m·nhum muro prn o cau e probiL'mJ A po<; ibtlidade de reah1<1r e · lusào mutuJ desabttitan· Chaveamento obrigatório
na memória rompJnilhJdJ . Em outrJ palavra . preci a· imadindo·a. do mterrup c)c..- me mo dentro do nú Jeo- está ·e tor-
nltl\ de e lu ão mútua (mutull rx.Ju~ii n). i w é. al~um nando mcMr a :ada dia em virtud · llll núml'm c l'ntl'
modo de as~gurar que outros pr !Ce~sos sejam impedidO'> Desabilitando interrupções de chips mullmúd uatê cm P popular . Dms nudco já
de u~r uma \ ari.i\ el ou um arquivo companilhado que Em un1 . i rema de: pron· ·~dor únim. a \Cllu ão ma i 'i.i omun: • quatro l"tâo pl"l"it'nt~ ~m máquina\ ofi u ada
j;\ tiver m u ['Ot um pr e . ;\ dificuldad antc.>rinr tmple é ilquclJ em que ada proc~ o de JbilitJ toda\ a., c: uitu ou 16 \irât em brcvl' Em um i tema muhicorc (mui·
1 orrcu porque ll pn ·~ o 8 u>mt'\~XJ u~mlu uma da va- imerrupçik' Jugo dl'poi de entrar t'm Uil Tl"giào uítica e a ti pro c ti r). d • abítitar J imcrrup • de um PU não
na' e1 ompartilhadas ame que o pro o tennina ~.lbilitil imt>diatam ntt' ante<; I air d ·la. nm a\ inr •rrup· impedl' que outra~ CP imerftram na operaçõe~ que a
de u ·-ta. A c c >lha da' upcra,.c'll.., pnmill\'il adcquadil c;ões de abilitad.as, não ptlde omrrer qualquer interru ã l prilllcira CPU l' tá c.\l'lUtandu.
p.1ra reali1..1r a exdu ào mútua é um impon.mre tóptro de de relógio. A PU ~ cha\•eadil de pro~so em processo o·
ma ntai '>tlfi ti atlo ãu nc

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
caprtu o 1 Processos e threads 73 74 Ststemas operacionais modernos

whYe (TRUE) { nJ lritkJ. 0 JlrrK ' S(l 0 fi a li pt'll\0 Clll 'U ~~ O at.: #define FALSE O
whlle (tum 1• 0) r laço.,: que procesc;o I oi que a \ariavellum em O. Em nutra #define TRUE 1
crlt1C31_reg on( ); lldefine N 2 I• número de processos •I
tum s1 ;
palavra • chavear a ve1 não é uma boa ideia quando um
noncriücal_reg!On( ); doo. procc o for muito mah lento que o outro.
intlum, I"' de quem é a vez? I
E a ~ituaç3u "iul.l J mdiçãu 3 c tal ·lc ida ant ·rio r· lnt lnterested(N). I• lodos os valores O (FA LSE) •I
mente: o pro ~ o Oe tã wndo bloqueado por um proce so
(a) qu • n.iu c tá ·m ua região lTrtiCJ. Vuhandu ao di r •tóri de void enter_regton(int process): I• processo é o ou 1 ..1
ronl dt uido há pouw. • a a emu agora J regtao (
while (TRUE) { critica com J leitura e c m a e rnta no diretório de pool, int oeher; I"' número de outro processo •I
whlla (tum 1.. 1) r laço ·t . não \eria permuidu au pr t"i~O O imprimir outm arquivo.
cnbCal region( ); olhe r "" 1 - process; l• o oposto do processo •I
1 i u pr c 'l!l I ntarla lazcnd outra wi a.
tum .. o: ínterested[prooess) ""TRUE; /• mostra que você está interessado •/
noncritical_reglon( ); a n:rdad ·.c ~a luçã, r ~ucr que ) doi pro lum "' process; I altera o valor de tum •I
havei m obrigai na mente a entrada m ua regi-e rn · whíle (tum = process && interested other] ,._ TRUE) /• comando nulo I;
u a para, por ~wmplo, em ia r eu arqutvo para o \puol
(b) :\:iu cria pcnnuidc a nenhum dele~ ulmar ao me mo
void leave region(int prooess) I• processo. quem está saindo •I
Figura 2.18 Solu • propol t pare o p blcfll8 da tempo doi~ arquivo no c;pool. fmbora es~e illgontmo e\~te
(
cnlt ... Proo o. (b) Proc•lS!' 1 Em . mo. o· toda a lli'>JlUl<h, ele não ~ um landidato kalmcmc ~riu interested[prooess] = FALSE: I indica a salda da regiêo crítrca •/
t~«<Jcl ri 1 1~ para urna oluçãv. J)(>h viulo1 a wnúiçãu 3.
cor xlo. wl tia
Soluçio de Peterson
não é previ ivel porque a meml-lria pode e gotar em um mutud
Combinando a ideia lh: alternar a \ ez 1 om il variá-
momcm críuco, cndo prc<:t!> 1 im•ocar o colctur de li o
vel tum) om a idl'ia da variei\ •i de trava l' de advc:r-
l'l•lfhlge ,,//, ·fllr) em uma hora in p<muna. I c;o não a on·
tt'n ia T. Del..ker, um matemáti o holandt' , de envolveu m id ·n· agoícl u a o em que n doi pr1x:c. cl cha- c~und > pmer allur no barrantl' lltu au• ·a palavra •ntrc
teceria c 1m C. em qu · nà 1 h.i l•llct. de lixu. Uma um·
milm nutr_n;il711 qua e imultaneament~ . Amblh armaze· a leitura a ec;critJ . 11 vcrdad • de ahilit r rnt rnr11 ôe
paração quantilativa ntr C. +. la\a e nutra quatro
narão \CU número de processo na variá\ el 111m. que nu proc ~ad r I não tem nenhum cf ·ito obre o pro · • ·
linl!uag ·n, J)(l • ·r ·rifi aJ.l em ?re h ·h (2 01.
am1a1 •n u flHr último · u que nma - o primetr > ~ \() - adur l. O unico modo de evílar que: o pro b'>Jdor l entre
a Fi~ura 2.18, a 'ariáH'I intl'ira wm. in i ialmelllc O, brt·pmlo r perdido. uponha que o pfl t I e crcva por na memória alé qut.' o pm(c dur I tenh lt:rmitU~du 1:
~rw para controlar a \ez de quem entra na regtãu ríti a e
úhimn; dr em do, ,, \ ,lriávelwm n tém I . Quando am- im dir u llarr.Jmc:mo, qu requer um cquipJmcnto dt:
erifka nu atualiJ.a a memória wmJlanUhada. lnii:' !men- bu u~ prun o che~am ao mando wl. o pn ~ · o O hardwal\' ., • I (Da i Jllltntc:. uma linh, tk hilrram •ntn
te, u pr e\'141 O in peciuna a vari1ivel tum. en nntra lá n nãn ~ ·ema c1 l.1ço c •ntra em ua r •iãn críri a. llr • o
\alur Ol' entra ·m ua r •gião nti a pn t'\ I também a'l 'llUrandu que: u bJrramcntu ·ja imp ·dído c que não
l ne uta u laçn c não ·ntra em ua r·~tãu crítk.J até que o e.leja di ponivel pa uutro pnx.e adore'> all:m daquele
en mra la o \'alor O e, então, lica m um laço fechado procc ~o O <;aia de ua rl"gião critica .
tc~tilmlu ·1mtirtuamcntc para \cr quandu il v.uiav ·I 111m
qut: o impcuiu).
~e toma l. Te tar cnntinuameme uma variável até que A instruçio TSL
Para u ar a in tnt ãu TSL partircmn de un1.1 variá\cl
algum lor .1pareç,1 c chamado de e pera o io (busv gora e tudemos uma propo ta que requer um peque-
de tr,wa ,m!"lnilh<ldJ, /, k. pJm onrdcn. r n J c 'iO à nu--
Wtllfiii!J). e<ipcra odOY d veria em geral c;er evitada, j.i muna ·ump.milhadJ. Quando a v.:tria\ ·I l k lur O, quill·
no au\ílío do h<trdware. \\ui lo cnmputador · - e'Jit' 'ai· qu •r procc o podcra toma-la I U\ilndo a in trução TSL ·,
que ga ta tempo de PU. mente quand 1 há unl41 e ~ • mente aquel JlrOJetadn om múltiplo prO<\' ad r~ -
tativa ran .iv I de que a c pera eja brev é que ela é usada. cmJo. lt·r uu l"\ltl'\W na memtíria wmpartilhada. Quando
tc?rn uma in tru :iu
Uma variá-..d dt: tr.na QUl' USJ a espera <ICÍO a~ mamada terminar. o pro ) olocará a variá\ l/t'ík de \' lta em o.
d~ trJ\\'1 irJtóriJ ( pin I k t. TSLRX,LOCK lançandu mão d ·uma in~ru ãn urdin.irla n
Quando det a a regtã< nlicJ, ) pr< e o o põe J (tm and .f it /,•lk- te te e atuali1e \ ariável de trava!. que 'I .1 inmu ão tX)dc ·r u'ada para imp•dtr qm·
\a11â d 111m crn 1, para p•rmilir qu · 1 pro o I entr\' (wtduna da \C~UIIliC lllillletra: ela lê U UlltCÚd I da mcmtÍ· do1 pr e n entrt'rn ·imuhan<•a mente em u.1 re~iõ'
em 'ua região rítica. uponha que o pru ~ o I tenhJ ria. J pala\ ra INk no rcgJ trador RX e. então, arm.a7 n.1um riti a ? A ulu Jo é dada na Figura 2.20 . L.i é mu,trada
tt:rminadu rJpid, mente \lhl região uíti a c. a im. Jrnbo valu r dit ·r ·me: tlc 1em nu ·nd ·rc-; , dt• rncnuíria h k. "' uma uh-rotina de quatro in~truçf' em uma llnttuagem
o proce o~ não estejam em ma regiões críticac;, m J Vcjamv ·umu t '1.1 ., lu ií , lundona. lnidab1h:n· O{l{'rações de leitura e arma7enamento da palavra ão t>gu· a'' •mbl · fi tída (ma., típtlil) . prim •ira in truçã 1 IJlia
variável tum em O. Agora. o pmce . 1 O • e tta todo o te. n nhum pr) c \t.i em otra região ríti a. Então. u ramcntc indivi ivci - nenhum outro pru c 'i!dor podc ter o' ,lll)r antt.•rí r c.la vanávci/C'do: no regi Irado r c ptie a va·
eu laç rc1pidamente , aindo de ua região critica e rolo · pr ce~n O chama t.,llu_ngiNI Ele mc1nife<>1a eu intert"i e a , a pala' ra na ml·mcíría enquant a rn tmção não ter· riávcll., k em 1. Em.lo. u al1 r ante rim t: lmparadumm
t.ando a 'ari<h cl 111m em I . Ne e ponto. a 'a ria' d 111m (S revcnd() •m u elemento do arranjo mwn.'Sttd e põe a mmar. A PU que c tá c utando ln. tru ào TSL lmped' O . c u alor anterior não lur O, dl.' já t tará impedido;
t: I • <I <fc)r pro tãn e tc\ll, nd, em ua r ~iôt"'> \ilriâvel tum em O. orno o pmce so I não e ta intere - o ace~ o a barramento de memória para proibir que outra a im. o pro r.1ma ape na 'ohM.i an iní io e tc'itar~ a va -
niio·criu <h. sado, tnlt r_rtgt(!ll r toma ímerliatamente. e o pmce sn 1 PU tenham a e •;o 3 memória enquanto ela não tem1ínar. rr.in:l nu\Jmcnte. Cc o uu tarde <1 ariâvd • tornará O
De l'l'(Wnte, r prt e<.c,o O rcnnina ua r gião não oiti • hamar tlll(t'_rt;hm <~gora, cl· fi arj o;u JX'Il c1 ali té que impurtallle notar qut· impedir c1 barramcntn d • me·
c volta ao inído de cu la . Infelizmente, a ele não erá inú•rt ttJfOl "J pi1Ca FALSF., um t•vcnto que ocorre \Urnenle mória ~ muito diferente dt des<thilitar intcrrupçi e<.. De a-
quando o prOCt"i'õO O chamar ltm _rc._o~ioll para air de ua bilitar intcrruf)\llt: c dcpoi c: c: UIJr a leitura de: uma pa-
região crui a.
lavra na memória eguida pela ec;crita não unpede que um

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
capitulo 2 Processos e threads 75 76 Sistemas operaoonais modernos

enter region: t' "con umidurt: . ma~ oment~ Para cxprc ~r drarnada., de \Í tcm.t cumu
TSL REGISTEA,LOCK I copia lock para o registrador e põe lock em 1 um produtor e dl' um on umid waket p em C. •la'> ·rão mo tradao, mmu chamada d • mti·
CMP AEGISTEA,ItO llock vaba zero? 1 lifi a J'> -.ulu ( :q nas de bibliot~ca. Ela) não são pane.' da bibliote a padrão.
JNE enter region 1se fosse diferente de zero. lock e aria ligado, portanto, continue no laço de repet.ção O pn>lll ·ma c urigina qu ndu o proouwr quer tultx:ar ma pr um i v lm ntc l' I Miam di Jllllin•i m qualqul r
RET I retoma a quem chamou, entrou na região crluca
um novo Item no buffer, ma e! já e tá heio. ~ luçào é 'li tema qu • de faw tive e c .,, ' hamadu de ~i'>temt~. '
pirr u pruc.lutur rara c.lurmlf • ó d :'IJlCrtá·lu quandu () ( 10· rotina ;, m_tt.'/11 e rmww_umt, que não ão mo'>trad.a • in-
leave region: umidor remu' r um ou m<Ji itcn . Da m ma m.1ncira. • crem ·rem \Cm it n tlu buffcr.
MOVE LOCK,IIO I coloque Oem lock u on umidur qui cr rcmm a um 11cm LI l bu ffcr c pem:bcr g ra vohcm à condi ào c.lc dhputa. Ela p(ld' ll or·
RET I retoma a quem chamou qu ·e tá v.11io. ele donnir.i <Jté qu o produtor ponha algo rer pelo fato de a variá\el 'UIIIter a 'o irr tríl . eria
no buffer c o de~pcrtc. po !>Í\ cl ucorrcr a c 'Un1te itua ãu: u buflcr c t.i \JLJO e
Figura 2.20 Entn 11 in!>truÇ&O TSL
E !>C m~tudo 1a1cc.:l' ba tantc im1l • . fl1.il acarreta u o con um1dor acaoou ue ler a v<~.riá\' I '"'""' para verificar
mesmo ttpo de condi Õe\ de urrida que v imo~ antenor· -.e eu valt r e O. , ' \ ~ m tante. escalonJdor deode pa·
Uma 'olu ào para o problt-ma de região críti a~ agora H~ t'C\Jtado rnemc wm o diretório de pool. Para mantt'r o t ntr ll' rar de cxet1Jtar o c n umidor tcmpor<~.riamente e mmeça a
direta Ame. Ul' cmrar em ua a-gidu critica, um prott.:\!ltl do núm •n de itl'll OCl buff r. rr ar •mo tl umJ vari.i· c trutar n prndutor. pmdut r in r• um item nn burt r,
chama rm,·r_rtgw11, que fa1 uma e~pera o io a at~ que de vcl, u.lliiiC. c o núrneru má imu de itcn que u bulfer po<k in ·rem ·nt a van.h ·I ,11111/e per •bt.· qu · ·u \'Jiur Jtlmil é
t"'lcja li\ rc de trava; então de verifica a \'ariá' ·1/o.:J; e re· c nt r f< r •, t1 ódig do produtor verificará primeiro e o 1. In f rindo que n \ alor de , 11111 ra O c qu o con~umid r
tom<~ . Depoi da regrão cntl a. o pr t o h.lrnJ ltaw_rt·
\clllf da van.in:l.·oum é N. e lur. ) pmdutur dum1irá: do Lle\erta ir d nnir, 1l produtor hamt~ mtk,•up p<~.ra a rdar
'lh111. que põe um O n<J 'o~riavd /ild;. im orno toda a contrário, o pmdutor adicionará um item e incrementará a u wn umid Jr
oluç"l bJ eada em regi4'íe crítica . o pr~ o deve cha· ariável Dltlll. lnfelí7mcnte. o on umldor ainda não e tJ lngi amen·
mar mcaJ(</1' 11 c l~üw_rtgit.'ll crn lllt>llll'nlu orrctu J\lra O •dig Ju comumidor é rmilar: primdro verifi a • te adormnidu; então, u inal parJ amrdar c pcrdidu. Na
tl método fun ·una r. • um pro c '>ll 'trapa car', a c lu\àu
u valor da ari.i\·d • um c O. Em 3\o afinnati\'o, ai t.lumtir: pni ima Vl7 ·m que u wn umidUH"I:c utar. l 1 rá u valor
mutua ralhará. c n:io furO, remove um item c dccrc ·o wntadur de l. de •'11111 anteriorm ntc lido por de, verifi ará quc u 'alor ~
Urna in tru ãu altcnMti\a a TSL4J XCI-G 1• \we tro a m ada um do' pm c o<t 1 mhcm te la c noutro deveria c lar O dormíro.1 ~1ai ·dn ou mai tard, n p iutnr flr ·n·
onrcúdo de du3 ~içô( at mí amentt. por •xemplo. .:tlurdado c. em ,,l,u afirmatí\'u. o cl • perta. lúdíl,ttl para hcr.i tudn u burl ·r • 1.1mb ·m dormirá \mbn dormirãu
um rl.'glstro e uma palavra de rnt'rnoria wdlf:O e mo tra· ambu • produt<lr c n~umidM. c mo tradn na Figurn 2.22. para emprr.
do nil F1gma 1.21 e. mo pod • •r 'r t<. · oo i t~meme o
mt: mu d olu~;ãu wm1SL Toda a CPU It11cl 86 u am
in truçõ XCHG pJra mcronizaçiío de bai
~defulO N 100 I• número de lugares no buffer •/
int count : O; I • numero de itens no buffer •/
2.3.4 1 Dormir e cord r
\t,lu ão ue PctcNlll c a <lluçãu om ba · ·m TSL ~us re<ipOOÍ\'O void producer(vold)
{
ou XCHG são correta , ma~ amba~ apre~ntam o defeito de
lntitem;
pr ·ti oJr da 1:. p ·ra tKiu a. Eml·~ ~n ia. 0 que c \oJ olu üt O problema do produtor-consumidor
fa7t'm C:: QUilO , quer clllrilr em ua rq~iâu rili a. um pm· While (TAUE) ( J-• repita para sempre •/
c~ so wrifi a e ua crurada é permitida. Se não for. ele fi il· ítem produce_item( ); I• gera o próximo ítem •I
ni l.'m um 1.1ço t' •rando aat' qu ~ja pt>nnitida .1 emrad.1. lf (count = N) sleep(); I• se o buffer estNer che o, vá dormír •I
e m~tudo nãn ) ga ta tempo de PU. ma t<Jm· insert item(rtem); I• ponha um item no buffer •I
bém pt>de tt·r deito· inesperado. on'>idere um c mpu- count - count + 1; I• incremente o contador de rtens no buffer •/
lf (count = 1) wakeup(consumer); I• o buffer estava vazio? •I
tadur tml dni rro< · ~o': H, m JhJ prlondadc. c L, 1 m
baixa pnuridaJe. A rc.:ra~ d · c c.1lmr<tmcntu ãu w que bém • pm Í\ ·I gl'neralíJar u prublcma para m pmdut rc\

enter region:
MOVE REGISTER,jt1 I inSira 1 no regiStrador vold consumer(vold)
XCHG REGISTER,LOCK I substitua os conteúdos do registrador e a variação de lock {
CMP REGISTER.IO llock valia zero? lntitem;
JNE enter region I se fosse diferente de zero, lock eSUlria flgado. portanto continue no laço de repetição
AET I retoma a quem chamou; entrou na região crítica whlle (TAUE} { I• repita para sempre •/
lf (count = O) sleep( ); I • se o buffer estJver cheio, vá dormir •I
item : remove_ctem( ); I• retire o item do buffer •/
leave_regíon: count .. count - 1; I• decresça de um o contador de 1tens no buffer •/
MOVE LOCK.IIO I coloque oem lock lf (count- N- 1) wal<eup(producer); I• o buffer estava cheio? •I
AET I retoma a quem chamou consume item(item); I imprima o dem I

Figura 2.21 Enl e saindo de uma reg a iCd usando instruÇão XCI-O

Figura 2.22

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
capitulo 2 Processos e hreads 11 78

,\ l' ·ncia d prohkma aqui é que p rde t) ·nvi de dt• increm •ntar n ·máfom ·a rdar um pro ~ o tamh~m denne N 100 I numero de lugares no buffer •I
um in ai de awnJar para um prou~ S<l que ainda) não e tá é i.ndi\'i ívcl. Um pnxe' o nun a é bloqul•adu a panir de typedef in semaphore; I• semáforos são um bpo especial de int •I
dormindo. ·ele não fo-. e ~nlidn. tudo Cun ·onaria. Uma um up - a tm omo. no modelo antcnor. um pm esso semaphore mutex "" 1; I• controla o acesso à região crítica •I
solução rápida ~ modilicar as regra adidonando ao con- nunca é bloqueado fazendo um akwp. semaphore empty N; = I• conta os lugares va21os no butfer •I
1 to um bit d p ra p lo lnal d a rdar (udúup o trabalho oríginill d Dijk Ira roram u .1da .J pri· sema.phore fult '" O; I• conta os lugares preenchtdos no buffe r •I
u titill,<l bifl. Quando um irldl tk awrdar ~ l'tlViadu a um miti\a' P c V t·m \"el dt• down c UJ.l, rc pcui\amenu:. 1a!.
pm •;o que ainda ~tá amrdado. c: bit t' ligado. D ·poi void producer(void)
"tlmo P l' V não po 'li •m um ignifi ado mncmônl o pMa
(
quando u prtllnsu 1 mar d rrnir. ..e o bil de • pera Jlt'lo inal a· IX''> ua~ que não falam hulandt (e \Omentc umJ a lu àu ínt Item;
de acordar e ther ligado. ele ser.i deslig..1do, ma o pr e ' pou o esreofica para aqueles que falam), u arem<X o tt'r·
pennallL'\.erá a ., rdad ). bit de l">Jlt'ra pelu ~na.l de acor- mo cu . se~ mecani mos foram mtmduzido., na whlie (TRUE) ( I• TRUE é a constante 1 •/
dar é 11.:1 wnlade um ofrinho que guarda inai de acordar língual!em dt• programação lgol 6 . item = produce tlem( ); I• gera algo para pOr no buffer I
Me mo que u bu d • c p ra pelo inal de ;~wrdJr tenh;~ down(&elll>ty): I decresce o contador empty I
)alv.ldu o dia n · • ·xemplo impk • ' fádt JX'Il ar em ra- Resolvendo o problema produtor-<onsumidor usando down(&mutex): I• entra na região crrtica •/
SO'> om trt' ou mai pn essos no quai um bit de spcra semáforos ínserLitem(ltem); I• põe novo item no buffer •I
up(&mutex). I• sat da regl o critica •I
pelo inal de acordar eja in ufidente. Podenam la7 r up(&fuU); I• incrementa o contador de lugares preenchidos •I
nutra improvisação e adid n.u um egund bit de pera
pelu ina l dt.• a urdiU OU taiVt.'l oitu Oll ll uell...,, ma<;, l'm
prin ipiu, n problema <~imla e i,tir.i.

void oonsumer(voíd)
2.3.51 Semáforos (
E, a em a ítu.1çãn l'nl 1965, quan I , E. W. Dijhtra ínt item;
( 1965) rgeriu us.1r uma v~rí.i\' ltntcira p..1ra coma r o nú-
m·ru de ~nai d · awrdar lvm pJra u futuro. De J(.{)f· while (TRUE) ( I• laço lnflnlto •I
down(&full); I• decresce o contador full •I
do com a propoçta delr, foi íntmdu7ido um novo tipo d
down(&mut x); I• entra na região critica •I
\ariJvd. l"hamado em foro Um ~em.iloro poderia c(lnter item - remove item( ); I pega item elo buffer •I
o valor O - indiCando que nenhum inal de a ordar foi up(&mutex); I• saí da regiao crítiCa •I
~l\'u - uu al):um 'alur po itiw e um ou mat mat J · up(&empty); I• incremente o contador de lugares vazios •I
<~rordar ti\ em pendente . consume_it m(item); I• faz algo com o ítem I
Dijk tra JlrtiJlÔ a~ istC:n ·a d duao; pera~f~. down ~
up (generaliza ill' dr e >H • rl~l' ti\'amcntc) A
lllt'raçào l.b.vtt •bre um emároro \cnfi a ~ eu valor é Figura 2.23 tor~on~midor uSdlldo ldloro .
mai< r que O. e fur, deuementar.í u alur (i tu é. ga ta um
~inal d acordar armazenado I e I roo.· guirj. o valor lor dalizar um disposith·o de 1::/ • o pr >tes o de gcrcndamen- O outro u dos emáforo é \Oitado para lncroniza-
O. o pn~n:' o' ·r.i pu. tu 1ar d01mir. em terminar o do.vn, w faz um dmm obre u \c:ru.Hum a ULiaúo, blt•queando ào. o -.cm.íforo fui/ L' tmp(}' '~<lu lll' e ~riu r <lfil ~ilr<Jntír
pt>l ment por nquanto. \' rihcar o vai r. alterá lo po • ll prou ' imcdi;uamcnte Quandu a intcrrupçàu l.hcga. qut• na equ~ncia e e\ent ocorram ou nà -a e-
\ivdmcntc ir dormir ão tarda' c\ctutada~ toda mmu uma ntmtamentu de intemtp ã fa1 um up obre n •máloro ~uram qut.· o produtor p.arc de c cwLar quando u buflt.·r
úni t1 a o atômica e indiv!Shel. Garante·o;e que, uma vez .1ssodado. que torna o proce so em questiio pronto para c me r cheiu e que o con umidor parc de e\e utar quando
inldada um.J opera .io de ~m.Huro. nenhum outro pmcc exe mar no,·ameme. eo. e modelo. o pa so 5 nt1 Tabt'la u bu!ler ~encontrar udosu. E'>!>C u o é diferente da e. du-
~, pode ter a es o .1n t'rnal ro at que a operação tenha Jnmutuil
2.lum hte em laLer um up no em.i[uro du di pu itivo. de
tcnnin, du uu idu ltluqueJda. E'> att mi rd.lúc é al.l uluta- modo que no ra o 6 o c alonador st•ja capa1 d executar
menw e ·n 'ai para 11.''\0h er ~~ probl ma de \incroni1ação o gerendador de di pu. itlvo. Iam. ~ \.irio pr, c:o;t;t :s-
c c\ itJr wndiçiic. de wrridJ. A~'Õt~ atúmiu . em que um
u.. ercm prnntos, o t."\ alonador fll derá e<~ olher até mt m11 Quando não ~ preti'u U!>ilr a tapa idade du \t:m.iluw
gmpo de operaçõe relacionada c totalmente e rouado
um p~ t' o,o mai ímponante para ~:xe utar Algun do, dc comar. lança-o;e m.'i l de uma versão o;amphfi ada de e-
'lCm lnterrup ões nu não é e ennado em absoluto, são ex-
algoritmo usad para e ralunamentu dt· proce ~o máfom. ham<Jdil muti.'\ l•lbrt•viaçã de 11111111< I tx l111iNr,
tremamente tmponant em multa outra áret1 da dênda
da omput\lção tamb ~m .
e mdado. pmteriom1ente. neste mesmo capirulo. e lu ão mútua) . \1utexe ã, Jd•quado~ apena [Mril gt'·
1 u excmpln dJ Figura 2.23. us.:~mo cm.lfnm d dua rcnciar a ex lw..lu mútua de algum re,ur u ou pam· de LÚ·
manl'ira diferente . a difcrençJ é muito uuportJnte c digu ompartllhada. ão fáceis de implementar e efi ientes.
mcrece \er e~plidtada. O -.emáfom nwta é u ado para ex- u qu~ o torna ~ ;pecialm~me útt'i ~m pacote de lhread
anterior. um del du!ocio mútua Ele ~de tina do a garantir que omente um impl m nt.ldcl totalmt·nt( nu pa o dn u uMío.
proce<i~o r ve7 Nteja lendo ou crevendo no buffer em Um mule ~ uma variá\'cl que pode l"''tar cm um do~
variá ei J\ ociadas. E 'i.'l e\ lu~o mtítua ~ ne ~na para dui l'\Lados '-l>guitur : dt·simpcilido ou iln1x'tlicl l. c thc-
mai 'ltlbrc qucntementc. ·omente I bit é necesc,;írio (\"Ira rcpmentá-lo.
ma . na práti • multa \'C/

u a um intdm. t m O para

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral


Professor Wilson Amaral Sistemas Operacionais – Unidade 02
capitulo 2 Processos e lhreads 79 80 Sistemas operaóonais modcmos

d impedido e qualqu r t utm ator para impedido. Dua rou- qualquer chamada ao nú leo. sando-a • thread de u u.i- t>ndert>çamemo comum ainda tém arquavo abenos dife- uma região rríticd . ,\ varlávei de ondição pemlitem que
nao; ~o U)<)Ua om mutc\1.':\. Qu11ndo urn tlm•ad (ou pm rin pcxJ •m \int mni1.1r lotalmcnl · dl•ntro d l l':\paçn de U\llil· rcnt • • tcmpuriladorc' de alarm · outra propri ·d.1d~ O\ thrt"ad bloque1cm ·m \'Jrtud dc alguma ' ndiçã, não
so) pr a ter an- so a uma rt'gi5o críuca. de chama mut ·- rio. wm mtina que exi t'm omente algumas in tru õe . pnr pro • . o. t'nquJntn u thread dentro de um úni o pro- ati feita Quase empr~ o de i. método. 'iàcl u ad jun-
lYÁ. e o mute. e li\'t'r dl: impl-'did > tindi ando que a rc-gi5 1 O 1 tema mutcx que dc~rcvcmo antcriom1ente é le '>O wmpartilllam todll) a pruprit-dade . É ·mpre \á lida to . E a minemo agora cm maiorc detalhe a imeraçãu de
crítica e<>t.l dkpom' 1). a h.1madol pr o;eguird r o thr ad qu um onjumo mínim de h.1mada . Para todu oftw,ll\' h,í a afim1a 5u d qut> mulliplo pro qut' cnmpanllh;un thr ad~. mute e e vanávci de nda ão.
cham u muttJ._Ii'CÁ li ara livre para entrar na rt.,;.'io críti a. 'l'mpre uma c i~~nàa por Jperfd oament • e o a o da um l: pac.o de cnderl' amemo comum nun a tl-m a t:fidên-
Por outro lado. c o mute já e-;th r impedido. o primitha de incmni7.Jçào não é ceçào. P r C\emplo. cia de rhr ad de u u.lrio, poi o nú lco c tará profunda-
thread que chamou muu. _}t\:k Jlcnnane crá bkK]ueadu até alguma' vczc um pacmc de tluead t~krc · uma chamadJ mente crwulvido no gcren :iamento de ·-.e pr \: . o
que othread na região oítica termine e chame mm,·.r _unf,,. mUI<' _tn'INk que obtem a 'anável dt' tm\'J nu relornd um
,k. c mtiltipl< ' thread c ti\'erem bloqueado•, ' 1bre o mu - )di •o dt> falha m blc)Quear. é · a harna a dá ao th~ad Mutexes em pthreads
tc . um ddt• ·rã t'. Ih ido ,11 aroriam •me c hberado par a fie ihilidad • dt• delidir o que fa7<~r t' hc1uver aht•mati\ a Pthre<Jd Ium · em \a na lunçck lJUC: puJ ·m l'
Jdquirir a trava. a apcna) e p rar. u~da'> para in ronízar thread . O me ni mo bá~i u<;a
Pnr •r •m muiw impl• . u' mutc\ · p Kl •m \Cr lm- uma varl,hd mutex. que JXxle er Lravada ou d~travada .
plememadc fadlmeme no e-;pa o de u u.lrio. e houver para prott'ger cada r •tão critica . m thread qu qut>tra cn·
uma in ítnJ dtl SL ou XCHG uhpUntH•I. o trar em uma rc1:iàu 1Li a prlmdro tenta trdvar o mutn.
muux_ft\·k mut \ _unf, ·k. par,, qu jam us.1d um um a. 'iO 'ado. c o mute c tiver d travado, o rhrc.1d p
paww de thrcath de u~u.lrio. são mo trados na Fi~oeura entrar imediatamcmc l' uma trava é c tabelcdw atomi a·
2.24. olu J,) om H é t: wn 'almcnt a me ma. m nt • C\'itando qu tllro thr ad entrem. o mute~ j~
c:údign do mmtx_INk e imilar a 1 mhgu do wur_ c tiv ·r tra\aclu, <I thr ·ad qu • d1ama c hl<l<]Uc:dlo at~ que
rt'~"'" da Figura 2.20. ma r m uma dileren a fundamen ·
ele .;eja de tra ado. e nuíhiploo; thread c tão e~rando
tJI. uando falha ao entrar n rt):ião cTirl :a. o t'IIIUJ(oli 11 p·lt me m 1 mutc . qu ndo ele fur de trJ\'Jdo, p ·na' um
mminua tl' tando rcpt·tiúamt·ntc a \arid\d de trava (c · ti lc ; autllril~ldtl a mtínuar c tra\ ,i-lo nov,lmt•nt •. F a
trava~ nAu \.'itl ubrigattkla . ' abc u programador a\ l'gU-
pt>ra ooosa ). o final o tt'mpt> de PU e--gota t' algum
outro 1 roH '><I ~.: e alonadu Jlc'lra t:>.t•rut.lf. t-do uu tar- rar que o thre.1d o utili7cm corretamente.
dt• o proce o quc d 1 'm a trava ( e ecm, dn e o liher.1. A prindpm chamada relaaonada J mute t"i àt
om thread (de u uãrio . a ~itua àu e diferente ~x•r· nlll'>lrada na Tabt·la 2.6. Como t:ra de \t' e.,pcrdT, el~ pu·
que não há reh}g10 que pare n 1hread qul' tivrrem l' ·e- dem cr criado\ e de truído . hamada 1ara e. erutar
ruwndo ha muito temptl. on <--quemcmt'nte, um th~ d c )a opera õe são pthu11.f_mur _inif c pthrtaJJim/o;_
qut• 1 •ntar obt r a \'Jn,ívd df.' trav~ pela c p no ío a fica · dt• tU'}: r p«tiv.,mentt•. Flt! l:tmb ~m pod m r travad
rá em um la~o infinito c nunca on guirá ubtcr c sa vari- por prll"a.t_muu. _/(1(/.;- que tenta mnqui tara tra a c ~
awl, pois ele nun a pcnnitira que qualquer outro thl\'ad hlnqueadu, e o mure já e~ti\er impedido. Tambrm há a
xc:nu e libcr ·a \'Jri.iv ·I de trava. 111>\ào dc tentar travar um mute c falhar wm um cc>ili1lt
Ei a difcrcn a cmn· mur_ugi<'ll 111utt J l k. quan- de crm em \C7 d hloquc.i -lo. e ele já e rh r hloqueadn.
E\S3 t.hamada é prltridd.Jiluto._rn•lc\:k. E'i'3 chamada p ·r·
dn falha l'll1 \ ·rifl ar a variávd de trava. 111111 _l k dlantJ
tll~dJ_ntld para que abra miio tia CPU cm la\or dc 1 utm
mite que um thread entre em pera caso ja ne e ano.
thread. Conc.t>qut'ntcmt'ntc. não há espera c><.'Up.lda. Quan · Pur fim. prhrmd_muti.-c_unk'(k o<upadJ um mutex e lit ·ra
do C\l'í.Utar n pnhimcl H' I, uthn•dd \'l'fili ar, .1 \ ariáH:I t'Xatamt"nlc umthr •<Jd )C um nu 1nai\ '\tiv •r •m l''iJX'randn
de trava novamente. por de. s mutcxe'> também podem ter atribuws, mas es-
e doi ou mai pr c o 1mp.1rtilharcm a maior par-
t/tre,td_lit/Jé muito rápu.lo. rxm ~a pena uma dtama ·
n ii1> U'iildll'> .1pen.1 par., nbjetivn t: pccíalí7<Jdo .
te ou a tOiahdade do l"p<u,o de endert'\,lnlt'nto, a di tinç5o
da do e-; alonador de thread no e pa do u u.írio. mo •ntn.· pro · e thrt:,ld tnma· e i!l,:o dilu)J. ma'> aind,l I m do. mutex • o Plhr ad c r re m um ·gun
cm~t-quênàa . nem muttx_lt'•k nem mwo:_un/LI(k requerem P~'ente. Doi pru t"'> t,., que ompanilham um t pa u dt>
do mccani mu de \inuomzac,ãn: \•ariá el de ondl ão.
s.io útci p.1ra pemlitir ou hloquear na c o J

mutex lock:
TSL AEGISTER .MUTEX 1 copia mutex para o registrador e atrbul a ele o valoc 1
CMP REGISTER .#O I o mutex era zero?
JZEok 1 se era zero, o mU1ex estava des•f1l)edido. portanto retome
CALL lhread_yield 1o mutex está ocupado; escalone um outro thread
J MP mutex lock 1 tente novamente mais tarde
ok. RET - 1retocna a quem chamou ; entrou na região critica

mu1ex unlock:
MÕVE MUTEX ,#O 1 coloca O em mutex
RET 1retocna a quem chamou


I Figura 2.24 ln1

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral


Professor Wilson Amaral Sistemas Operacionais – Unidade 02
Capitulo 2 Processos e threads 81 81 Sístemas operadonais modernos

~ tmportame ot •rvJr ramtk.>m qu ih v~~riàn•t de nha "rildo outro. Fmbora ej<t muuo tmpl . e w exem- do monitor. alguma la primeira d.1 rmina w-
mndi ão (à dUtren ·a d{' ~emàfom ) nao têm mem6na. e plo ilu tra o me ani mos t"tá inl'S. comando que coloca rili , rão qualquer outro pro t o tJ .nualm •nte ati\O
um na I é emiado para uma vJriável dt condição pela qual um thread Jlara donnír sempre deveria \ erificar a ondição dentro do monitor. e l"iti\ er, o pro e o que h amou t·rã
n nhum thread t'\t.Í l..,flCrando. <l -.inill .: pcrditkl. pro- para a gu rar que ela eja ati f •ltn ante de p eg111r. u pemo até que o outro pnxe n deixe u monitor. e ne-
gramadort>s de\ em er uidJdo "' p;ml não perder mJi . \i -to que o thread poderia ter ido d penado em virtude nhum outro pro n .11\er u nd o monll r. o pro • · 1
omo exemplo do modo como rnute ·t.>'> e \JriaH'i de de um inal doU 'I ou por alguma nutra ra11io. qut• hamou pt>der.i entrar.
condição ào u ados. a 1gura 2.25 mostra um pmblt-ma de abt> au 1mpii.Jdor implemelllilr ,, ex lu'N1o mútua
con umidor-produtor muito impl mm um único buHer. na' cmraua c.lo monitur. nt<b um mudo mmum (: u~r um
Quando o produtor tiv r en hido o huff r le deve esp rar mute\ ou um máfon hlnãri . m í: c mpilad r e
até que o con umidor o ewa11 anl~ de emr n Jm) tmo e mut e . a com uni ação en-
nii< Jlrot-:ramador que pnl\idenua c1 e du~o mútua. c
il!>'ltl. O modo emelhante. quando o con\umidor 11\er re- tre pruces o<; pare t' r.i ·1. não é? Voe~ ainda nãn viu nada
mutl<l mcn 'I provável que algo d~ errado. De qualquer
mO\ido um item, ele deu• e<iperar me que o produtor te- h\('fH' {Om P..1 tante iltençãn a nrd{;m do d<Mns anh: d •
manetrcl, Ul'm codifi a o m m1tor não preo a aber comn
o mmpiladur implemenu u a e\ lu~ão mútUa. Ba~tJ sabcr
#lndude <stdiO.h> que. convertendn toda a r~iõe crili as em rotina do
#lndude <plhread.h> m nltor. dob proc:... t ~ nunla cxe tar3o u ~ regíile ui-
#define MAX 1000000000 r quantos números produzir ·t tica ao m mo tempo.
pthread _ m ex _t the_mutex;
pthread_oond_t conde, oondp; r usado para sinal zaçâo ·t Embura monlton.- · orereçatn um modo fádl de fazer a
=
int buffer O; r buffer usado entre produtor e oonsumtdor •f e lu Jo mútua (como \'imo anteríonnente), í n não ' o
ba ta me. É prl'lho também um modo de blt1qucar JlAAe ~m
vold "producer(vold 'ptr) dados do produtor •f
quando niio pud rem ontinuar. o problema prndutor-
j
{ mtt,
-wn umid 1r, é muittl Jcidlwlu ar tmJm 1 te ll.., dl' bufkr
for (i= 1, i<= MAX; I++) { cheio e buHer \'alio na mlina do monitor. ma 11mo o rro-
pthread mutex lod<(&the mutex); r
obtém ace o exduSivo ao buffer '/ dutur ·ria N<xJueaduquandudecnwntra.. t'<lhuffcrthcio?
whJie {buffer =O) pthread cond waJI{&oondp, &lhe mutex};
buffer =I, r
pOe Item no buffer ., A olut;iio e ta nil introdu ão de arl ond i io-
pthread_oond_signal(&condc). r
acorda consumidor ·t nai , um dua 01 ·raç(ll.''> •,obre da : wat c . Qtl<lndo
pthread mutex _unlod<(&the mutex);r ltbera aoesso ao buffer ·1 uma rotina do mmútor de){ulm• que não pode prlb. cguir
} ~por t'\t•mplu. O prndul<lr f't'rrCbl• QUt' O httlfl'T c I.Í heíll).
pthread eXJt(O); e-..etlJia um wtti brc alguma variável undilional- pt>r
e cmplo, lltl<. E alio r uhJ no I u ío do pro e 1
QU • t-.,IJ chamandu. la tamll(m ('lCrmiti.' que outro Jlr<l·
vold ·consumer(votd •ptr) r dados do consumidor •f ce amerionnente proibid de entrar no monitor agora
{ int i,
entre. Vimo \Jri.Í\ci ti· undi ào · t a up·r t,ÕC!> 11<1
for (i= 1; i<= MAX, i++) { conte to de Pthre<td anteriormente.
pthread_mutex_lod<(&the_mutex); r
obtém acesso exdusivo ao buffer ·1
·outro pn • !><l-por •xemJllo. o on umidor-
whtle (buffor =O) pthread cond wall(&condc, &lhe mutex};
=
buffer O; ret1re o •tem do buffer '/
pode acordar eu parceiro adom1t'Cido a p.1nir da emissão
pthread_oond_stgnal(&condp), acorda o produtor •f dl' um ldl 1 ra a vari.hd wndíciun.1l que cu par ·i-
pthre d mutcx unlod<(&the mutex);r ltbera aoesso ao buffer •f r t"itá e perando. ParJ evitar que dOJ<i proceNl penna
} nc am nu munitor au me mo 1 ·mpu. prcti amo dl· uma
pthread exlt(O); regra que detemúne o que acontt'<:e depoi de um ·L
Hl are propô dei ar n pmct'\ o r í:m-a ordado •x · utM.
monitor ex.amp/e su pendendn o outro. Brinch Han..en ugenu uma mandra
lnt mam0nt argc. char .. argv) nteger I; <t tu til d ll''ol'" r o pr lll ma: e tgír qul' um proce o qu •
{ condJUon c;
pthread t pro, oon ;
s.aia du monitor imediatamente. Em uutra\
pthread_mutex_tnd(&the_mutex, 0), palavra<;, um < mandn . · n~ ó p. ler, apal\'(er ·orno u
procedure prrxiucer( ):
pthread cond inrt(&condc, O); ultimo omand dl' uma nllina do monitor. U!>aremo a
pthread cond inrt(&condp, 0); pwposta tlt' Brin h Han cn porqu • la e onceituahn·nte
pthread create(&con, O, consumar, O): mai ~impl e tamhém mai fácil de tmplememar. e um
pthread create(&pro. O, producer, O}. ~· e emllidu ulm: um<~ \'Jria\d ondidonal p ·la qu<tl
pthread _join(pro, 0); end
varim pruc • " ll'Jam perando. um ente um dd • . d ·-
pthread join(con, 0);
procedure consumer ( ): 1 rminado pelo es alonador do sistema. f dt'Spcnado.
pthread_oond _ destroy( &conde):
pthread cond destroy(&condp};
pthread_mutex _destroy( &lhe _mutex);
end ;
endmonltor;


Figura 2.25 I Flg~-Wa 2.26 Um r.-amillr

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral


Professor Wilson Amaral Sistemas Operacionais – Unidade 02
Capitulo 2 Processos e reads 83 84 Sist mas opcraàonais modernos

F.la sãt1 muno Jmilart"i. ma apre enaam uma diferença pubiiC class ProducerConsumer {
lundam~:ntal : e :111~ falharam porqul'. enquanto aiJc rlnaJ .nt N - 100 11 const nte oom o tam nho do buffer
slaiJC produoor p "' ncw prodvcor( ); /l tflslância do um novo thrcad produtor
um prc • o e<>tava tetuandu 1r domtír. u outro tentava stabc consumer c .. new consumar( );ll lfiStànclél de um novo thread consumidor
a on.lâ-lo. ommoniturt.">. 1 o não ..t unte i.'. A n lu ão staiJc our monitor mon - new our montlor( ). l/ 1ns1Ancía de um novo monitor
mutua automan a da rouna do monitor g.uame. por publte sta c vOid malll(Sirmg argsl)) (
·wmplo. que. • o produtor d ·ntro de uma rotina do mo· p. rt() : // ln•da o thre d produtor
nuor • obnr qu o burter e tá ch io. se produtor er.i c .start( ); 11 inicia o thrcad consurhdor
tapêl.l de li.'rmin.u a opi:ração w 't rm · pri.'owpar mm
a p<w•ibihdadt> de o escalonador ch.wear para o con ·umi - auc da producer extends Thread (
dor um puuw antl' de att temtinar. c llbUmidor nem publtc vOid run() {// o método run contém o códiQO do lhread
10t 1tem;
m mo rá pennítído dcmtro do monitor at; qut' Wtll te· whila {!rua) { /I laço do produtor
nha u:rminadu e o pmduwr trnha ido mJr(ado wmunão item - produce ítem( );
mai i.':\l'(ut.ívd. mon. nscrt(tlom);
Fm ra a Pa ,,1 Pidt1in ja uma lingua~tc.>m ima~in,i ­ )
ria, alguma linguagct~ de programa · o reab tambt:m dão pnvatc lnt produce 1tem( ) ( ••• } 11 realmente produz
upone a monitore • embora nem t.•mpre onrurme o pm-
jet. do por Hoare e Brlnch Han en. Uma de. a linguagen a c class oon umer extends Thread {
é Java. E't.:t é uma linguagem ori ·mad a ui jetm que dão publtc vold run( ) (mó todo run contóm o códJgo do lhroad
'upunc a thrc.:td\ de u uárin c também permite que mé· tntltem;
while (true) { // laço do con umldor
todm muna ) cjam agrupadc em da 10(:· • d1cí nandc • Item • mon.remove( ) ,
monltorProducetConsumer · \e a palôlvra·c.:have r hrooil à de Iara ãn de um méto· consume item (llem):
condftlon luU, eiTf'ly;
lntegeroount,
do. Ja\'a Raranti.' que. umil w:t lni ado qualquer thn:ad
cwrutamlo aquele método. a nenhum ou1n1 thread rá )
procedure insert(ítem:lnteger), private voiod consumo _ ilemQnt 1tem) ( ... )// realmente consome
pcrmilído · ·c ut. r qualqu •r outru métodu nd vorlllQJ }
begln
lf oount• N then wa it (full); naquela d.1 ·. stabc ct s our monttor {11 te o mon•IOI'
tnsert lfBm(IJem); privato 101 buffor( I• new ni(N],
count:a oount + 1; pnvate int count .. O, lo "'o. o.
hl .. 11 contadores e lndJc:es
ti oounl• 1then slgnal (empty) publlc synchrontzed vold lnsenQnt vai) {
end ; ti (ooont= N) go_ to_ sleop() : 11 se o bufferest,vor cheio, vá dormir
functlo rvemove:lnteger; bulfer (I"N] '" vai; 11 .nser um rtem no buHer
begln
h = (hH 1) ~ N: 1/ lugar pa colocar o pr6x.n10 ctem
count ,. counl + 1: 11 mais um Item no b~ for agora
lf oount:o Othen wa ll (e~Tf'ty};
1f (ooont..,.. 1) nollfy( ): /1 se o consumidor est dormndO. acorde-<>
remove :remove_,tem.
)
count .=oounr- t: publtc synchronlzed 101 remove( ) (
I f oounl= N- 1 then s gnal (fu/1} tnt vai;
enct 11 (ooont - O) go to sleep( ); 11 se o buffer estJver vazto, vá domur
COUni.• O. v I ' buller (to]: 11 um •t m no buli r
end moni tor; to (lo+ 1) % N; l/ lugar do onde buscar o próximo tom
count .. count - 1; 1/ um item a menos no buffer
procedure producer: ti (count = N- 1) notJiy( ): /1 se o produtO!' estava dormtndo. aoorde-o
begin retum val,
whlle true do }
begln pnvate vojd go to sleep() { try{watl( );} calch{lnterruptedExcepbon exc) (}:}
ttem- procJuce_ttem; I
ProducerConsumer.Jnsert(ttem)
end A pant.• inh:rt.· ante de'> • programa {> a la ,~,. tlllf_ I F'~gura 2.28 Uma kiÇÃO f)i'lm o probk.ma produiOf-con llllidor nJ
end ;
"'' 1111•'' · qu ünt m n hufkr. a \J ri,iv •ts d • ;~dmini traçãn
procedure oonsumer; c dui rnetod 1 in runitad<n>. Qu nd, t: ·1.1 athu dcntru
begln significcJ que 0 Item OU 1 iten e~tàO 00 bufler. \'cJJOr de Ja\'a rt>quer que tratamento de e ceções 'il'ja l' plídto.
whlle true do
do mstrt. o produtor 'abe com c 'rti.'"la que o l"'Oil,umidor
n;io pode e ta r ativo dcmtro dn rc'm Ol\'. tornando gum a indi a qual de<i es a'K ocorr~ .
C<,llllf Para mmn 1 rn~l<) ítu. irnagin · a1 ·na que .'I'U (I_slu r •ja u
begln
Item= ProducerConsumer.remo\18; alllaliz.:~çõ da \ilriJH•t t' do bufrenem n temor da' on· '" ttodo Cilmínho para ir dormir.
consume_ item(item) diçk de corrida. A \'.:JfÍ.Í\l'l '' 1111t ntrola u númcr > dt Tomando auwmática a e lu-..lo nuítua da~ regi~
end it n qut> t tão no buff ·r. Fia pndt' a ~um ir quJiqu(•r vJior uiticJ . o moníllltl~ drixam a programaç.io p Ida mui-
end ; lO meno ujeita a ~rH que com ~máfom . Ainda a~ im
cntr ·O e N- I mdu h c . A \'ari.ivcl / a puni para um lugar
do bufler quc contem o proxímo item a r bu'iCado. Da l'lc também tC::m alguru problema · Não ~ à tua que 110!>·
mesma mane1ra. /ri aponta par.1 um lugar do buf!er onde o O\ doi l' mpl f monitor IJvJm e · lit em PJ a i
pró. imo it~m ~rá culocado. f pcrrniudo qu~ lo = lu. o qul'

Pidgin e l'rn Ja\'a - t'm vc1 d~ . nmo u · uutr(l') e. cmplo

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral


Professor Wilson Amaral Sistemas Operacionais – Unidade 02
ca itulo 2 Processos e reads 85 86 Sistemas operaaonaiS modernos

d ste livm. onfomle f01 men 'nn<tdo .11Herinrml·nte. ()\ Projeto de sistemas de troca de mensagens NdeflneN 100 r número de lugares no buffer .,
monitort' ão um ron eilo de linguagem de programação. i u.~ma.s de tm a de ml'magl'm aprcsemarn mullo vOíd producer(VOtd)
umpilador dl'vt' rt' m)ht' ~ l1H organ11il I<)\ I)J ra a t' • pruhlema comple o e difi uldade tle projeto que nãn {
du ão mútua d alguma maneira. C. Pa ai c a m:uolia da lK1>rrt:m com '>t'm.iroro · uu munnur - pt:dalmemc' lflt item;
outra~ linguagens não rosçuem monitore • ponanto, não u pro o muni ant <, e'>tivcr m em máquina dife· message m; r bu1 erde mensagens'/
é ra10ável ~ p·rar que -eu ompíladou: •mJXmham al- rente n nee1ad.l por uma rede. Por e empin. a men a- wtltle (TRUE) I
gumil regra de e clu~o mútuil. 1\a \Crdilde. como poderíil gen pt>dem ~r perdida pela rede rara ..e prevenir onlra Item,. produce _ilem( ). r gera alguma coisa para colocar no buffer 'I
" wmpiladur ~abcr Jl ~ me mu quai'> rulina ._..,taHim n men..ag 'n~ pcrdid.'ls. o cmiNu t' o recCJ1tor pcl(fem om- receiVe(consumer, &m); r espera que uma mensagem vazia chegue 'I
monitore e quai não e lilvam? bin r que. a \hn que: um mcn agem tenha ido n:tchi- bv d message{&m, item); r monta uma mensagem para enviar'/
E. '>il mt'Sma linguilgl'n não clprl"'>entam emáloro . da. o receptor enviará de volta uma men agem especial de
send(consumer, &m): r en111a item para consumidor'/
ma indui·los cfácil: tudo o que \'0 r prcdsa fazer~ adido- nflrma ~o de r ebim nlo (arf..:n wlt'd,'irmmtl. l' o
na r a btblime a dua pequena rmina. em código de lin- l'rni-;~or não tív r rt: t.>bido a conHrmí\ção de rt et im •nto
vold consumer(vOid)
guagem aswmbl~. a fim d emitir J chamJdJ de istemcl dcm~ de um lerto inten.alo dl' tl'mpo. cll' rctran mitirá a
{
up e down. ., wmpiladort.., nem equcr prl'U>arn aber que men<;agem. int ítem, i;
da e\i tem. Oh\ iamcmt·, O\ '>i tema upcratinnai pn·d- Ag ra. 1en e no que a nntece e a própria memagem message m;
sam l'r infnnnado ( br> 1 ·m.iforo.. m,l . a l'l ·nha lor recebida mrrclamente. ma a wnfirma ão de re cbi·
um i tema OJ erammal ba'>t'adu em emáfonh, c JXlo; Í\ d memo tiwr sido perdida. emi r retran mitirc1 a men· tor (i. O; i < N; i++) send(producer, &m): I' erMa N mensagens vazias 'I
Jinda e crcver o~ rrograma de u uari para ele em ou while (TRUE) (
sagem e. rtanto. o re eptor a receher.i dua e7e É receNe(producer. &m). r pega mensagem contendo ttem "I
++ (ou ate mesmo em linguagem a wmhly, se v~ lor fundamemal que o re eptur eja capaz de dtslinguir cmre 1tem • extract_ em(&m); r extrai o 1tem da mensagem '/
ma'>oqui ta o ufiàentel. Paro u monitu~ . vocc prcli a uma rne11 agem no\' a l' a rl·tran mi~~ão tle umamen agem send(producer, &m) : r envia mensagem vazia como resposta '/
Jl' uma lh1HUagt•m qul' o tenha um truído. amiga. 'urmalmt:nte. t: pwhlema 're olVIdo median- consume_ttem(item); t faz alguma coisa com OItem '/
utro prohfloma - m nu nih rc. e também um m.i- tl' a c lllxar;ão de númem •m uma equênda c.: lll)C uli·
fnms t que el fomm pr ~etndO'i para r lver o problema va em ada men ag•m original e o receptor obtém um.1
da ·x lu'>.l 1 mutua ·m un1.1 ou mal PU,, wda wm a ~!>C' men agem que carregue o mesmo numero qoquenaal de I Figura 2.29 O I) utor-QOO rnldor com N
a uma rnl'rnllria (>.num. Pondn o '>CIIlalom na memória uma memagem antenor. ele \ilbe que a men'>agem ~ uma
m1panilhada e pmtegendo o om a~ ilhtru Õl"'> TSl. ou dupli ata qul' pode cr ignorada A municação bem- u-
men<;.l '<'" en\·iada ... ma .linda nãll rl' hida,, ão .lmla- ll rarâmclro<i de l'llCit're o na hamad.l sood l' rec~ ãu
XCH3. podemos evitar d' put.b. Quando' amo para um h· nlida d1ant ·de tn ,1 de mcn~gen~ nã l >nfiJ\ ei é uma
/enaua autnmati amt:me pd , Í\1 ·ma operoa1 nal. c,..., a Ji a 1 htJí,, não ,,_ procc 'u . u tentar enviar ram
tema di uibuido fom1ado por múltirla PU., c1da qual m1 imp<1name pane do t"'ludo <,()bre rede de computatlore't.
olu do, ~ u ado um total dt' mt•n d~en • analogamente uma ai a [lO. tal que C\teJa hda. um pro e,o;u é _u pcn u
ua própria m mória pri\'ada e onooada por uma rede 1 ai. Para mais infurmaç·t , cja Tanl'nbaum 1I 96}. au , luRJft'!> nu buffer tm uma mt•tm)ria ompartilhad.'l. ate? qu uma mcn a~em \t:ja removida daquela caixa llO tal
l'!>'IJ\ primitiva tom m- e lllalllí 1Í\d~. A mdu~o é QUl' t)!. i tema de mt"n agen também preci"<<m lidar com O con umidur c;ome a em·iandu X men a~:en \alta para t' dê lugar a uma nma.
'14.'111dfonl\ -.ãu Ul' IIÍ\ ·I muito l>ai\tl e~~~ 11Kllútun: ttâu ...lu a QUl"ltâo du. nom..: dos JlrOlC 'o . !>ara que o pru c l
útd... ex ctu pam lgurna lin~uagen d programação. lérn
n pmdutnr. e tiver algum ilem para ftlml' ·r ao on~umi­ Pllra o rr blema produtor-con umid r. tanto o produ-
peàficad em uma chilmada '100<1 ou não ja am - dor. u produtor peg.~r.í uma men gem vali, c l'll iarã de lt r quanto o con uma dor criariam cai. a~ pu tais ulilil'nte-
d•~ , nenhuma lk ...., primiti , · 1 'rmnc tn d • lllfnnna- bíguo. A a utenti ca ão também é um tórtcu de~ tema \'oha uma men agem cheia . De'> e modo. o mímero tot,ll meme grandt para conter men agen . O pn>dutor l'n ia·
~iic: ·mn: a lgu dilc~nte '>C (az n ·cc ·no. tle ml.'n agl'n : orno 11 lil'nte pode al'lt'r qut> t><,tá t' l· dl' mcnsa): ·n no i tema rx·nnan e mtante c.:om o dt:· riaml'n J):en c;ontt'ndudaô 'àcai\.apu ·talducon umidur
mutúcc1ndo om o servidor de arquiw rl'al e nãu rum um mrrer do 1 mpo. ,. ao; im da<, pudt•m ~er. m1:11enadil em c c t mandaria m n agcn va7ia para a cai\ol po tal do
ÍI11Jlll.tnr? um.:t quantkladc de mcmúriJ 1rniaml'nle wnht'llda. prudutm. me anhnw d · buCftr da\ t'ili a' pu tai' ~ hJ •
• a outra ponta do c pectro. ha amda topt 1 de proJe· o produtor trabalhar mais ráp1do qUl' o con umidor. tame impl :a ai a po tal de dt'Stino contém nll'n'iilgen.
w que '>lu impu na me quandu uemi wr l' u rcteptur e<,tdo toda a mcn a,;t:n crão prl'cn hida . à pera tio m u- en\'iada au pnx:c: o de dt tinu, ma ainda nàn a dta .
na m ~a m.iquma. m d\: e tópico é o d empenho. mtdor; o produtor erá bloqueado. a~uarJando que uma O outro c\lr•mo di! caixa po tai l: eliminar todn o
Cop1ar men at:en de um pll){c w ll<tra outru c '>t'mpre mcn a' ·m v;llia \-'Oh·. • ownsumid lrtraNihar mat r.lp•- armazenamento t~mporano . Quando e opta JX>r ~ '>t'
mai lenw qut reali1ar uma opera ão d, l'máh ro ou en- do, então acontecerá o inver o: 1 da a mensagen t>Starão (4)minho. t' 1 send mitid ant~ dn mceve, o pr c ~
trar em um munitnr.• \uuo c tem fehu parJ ltlnl r a 1ruc; vazia~ t"Sperando que o produtor a~ preen ha; o consumi- cmi wr permanl' l' bloqul'ado att qul' owrra o mc;et.. mo-
de memagens eficiente. heriton 1984). por e emrlo. u- dor erá bloquca lo. c rer;md • por uma rn •magt:m heía llll'nto no qual J men\ilgem rod cr npÍiiÚil diretamente
send(d stmalton, &message); guiu um tamanho d • m ·• ag ·m limitado. que ~•uba no H.l muua variaçôt"i Jlll h·ei do mccani,mo d • troca do cmi ur para o rt't. ·ptllT. em annaLl'llanwnto inll'nne-
ri.'gl\lradc r ~da máquina • para então •rem reali1adas a' de: mc:n ag ·n . Para omc<,ar. ub ervcmo' -,,mu mcn,a- dL.írio. Dtt m m.:1 m,ln ira, • o roc tmitidl Jnt •
tr de mcn agen., com 11 U'>tl do regi tratl rc . reu~pu r c uloqueautl at~ qul' owrra um sond. E)'iil t>Stratt'-
rt)COIV()(sourco, Sn gens o;ào endereçada . Um meio para i o é atribuir a cada
O problema produtor-consumidor com troca proc 11 um end •r ·ço uni o e far·r a> mcnsagcn' ' rem gia ~ mat onhe 'dJ conHt rtude:~ us'. ltt i: mai l.icil de
pnmcara hamada cnvta uma men • ·m para um end •reçad.1 aos procc so~. Um outro modo e inventar uma im[lll'llll'ntar qut• ume'GUl'nta dl' annaZl'llclmemu dl' mcn·
d<~do d tino; <1 cgunda rc cht· urna rnl'n!Hlgcm de uma de mensagens
nova c trutura dl' daJo-.. chamad11 aixa po tal. Uma i- agen~. ma ~ m~n<l'> lle>.Í\'t:l. pob o emr..wr e o r~eptur ãu
dada origem tou de uma origem qualquer. e u receptor xa postal é um 1 ai para anna1enar temporariamente um lnr , do a t'xcrutar d • mandr, interd 'Jl •nd ·nte
não e importar~. c n •nhuma m no;agem l' otin·r tli,po- no número de men~gen . normalmente r-sreàfi ado A troca de men agem ~ ba tante u ada em i tema
nível. o n- eptur poder.i !l ar bloqueado at' que alguma quando ela é CTÍillla. Quando as aixa Jl<l~tai ~n u~da • de programação par,1lela. m Í\tl·ma de tro a d men-
ml'n>agem Ú1l'gUe. Cumu ahernati\-a, ele podt· rctnmar
imt>diatamente a ompnnhado ue um cúdig >de erm.

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
ca ltulo 2 Processos e threads 87

agem bem conhed do, ror e emplo. t' o MPI lllk ag,•. béfn«. B!wl ituaçãu t! llu trada na Figura l .30(1.l). Por lim. mentc c alnnam ·ntu d thrt>ad e algun' du pr blcma
·rc~ i11g íllll rfa ~- interface de ti' ca de men a m). quando o ultimo procc ), • atlnge a bJrreira. toJos os pro- c. lu i\'ll que u dta. lidarem~ wm thitl'i mullinúd ·o
amplameme u adt1 '01 computa 5o demíiiCJ . Pnra maí (C ·Sill ~o libcradm. con.fonnc ilu trado na figura 2.30(c). nu apítulu .
inlorma<;ilc tlbrc de. veja. !)<Ir c'l:empln. Gropp ct ai. Como C'<l'mplo de uma \itua â' que tt.·quer barreira .
(19941 e mr et ai ICJCJ6). onsidcrc Um problema lÍpi 11 de rda a àtl, da Ü)ÍGl OU Ua 2.4.1 I In odução ao escalona nto
engenharia. Ha em g ral uma matrí7 que cnntt:m algun
ai •re ini jai . valorc pmlem repf'' ntartemperatura\
em várin.. ponte de uma pia a de metal. O nhjt-tivu pnd tem de • ulhcr u pmcc \O ·rtu para cxc ut r. o
~oer akular quanto tempo leva para que l deito de uma a lona dor tamllém de\l' e pre cu par em la7er um u o efi-
ham locali7.a ta em um ( mo • JlrclJ~1gut• pur todil a placa. cicnt ·da PU. Jl i hav •ar pwcl' u ; muitu :w~W'>tl. l'
Comec;ando com o valor~ atuai , uma tran. lormac;Jo iní io, dt'\'l' o urer um h.weamenlo do mmlo d • u il.lário
é npli ad~ matri7 pam ohter uma '~-gunda \er 3o d ma- para u modo nt'rtleu. Dcpui'>, c tado atual dn Jlfti(C ,
triz- por e empln. aplicando· e a l' i da tl'rmodinami a d \c ~er 'i.lh'o, arm.nenando· e indu iw eu regi tra·
p.1ra vcrifi Jr u)(!as a tt•mperutur 'em um imtamc T ma i dorc na t bela de Jltol o . JMra QUl' pt '>Jnl ~r rctar·
tardc 0 pro O r, então, repetido vária Ve7t.'S e fornece regad po<iteriormeme. Em muitos ~istema , o map.1 de
a temperatura .. um runto de amo traRcm wmo uma fun memória (por e emplo, o bit) d rcferên ta a memoria
;lo du tempo, .J medida ~ue a pia a c .lQU ·ddJ. al~t ritmn na tabela de p.'igma ) tambcrn d '" r 1h·o. m egui·
pmduz. purtanw. um.l !>ériede matriL~ao luog ,do tempo. da . um novo pnx.c !>O pn:d\J cr ~clcdonatlu pela c e u-
Agnra. imagine que a matri7 '>eja muno grandr (diga · ão dn algnrltmo de ~calnnam mo. Oepni di\ o, a IMU
mo . um milhão por um milhão), •xíg111U11 u U\1) dt• pn · • lmem~, ry m m1ga11t'ltt rmír- unidade de gcrenáamento de

c;amento paralelo (JlOS h cimente em um i tema muhipro· memóri ) tem de ~r r arl\1}.1da m o mapa de m mó-
Ct"i~dor ) para aumemar a velocid,1de do CJirulo. Pr ce<i O'i ria du novo pn e o. Pm fim. n nm u pmcc ~u pred'KI ~l'r
di ler •nt tra lh.un com dllerc:ntc ~ltlrt • da matrit. ai· in i ado. lém di n tudn o hav •,1m nm do pro • o n r·
rul<mdo O'> elemento dJ nO\a matriz a partir do alort>S m lmentc imalida ttltla a memória l<li..hC, fur~andu-a a ~cr
anterion e de acordo com a lei da fi\ica . omudo, um dinami a mente recarregada da me mona prinápal por duas
pm e .,., ú poo • om ·çar uma iteraçiiu 11 + 1 4uamlu 'c-1c ao entrar n 1 núclt•o e ao 'Llir dele) . • modn g ral.
nerJç~ 11 terminar. 1 to é. quJ.ndn todo o proct"i o ter· reali7M muítO'i ha\eamento de pro e o por 'it'gtllldo
minarem 'U~ trabJlho atuai O m io de hegar a t"i e pod • cumprornetcr uma grandt.• quantidade dCI tempo de
o ~eth•,, ; pmgr<Jmar c<Jda prlW.. • u de maneira quc ·lc PU: ponanto. tod uidado é pouco.
e\erute uma o(ll"raçjo birTio' depoi que terminJr ua pane
da itcrac;~n. Quando toc.ln tivcn·m r•ito ~ua p.lrt •. a nm a Comportamento do processo
Proce I!! matril (a entrada para a pníxima it•raçãn) \tará prunta c Qu. ttld pro 'Vl ah mam unn de nmpu -
~ t do pr, e-;so 'erão imuhaneamemc liherados par<~ ta ão m fl'QU!Si-.õe~ de E/ (de di' u) . c mlormc mvma
c ~ inioali1.41r a pró im.1 itera ão. il Fit:ura 2.ll. ·m g ral, a PU e uta nld fínidamente
Fm egundo lugM, ompm.1dore • om opa ar do e então c feita uma chamada d )ttema para ler dc um
ano~. H aram tã l mai rápid<h que a CPU rarJ.m nh: hc· o:~rquim ou l' cr \'er nele. Quando a hamada tlc i 1rmn
j:ará a ·r um reru o e a o. A maioria c.l programa termina. a CPU om1 uta no amcnte até que ela rt.'QUi ite
To~ - Jl.ll'<l wmputadnrc: pt: 'nai' c limi1ada pela vcl w..1uad • 1m ou tenha de escre\'er ma i~ dado • e a im continua . Perceba
(a) que u u'>u.iri, ()(Ki' entrar di!Jo juigii.Jndo ou dic.1nd l) . c qu ·alguma atividad~ • E/ wnt m çomo computa .lo.
nJo pl'la1a a na qual a PU · ap.11 d • prr • · .i-lo . w n Por exemplo, quando a P copia bits p,ua uma R t de
ompiladorl' -grandes consumidorc de idos de CPU no 'ídeo a fim d atualizar a tela. da ~Lá omputando, não fa.·
pa adu -atualmente levam. no mti imo. algun Sl1!lln- n•ndo F./ • poi a PU o;.c en nnlr<t em U\ll. I • n ' t• ·n·
® do . Meçn1o quando doi programa e tiverem e erutando tidu. t u que ocorre quando um pru t"> u cnliJ nu c Lado
t!! @ ue mtltlo imultãneo- :orno um pn c ad •r de te>.tth e hloqlll·atln c pt·ramJu que um Ji,t l\ltim c tcrnu tt•rnunc
! uma planilha - . dificilmcnle 1mponará qual come a pri· n que t."'>tá fazendo .
~© mciru. J.Í que ou uário C..'\lará c J• ·randu. pro\avdmcruc.
que ambo tcmtincm nmo wrhcquên la. u alona·
@ n\t'ntU n-o e t.1o illlJlnttant em PC m1pleo;. Iaro. há apli·
ca~i' c que prati amem e c gmam a CPU: e 1bir uma hora
Tempo _ . Te~ - de v1dco de alta r olu ão pode e igu proce<i~mento de
(b) (C) uua~cn de alt una apaudade para Lidar wm ada um
do I mil quadro em :r C 1 O mil no P LI. mCt. c sa
to
aplicaçõe ão e ceçõeç. não a regra.
Quan l JHl on em ramo~ ·m o,crv1dur • c c 1 ci · d •
trabalho de alto desempenh em rede. a ~huaçiio muda .

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
C.pitulo l Processos e threads 89 90 SIS mas operacionaiS modernos

(I) '-----/~~---__,!--------1...._______.\_ requer a e i~tência dl' uma imermpção d • relógio ao fim lha em um programa pode levar um prc e o a impt.'<hr
du intt."n aln dt· ll'ffip<l para que o c amole brc a PU seja indefinidamente que todo o outros e em tem . A preemp·
t.kvnl\'ido au e..calnnador · nãu hnuv~r r l(~gm di J)Ont· ão c nel ·ria para impedir e ~e l mpunamentn. wr·
Surto longo d uso do CPU \
vcl. o c almamento nã 1 Jlrecmpth o erá a uniu opção. vidore tambtim caem nc a c.att):Oria, \i to que normal·
m 'lll • n •m .l U\uárin (fi'rnlllll\l mu luplo. 10dn · muíto
Categorias de algoribnos de escalonamento aprc sado .
laro que, p<~ra ambientes difcremc • ~o nere á- Em \i tema' m r trk;.. le temJln rcal. prwmpc;iin é.
rio diferente<; algoritm de alonamenm. F c;a ~tu. c tranhamentc, alguma \ ezt"> de ' nctt: ária, Jlt i "" pru-
t :orrc ll<lrlJU • thkr ·nt~ • r a d • apli Jç3t ( • dífc:rcnt ti -

-
(b) C'C o;o. 'i<lbem que não podem exerutar por longos período
Tei'J1)0 p<l' dt." i tema\ operaàonai~ltl'm objetivo dlfacntt' . Em c, em geral. fa1 ·m 'eu trabJIIH "e bl queiilm rapidamen-
outm pala rn . o que d ,. er ntimi7Jdo pdo ulon. dor te. diferença m relaçJo cJ i tema interativ é que
Figura 2.31 U surto CPU soo CPU nã > é nu.: mo para wd t~ 1 tema . Trl' ambiente m ·• o 1\l •ma~ de tempo real c ·c utam apena~ programa que
tbl Urn rm onoohtdo à EIS
rcccm di tinção: 'asam a pr~r~ · >da aplica ào. Ja o l<it ma interativo
I Lot ..;.iu d pmpcí iw geral e pod ·m l'\l' utar pmgrnma Jrbs·
trárí t1ão l)(>perativo' ou ,ltc mal-inten ionado .
por I .• olc que o lalt>r prinàpal ~ u tamanho du urtu de pro :C'>~I prt'CJ~ t•r dcdonadu Jlilra cxecutar. muti\'o 2. lllll'rJtívo.
PU. não tam,mho dt uno d · F/ . 'prc 'itl rient.J · d bloqu •te pode. algumJ \a . influen iar na e olhJ. l1i mporeal. Objetivos do algoritmo de escalonamento
do li E/ 'Mitl a imchamadu porque, cmrc uma rcqui i ju Por exemplo, 'c 11 for um prtKt''>'u importa me e • tiver
o~ '>Í\temil' em lme amda ~~~ amplamt'ntt' utllii..ilJO'i P.:~ra pmj ta r um algmitmu tlt c: .llmMmcnto, \~ n ·c· -
e outra por I • ~ le não reali7.lm tnUitil computa 5 l, nàn per.mdo 8 ·~ir d ua regi .lo :-ótica. d i .u 8 m~tor
pela mpresa 1aril folh,1 de pagam •nto. lOt]Uc, mia s.ino 1 ·r alguma td ia do qu ·um bom al•oritmu dev' [JL r.
llorque •~nham rl'\JUhii,Õc 1 r E/ c Jll'u.:limcmc demora- em c •uiti permitirá que ele aia til.' ua rtltiâu uíti a 1.',
a receber, onta a (lílgar, c.il ulo de jur tem banco ), pro· Al!lun~ ubjcuvu dcpclllkm do ambu.>nte (lt ti.", intcrativ
da O tempo para a leitura de um bloco de Jiscn ~ . emprt pt rt.Jnm pemtite que A ontinue. pr lblt•ma. 1 mudo,
e o;amentc de pedklos de mdeninl ão (em companhia de ou tempo real), ma ha tambem aquele que ..ão desejá ei
um ~nw. indeJICll ·nt ·ment ' du QUJntu dcnwn: Jln ~ <X~ r t: que g r;thn ·na· u · almtJdur n3o pcMui J infunnaçiiu
'>l'~Uru 1 c muras tarda pcriútli a . 'o i tcmJs em lute para tudo o tasc.•s. Algun' objetivu !làu rdaliunadu na
os dado que chegam depois. necl' saría para on idl'rar t"S a dl'pendénda .
não há, em cus terminal • u uiÍnO) e perando ímpaaen- Tabela 2.8 Oi rutiremos ís o logo il eguir.
unvcm ob\t'nar qu~. à ml.'did,l que '" PU ~· tor- m qu. nu lugar. qu.mdu u ur~ · um inlt:rrupçãu uc
tc\ por uma rc llll ta rápida . un t>quentemcme. u aJgu- m quali.juer ir un tân :ia, ju ti a C: algo impmtanll'.
nam mal dpida\. U) prun ,,., ll'IIUcm a fi ar n l limlta- E/S, pode-~ tomar uma t.h:u .iu de c alotlJJIIt•ntu. t' ,1
ritm ,., nãu pr ·cmpti\'U ou JH •crnptivu. um lm~, inter· Proc ~o semelhante de\· m ter en'i o-. . emelhantt .
dO) flClr f!/ . E e eleno n 1rr porque a P 1.'\tàn fi an · intcrrup ào v m de um lli~po nivu ue E/ que a abou d
v<~lo d tempo parn c.:~da pr o ~o. em gerJl. a itJ, i . ão c JU to d.Jr mah tempo Je CPU a um proa: o do que él
do muiw mai rápida~ que o. tli cu . omu wn-.equência fazer -.eu 1 balhn, o prt c · u qut· c tava bloqut."ado, C'>Jll'·
o c calonamemo de prore o orientJdo à E/ d \'era s r rando pela E/ , pode agora ficar pr nto para cxemç.lo. o E. a táti a rcdu1 m hawJmentO\ entre pr • \0 c a. 1111 muro qui\'alent . Fclaro ut>rat goría dlfrrent d pro-
um il 'unw ma i<. impon.1ntc no lutum. id •ia ba ÍCil • alonadur 40 •m d ~de~ c·-a· u ta t pro' :">'><1 qui." ,1 ·ahuu melhorOJ n dt• •mp •nho 'a verd.ldt', o . lgmitm l d I te o,o pmlem '·r trat da d · mod, muno dl\ rs.<1. Pt•n •
que, o;e um pm e <,0 oríent.:~do a J::/ qui er e ecutar. e.. 1 de fi ar pronto, o pn e o que e ta\'a c rutandn nu mo- ão ba tante umuns e muita \l'zes apli .ivet a outra i no controle de o;cguran a e na folha dt p.1gamento dl' um
uportUJúdade de\·t e r rapidamente dada a ele, poi a im mento da intcrrup .lo uu algum ten:cim pnx:e o. tuaçoc tam~m. o que torna imponilnle e tudá-lo , até centro de omputação de uma usina nudc.·ar.
le l'\t' 11ará ua' rcqui içii~· de di o, mantendo n di o um hanJ\,, r t1 • rt:lógio f< m · inacrn•1 c> • pc- para ~ 'J qu não e tejam envolvídtl em mputa 3o De alguma maneira r laàonada à ju ti a t ta o rum·
1 upado Como vimo na Figura 2. 1. quando o pn c · riúdi ao; a 50 H7. 60 Hl ou alguma outra frt-quên ia, uma t.entral c lrp< r.lti\·a. prímentu da política do . i tema. e a políti a lo ai eqJbe-
o · :i o o ri •nltldos él F/ . iio m' e ano' algun delt pari! d ·...lu d' Jlonam •ntn pod r tomada a a la intt·r· m um ambs nte cnm u uam interatí\'os, ., precmpçâo lc e que proceo; o do ontrole d • 'it?~uran a e utam
manter a CPU llltalmcntc ocupada. rupç.lo de relógio (lU a ada 1.:-é ima interrupção de rt.'logío. é ~ enàal p<~ra evitar que um pmC'e'i o e apo e d.:a P c, quandn qui\ ·r·m. m '\1110 qu. h ( ) ·~nif1quc que ruthJ
aiJ.:oritmlh de c calunamt·nto podem er di~idiuo em om i l, nl'~uc ervi~o ao outro . Me mo que n nhum d • paRamento atra t 30 •gundo . o t: c.1lon, dor deve a -
Quando escalonar dtt.l atq~ lria qu, nau an mudu llmo tra1.1m ' ,1 inlt'r· pm ~<;() (' (' lllt' imen ionalm(•ntt' para empr ·. uma r.,. 'egurar que~: ,, políti a •ja •mprid, .
Um ttípku hmd.lmental, rcladunadu lll''otalunamcn· rupçik Um alg ntmu de alonamento não preemp-
to, é n mnmcnltl ccno de tomar a deà~ i· tivo t"SC lhe um pmce~so para e ecutar e nt.lo, dei a Todos os sistemas
daru que há uma \'ilri dade de itu<H;iic na 4uai u t c.:.l · ''-1." LUar dte que ~ja bluqueadc (à l">Jlcra de é / uu 1 .k JustiÇa - dar cada processo uma porçao JUS da CPU
lonamento é nec" rio. Prim iro, quandtl cria um no\ o um outn pro t o) uu •.11é que t•le volumariamentt• libere Ap ICDÇão da polibea - vcnf1car se a polltlca cstabelcoida ê c:unpnda
pm ·e w. é 11 'l ~'KÍri tumar urna dcd5à 1 entre c 'llll.Jr u il PU 1\\ mu que ek · c ·utc 1>or hora . não -erii wm · Eq lfbtiO - mantor ocupadas todas as partes do siStema
pro • pai (lU o pr~x o til h . nmn ambos pro 0\ pul riameme uo;pemo. \ a verdadl', nenhuma cll'd ão de
Sistemas em lote
c tão no c tadu pronto. c sa é uma dt~d~o n rmal de c ca- es akmamento é tomada durante a lllll'rrupçclt"S de reló-
IMam nw d I~ \'ar à~ olha d um <HI tlt• outro- Í\lll Vaulo (throughput) - maxrn1zar o rVnoro de taref por hora
giO. D poi qu · o pr ~memn da int •rrup 3<l d • rdt1g11l
é. o l"> alunadnr pode c olh •r legitimam ·rue C'-C:tutilr u tt>rmina. o pn o que r'itava exe utandn Jnl~ d.1 intt·r- Te~ de retomo- mimm1z r o tempo en re a ub oeo rmt o
pa1ou o tilho. rup Jo pro segue at~ acabar. a m no que um pron: so de Ullfaação d CPU - mant r a CPU ocupada o tempo rodo
Em st:gundo lugar. uma de i'lâo de c alonaml'nto prioridad • mah .:tlt e'>teja e p~rando por um tempo de e - S stemee Interativos
dl.'\'1." ~cr ton1.1lla ao término de um pm c ~~ . Como o pm- pcrc1 agora o;ali feito. Te~o de resposta - r spondor rap!dament às requ içOes
c l nãc pt)(k e"ecutar ffi.ll\ (ja qu • lc~ não e I te ma1 ), Por utm L1 in, um alg ritmo d t' alnn.:~ment pre- Proporcionalidade - satJsfazer às xpoctallvas dos usuários
ai~ um uutr 1 pm e :.c1 dt."vc er e t Ih i 1entrc u pro o cmpli o c wlhe um proces o c o deixa em e ecuçâoJ>Or
pmnto . e nenhum proct"S o estiver pronto. é e 'et'Ut.ldo um tempo má imo fi \ado. e .:~inda ti e r e ecutando ao Sistemas de tempo real
um proc.c 'ndo u gcradu r ·lu i tema. fin<~l dt~ · int ·nJ! • tic tem pu. u pro t' ~o •cá 'll'>~n o c Cumpnmcoto dos prazos - OVItar a perda de dados
m terceiro lugar. quando um proce o bloqueia Jlilril o e calonador e colherá outro proc~'io para e ecutar (Sl' Prev1S1billdade - evrtar a degradaçao da qualdade em siStemas n-..fllmíd1a
1:1 • wbre um emáforo ou J'IOr alguma outra razão, outro hoU\ er algum di ponivel). O e alonJmento J1rcemptivo
I Tabela 2.8 AJ, 111 1
Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
cap tulo 2 Processos e threads 91 91 S. emas operacionais modemos

~. o tempo ent rr a em i âo de um t mando e J obtenção do


re ultadn. Fm um computador p~ 'oal. no qual ta emlu
c erutado um pro<esso em egundo plano (por e\emplo.
lcndu c JrmaLcnandu mc:n gc:fu de: wrrcio c:ll•u "mtcu da
l'l'd ). uma requt i ão de usuário. para in i 'ali7.ar um pro·
grama uu allfir um artJUÍ\ 1, d ., •ria tl·r 1 r 'l ·tlêtt ·a obr •
t trabalho m 't' und plano. tenderam,, t1 toda a r·· Tarefa mais curta primeiro
qui i õe imcrativa !>t'rá um iderado um bom C: I'\ içu. \ejamc,., um murn Jlgt ritmu em lote não prcemp1ivn
ma qu tão relaoonada a c e toptco l1 a hamt1d,1 qu • 'upõe como previam nte l mhecid todc~ o tempn
prop r J nalidade. o u'uárim tfm umJ mtui ãn (ma dt exet:ução. Em um.a companhia de ~t.oguro~. por exemplo,
muita n·n•, l'rratlaj de quanto tempo as wi a d ' Vl'm du- a pc la ptxl~:m prever. wm ha tanll' pred'>du, quantu
rar. Quando uma n:qui i<;ã< tida umo omple\a demo· tt:mpo era n • ~~rin f)Jta ·-.:ecutar um lnt d mil ~lli ·
ra. IK u'uáno. a eitam i ~1. ma • quandn a demora txorre 'ta t" • j.i que um 1rt1balho imitar é feito tndo o dia,.
m umJ r ·qui ição ,m,id ·rada impk... u u'u.iriu fi am Quando varia tarelíls tgualmente mlp<.lnílntes e tiverem
irritado . Por e cmplo, • ao licar l'm um ícone qu in i- Jlll tadu~ na fila de entrada a t: pera de '>l'ft'tn ini tadu . u t: •

da o 0\10 de um ra . s.in nece. sário 60 egund Jlilra alonador escolhe a tarefa m ais urto prim iro (slr.trttst
l mdtn-lo. u uario pr lhl\dment · cn arará i o omo ;~·b firsll Veja a Figura 2 32. Nela cncomramo quatro tare·
prote'>so. tne\ aw\'el porque não t"'pem que um (a , '>t'Ja en\iadn em la - . 8, e D- com u rc . pe Í\1 tempo de e 01 -
O gerente tic ~randc centro~ t.lc wmputação - ·nw egundo . ãn- • 1 I I minuto , rt.')pectivamentt'. Au ~:wwt.i·lo
que e e utam muita tarer., em lote - ob ervam em Por outm lado, qu;~ndo ou uJrio licur em um ícone neso;a ordem, o tempo de retomo para I? d nito minuto ,
geral, I rc!> mctricas para c.: ri ficar c U \Í. tcnla\ ddc C • para intcrrumpl't J wncxãutdcflluita JJl() I) l'll i<l do rax. para 8 c de 12 minuto • Jtara t: de 16 aninuto~ c para D c
tão c ·e ut.lndo bt:m ou nã · va7~ic . trmp de rt 1 mo de 20 minutos. 1 que r uh a em uma mtX!ta dt' 14 minuto .
d · tem e\JWCt ti\ a diferente.: .. 1. nãu tiH·r ido n1n loa-
e utili1ac,ão da CPU Vazão t o número de tarda pm dtl JflÓ 30 ·•gundu • u u u.inu pmvawlmente come ara a on ideremo agora a c. e ução d t.') quatro tJrda a
hora qu o i t ma ll'm1ina. un iderJndo wd o qu foi n' l.1mar c. apó\ 60 'egundc . ;'<;tar.i t pumando dl' rai\J.
panir d >algoritm rartjcl n:att ma pnntttrll unformc ilu ·
di' ·utitlu. ternlinar 50 tarda tnr hora é mclhur du quc F • um punam nhl e <.JU'i!du p.:J,1 m ,, it.i\' I nmpara :in tradu na fi)lura l.32tb). t·mp d r•tumo ão agora4.
tcrminJr 40 no me mo periodn. O 1 mpo de retorno que o u uário !az QUl' reaHz.ar uma chamaoo teldônka c . 12 · 20 minuto . ·um uma mêdta de li minuto . A t.m:{.t
· .,talhtt am •ntt: u 1 ·mptl mcdtu do mom ·m > t:m qu· p;~ 'lar um fa. d ., •ria demurar muítu ma h o que d · li~iH m IS unapnmmil PJrt'ce óumo. nao? on ider o ca u de
uma taPfa •m lot é ~ubmeti lo .11é o mnmento em que o 1 •lcfone. m al~un <.)<, 1 mo t 1. u c c.-.lunador nãu quatro 1.1 r.: fa,, wm trmptX de: c u iiu ''· b. e d. n• ;pc.•oí-
ele é terminado. Ele indica quamo tempo, em média. u pode fa1er nada om reta ât> ao tempo de l't'SJl(>'ita, ma em \"Jm nt • primt.'ira ta r ·f,, tt•rmina nt tt'mpo a, n •undu
u~uario tem de esperar pelo hm de um trabalho. qui a outro . a\ im. e pecialmente naquele em que o a1ra~1 termina nu tempo a+ b c a im pur daantc. tcmpu mt'tliu
regra e: quanto menor. melhor. · decorreme d uma ma e colha da ordem do pro eç o . dt' n•tomn • (4J 3b 2• + d)/4. f. IJru qut' o mtrilnu
Unl al~torllmu t.lc c.: ultmJIIlt'nto que mcJximiLt.• a \'cl· ma , para a média que o~ uulru., t •mtxl ; ll<lrtantu. ele de·
i tc:ma' de tcmpu real têm pmpri ·d de dikrc:nu:
zào pode não ne e-~s.ariam ·m mínimi7.ar n tempo de re- veria ser a tarefa ma1 cu no. c m o b depoi . então o l' e.
dor; i tema intemtivor; e, Jl<1nanto. objetivo dilerente .
por fim. o d- cnJn ~: t~ o mai~ d ·mtnadu c que alrta -.tl-
tomu. Pur c emplo. dada uma rui lllra de tarda cuna e Ele.. SJO araaerizcld~ pm prazo que dc\·em- ou pdo
lt nga , um e., illona r qu e 1.' ute empre tJr f,, cu na nwnte ( u prcíprintempu de re1 rnu. me mo argumcntn
m •n• de\' ·riam - o;cr cumpridO'>. Por ewmplo. •m um
c mtntcJ tardcJ lung<~ pode c mcguir uma c cckme \'cJ· c apli a igualmente b •m a qualquer numero de t<Hi:la .
t amputador encarregado de c mtrolar um di Jl(> itJvo que
:~(n (muita . tarefa runa por hora). mJ à cu ta de um pruduz dadu a uma ta\a c 11\tantc, uma falha JO l'XlXOiar C tw(·m OO<;t•l'\•ar que a ratr.jd mai am rnmnro (• ade-
•uormc ICliiJlO 'r •torno (lélra a tarcf~ Jon •a . C iJ'Itare· o pr e o de >leta d • dadn\ em tempo hábil pode re ultar quad 1 c;omeme pclta ituaÇ\· em que tod..1 as tarefa este-
la cuna mamiver m uma ta a d ch j!adil con tant • a na p~rda de dadu . A' im , a prin ., ale ig~nda de um i~­ jam di ;poniv' imultanc.lmt'nt~· oroo um mtr.W\t'tnplo.
tarcfJ~ longa poderão nunt.J •. · ut.U. wmantio o t ·mpo tcma d' tempt> real ~ 1mprir wdc' o pram ou a maior
médio de retomo infinito. embora atingmdo alta \'cl7ào pane del
PU tamtxm ~ muna ' '71!' u\Jd F.m algum i u·ma dt' •~·mpo r •nl. \P • ' alm~m • tM · A B c o
umu par.lmctru em • tema c.:m lvtc. Na ' ·rdaút:. c c.: quck qu · envolvem multimídia. a premílnlidadc · tm ·
n.'io é um h m parâmetro. O que realmente imere-s a t' ponante. Del ·ar de o1mprir um pra1o ocasi nal não r
qu.-.nta tar la por hor.-. 'c1 m do i t•ma (\a7âol e quan· fatal. ma'>. c o pr > c o de áudto. por ewmplo. 'Xl'(:Uiar ()
to t mp levJ para rc eber o r ~ultado do trabalho tem erraucamente. ,, qut~hdade d 1som vai d •terinrar ráp•do.
pode returno). 1i mar a udliza .io da PU 1mo medida é vídl'<l tambem é um problema, ma o ou\ tdo i: mul1o ma i
o me mo que avahar um carro pelo número de gir que sen 1\'el a atrJ o~ que a vi · o. Para evitar e e prohlema. o
eu motor tlá a cada hora. Por outro lado. abcr quando a alonament 1 de pru<.e -~~ deve ·er altamente prt'\'l~ível B c o A
utili7a i\o da PU t.l apm-.:imandu de 100 por cnto e rcj,~ul r Ainda nc tc.: t:.lpilut >.c tuJarcmu u ai~ >ritmt
~ útU para iueotifi ar u momento tle obter mais potên ia de e alonamenlll em lote e interativo. ma> adiart'mtl a (b)
para o computador. maior pan~ de no o e tudo '>Obre n l"'IUI nam •nto em
Paril ,i.,t ma int •ratiVt)\. apli am· · ubj tívu dift'rt'll· tcmp.l r al para o apitulo 7. qut' trJta d • i 1 ·ma ntlcr,l·
te5. que impona lt minimi7ilr o tempo de r po ta. i. to donaí multimídia.

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
Cap tulo 2 Processos e lhreads 93 94 S1stemas raoooais modernos

con id re in o tMefa • de A a 1:. um temfl( d ewcuç.J , Processo atual Próxtmo processo de 50, enqu.:tnto um pmce 'iO que e ecuta 15 m ame de
l, 4. I. I e I. rc J'k.-clivamente. t.'U tt.·mpo de tht.·Raúa bloqu 'ilr tcn<t pri rid.1d · 2. e um pro • l qu • houv • "'-'
-.â<l o. o. 3, 3 e l. De lllicm. "llln •nte A ou 8 JXldem e r e • on um ido todo o quantum teria pn ridadr I .
()lhida~. j · que o uuua trc tMcla ainda nãu thcWJram.
(a)
Uc;ando a llm~fa mau •UI1tJ rrin rir.,, e. t"C\\taremo a tarefa
na vnJcm A. B. C. D. E rara um 1cm1 , m~diu de ( pera de Processo atual
4,6 nntudo, t' cut.i-lo n.1 Mdem B. c. D, F. impli J u'l.lr n ah nam •ntn drcular. Figura 2 3 mmtra um
um tcmpu m~diu d • c. pera de 4,4. I tema lOill tJUillrtl Ja t' de priurJuade. alguritmU ue
(b)
llilr. c alon.1menm ( o c uintt•: enqu.lntu hma\ •r pro c o
Próximo de menor tempo restante 11 smo em um P com um úmco prnpriet.irio, pod e 1.'\.<Jtá\'d · na la e de prioridade • execute ap~na um
Uma ver àu prcemptiva da tart/tl mau cuna printtirCI havl'r rnulllplc pm t.•Wl'i, algun~ mai imp(lnantt') que por quantum u-..mdn calon,lm ntn clro•lar c nunca per·
e o pr imo de menor temp re Lante (sh rtm U · outrt . Por ·xcmplo. a um pru · o dacmon. quc cmía a tempo mm a~ da~~l'S de bai>..a prioridade. c a da c de
um c c Jlgontmo. u c alonador
lllolllling flnt( IU).tl . men.,dgt·n de wrrciu eletrônico em egunc.Jo illano. dew pri ridade 4 t."itiver 'a1ia ( ~em proc s p<~ra e ecutar).
empre e'rolhe o pro e o cujo tempo de e e ução re r atrilmda uma prioridade ma i bai'\a que a um pr ·c cmã e\e ute th pnlC"' x da la e 3 em havcamt·nto
tantc 'icja u menor. uvamcnte. n tempo dt.• exnu Ju tcrã tlc ga tar (ou melhor, c~perdi ar) I m' para havcar que cl(lhe um \Ítlco na tt.'la cm tempo n'al. circuiM ·a da' • 4 • 3 t.'\11\crcm amba V.llíil , então
deve er previamcm conh ido Quand(> hega uma tl prun· u.• L"''>t: cwmplo. 10 pur tt•ntu do t~'lli!XI dt.• PU Para C\ itar que I>COtt.' \O de altd prioridade c t'<:Utcm 1." i.'C\Jte J la\ t' 2 em htl\t'illlll'ntO r UIJr. t.' il 'iÍnl J1 r
nova tarda , cu tempo total ~ 1..omparJdu au t ·mpo rc~ · ..era ga to rm admtnbtra ão. o que sem dúvtda é úemal\, indclm•damcntc. o ' ·alunador pode: rcdu.âr a pri< ridadc diantl'. e a. prioridade não forem ucasionalmentt' aju •
tamc do procc o em urso. e. p.1ra termin.H, a nova tatla~. a la ·es tlc prioridade mai'> baixa poderão wda
Para mdhorar a dkienda da CPU. pod ·riamo c'> tabe- dn pr< ~· "I em l':\C u .io a lada uquc: d · r ·lt1yío ( i'l! e.
tarda preá!Hlr de meno tempo que n rm c~~t wrrcntc, le a o ,aJor do quantum em. digamo , 100 ms. gora. n a lolda interrupção de rt'lcigio). e i o ti7er om que ~ua morrer de fume.
cntiio • c ·ra .,u 1 ·n 11 e a nov,l t.Hda ·ra íni iado. temJitl lt.l 10 é ·a pena~ I por lentu. , •o c:ntantu, Wthider · prioridadr GJiJ abai o da prioridade do prú. imo proces-
E c c quema pcnnite tJUt.' llll\J tarda t.unu obte- Filas múltiplas
o qu pode ac mecer em um l-tema tempo rompani· s om prioridadl' mai alta, então owrrerá um havea-
nham um bom M empcnhn lhado ~e 50 olicilJ i'~ . forem r •ita dentro dt.' um uno in · mento d pr o. Outra po ibihdadc é atnbu1r a cada m dt,.. rnm ·iru c t.:.tlonadt n: por 1uiuridadl'\ fui
tU\ ,1lc de tempo • m grantk v.11i. ão na .. n ,iclatk dt• implementado no CT • n 1 trma mpativel dt.' lt.'mpo
pm • num quantum má. imo no quaiL•Ic pndt· e e tll.U.
PU. inqucnta proc.:e u \erà 1 olucados na 11\ta de pro· cumpanilhadu dn tiT que npt•rava no rBM 7094 ( urb tó
Quando t.>s. e quamum e tiver e gotado. erá dada a npor-
L O'> ex~rut.w •i . • a P th·t.'r odo'>tl. o pnmciro d~ et ai.. 1962). O cr tinha um problema: o cha eamento
tunidadc para qut' u pró. 1mo pmte u wm prioridad~
pmc.:e Ml inídalilarã lmediatamcmc, u ~undu nãu ptl<krá de pr l ;c _ u c:ra muato lemo porquc o 70 4 li p ldia man·
Vejamu então algun'> algnrítmn apli adc1' a i'tem, mal alta e cute
inioalitar enquanto não 'IC.' Jlil ~r~·m I 00 m a im por 1 r na mem )rin um pro e o por n·z. ada h.weamento
intcratívu'>. Ek ã , ' rnun em \lnlputadort.':'l pe o h. Priorldad • podt'm er atribuída a pmc~c;o está ti · -~~lllh \J trocar todo o pnlCe o. ou ~ja. enviá-lo para o
senidore-; outnx tipt de iqema~ t.Jmbêm. diant . último M.aradu pod u:r d > t''I ·rar 'n "egundo' a ou dinami amem . m um comtlutadm militar. 11 prn·
antes d ter uma oponunidade- upond 1 que todo os ou· di co c: I~ r outro do dl o. o projeti ~a do cr logo per·
t: ·~'l) in i laul,., (Xlr general' pudem panlr u m prioridade ·beram qu • ra maí\ l'lideJll• d.1r. de v ·z c:m quJndo. um
Escalonamento por chaveamento circular (round-robín) 1m u..em imt·•ram •me ·u~ qu nta . 1\ maioria du. u Ui! rio em 100; t,., llroce 1' imdado por c 1mn~i . em 90; 1,., de
vera c 1100 pmbll·ma uma rc po'>ta ~ um pt."qlll'llo wman- t}uamum grand • para o pro l' " llmitadt,., JX'Iil PU do
Um uo algoritmo~ ma i anugo~ . . tmple • ju to e am· majort • ~m O: os de capitãe • em 70: o de tenente . em QUt' fOml'Ct'r fR'QUí.'niCilli.'nte Ufll quantum peQUt.'flO f~lilra
plamem u~do ~ o drcular. A cada proc~: o~ atrihuido dn demnr<~r on , t."gUndo<;. ,...., ~nua ão t t' p 'alm nte
60, e a~~1m por d1ante. D outra fonna. em um emro dr redu1ir a op raçõ( de tr a ~ntrc o di o e a m~moria) .
um mtcnalo d 'lt'ntfl(l, o ·u quantum, 111 qual t.'l · l'Jl'r· num c algum da olidta f • pro ima ao fim da fila l' i-
1m puta ãu umeR1al. 1rallalhu dt.' alta pnondade p dem Por uutro I dn. dar a todo ti\ pnxe '>O um quantum gran -
mllido e ecUiar. e. ao final do quantum. o pr e-; o ainda glr a(lt'na algun mili <;egundo dt tempo da PU. om um
r:u tar t ·m dtílar :-.. 1wr uma lwra; um d • prmridad • ntl~i • de 'ignific.uia ter um 1 mptl de r po ta ina lequa lo. con-
to ll\'Cf cxc utandu. a PU frcra preempção c ·ra dcJd quantum lUrto. O\ u u..iri I\ leriam obtic.lnn melhor crvi~u.
7S dúlar por hur,l; e n de ilrlurirtil(l • haí. a. SO d61arl fonne vimm. A olução, tntãu. foi udinir ua c dt prio-
J tiUtnJ pruet: (1, ' I f CU( I fm lluqucado OU lt.'nllillOU Outro fator t.' o eglllme: se n quantum for mmor que o pelo m mt, período. i t ·ma U I 1 m um 1 mando. ridade proc os na ela se de prioridade mai alta eram
ant~ que o quamum tenha d corrido. a PU t' chaveada un 1 méd1o de P , a prrempc.ao raramente orurrt.'r.i .• 'a 11i t , que pc:nnitc que um U!>u.iriu n'duza vulw1tariamcntc c>.t: utadn\ f)(lr um quamum. ' 1 ruu..,~o na da t' c-
para mnro pnx:e "''· l' altlnamentu cirtul,lJ t' ládl de \·t.'rJadl', a ma1or pane do., prc "' 'm bloqueará antl"> quc: a priuridaut· dr l'U pro c ., 1 e. a., im. ,t•ja gentil wm o' gumte de prioridJde mai alta e c: u&.wam por d i~ quan·
implementar. O e alona dor ó pre i a manter uma li ta de o quantum a ilbc. cau ando um chavcamenw de procc~w.
OUIW'- li u.lrio... U UilllO llUIKél O Utili7am. til. O pro • 'J() na pm tmtl da 'it' '\1.'\.utavam por quiltro
pm ~'iO' exe utáv r . cunfnrm rnO'itra a igura 2.33(a). Fliminar a f rt>empção mt.'lhora o dt• empenho porqut• o
Quando o pr u.'., o U'iJ todo t1 ru quantum, elr C: col a do dla\eamento de prote o >mente ocorrt.' quando ~ logi-
o i tema tamhém pode atribuir dinami amente ;r quanta e a. am por diante. t' um prl e so mili7a - e todo
prituídadc !Iara atin!lir certo\ ubjl·tivu . Por c l'mplu. al- o ·u quant<~. ·ria mo\'ídn para uma da \C inf rlnr.
no flnal da li 1.1. orno mo ~ra a Figura . B (b) . ,lm nt • n • <;.i rio, i\tt i. quan I num pr u t lnqu •ia •
gun pm to u ão altJmi.'nte nentado a I e ga tam a
qul' imere .)<1 para u c alonaml'nto drcular é u ta- nã 1 é mai\ capa1 de ontinuar.
maiur 1'-Hil' de' ·u tcrnpu C'Jl'ramlu que umi!l:/ tcnnine.
manho do quantum O cha\eamento de um proce-;<;O p.1ra A condu àt> pm.h.• ser fonnulada a tm: adotar um
e um pro e como e c;e qm es e a PU. deveria recehê-
outro n·qu •r unl.l ll'TI quantid.1dc: d · tt·mpu para Uil <1Uantum muitn uno ausa mum h.w .,,m •ntn\ d{ pro-
·lcJ imcuiatamcntc:. f\Hil dc:hà·lu ímoéllii.IJ ua pruxnna
admimstra ã -salvar e CJrregar regi tradore-; e mapa de ç 1 re lu7 a •liciência da PU, ma um quantum muito
requi lção d F/ • a qual poderia ~·ntã cc nunuar em p.,. ta)
mcmória, atualitar vária li ta c tabela . carregar c de.: ar· longo pod gerar uma r po ta pohrr à requi tçõt>s inle· ralelo Clltn outro pro c tl que c lt\'l' l' realmente ·umpu·
regar a me mo ria ache etc. upon ha que ha camcn- rath a t.una'> m quamum em tomo de 20 m~ a Om~ ~ tando. Fa7er n proce \0 orientado à FI e perar um long,,
LO de P~" o - ou haveam nto de ont to. nm1u b.1~1ant rM<lo.wd.
tempo pela CPU ignilica tê-lo ocupando a memória por
:al~:uma~\'7~ hamadn-durcl m , in luinloo hav •.l·
Escalonamento por prioridades tcmp dcmal de llt'(' riam ntc. m algnritmo ímpl
mentu do map.1 dt.' memoria, de CM~ e rc arga da a he e que lun ona bem para pm c o orientado a I e atri· Pnoodado 1 (Pnoridado mal bruxa)
cll. uponha rambt'm qu o qu.lntum t>ja de m . onH - O e · ale namento circular pres U(>Õe qut.' tod , pr -
.., parâmctrtl\, dcpc i~ de fa1cr 4 m de trabalho útil a PU c o jam igualmente imtx>nantr... frt.'qucme a pe •
oui r l /f il prioridade. endo f a Ira à do uh imo qu,lntum
que o pr c o u ou. Um pmtc '>() quc: li\ e e utilizado nbt tcl d SCii!Of 1 11lu rum q IR1m
om ·nt I rm d 'li quanwm de 50 lll obt ria rn ridLI·
l Qulnl o~ = phrr.tl d •I ~ m u rn r~ R T 1.

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
capitulo 1 Processos e threads 95 96 S1stemas operaoona•s modernos

orno c:-;emplo, imagme um pron: o quc pr · \a w curta rrimdr,,, o úni ()problema f ~!ler qual do' pm 0) v i\, mJ'> de implt'm nla ão muit , mai impl o d1amado
lmpmar mtinuamcnte por I 00 quanta. lnidalmcme. a atualmemr c c Jta\ei ~o mai runo. e alonament porloteria (Wakl purgcrc W•ihl1994).
de t'nil dado um quamum. c.' de rntão cna lt\ ado da Uma ·J1da l' r ali7.Jr uma e tinltllh a 1m b.1 no om· t\ tdeia baçJ a e dar bilhetes de loteria ao~ pmce ~o .
mcmtkiJ 1}.na o di o (tro il par,, u di cu). Na" •1 l~uint • rtamentu 1>.1 sadu c. entâ 1. c eru1ar o pmt ·u (Ujo rujo prémín ã, vário rL'CUCSO do 1 tema, orno tempo
ele teria doi quanta Jntes de orrer a troca para o dis o. tempo de e çãn c~imado ~ •ja o menor. uponh,, que dt.> PU. e holl\ r um,, d i ão de e Jl natnl'nto. um b•·
A. pr\n.íma ex •çuçõe obterltlm 4. 8. 16, 32 c 6 I qut1nt.1. o tempo e timadu por c.omilnd, para algum terminal ·ja llu:tc dl' loteria erá c colhidu all'atoriameme c o prOll: o
emboril te tlw u ~do .1pena\ 37 do<i ultamo quan· T0 e qu 'illil próxima t'WC\1 .in eja medida como r, Po· que tem o hilht'll' on\l'gulrá o tt' ur.u. Quandu apli adu
ta para n•alízar ~u trabalho. criam ncn arla ~mente dcríamu atuahZJr no a c tunativa tomando uma oma ao ~calunamenw úc CPU, o i tema pode fazer um sor·
~te troca~ entl\' a memmia e o di o (incluindo a arga ponderad,l d~o;e~ dm numero . asto e aT t (I - d) T1• Pela I •io 50 \'l'7l"> p r •tmdo . nanto. oldJ \l'll ednr terá
inaCJal). em \l't de em para um algoritmo puramente r· .., olha de a, JXxfemo dl't"idir ~ o pmte , de t">tJmau a 20 m de t ·mpn dc PU wmo pr~mio.
rular. Além di o, a medida que o pr e o e apmfunda c que l'ra rapidamentl' a ewcu il"\ antt.'riot( ou l' lem- P.arafra.,cando Gl·or~tc nHII: ·Tod u. prun '>U!> ãu
mal na tila d prioridade. ·k ria lada \l'/ menu Ire· brara d la J)llr um lon):o tempo. m a = 112. oLH mo iguat'i, mJ algun '>àn mais igu.11 quem outro •. o pro·
quent mentl' c' :rutado, libcrand a \: timati\ a u "''a de c so mai importantt podem cr atribuído bilhete ex·
interativo c rápido . TP' T 11 + T/ 1. T,/ 4 -i T114 .... Tz'l. T I T/ 8 T/ 4 + T/1 rra para .:~ument.lr u.:~ probahilid. dl' d \'it6ria. ht u-
Foi então adotadJ a guintl' políti ,, Jlilra im(ll'dir umJ \ cr cem bilhete c tra c um pr()(c o detiver 20 dele), c ~
Depm de trê nov~ e~l'<UÇÔl~. o 1 o d • T0 na no a
longa pumçãn a um pmCl"'\Cl qut>, quandn midadu pdtl proc~ o terá uma hanc de 20 pm ccnH de venc r ada
c timativa aiu para l i .
primeira \'c7, prcli a c c~c utar pur um lungo intervalo loteria. Ao I mgo Lia l'\e u1,ão. de ubterá 20 por lento da
témica de t: tim.u o vah r <;eguimc da éri c, tomando
de lt'mpo, ma~ que depn ~l' toma interati u. t' r)~.. .P . Dif ·r nt •m •ntt• d • um ~ alonad r por prloridad :-;, ABE
média pontkralla do valor ~endu mt'<lído l' a e tamati·
di)litadu um < nter> em um terminal. o prou.~\o ~ncn · nu qual é multo dilíc.il c tahck cr n que li· Catn •gnifi
\a anterior. t algum.:t v~7t''' h. mada M agln cnvelhc· É darn que cxbtem múmera outra~ f <.ibilldatle •
ente àqud terminal era nHwid< p.1r. a da d priorida - uma prioridade O, aqui há uma regra clara: um proc o
l1nll'ntn). E \J té nica é aplidvcl a muna itu ·(íc na igualmente pa ave i de erem '\PI >rada\, dcpcndt·ndo da
de mai alta, na upnsi ão Je que de e IÍ\-t'\~e pr te a e que dctenha uma Ira ãu f do~ bilhct obt rá ·rn turno d •
qual e pred o uma previ ão ba~eadJ no \alore~ Jnterio· n<K,iin de JU tiça.
tomar interativo. eno dia , algum u uario com um pro e • uma fração j do rerur o em qu tãu.
rc . ~::íng c C!IJ niahlll'ntc l.icil de impll·mcnta• quando
l pc dameme llnmado pela PU dc,wbriu que. cntan- O l' alonilml'nto por lc teria tem \.iria\ propriedJdf'>
a = 111 Basta apena .1d1 1onar o no o ''at r .i tlm tlva s de
do ao terminal e dJgilando <Entra> de maneira aleatona e interc antl' .. Por ext.>mplo. e aparen· um no\'O pro oe
atual c dh:idir a 1111a por 2 tde locando I bit à direita) .
a intervalo · de pouw '>egundo . podt.>rla [illcr maravilha a ele ~o atribuído' algun bilhetl"í, j.i no pró imo ~orteio
por 'it'U tempo de r~ posta. Ele cunu u i tl para wdn < Escalonamento garantido da I lterla \lia probabílidadc d • wn c r ·rã propurdunal Um \I lema de tempo real e aqu ·lc no qual o tl'lllllO
~u., amigo . Moral da hi tória: wn~eguir atcnar na prátiGJ au mimem de hilhct· qut· el~ tiver. Em nmra'i ]\ll,l\ ra • u tem om.1 função e en ial. Fm geral, um ou mai di,posi·
Um m(:wdu wmplc1.1mcn1c dikn:llll' dl' liili r l m
é muito mai dlhdl qu ·acenar na teoria. c ~aluuamcntu por loterht é altamente re~pun\1 u. tivt fi i o "\terno ao Ct mputador g ram c umukl . c o
tl • alt n.lntl'ntll l' f.l/Cr pmmli' rcah lOI'I.' o d~ cm-
Muilt)'t outro' t1l orítmo' fnr,lm u'iad<., parJ atrihuir ·nhu an., u,u,irln t.'. entãn. ali f.:w;· ln,, UmJ prmne-. a O pro e so cooperativos podem 1rocar bilhetes entre computador de\ e reagir apropriadamente a ele dentro de
procc so a da C'i de pri ridade Por l'mplo. o influente reali\ta e fácil de umprir é e ta: hoU\ er 11 usuário n· i, l' a im d~ 'JJrcm. Por e\.cmplo. quJndo urn pmce.,.,u um dadu intervalu de tempo. Por cwm~llo. o computador
l'tcma D 940 (lamr m 19 }, umtruido em B ·rke· nenado enquJnto você e tiver trabalhando, vocé recebera dicntt• envlil um,1 m •n'iolg •m p;~ra um pro~: o •rví !ore, em um O plo1 •er obt •m K hit que hegam do driw l'
lev, po uia quatro la~o;e de prioridade: terminal. F/ • então. é bloqueado. ele potll' d.ar todtl!l u ..ew. bilhete au pre ·~a omenl'-lo l'nJ mú i a em um imervalu de ternJ'Itl
cr(<t dl· l ln d · CPU. O •modo cmclhilntc. l:m um bt ·ma
quantum runo e quantum longo. Quando um pmce su ervidnr, para que aumentem a probabilidad de o ·rvi · muito rurtn. e o cá I ulo que te tl7er for muito clt-morado,
monuu uano nm 11 prnce-.'i<l l'ffi
QUl' • tive M" l perandn pela entrada de um tcnninal !J. dor e\OOllar I g\). Quando o ervidor 1errnma. retoma o a músicJ 'iOJr.i diferente. Outr1) e emplo de i~tema'i de
Jtla um d \l' rt• eber I I n · In' d
nalmente a :ord~ . e. ele iria para )a,~ de pnorídJde ma~ bilh 'h,.., p.u<J u hcntl' c: cnuar nm amt'nt · ~a' rd,1dl'. n.:t tcmpu rt.>al in lu ·m: munitoraçiio ú • P.' i ·nt~ t•m unid.l·
Ol'ntcmente ju to.
a1t.1 jlt•rmin.11). Quando um pr< o blnqu adu ptolo di o au t:nda de llente~. o cnidure nem pred\Jm de bilhetL"\. de<, de tl'rapia intençha dl' hu pitai • pilmo automáti 11 de
fica e pronto, ele Iria para a ')eguuda da'> . Se, enquan · Para !a1er valer a promc Sc1 o i~tl'ma de c manter
aeru11a\·c e rt bo dc wntmk em fãbd a\ automatil.aua .
to um pn e o ainda t"'>th c e c erutando. cu quamum
o controle da quantidade dr PU que cada pm<'t' 'iO re-
m todo.. ~ rs a~o . ler a re posta cena. ma tardta, é tão
a aoo ~ •. eriil iní 1almente aluc:adu na 1erc ·ir<~ d<M •. on· be d ..,d • ua cria .in. Eh.· cntJ l ttl ula il quantidad • de ruim quantu n;iu tl'r nada.
tudn. 'if um prt e~~ tem1ina e eu quamum ,.ária ve1e PU de tin da a ·ada um ou llllJlk"mente u tcm(lo de de
t temJ~ de tempo real são em geral ateg lrlzados
·m cr bluqu ·adu r~lu tcrnlmaluu 11ot utra E/ • iria par<~ a ria -u di\ idido por n. omo a quantid<Jdc dt• tempo de
c 1mu tempo real crfti o, btu é, há praw al uluto que
a última fila Muit outro si tema usam algo semelhante PU qm Cilda proc n n'.llm ntc 1 w t> tilmh~m onhe<i·
dev m er rumprido ou. ent.lo. como t mpo r ai n o
para favore er O\ u ujrio!> interatiVO) mal do que o pro- d• . wm · '>l' fádl ai ular a ta a ·mr• u tem pu de PU de
ríti o. 011 qual o til.., umprirncnto o a iunal de: una pta·
O\ •m 'I 1:undo plano. fato nn umidn c o 1 •mpo dl· CPU de tinadn a ada pro-
7U i: m<k ·jávd omtudu tol ·ráwl. Em amoo o a'lm. o
te. O. Uma til il de 0,5 . ignili il que um pn C. Cl tC\'C \(}- componamcntu de tempo real é implementadu dhidindo-
Próximo processo mais curto (shorlest ptocess next) ml'nte a metade do que ele de\.eria ter, e uma ta a de 2,0 • · o prngrama t'rn \oilrioc; pmce o cujo comportamento
omo a rar~J11mais ama rriml"tr•' ~cmprc resulta no ma- ~lgmfi a que um proc~so tC\C dua t'l~ mai . do que lhe Escalonamento por fraçio justa (fair·share) é prenam •nte conhc 1do. De modo !!l'ral. t">'tt' pm e' o
nírno 1 •mpo médio d • rc: po ta para \i tema em lote. cria [oi de tin.:Jd\l. O al•oritmo l'ntào rxe utará o pnxe so wm tt?m vida ana c podem c l' na r em bem ml'nt" de um s ·
Até ~ura tcmt Jlan•tlu do prt upo 1 de QUl' cad,
bom e ele tam~m pude e er u ado para pr C'i n mte- ata amai bai a, atl' que uataxa n.•,ça e l' aproxime da !!Wldo. Quando é dett'(tado um evento externo, o trabalho
pm ~- o é e., alcmado por c;i próprio, em no'> preocupar·
rativü\. Até teno pomo. i'i'>O C: po 'ível. PrtKt' o intcratl· de cu competid r. do t"S alonador é alonar o pro e. o de tal maneira que
nHI!> um quem é eu dono . Como remhado, ~ u u uario I
\O gcralment guem n padrão de ptrar por romando,
Escalonamento por loteria in i aa nove prn ...., o e ou u.iri< 2 in ida um prc ( • nm tudo t)'t 1>ra/() t.'jatn tUmpridt ' ·
l'~ClUtarwmandu, c (Wrar pt r wmando. l'\cl"Utar wman-
dtaveamt·ntu drcular uu wm priuridaúc: •guai • o u uáriu cwntu 'quai um , · tema de tCillJ"K) Jcal pude
tlo e a im por diante. t.' \c . emc a 1.' aaçâ l d ·cada co- I obterá 90 por ento da PU c o u uárlo 1 tcra omcnt • pre isar rc ponder podem cr ategori1..1do ainda orno
mando lOmo uma 't.lrda' bolado. ntão pod ·ríamo mi· IO por ccniU dela. periódico tocorrem em intervalo regulare 1 ou aperió-
nimi7ilro trmpo de re'ip(Xta geral exe utando a rartfa mais

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
cap tu lo 2 Processos e threads 97 98 Sistemas ~aaona1s modernos

dl o ta onre em de modo imprevi ível). Um i tema Processo A Processo B o1 he). I pod on idcrJr e t1 ínf mna ão quJ nd11lor to·
Ordem na
pOOC.' ter d • r~pondt• r a multipl llu>.o de C.'\·cnto p ·rió·
diw~. Dependendo de QUJnto tempo <:~da C\t~ntn rcquctra
::a: -c::---+-----+---.
executam
mar uma dl"Ci -o. Pur c cmplo datl tloh thrL•ath igual·
menu~ tmponantl'\, '·ndu qu um dele (lt'ncn c.> ao me<>·
para proc ·~r. tahcz nem '>CJil po)Í\eltrat.lrdc wdo . Por mu pmc o de um thrcad que acab •u de l'r bk•quc.Jdo
e. emJill. • houver m ewnto periódi os o ewnh> 1oc r· 2. 0 SISt ma u omro pencn a um proce~o;o dakremc. a prefer~nda
rcr Wlllllerttlllu P c 1 equt·rt'l C ~gundo dt' CPU 1ara tratai suporvtsor l\\;r...;..-::::1 potleria ser dada a primeiro.
se CiOOa
ada cvento. endo a arga poderá cr tratada meme · utro fawr importante~ que thread deu uário po·
um lhread
tl·m utillt r um :!lt.llcmadur tlL·thr •ad 1 • ífi u )Iara urna
p S I apli a .lu. Con ítkrl'. por L' •mplu. crvidur da Wdl da

Um i temi! M tempo real que ilti,fil il e rriténo · Possível: A1, A2. A3, A1 , A2., A3
Figura 1.6. uponhJ que um thread <pt>rJrlll tl'nha J a-
bad 1 de \I:T l:tloqucadu c que u thrcad dL~I\1 hanw c dui'
ham~do de alon I. lmposslvel A1 B I. A2. B2, A3, B3 thread operárinc; e'iteJam prontO'>. Qual d •v ria e c lllar.
(a) 1 14:ma de tempo de •xc ução - que ~bl' o que lada
t hn:ad fa1- pode la lmcntc c C( lhe r d~(la hamc mu
lona nto de thre ds o pm. imo threó!d cxe u r. p.1ra que e-.1 oloqu • outro
operari para e ecutar. Fs a e trat~ia maximi7a a quanti·
Quando c.:ada um dentn· v.irio., prutc o tem múhi·
da de de paraleli mo em um ambiente no qual os operário
plu"> thrt•ad • t urrcm doi nivci de p.1raldhmn: pn ~ c
fn•quc:ntcml'nlc -u bluqu ·adu pela E/ de di u. J.i no
c thread . O e illonaml'nto nc ~ ,btcma pode difl'rir aso d( thread de nuclco, l"itl' nunca aberia u que ada
dt· mod u~tancial. dt'J')( nd ndn dt• o thrcads rem dt•
thrcad fl'Z (l'm!x~ra a cll' pudt: em ..cr atribuíd~ difcrcn·
u'uáriu nu ti • nll leu (ou amlxl\).
t pnnn Jdt"íl. unrudu. em g ral t ' alonadorl'\ de
on ide remo pnmt'iro o · thread dc u uario. orno o thrcad n[lt'dfico para uma apli a ão ~o apatc de ilJU •
nü l·o nãu sabe a existênoa de threJd • ele oper orno tar um., aplí açãc) melhor do qul' o nít leo pO<k fa1~-lo .
-.cmprc faL. c 1lhcndn um pro c . u - por c>.cmplo, A-
e dando· lhe o ntrole de eu quantum O e5ealonad r do PO$Síwl: A1, A2, A3, A1. A2, A3
threaJ em A tk·udc qu lthrt•Jd dt'\'Ccwcutar -1 )f e\cm· Também posslvol: A 1, Bl . A2. B2. A3. B3
pln. I. umc nãu h.i intt·rrufl\-lt' d r ·h}!,tín p.1ra muhl· (b)
programar threatb, c \C tluead ptl\le continuar e\ctutamhl
nquamo qUJ r. de u~r 1odn n uanwm d procc: ·
o,c1, unudc 1 <,dctiunará um uutm tm>( ''!>!I!Xlra '\CUIIM.
uando o prc o A hnalm,·m \'Oitar a t' e mar, o
thrcad A I ~ ·mtan~ ra '\('Uitandu. El· continuar.i a wn ·
unur tlltk u tcmpt1 t.k A tê que termine. Contudo. ·u
romponamento anU'i ocial não afetará outros prort"S 1s: do ·ant dos filó ofos
ele ubteriiu aquilt que o t·~almtadur t n idcmr uma (ra· dad um quantum. e ele 'ierá compul~oriamt'llle u pen o
.i apr priJ :la, n.lo impnnando n que 1•ja J mue 'n I l' cxt ·d · u quamum. Cum um quJnturn d · 50 m ·, ma
Política versus m c nismo dcntnl do prucc. o A. um thrcad que.> bluqut•iam dl.'j)( i u· ') m . a ordem du
nra. imagine.> qu o 1hr 3(1\ de A t ·nham n lilti· 1hrcad · p r um pcriudo de 30 rru ptldc er Al , 81 , .41. 81.
vamcntc pouco trabalho a fazer por uno de CPU - pur AJ. RJ. algo impo hei d ron guir com fl.Jr ' mc·
c emplo. ') m dr trabalho para um quamum de 50 m . tm e com thread deu uáno. E.-.s.J nua ão ~par 'almcnle
on-.cqucntcmcntc. wda um cxc u1 por um pouquinhu mtJ'>ttada na Figura .2.35(h).
de tempo e entao cede a P de volta para o e alonad r Uma d1fl'l'l'n a tmponante entre o~ thread deu u.irio
c.lc thrcad. ls!>e.l pode lc\ar .i l'QU~n 'a ~11. Al, AJ, AI. A2. c o threac.l~ de núdl"' ~ u de cmpl'nho. O ha\eamc.'llto
J, A 1. Al, AJ, A 1. cllllc dt• u n(J lt·o h,l\'l'• r parJ u J'rtl· de thr ad com thr old d u u.iri 11 ~ J'Clll a in uuçt d
u: o B. E '>a llua ão é lllbuada na Fi •ura 2.35(a) . máquina. Para~~ thrcac:b de nudeo. 11 cha\ eamcnto requer
um ha ramL·mo completo do ontc to, m altera ão do
rn.Jp.l de memciria c invalidaçào d Gll'hc - o que tltnifi a
uma demora várias muen dt• magnimde P r outro I.Jdo. 'ida de um filóo,olo on i te ·m ahl'mar ~'ll'riod de
para o threado, de núdeo, um thrrac.ll:tloqueado ptola E/ mer e pen'lc'lr. (Trata· e apenas de uma abstraç5o. mesmo
não U'>Jl nde o pro e o mlt'iro, com() ocorre no thrl'ad para o fíiÓ'41fos: a'> outra all\i fade · 5n irr'll'vante<; au
de mu.íno. problema. ) uando uma filó ola fica com fome, la tent.l
Colllo u núdcu b ·que u t:havcamcnw de um thrcad pegar u garfo, à \Ua dircl1.1 c à ua c'quc1da. urn tk tatla
no proce~ o 11 para um thread no pr t><; o 8 nt t.J mai \'t'Z, em qualquer ordem. e comegmr pegar doi g.1rfo •
du QLll' '\l'nJtar um 1;undo 1hrcad nn pmc 'o A (poi ela comerá durante um determinado tl'mpo e, emãu. lO·
de
tt;r.i tk mudJr () mara de mc.>moriol im•ahdar ol memt1ria

lo ar.i o g.ufo nJ m~ no,amc.>nt • onrínuará J p•n·

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral


Professor Wilson Amaral Sistemas Operacionais – Unidade 02
cap tufo 2 Processos e lhreads 99 capitulo 2 Processos e threads 101

pmce so pode 1er ace ~ao ban de dado'>, nem m mo a cad.l dors . cgundt -e Jda lrit r levar ctnro cgund
o. leitore . que tão c: wmo proglélmar o lellorl"\ e para la1er u trab,llho. u ~ critor nun a entrará
t..,critor~ . Uma o;olu ão é mu Irada na Figura 1.39. PJra l'\ÍIJr a illlaç.lo. pmgr.1ma poderia t r cri-
A partir de a olu~ãu. para ubtcr o a c u à ba c de da- to de modo um pou o difrrl me: r um 1~: i ror ht>gar quan-
d • n primeiro leitor fa7 um ctown no emárom db. lt'i· do um t uítor c thw e pt'rando, o leitor ~crj ~u pen 1
tor~ ul cquclllc mcramcmc intl\'mcntam um c madt r. ltJg depoh do c: crítor. t'm \ ' f.'l de cr admitido dc Imediato.
rc. unfurme acm, u ll'irort , tl~:cr ·m~n tam u c mtad r de De a maneira. um ritor. para temlinar. pr~: io;a e<iperar
I eu ultimo lt:iwr a '>atr CaL um up n 1 semároru. permiundu p r lciH r~: que t ravam a ti\ 1 quando rlt· hqwu. ma
qut' um l'Vemual t criwr hloqueado cmrc não p< r lcitor tJUt' chcgaram epoi<. dclt:. A dc anta ·
Ma cm.iu você (XIdcrla p ·n~u qu ·• c o. fllci,oft>'. c~- lu ão apn:~ntada aqui cont m impliciramcme gem d~\J olução é qut' t' nm t'gut' menc1 C<lnmrr~ncia
1era em pm um rcmpu alcat~irio, em Vl'l de ~,....,J)Crarem 1..' punanto, urn d 'lllJX'nho menor. Cc unoi l'l ai aJin'·
uma dedsào util qut' valc a pena comtntar. uponha que.
por um 1 mpo li'<o d~roi~ de falharem au fX.'gar o g.1rfo do enquantu um lêiror c td l~'>ant.l 1a t~r,c de tl.1dos. um utum \Cilta•n unw ..ulu Ju que d.í priurid de am nulturc~ . Para
lado dirt•iro, a probabilidade de tudo continuar imenra a- ll'itur dwguc. Cumu tcr dui~ lciturc au mc,mo tctnpo twu mai dt'talhc . ~.: m ulle n artigo.
do. m · mo que pM uma hora, ria multo pequ nil. F. \il é um problema, u egundo lt'Hnr é Jdmíudo. Lt'itor~ Jdi-
{1~ r•ação i' \' •rdadeira, ~. em qua e ltld.l J arli a õt> .. dun i' 1 mbém poJ ·m ·c.·r adlllilidu' se dwgarcm.
tentar de nm u ma i tan.lt: é uma Jbmdag •m .1dutatla Pur
c cmplo. na ropular rc:d ·lo .I Ethcmct. '• doi llmputa·
dore em iam um pao.1u.· ao me m11 tempo (levando a uma
I Figura 2.36 Horrt d idllO<,U no Oopar1'-l nto ci fb· ha
cull~o de pawrc 1. tada um ~pera por um tempo alca-
uírio ame· d rrmar no\ amem e; na prJ1i a, c. ~ olução
funcionJ bem. omudo. para alguma aplica õe eria pr -
!crível uma ~ulu40ãu qul' ~·rnprc lu ~ válida c nàu f lha ·
por lilU a d~ uma ~~ rit.• impwvá\'1.'1 d mim n alcattírío .
P ·n' •, flOr t'\ •mplu. n , umr 1lc e '~uran J em umil u i·
nJ de encrgii.l nudcar.
Um aperleiçoammto da olução mo rrada na Ftgura
2.37 que não apresenta impa w nem inam ão é proteger typedel in I maphore; r use sua imag nação ·t
o an ·o omamlo que ·~ucm a ~.:hamada tlri11k wm wn semaphore mutex "' 1, r controla o a 'rc· •J
étCe$SO
<oemilforo bináno. nt dt> come ar a pegar ~arfo . um h· semaphore db "' 1; r controla o 8C8$SO a base de dados.,
lt}l;ofo faria um OO'Ml nn mlltrx. Depoi~ de trocar garfo . 'nt rc =O; r número de procGSSOS lendo OU querendo ler •J
ck faria um LJ nu mut ~ - Do p 1111 , dc i !J tcóriw. c a
vOtd reader(vold)
llução L' adcquatl.l. Do pomo de \'ira prático, da JJlrl'- {
senta um problema tlc deo;empenht : •;omeme um fil<hofo whtle (TAUE) { r repete para S9rtl>f9 .,
1or \cZ podc u>mcr qu.1lquer in tarltc. Cnm cinco garfo; down(&mutex); r ob ém acesso exclusivo a 'rc' 'I
di~omvei , cria pO'i~Ív I permitir qm• dm lílmofn'i co· rc rc~t ; r um tetlor a mais agora •t
Tllt"> t:'m au m • mu lt:'mp 1. 11 (rc - 1) down(&db); r se este for o pnme.ro leitor ....,
ulu ãu aprc ·nl tia na Figura 2.3 é li r· de imtlJ'·
~&muex) ; r hbera o acesso exduslvo a ·rc· "I
read data base(): r acesso aos dados •t
se e pennhe o má ·imoparalcli moa um númcroarburário down(&mutex); obt m acesso exclusivo a 'rc' "I
de filó ofth. Ela U'>a um arranjt . oad,,, para wmmlar e rc=rc-1; r um lettor a meoos agora.,
il (rc .,.. O) up(&~b); r se este lor o Ultimo leitor ... .,
~&mutex) : r hbera o acesso exduslvo a 'rc' 'I
l#dehne N 5 I• número de filósofos I
use _ data _ read ); r re ão não critica 'I

void ph osopher(int i) I• í. numero do filósofo, de oa 4 •/


{
whíle (TRUE) { vOtd wnter(void)
thlnk( ); I• o filósofo está pensando •/ {
take_lorkO); I• pega o garfo esqu rdo •I while (TAUE) { r repete para S8rtl>r& .,
take_ fork((i+ 1) ~o N), I• pega o garfo dtretlo, 0 o é o operador módulo •/ thi _ up_data( ); r regi o nao crítica .,
eat(); I• hummml Espaguete •I down(&db); r obtém acesso exclusivo"/
puUork(Q: I• devolve o garfo esquerdo à mesa •I write _ data _ base( ); r atuaHza os dados"/
put fork((l+1) 0 ó N); I• devolve o garfo dlre•to à mesa •I up(&db), r hbera o acesso exduslvo "/

Figura 2.37
I Figura 2.3SI

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
101 Sistemas operacionais modernos úpitulo 2 Processos e threads 103

O con eito de um proc é um e emplo de algo mui- ttua ão que le\·aria .10 ao.. m pmce 'itl pode e tar e e- tedado. A'ura doi threJd e tão esperando pela cntrJ- 11. UJlOnha qut' um i temi! OJlt'ra ional não tenhil uma
to bern · tallt'l ~ido. uasc tndo \i tl·matem alguma n ção cutando. er e'e\'utá I ou bl qm:ado • alterar o e tJdo da do te i.Jdo. um em cada pr l'\ [>\e problema pode chamilda de \isl •m.1 como a I Jlafil 'erifllar 11r~' ia-
de um pro o como um redpi •nt • para agrupar re u~ quando de ou um t utm pn c~~o c ccut uma da unidJ- uwrter em pux dc thrt>ad únko., menti.'~ é L'i:lltn ·r um arqui\'o, um pipe ou algum
relaoonado), wmo um e\vaço de enderc ilm nw. thrcild . dc bd ica de wmunkaçâo emrc 1roce o~. A munita- 8. 'a FiAUra 2.6. ~ nlll"lrJdn um .-.ervidt)J' da Wt-b mulrithread. di'fl\"'llhu. ma el pennitc qu ·alarm <lod. • 'l:jam
arquiH) abeno-.. (X'nni 'it-w de pn t~ção et . i tt•ma di- ção nllcrthrcad t'melhame. c o único modo de ler a Jl.lftir de um arqui o for o bloqudo -.et.llh • th quai~ intermm()\'m chilmala de \Í'ilt'ma bln·
queac.l.t'l. t ro,,iv I tmplcmentar um pi! ote de thrcad\,
fercme fazem e se .1grupamemo de mJneira um pou o i 1 rimui\ a de c muni ação entre procc' o JIOdrm nom1al da dtJm.llla de 1 tema ttdl. vt • a ha que thrcad
nu l''lliM;Il dt• mu.írio, wb c: .,.1 condi i~t: "! nnwnlt•
diferentl', ma trata· l' apenil de dirl'rcn CJS d • cns; •nharia. cr U'-lda para resolver pr blcma' wmo o pnxlu11 r-< m- deu ~•<i no ou de núd :o e~ão ·ndo 11\il~ f'JTJ u M"f\idt r
da\ eb? Por quP '19. O pn 1lcma dt• in ve ·o tlc primidadL di utitlu n, e.;:ío
id ia bá~Ka n.lo t t.lo C lllrtl\'ei'Sa t' ha pouca Jl <i(jUÍ".l umidor. o jantar dt,, filt} lo c o leitor~ critor.•Me mo
, 'u texto, de r~nmO\ um \enidor tia \ t•b mulmhrcad. .2.11 p01l alUilt~·t:er t '"' thrcikh de u~uáriCI? Por quê?
nt a sobre u tema pmce <;c~. m c a prímiti\a. devem- c Hlfll.U ntidado' para \ÍIJT 9.
O thread, 'cio uma idei.J mai~ nova que u pnxn!l4"· t•rro t' impas~ . mo!ttrando por que de c mclhur que um ..ef\·idor de 10. a e ão 2 . ~ .. fui dc!>lnta uma uuação <. m um prcK.l'\·
li() dc ahd priundadc. H. um e bJI ·a rnoric.l.ldc. 1., qu'
ma tem havido b.., tanre relle c1 ~ ~bre cll' . lém di Muito· aiJtontmo d ·e· alonarnento têm ido t"''IUdJ· thr ad úni«l e um !oenidor de máquin.1 de e tJdO'. finlt '>.
HJ al~n1ma ommç1Jnda n.J qual um c;cnidm dc thread k'\'ol\ a H a um laçn mfimto. me mo problema ocurrerlil
ota i nalmentc aparccc:m anig{ wbrc thread tratando. du . lguns de I ã > u\ddo prindpalmem ~ em <;i temJ~ -.e fl • usado o ~lalcmamento ormlar em ve1 do o a-
único poderia er melhor? Dê um e 'l..'fllJllo.
por e'emplo. dl' agi mer.1d1 de multipro \ildort 1Tam em lute. cuno a llltt'{tt m lu wrc.t prllllt'lt&J. Oulrth <Junlllllllh lonamcnln por priuridadl· ? Ollll'lllt'.
et Jl.. 2007) tm dtl dim n. ionamenro do ní1mero de thread atl i tema emlotecao 1 tema. mterativ -comooes· 10. a ahcl.:t 2.4. u unjunto de regi trddurc t' rcladunadn
onw 11111 item pur thre.Jd. c n.lu por pro '\"Wl Por quo:? 21. ·m um .i wmatom 1hrealb. qUJntlu<;ãoutilizJdt ·threJds
t•m um prtKC u fl.lfcllt:lll111il un Behren cl c1l.. 2003) . talunamcntuun"Ular. o t:)(.alonamt·nw flm prioridade . J) de u ·u.ino. h.i uma pilhil por thread nu uma p1lha IKlr
fila múhipl.l • t c alonanwntn g..uamido, n ~ cah nJnl!'n- !Afinal. a m.iquin.:~ tem m nte um onjunto d • regi<o·
A 'm rnni1.aç:íu d • pr< c o t' t.i muitn rnai' defini la
trJdorc .) prot )I) c quando "l' u~m thread de nu deu? c\pUquc.
agora. ma de Vl'l em quando ainda h.i artig 1 • comn aque· líl por loteria e u ~t.:altmamcnto por (ra~,ão ju ta. l~un
11. O qut• IJnJ um lhreJcJ dt• htir \oluntariatm•ntc di! CPU 11. Quundo um mpmador eoa.i end d cnvohidn, de t
le -;obre pro e amem 1 concorrentl' m lo (fra er e 1 tema f.l1em uma [l.1ril ão entrl' o me ani~mo dt r Jlllc\ \Jmuladu J)Or um progrJma que c e uta uma in ·
lunJmcnw c a 11uhtka d ·c alunJmcntu. u que Jll'rmih: Jt>\ chamando thrtaJ~riLI.fll hnill wmn nõo há lnttnup .iu
Harri . 2007) ou mcroni7a ão no modo não bl queante tmçan por ' t. M <.mu ~~ mulnpr \.ldore \âo 'irnu·
u~uario um controle ~bre o algoritmo de eKalonamemo.
rcnódica d relógio. el • (lOde nun a mai~ obter J PU •
em ,j tema de tCillJlO rcJI (Hmhmuth c Haerti~. 2001). vo1t.1 .) lados d modo estritamente ~equ ndal. · p<Ksiv I qu
C lclfllfhlll1ClliU (I niU UllÍJIIU '\\Jdur QU niU mul- tK.UtrJ uma wndit;.io de wnid.:J quJndn não há ewntl
Jl. Um 1hrt.'olcl pude !14lrrer prl·emJ~~;iiu pur uma intcrrupçJo
llpTOCl' ;o,ad(lr) ainda é um tópi I) r ente e Cclro a algun ·mult.lnco como n~sa imub {les!
Problemas dl' n•ló~>ain. m , \U dlinnJtivo. ~b quai\ cirmmtãnna\?
(lt'iKJUhadore . Algun ttlpit.:tr.. cndo Jlt' qui\Jdo inducm mntr.iriu. por qut· nJu.,
1 ll. 10lu .Jn de t"\pt·ra ocio~.:J u.•mdn a varid\'l'ltum (Figur;~
e caJonamento de dispo itivo mll\ei em termos de efi- 'ía Figura 2.2. ~o m ~'!Irado trt e tadcr. de prt c '>() • a .2.1 ) funciona qu.mdo o dois proc ~ t.lo cxeC\Itan·
13. e lc pmbt ·ma. ' 1 é tl·H·wmp.trar ,, leitura d um ar·
dénd cncrgcti uan e • ahr 1·t.h. 200 . ~ ak>nam ·n- t ·cmd, ( 1m Ir· t:\tadtl\ ptldcn.t ha' r. d tran i\ ·K..,, dua\ do m um mult•proct·~dor de mcmóri.l mmp;~nilhadJ.
tjuhu u\dndn um ~n,1dm dl' .~rqui\oll" mmnthre.Jd c um
111 om tccnulugi h ·pcnhrcadm!l (Bulpin c Prau. 2005). p.1ra cad.11.' tJdn. nntudu. \omcntc quatro tran~i ÕC\ .Jo i 110 é. dua.~ CPU' ompanilhandu uma mcmtiria comum?
'>C.'I'\·illur muhithrt.'ad c;Jo nt: ·e .Jrit)\ I'; rm para obter
modo de reduzir a OCH>~idade da PU (l::ggen e Tou h, 111 r.trad . ll.í al!lullla dtLlllht.intiJ nJ quJI Ullld d •la 1 • A >lu .:to dt' Pc:tcr\tm pari! o pmblt'ma d.:J c lm.:~o mu -
uma r ·qubi\Ju dt· 1rabatho, d~ pach.i-la c fdll'r n re IJntt·
2005) c~ alonamento de i tema~ de tempo \irtual (, 'ieh ou amha a' tritn\IÇi 'não ilutr.ldil ru \ilm o mcr, IIIJ. nu trcldo na FiHuril 2 I 9, fum:inna qu<Jndo o L'\ al -
do IWK:e \dii\CiliU IICtl'"'>drltl, prt: lllliÍIIdll ljUC ti'> dddO'>
ct ai .. 2001) . ontud • pouco projt•ti ta de i tema ope· 1. uponha que nc~ •ja u projcti~til de umil ilrquítetura d · ''""nda' l"'ll'icJm IIJ tildll' · hlot.n'i • lur n ·t~ ~­ nllm nlo do proc ·o for precmrtim? E quJndo o 'K.:tln·
ra iunJt Jndilrn de....,· r ·radu pela falta Jc um algoritmo lOillJHHador avdnvda que fct o chawammto entrt' pro- riJ Ulllil UJ>l'fil~dCI dl' dJSW- COIIIU tl lfTC l'CJI um ter\"! namcmo não r preemprivo?
dt:tt:lllt: p.1ra u • ·,1lmt.lmcntu <k thr ·ad'- purtantu. pa- • 'o(l pm hardw.:~rc· em vt:l d • U\JT 1111 •m•r~Coõc' . D • tjlli' d.:J vc~t· -. 'l'rá plttiso um tcllllll. aditiunJI tle n nh, lS. FJ il 11111 t''>i.'t'I\U de wmo um i tl'llla IIIX'radutl.ll tilflill d ·
rc ' que · ' tiptl dc pc..qul a C: mah um d • •jo do qut: mformac;.io a PU prc:ci\dria. O ·~rc\ .J wmu u protv' u durdntt' u qual u thrcdd donnt• Quanw' n·quhl~i'lt {\c· de\Jbilitar intcnupt,iíc podcriJ implementar wm.iforu\.
uma ncc..e ~idade de pc qui adoro. De modo ~crill. pm· tle chan·Jmt•mo pur hardwarl' llcKicria fundm1ar. ~:undn u ef\·idor (lOde tr<H.:Jr • for munothreJd? E e lnr l . \1tl\tr • t 1m11 11'> wm.ilum' mntatlnn.., (i\tu ~. u •má·
c S\0 • thrc.1d~ e es alonamento não ·o ma i túpiro de 3. Em Joduo, li'> comput.tdur aludi\, pdn nu:nu' urna parte muhithrcJd? lun quc pciC.I·m mntcr um \Jlor drbltrJriu) ptMicm ~·r
pt"..qu•sa t·u pro uradu uml' ilntc . Jll"'QUJ'a a ançou. d manipuladun:\ de int 'ffilllÇ.ÍU (iJllcrmpl h,mdk•N c 14. Qual d nl<liur v llldgcm de implcmt'nldf Lhn·ad~ nu t''Jla· implrrncnto~du' u\clndo ~unwmc: 'crn.ilunr. bin.iriu~ l'
t lril em lin~:ua~:cm a l'lllll\. l't r tJUt:7 t,u dn U\u.irio? Quul ~ d mdínr de \'ollll.lt:cm7 impll"' in tru\ "~t: tk máquina.
Quando uma intcrrutlyÍn ou uma Uldnt.Jda d ~•,tema 15., a fi~:ura 2.10. a\ wa~Õl' de thn·ad c J\ mcn~cn\ 27. e um ~~. tt:ma tem '>lllllrntc dm' prote' o . tem scntidu
tr.:~mlcrc o ontrol par.1 {I <oi tema operddonal. geral· imprt• ~ tlt'lcl\ thr ~d - intercabd ai attmamentc.~ U'>clr uma ll.lrr 1ra p.tra 'mcrnmJá·ltJ ., 1\H qu ·?
mcmc c u!Wic.la uma área da 1llha do núdt'(l ~parada d ll.i al~um mcKio dt• impor qu a ordem • c tntam •nt • 21. Do· threaib J)iKfem. no mc~mo pro(e w, iucroruuu
da intcrrup õ . . u 'i terna
pilha do proa: '>O interrompido. Por quê"! tluead I <. • do, threatl I imprime mt'n<oa em, thn·ad I <oal. partir do u o de um sem.íforo d~ núdto \C o~ thrt.'ad
op•m ·nn:u niHc um modelo cnn lluJI qut• con.,,·.
<ffi
S. Ti!r la\ multipla podem ..er executada~ parai Iam nt • lhrcad 2 'rladn. thrcad 2 impriml' a mt:thag·m. thrc,ld 2 rurcm impk1lll'llti!d0) pelo nudl'tl . l '~ o~ thread\ ru~·
te l'Dl proct~so toquendai e ctutando em paralelo.
c terminar mai r.ipido do que e !iH! em sido e'<eru- ..ai c a impor didntt· . m (.d\0 d · n..,pc))IJ afirmativa. qual '>C.'tn implt•ment.ldo\ no c paço dou u.irin? 1 lllltmh.J qut•
pn n pudem r nnd<><; e t rminJdO\ d1namkam ntt•. e t • mnd11? fmt.l 1 dt• rt\fK ld nt'gallva. flOr qut• n5 ?
LJdos ~uc ~ i\JmL'fltt:. uponha que duJ tarda . ada nenhum thPad em qal.llqucr outro pnxe\\11 tcnhd a e )(l
ada pn t''> , tem., ·u pràpriu t"\PJ ·o d • ·ndcrcç;un ·ntu.
um.:t pr c1 andt) d d 1. mmut d 1 mro dJ PU. m· 16 'a dJ~tll ão 10brc varià"l'l J.!IOllaJ> t'lll thrcad . u - ao ~mdroro . ) Comeme Ucb re J't)Sld •
Para alguma .1plica õe , t' útil ter múltipl threa d ml'ça ~m ~unullanl'amentt'. De quanto tempo o úlumo m~ uma rotina I'Jtt__qll/Jal para alocar m~môlia a um 29. mtmniLJt,ã, tum moniturc'> 1u.1 vari.ívei\ dc (Untlt~.io
umwlc dentro de um um ll JHOlC u. c thr ·ad 5o • prcci~rii para tenninilt se da!> forem l'Xt·cmado u ô í- ptml<'tru Jlolra a vari.iwt. em \CL de dk1car ductamcntc a l' dua oper õc c: pcó.:tl'>. Wdll c - . Um.:J lurma mai
talona(ló<, indt·pcnucntcmcntt: e ad.l um tem ua 11rópria \amente? Quanw tempo ..e furem eM.'<. li la l parai •la· pn1pria vari,hd . I o t' t..,..cndal ou J\ rotin,l\ podcriJm ):t'ral de 'in :run11.a~ão ..eria 1er uma únka primima.
pilha. ma' todm o<; lhreJfu em um proce..so compartilham mente' uponha SO ~)(lr <l'Otu dt: t">flcra de E/ . fun ., nar muito b m apena\ um prupno' "ature: ? wctll.lflll que \UÍ • um prt•dícado bool an 1 omu ra·
um e paçu de t>ndere amemo mmum. Thread podem )ef 6 o te to. foi e tabckddo que o modelo da Figura 2.8 a) 17. Co1 idcrc um , . tt.'ma no qual thrcalb \â tllllllt1llt1l· rãmctru 1m. algu~m poderia dller. por c.\emplo.
1mplementi'ld<l\ no • (\'IÇO do u ujrio uu no midt'(l. não ra Jd quado pJril um "t'f\idor de <JrQUI\'O'i qu • U\a • tadu' lntdramt'nlc Jlll t''JiiiÇll du mu.irm. '>C.·n lu qu~ u
wrtlunUx < Oou y / <n
pru C'\\m Jl{ld ·m e wrnuni r un~ ·l m u uutr" ~c um ladlc na memória ror quc não. Cada proce;,>u htcntJ tlc tempo d · c etU\dO lrc umilmtcrmpc,ão tlc:
por meio de primitiva de nuni ação entre pmces'io • JX>d~nJtcr ua própria cadle7 rel6gi a c.<Jda 't'Rlllltlu. uponha que uma lnterrupçJ.o de A prlmitha slynaln.lu ~ria mais nctc ~ria . Es e c~uc­
' mw ·máfuru), moniturc uu m ·n~J}!cm. a unídadc' um pmc~so multithread bdurcJr, h~ rroht ma o relogío ocorra cnqu.Jnto ai •um thread ~uvcr c ecmando ma ' claramente m.:ti era I qu o pmpo'tu por lloare ou
bJ,i ,1 -o U\ada para a ·~·u ra r quc doi pmu: ~nunca filho npiJ todo o threJd' do Jlili. UJlOnh.l que um do no ~htema de tempo tle r . ctuçãu. Que problema pode ri.! Unnch Jt.:m n. mas n.lo é utili1.1do. Por qu·? Din: pcn
owrrer. O qu vo(c \Ugt•rc Jlolr.t rt"'olvê·lo? na implemema~,ão.
e tarãu em ~ua\ reg~()e crili01s ao momo 1empu- uma thrcatt ongina~ c~tiH'\SC pcrJndu por uma t•ntrJda do

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral
Professor Wilson Amaral Sistemas Operacionais – Unidade 02
104 Sistemas opeaciooais modernos ca ftulo 2 Processos e threads 105

30. Um rt'.taurantc de 1'3 t·food tt'rn quatro tipos tk cmpre· dl' cru 5o c tt~du em I O. 6, 2. c minuW'>. ua .lda \'.ln<Jç5o. e<.JlC ilique u qu · .l onte • quandtl um lci· Comudu. mo umil on ' ãoà tradi ·o, •l3 d ·ereta que.
g.Jd . (I) .;~nutadure d • pcdidn. que anotam c> pcdidn flriuridade r: ternament d{1enninada~) s.,, 3. 5, l, I c wr ou um c riwr fica pmntu para ter .l c ~~.lu b.ln o de quando uma mulher c li\er nu banhe1W, outra mulher
de licntl'<i; (21 ·nnnheiwo;, que prepilroJm a ·nmid,l: I}) 4. n·speai a mente sendo 5 a flrlorldade mais alta. Para d dt,., cu que 11 orrc quc~ndo um JlrtX: '"o .lcal\1 de n'>.lr IK>derJ cntrdr, mc1 um hom •m nãu c \'l · ··vcr\J. Ulll mal
l'mb.1ldtlurt· , que colm.<Jnl ol mnida 1\d. 'íol ()Jol\; • (4) ~ai· c.1da um du '>CNUtntc aiNoritmo de c t.alunamcnltl. de·
o bant. de dados. m um mar ador desliL.antc, na pona dc Lida banhctro.
x \, 4ue entrq:am -.amla\ pJra o-. dicntt.'\ · rct. ·hem termine u tcmpu médio de ida c \'uh a t ~:norc a ..ot rctarga
48. '\'J um ript do . hcll que proouZJ um arquivo de indita l'm qual do' Ir~ ( tado o banhl'iro e l'n orura:
li dínhdro ddn. ddJ l'lllJirl'}:dtlO J!Ode \Cf OOM."natlu dr: ha\ camemo d procc
wmo um pnx. · ~o quttndal de c.omuruuc;ào. Qual for· númerth !>Cquen iai lendo· c o úlumu número no ar- \'ill.ÍU
(a) ircul.n
ma de omuníca ;Jo ·mrt' pnx: W\ l'l u\Jriam? Rcla· quivo, adicionando· I a ele e, então. ane ·and -o ao
(b) E~ alonamcmo por prioridade . .nm mulh•r
oon •.,~ • rncl<Mo ao pmc ~ no u. I . arqu1vo. . e ute uma lll)tãncia do script em ba kground
(c) Pnu C'ir,, u fi ~~IJt,prim ;,., ri a ~rnd.• lt'\e utc na tlf· ('>c.>gundo planc 1 e outra em foreground (pruneim plano I. Comhumem
31 dem 10, t.. 2. 4. 8). l.ld.l uma rcaliJ.lndo a e 0'1 õHl nu..... mu arquivo. Quanto cr •va. ·m \UJ linguagem d • pr~rama ão f.J\'Orita. J\
(d) Tar(fll maü rnt.r primâr.•. tempo tran~wrrc antt d • \l' rrwmfe ta r uma <:ulldi ãu d · ~:uint \ mllnil\: mullru_tJrur_(lltrar. /r,•m•m_qutr_t'IIITI1f.
Paratc1 , prc urnJ liUl' u 1 tema é muhrJlrogr.unadue que dt puta? Qual c a regiJo critka? M< dillque o ~npt para trmllttr,Jm. lt.•mtmJill. V c
podt: u~r o ntild rt: c as
ada wrcfa ubttmha \UJ (riJç.ío ju~ta da I'U. P.:nat,., ltcm impedir a dhpula. Dl<~1 u e temi a dc incroniZJ jo que qui'iCr.
(h) a t d • l r idt:rt' a c ecu\·ãu dl' \Clmellll' uma tarefa pur 52. Rt: '\CT ~a o pmgrJma da Fi •ura 2.18 Jlilra tratar ma i de
\t'Z ate qut: tcm1inc. Toda a tarda 'l.ic1 wmplctamcnte
doi prol<"
bmitc~dJo, pcl.1 PU para proteger o arquivo de dado~. I
Sl. F' ·va um prohlc•ma produwr un umidur qut• U!>C
38. Um proc~.!.4' excrutando no CT precrsa de 30 quan- 49. Imagine: um .,. lema péra ion.1l que 1 •m1i1a \l'mJf()ru .
thrcad. c lC)Illp.lrtilhe um bufll'r <mum. untudo. ndo
ta pa terminar Quanta vezc ocorrera uma troca para lmplemcme um ~~tema de mcn~ n . E tl'\'a a ronna
u • •ma furO'\ ou qualqu •r nutra primith a de 'incmni·
a m •mória. in luindo a pnm rril W:L (ante'> de: c c :\llar para em·iar e receber mensag n .
1a ão Jlilril prott·gcr a • tnttura d • datlo<. mpanilhada.
qualquer coi\cl ~., 50. Re lva o prc blcma do jantar do fil<hofCh u~ndo moni· pena deixe adathread t~r a · soa el quando qm •r.
i temadepriorl· wr •., em \ '7 d · •mJrurO'\. U\l'. e wal«lup para tratar .l\ condíçüt.., dc• hufft·r hei o
a te la <lntr.l> 51. uponha que urna univer..id~d •, param l\lrarwmo ~ po· c buff ·r v.11io. Vqa quanto tt•mJl!l leva ate c orrcr uma
liti am ntt correta. apliqlll' a doutrina da upr ma <rtc c ndiç~ d d' ula filtal. Por e emplo, voce pcldc ter o
do' F\tJdoo. Unidu . • Cl'ldraduma igu.Jil' incrcntcment · produtor imprintindo um numero a ada imervalo de
dt: 1gual". para g~nem c• ra a. rxmdo fim a '"a pratka de tl'OlJKl. ãn imprima mal' du qu~· um nírm ·m o.1 cada mi·
longa data d 'ronhem no ilmpu \l'gr ·gadc> porg ~n ·rn. nulO, pnrquc il F/ poderia .:~r 'lilr il ondi Õt' d orrlda.

31. t•ria 1 " i\d t.' t.Jbd l.'t uma medida >l.nc n quantuum 41. Um i'>tt:ma de t mpo real tem quatro eH~nt< pcriódi 1
prcx:c w 1: limitadu Jlda CPU IIU limitatln ror
F./ .mali· wm Jll'rft~tl dt· 50, 100. 20 e 2'>0 m.. t"ada. lll)\lflha
~ndu u (tldí •u-fomc? Cm111 b u JI<Kit•ria cr dctcrmma· que li\ quatro t'\'entc,., rcquriram 5, 20, 10 c. rn\ dl'
do t'fll tl'llllló de c eruçãu"> t'IIIJW l' I'U, rc Jlt'cti\'amente. Qual é 1111 iur valm de
l . · ' ã 'Quando t ale nar', foi mcncit~nJdo qm, alNll· ~ I'IJra qul' u \Í\tenhl \lja t' cahu\Jvcl?
lllJ\ Wll..,, u t ralnnarnt•nto pc lt-ria 'il'r mdhurado w um 41. Expliqu ·por que: u '\lollun;uncnlo em doi' mv~' • b.l •
prO(t'\W illlpt~rlaJHc fc . l' J J 1\d ck dt'M'nllll'llhJr um tallll' u-.adu
1apd ao M'r hluqut'ddtl, na !>Cit'çiiu do pw llllU pron·~'o 43. m istcm tlt' tempo real prctha wntrolar tlua' dtama-
a e>.t: mar. lcn'e em um uuac;ão na qual \O poJ.l'na d.l~ d • vu1 cadc1uma tld.J'> c lltilcl.l a ada 5 rn\ \.' cml·
r mado e c. pliquc como. umind 1 I llh do tempo d CPU JKir \Urto. alt'm de um
15. A\ mt·dida dt· um tt-rlll \i lt1t1J mu trJm que n prcK.., o \Ídt·o de: 25 quadru I . e 1.ada quadrn fl'QUl'r 20 111 do
n1l:din t' nutJ JKH um tt'lllJKI T amt· dc· -.cr hloqueadu t ntpo da PU r~w \i t~ma [mdc• l'f • l.llun;ulu.
para 1 . Um chavcamcnw de pruu 'll~ rt1Juer um ll'lll· 44. Cun,idcn· um í tl'JJla nu qual .... de cja cparar a IXllítka
Jló S dc·livamclllc g.J. tu (!>Obrccarga). Para u c'>l.aluna- c o m.:tant mu p.1ra n al,~:uritmu dl' c\lalonamento do
m ·n1 ircular um um quan1um Q. dê urn.1 rtírmula para thread ele núd u. Proponha um m ío de dwllar a l'\ •
a cfi tênc~tJ da PU em c:ad.l um d ~~umu: U\0\: oh eti\ 1
(a) Q =oo. 45. , a olução para u problema do Jantar do fillholo (fi~ura
(b) Q> T. 238). por que ~ atribuído 1/L\GRl a \;uiá~ I de tado
na rotina talu_fi rks?
(c) < Q< T
46 Ob'>crvc a rotina put_ ,,rks d.1 FigurJ 2. 38. Suponha que
(d) Q=S
a variáv l stattlil (o o;e atnbuída Tllh\MSG dtrais da
(e) Q proxímn dt O. tlua'> lhamJda de rm. l' n.lu anus. umo 1\\o pudcria
36. incn tarda~ c tãn t''iJlt'rando para •rem exccmJda~. alt'tar a olução:>
cu temJlO de l' ·eor ào prr istos são 9, 6. 3. 5 c , . Em 47. O probl ma doe; leuorc-; ~tor pod r fonnuladn
qHl' urdem da-. de\ criam -.c r e T utatb\ para mimmi1..:1r u d • vjriil man •ira\, d pendl'ndo d • qmmdn Glda ·.11 ''Cl·
t~mpo mcdio de re posta? 1 liJrl'SflO ta dc~ndera de . riJ d~ procc 'O pode ·r inidada. Dt creva. detalhada·
37. Cinc 1 1arda em lutt·• .o\ a F. thcgam a um t•ntru Ul' m ntc trêoi varia • s diferentes do pr blema. cada uma


romput.l<;do qua\e an me rnn tem pu. Fia tem tcmpo\ fanm'Cendo rou nã alguma categoria de proce \O'i, Para

Sistemas Operacionais – Unidade 02 Professor Wilson Amaral


2 Processos
Como um sistema operacional consegue executar vários programas ao mesmo
tempo?
A resposta para esta pergunta está nos processos. Veremos que os programas
podem ser divididos em vários processos e que estes processos tem a neces-
sidade de compartilhar diversos recursos, tais como processador, memória,
dispositivos de entrada e saída, etc. Vamos neste capítulo estudar o que são os
processos e como o sistema operacional faz o seu gerenciamento.

OBJETIVOS
• Compreender os principais conceitos relacionados aos processos.
• Aprofundar nossos conhecimentos de como é feito o compartilhamento de um espaço
de endereçamento (memória) por vários fluxos de execução.
• Discutir sobre os problemas envolvidos no compartilhamento de recursos entre os pro-
cessos e as soluções encontradas para resolvê-los.

REFLEXÃO
Você se lembra dos sistemas operacionais multiprogramáveis? Caso não se lembre, faça
uma breve consulta e anote os principais conceitos.

2.1 Conceito de Processo

Como vimos anteriormente os sistemas operacionais multiprogramáveis per-


mitem carregar mais de um programa em memória e executa-los concorren-
temente. Segundo Silberschatz et al. (2004) um processo é um programa em
execução. Assim há uma diferenciação entre programas e processos. O progra-
ma é algo estático enquanto os processos são dinâmicos. Os programas são for-
mados por sequências de comandos e instruções e não tem a possibilidade de
alterar o seu estado. Os processos por sua vez, são quem executam os comandos
dos programas, e à medida que os comandos são executados o processo pode
sofrer alterações. Quando abrimos um navegador da Internet (ex.: Internet Ex-

36 • capítulo 2
plorer) um processo é associado a ele. Se abrirmos um segundo Internet Explo-
rer, um novo processo será criado, totalmente independente do primeiro. Ou
seja, podemos ter vários processos relacionados a um único programa e geren-
ciados individualmente pelo sistema operacional.

Figura 19 – Gerenciador de tarefas Windows 8.0.

O Gerenciador de Tarefas do Windows 8.0 permite que possamos visualizar


os processos que estão em execução no computador. Notem que temos o gru-
po de Aplicativos e o grupo Processos em segundo plano. Os processos ligados a
execução de um programa são listados no grupo “Aplicativo”. Existem muitos
processos que não têm ligação direta com algum programa e sim com o sistema
operacional. Estes processos, tais como gerenciador de memória, gerenciador
de rede, antivírus etc., são executados em segundo plano.

CONEXÃO
Leia um pouco mais sobre processos em: <http://www.guiky.com.br/2009/12/o-que-sao-
-os-processos-do-sistema-operacional.html>. Entenda um pouco mais com este outro ar-
tigo: <http://www.tecmundo.com.br/memoria/3197-o-que-sao-processos-de-um-sistema-
-operacional-e-por-que-e-importante-saber.htm>.

capítulo 2 • 37
ATENÇÃO
O termo Processo foi utilizado pela primeira vez na década de 60 pelos projetistas do sis-
tema MULTICS. Desde esta época, houve um aumento em sua definição, tais como tarefa,
programa em execução, o “espírito animado” de um procedimento, etc. (DEITEL et al., 2005).

2.1.1 Pseudoparalelismo

Quando estamos fazendo um determinado trabalho no computador, como por


exemplo, digitando um trabalho da faculdade, podemos executar um progra-
ma para escutar nossas músicas enquanto efetuamos a digitação, abrir o brow-
ser da Internet para efetuar alguma pesquisa e rodar um programa para trata-
mento de imagens.
A impressão que temos e de que todos estes programas estão sendo execu-
tados em paralelo, ou seja, todos ao mesmo tempo, mas não é bem assim que
as coisas acontecem.
Neste cenário, para que todos os programas sejam executados, o sistema
operacional associa um processo a cada programa em execução, assim, tere-
mos quatro processos sendo executados. Cada processo tem diversas caracte-
rísticas próprias, tais como, seus estados atuais, recursos necessários à execu-
ção de suas tarefas, valores de registradores, variáveis etc.
Como há quatro processos em execução, os quatro concorrem pela utiliza-
ção da CPU, forçando o seu compartilhamento. O compartilhamento da CPU é
feito através de uma rápida alternância entre um processo e outro, executando
cada um num rápido intervalo de tempo, podendo chegar a dezenas ou cente-
nas de milissegundos. Esta alternância é conhecida como pseudoparalelismo. É
importante destacar que o paralelismo real acontece em hardware dos sistemas
multiprocessadores, ou seja, possuem duas ou mais CPU que compartilham a
mesma memória física.
Na Figura 20 temos o detalhamento deste processo de alternância com qua-
tro processos em memória. A Figura 20(a) ilustra os quatro programas na me-
mória associados a quatro processos. Cada processo é executado independente
uns dos outros, cada um executando o seu próprio fluxo de controle (Figura
20(b)). A Figura 20(c) exibe o progresso de execução de cada um dos processos.
Podemos notar que apenas um processo foi executado em um determinado
instante. No tempo 1 a CPU executa as instruções do processo “A”. No tempo

38 • capítulo 2
2 o sistema operacional decide inicializar o processo “B”, mas antes, todos os
dados dos registradores do processador são salvos no processo “A”. Este ciclo
acontece para todos os processos enquanto estiverem em execução. Este proce-
dimento, efetuado pelo sistema operacional, de troca de processo por outro é
chamado de mudança de contexto.

Processo
Um contador de
programas
A Quatro contadores
de programas
B

A B C D
C

D
A B C D
1 2 3 4 5 6 7
Tempo

Figura 20 – (a) Multiprogramação de quatro programas. (b) Modelo conceitual de quatro pro-
cessos sequenciais independentes. (c) Só um programa está ativo em qualquer dados instante.
Fonte: Tanenbaum e Woodhyll (1999).

São grandes as vantagens de utilização de processos pelo sistema operacio-


nal, tais como:
• Simplicidade: um processo pode ser decomposto em vários outros pro-
cessos permitindo que se realizem várias operações independentes em
um sistema.
• Velocidade: se um processo esta em espera, por exemplo, aguardando
alguma solicitação a um dispositivo de entrada e saída, este processo é
substituído por outro.
• Segurança: cada processo pode estar associado a um determinado direito.

Em geral os processos podem ser classificados em três classes:


• Interativos (Foreground): são processos que necessitam de algum tipo de
interação com o usuário. Normalmente esta interação é relativa a solici-
tações de entrada e saída, feitas através de interface gráfica, que exigem
do sistema operacional um tempo de resposta rápido. Exemplo: editor
de texto, planilhas eletrônicas, jogos, etc.

capítulo 2 • 39
• Batch (Backgound): são processos que realizam o processamento de da-
dos de entrada produzindo um conjunto de dados de saída sem que haja
a intervenção do usuário. Exemplo: backups, compiladores, programas
de cálculo numérico, etc.
• Daemons: são processos carregados pelo sistema operacional durante
sua inicialização e permanece em execução até que o sistema seja fina-
lizado. Processos Daemons ficam em espera em segundo plano até que
seja requerido algum serviço. Exemplo: gerenciamento de log do siste-
ma, serviços de e-mail, etc.

2.1.2 Blocos de controle de processos (PCBs)

O sistema operacional ao criar um processo, cria um bloco chamado Blocos de


controle de processos (PCBs), também conhecido como descritor de processo. O
bloco de controle de processo contém diversas informações que auxiliam o seu
gerenciamento pelo sistema operacional. Entre estas informações estão:
• Número de Identificador de processo (PID – Process Identification Number):
número pelo qual o processo é identificado pelo sistema operacional.
• Estado do processo: estado atual do processo (Pronto, Execução, Em Es-
pera, etc.).
• Contador de programa: indica qual instrução do processo deverá ser
executada.
• Prioridade de escalonamento: indica qual a prioridade do processo na
escala de prioridade de execução.
• Credenciais: indica quais as permissões o processo possui.

2.1.3 Contexto

Na seção anterior vimos que um processo tem diversas características, entre


elas, o seu estado. O estado representa a situação atual do processo, ou seja,
os valores de suas variáveis, as instruções que esta executando, os recursos em
uso. Conforme a execução do processo avança, o seu estado se altera. O estado
de um processo em um determinado instante é conhecido como contexto.
Um processo é formado por três partes: contexto de hardware, contexto de
software e espaço de endereçamento. Através destas três partes um processo
guarde todas as informações do programa em execução.

40 • capítulo 2
Contexto de
Software

Espaço de Processo
Endereçamento

Contexto de
Hardware

Figura 21 – Estrutura do processo.

2.1.4 Contexto de Hardware

Em sistemas de tempo compartilhado (multiprogramados), no qual há um re-


vezamento na utilização do processador pelos processos, o contexto de hardwa-
re é de suma importância. Através do contexto de hardware, o sistema opera-
cional é capaz de efetuar a troca de um processo por outro no processador, esta
operação é conhecida como troca de contexto.
A troca de contexto envolve os registradores do processador. Um proces-
sador possui vários registradores entre os de usos gerais e os específicos, tais
como o Program Conter (PC), o Stack Pointer(SP) e o Registrador de Status
(PSW). Os registradores são utilizados para armazenar informações enquanto
um processo esta em execução.

Processo

Contexto de
Hardware

Figura 22 – Contexto de hardware.

capítulo 2 • 41
A troca de contexto segue a seguinte sequencia. Ao executar um processo
“A”, o seu contexto de hardware é armazenado nos registradores do processa-
dor. Quando o sistema operacional decide trocar de processo, executar o pro-
cesso “B”, primeiramente salva os dados dos registradores no contexto de har-
dware do processo “A” e em seguida disponibiliza a utilização do processador
para o processo “B”. O contexto de hardware do processo “B” é armazenado nos
registrados do processador. A necessidade de armazenar os registradores no
contexto de hardware quando um processo perde o uso do processador é que
quando este processo voltar a ser executado possa continuar exatamente de
onde foi interrompido.

Sistema Operacional

Processo A Processo B

executando

Salva registradores do
Processo A

Carrega registradores do
Processo B

executando

Salva registradores do
Processo B

Carrega registradores do
Processo A

executando
Figura 23 – Mudança de contexto.
Fonte: Machado e Maia (2007).

42 • capítulo 2
2.1.5 Contexto de software

Quando um processo é criado, o sistema operacional especifica os limites e


características de recursos que o processo pode alocar. Estas informações são
armazenadas no contexto de software e são relativas à: quantidade máxima
de arquivos que o processo pode abrir simultaneamente, qual a prioridade de
execução, tamanho do buffer utilizado em operações de entrada e saída, etc. As
especificações de limites de recursos permitidos a um processo alocar são de-
finidos pelo administrador do sistema e armazenado num arquivo do sistema
operacional denominado arquivo de usuários. O sistema operacional consulta o
arquivo de usuários para prover as informações do contexto de software.
As informações do processo são divididas em três grupos no contexto de
software: identificação, quotas e privilégios.
• Identificação: quando um processo é criado, por um usuário ou por ou-
tro processo, recebe do sistema operacional um número de identifica-
ção única (PID – Process Identification Number) e a identificação única do
usuário (UID – User Identification) referente ao usuário ou processo que o
criou. O sistema operacional e outros processos utilizam o PID para fazer
referências aos processos em execução.

• Quotas: o limite de recursos que um processo pode alocar e definidos


em quotas. Um processo em execução pode ter necessidade de mais re-
cursos do que lhe foi estipulado. Esta situação de insuficiência de quota
pode causar a lentidão na execução do processo, sua interrupção ou nem
mesmo ser executado.

• Privilégio: cada processo possui privilégios que lhe permite executar


ações a ele mesmo, como alterar seus limites de alocação de memória,
sua prioridade de execução etc. Além dele mesmo, o processo pode ter
privilégios de efetuar ações a outros processos e ao sistema operacional.

capítulo 2 • 43
Contexto de
Software

Processo

Figura 24 - Contexto de software.

2.1.6 Espaço de endereçamento

Os processos são responsáveis pela execução das instruções de um programa.


Para tanto, as instruções e os dados do programa são carregados em uma área
de memória pertencentes ao processo para serem executados. Esta área de me-
mória é chamada de espaço de endereçamento.

Espaço de Processo
Endereçamento

Figura 25 – Espaço de endereçamento.

44 • capítulo 2
2.2 Estados de um processo

Os processos executados pelo processador normalmente possuem necessida-


des distintas de duração, importância e comportamento. O sistema operacio-
nal tem a responsabilidade de gerenciar e estabelecer uma ordem de execução
destes processos. Como visto anteriormente, no sistema multiprogramável há
um padrão de compartilhamento do processador entre os diversos processos
em execução. Assim há uma troca constante de processos em execução no pro-
cessador o que faz com que o processo passe por estados distintos durante o seu
ciclo de vida. Conforme avança a execução de um processo, o seu estado pode
ser alterado tanto por eventos gerados pelo próprio processo como pelo siste-
ma operacional. Os estados possíveis para um processo são:
• Pronto: este estado indica que o processo aguarda para ser executado.
Como normalmente há vários processos em estado de Pronto, primei-
ramente o sistema operacional efetua um enfileiramento destes proces-
sos (Figura 26). Em seguida utiliza um mecanismo denominado escalo-
namento com o objetivo de determinar a ordem e os critérios de uso do
processador pelos processos.

• Em Execução: este estado indica que o processo esta sendo executado


pelo processador. A troca de um processo por outro na utilização do pro-
cessador deve respeitar os critérios de escalonamento.

• Em Espera: este estado indica que o processo esta aguardando por um


evento externo ou ser atendida alguma chamada ao sistema operacional.
Os processos neste estado são organizados em fila e assim que o evento
esperado ou o retorno da chamada ao sistema operacional acontece, o
processo é transferido para o estado de pronto.

Processo 1 Processo 2 Processo 3

Figura 26 – Fila de processos aguardando a execução pelo processador.


Fonte: Oliveira et al. (2010).

capítulo 2 • 45
2.2.1 Mudança de estado de um processo

De acordo com Silberschatz et al. (2004) há quatro mudanças de estado que po-
dem ocorrer durante o seu ciclo de vida de um processo:
• Novo → Pronto: esta mudança de estado ocorre quando o processo é admiti-
do pelo sistema operacional e termina de ser carregado na memória, aguar-
dando apenas a oportunidade de ser escolhido pelo escalonador para ser
executado.
• Pronto → Em Execução: esta mudança ocorre quando o escalonador esco-
lhe um processo na fila de pronto para ser executado.
• Em Execução → Pronto: esta mudança ocorre quando o tempo de uso do
processador pelo processo chaga ao fim. O processo retorna para a fila de
processos prontos até ser novamente habilitado pelo escalonador para
usar o processador.
• Em Execução → Em Espera: esta mudança ocorre quando o processo aguar-
da um evento ou necessite utilizar algum recurso que não esteja disponível
no momento, por exemplo. Isto faz com que o processo libere o uso do pro-
cessador e fique em estado de espera enquanto aguarda o evento ou a dispo-
nibilidade do recurso.
• Em Espera → Pronto: esta mudança ocorre quando o processo recebe o
evento esperado ou o recurso solicitado fica disponível para uso. Conse-
quentemente o processo volta para a fila de pronto a fim de aguardar ser
processado.
• Em Execução → Terminado: esta mudança ocorre quando o processo finaliza
sua execução ou quando acontece algum erro e o processo precisa ser abortado.

Interrupção

Processo Selecionado
Fim da
carregado pelo
execução
em memória escalonador
Novo Pronto Em Execução Terminado

Ocorrência do Aguardando um
evento ou Em Espera evento ou
dado disponível dado externo

Figura 27 – Diagrama de estados de um processo.


Fonte: Silberschatz et al. (2004).

46 • capítulo 2
2.2.2 Classificação de processos

Os processos podem ser classificados de acordo com vários critérios entre eles, em
função de modo como utiliza o processador e os dispositivos de entrada e saída:
• Processo CPU-Bound: são processos que utilizam de modo muito intenso
o processador durante o seu ciclo de vida. A maior parte do tempo os es-
tados destes processos são Pronto ou Em Execução.
• Processo I/O-Bound: este tipo de processo está mais ligado aos disposi-
tivos de entrada/saída do que propriamente ao processador. O estado
deste processo fica Em Espera durante grande parte do seu ciclo de vida
devido aos longos tempos aguardando respostas das solicitações feitas
aos dispositivos de entrada e saída.

Durante o ciclo de vida de um processo são realizadas entradas e saídas de


dados no processo. Estas entradas e saídas são feitas através de canais de comu-
nicação disponibilizada pelo processo. O processo tem no mínimo dois canais
de comunicação associados a ele. Os canais permitem acesso de um processo a
outros processos, comunicação com o usuário, arquivos, etc.
• Processo em foreground: são processos que mantém com o usuário uma
ligação direta enquanto esta sendo processado. Esta ligação do processo
com o usuário é feita através dos canais de comunicação associados ao
teclado, mouse, monitor, etc.
• Processos em background: são processos que não tem ligação direta com
o usuário enquanto esta sendo processado. Este tipo de processo é muito
utilizado em processamentos do tipo batch.

2.3 Threads

Anteriormente estudamos que os processos possuem uma série de caracterís-


ticas tais como vistos em contexto de software, de hardware, espaço de endere-
çamento, etc. Além das características, há associado a um processo um fluxo
de execução que é conhecido como thread. Os primeiros sistemas operacionais
eram monothread, ou seja, cada processo tinha o seu espaço de endereçamento
individual e era associado a um único fluxo de execução (thread).

capítulo 2 • 47
Contexto de
Software

Espaço de Thread 1
Endereçamento

Contexto de
Hardware

Figura 28 – Processo monothread.

Em sistemas operacionais multithreading, um único processo pode estar


associado a vários fluxos de execução (threads). Como as threads existem no
interior do processo, todas compartilham o mesmo espaço de endereçamento
(código e dados).

Contexto de
Software

Espaço de Thread 1 Thread 2 Thread 3


Endereçamento

Contexto de Contexto de Contexto de


Hardware Hardware Hardware

Figura 29 – Processo multithread.

Compartilham o mesmo espaço de endereçamento faz com que o gerencia-


mento de processos das aplicações concorrentes fiquem mais eficientes devido a
drástica diminuição de tempo gasto com a criação, eliminação e troca de contextos
destes processos. A troca de um thread por outro dentro de um mesmo proces-
so é muito mais rápida do que a troca entre dois processos. Os threads comparti-
lham uso do processador como se fossem processos separados. Assim os estados
dos threads seguem os mesmos princípios dos processos. Logo se uma thread esta

48 • capítulo 2
aguardando que um determinado recurso fique disponível, seu estado passa de Em
Execução para Em Espera, liberando o processador para outra thread.
Um exemplo de utilização de threads pode ser dado através da execução de
um vídeo com som em inglês e legendas em português. O programa de visuali-
zação do vídeo pode criar um processo com três linhas de execução (três threa-
ds). Sendo um thread para tratar a exibição da imagem (vídeo) um segundo thre-
ad para tratar o áudio e o terceiro para tratar a legenda. O usuário final visualiza
a imagem, o som e legenda, tudo ao mesmo tempo, mas o processamento de
cada thread é executado individualmente no processador.

CONEXÃO
Entenda como são criadas as threads em linguagem de programação.
<http://www.macoratti.net/14/07/c_gptwf.htm>.

2.4 Comunicação entre Processos

Nos dias atuais temos acesso a computadores com multiprocessadores, os


quais, a maioria dos programas levam em consideração em seu desenvolvimen-
to, para obter melhor desempenho.
Muitos problemas solucionados por um programa não são executados se-
quencialmente, são divididos em várias tarefas interdependentes que relacio-
nam entre si a fim de atingir um objetivo comum. Os códigos dos programas
são estruturados de tal forma que permitem serem executados concorrente-
mente através de múltiplos processos ou threads. Programas com estas caracte-
rísticas são chamados de aplicações concorrentes.
Aplicações concorrentes proporcionam um melhor desempenho mesmo
não havendo um paralelismo real na execução dos processos ou threads. Onde
há o paralelismo real, em casos de sistemas com múltiplos processadores, as
aplicações concorrentes melhora ainda mais estas vantagens.
Programas desenvolvidos para serem executados de modo sequencial, que
executam apenas um único fluxo por vez, não se beneficiam das vantagens ofe-
recidas por um sistema com múltiplos processadores. Programas como editores
de texto, navegadores web e jogos, caso fossem um programa sequencial, não te-
ríamos a alta interatividade que temos nestas aplicações. Os editores de texto,
por exemplo, permitem a digitação enquanto efetuam a revisão ortográfica. Os

capítulo 2 • 49
navegadores web interagem com usuário através das páginas de Internet ao mes-
mo tempo em que tarefas de comunicação com a rede estão sendo executadas.
Os bancos de dados, essencial nas aplicações atuais, principalmente apli-
cações empresariais como Sistema integrado de gestão empresarial (SIGE ou
ERP – Enterprise Resource Planning) são outro exemplo de aplicações concorren-
tes. Um sistema ERP integra todos os dados e processo de uma organização em
um único sistema e estes dados são armazenados em um banco de dados. Caso
o banco de dados utilizado por um ERP fosse sequencial, atenderia um único
usuário por vez. Logo se um usuário estivesse dando entrada de mercadoria no
estoque, todo o restante da empresa estaria parado, aguardando o término des-
ta tarefa, tornando este tipo de sistema inviável para uma empresa.
Para que os processos concorrentes possam cooperar entre si, é necessário
que haja uma comunicação entre eles para troca e compartilhamento de infor-
mações, além de um sincronismo, efetuado pelos sistemas operacional para
que as atividades sejam executadas sem erros. Diversos mecanismos podem
ser utilizados para efetuar a comunicação entre os processos, como variáveis
compartilhadas na memória principal, quanto à memória é compartilhada en-
tre os processos. Quando a memória não é compartilhada, os processos podem
trocar mensagens para compartilhar as informações entre si.
Para ilustrar o uso de memória compartilhada e a eficiência dos programas
concorrentes em relação aos programas sequenciais, Oliveira et al. (2010) pro-
põem uma pequena tarefa de impressão de arquivo, que deve ser executada por
um programa. O programa deve ler um arquivo do disco rígido, efetuar a forma-
tação adequada para imprimir e por fim, enviar para a impressora.
A figura 30 exibe as três operações feitas utilizando um programa sequen-
cial. Neste caso é utilizado apenas um processo.

Impressora
Arquivo Processo
Física
.
Figura 30 - Acessando arquivo e impressora através de um programa sequencial.
Fonte: Oliveira et al. (2010).

A Figura 31 exibe a linha do tempo necessária para que o processo possa


efetuar a sequência de passos para a realização da tarefa:

50 • capítulo 2
4. A primeira coisa efetuada pelo processo é enviar um comando de leitura
do arquivo para o disco rígido.
5. Em seguida o processo fica em modo espera até que a leitura seja
finalizada.
6. O arquivo é formatado pelo processo.
7. Envia os dados formatados direto para o buffer da impressora. Como nor-
malmente o buffer é relativamente pequeno são necessárias várias repeti-
ções das quatro etapas até que o arquivo seja totalmente impresso.

Disco
Processo
Impressora
1 2 3 4 1 2 3 4

Esperando
Tempo
Executando
Enviando Dados

Figura 31 – Linha do tempo do programa sequencial.


Fonte: Oliveira et al. (2010)

A Figura 32 exibe a mesma tarefa sendo executada por um programa concor-


rente. Logo foi utilizado dois processos na execução da tarefa: processo leitor e
processo impressor.
A função do processo leitor é ler o arquivo do disco rígido, efetuar a devida
formatação e colocar na variável compartilhada. O processo impressor retira os
dados da variável e envia para o buffer da impressora.

Processo
Arquivo
Leitor

Variável

Processo Impressora
Impressor Física

Figura 32 – Acessando arquivo e impressora através de um programa concorrente.


Fonte: Oliveira et al. (2010).

capítulo 2 • 51
Através do gráfico, podemos notar a utilização simultânea do disco e da im-
pressora. Dessa forma, o tempo de impressão será bem menor o que torna o
programa concorrente mais eficiente que o programa sequencial.

Disco

Processo
Leitor

Processo
Impressor

Impressora

Esperando
Tempo
Executando
Enviando Dados

Figura 33 – Linha do tempo do programa sequencial.


Fonte: Oliveira et al. (2010).

2.5 Sincronização entre Processos.

Na seção anterior, vimos que as aplicações concorrentes em sistemas operacio-


nais multiprogramáveis permitiram um grande avanço e eficiente em relação
aos programas sequenciais. A eficiência decorre do trabalho cooperativo entre
os processos e do acesso compartilhado de recursos, como memória, disposi-
tivos de entrada/saída e arquivos. Em muitos casos o acesso a compartilhado
pode gerar situações de inconsistência de informações ou problemas intermi-
tentes de difícil reprodução e solução do mesmo. Estes problemas impulsio-
naram a criação de mecanismos nos sistemas operacionais a fim de ordenar a
execução dos processos, chamados de sincronização.

52 • capítulo 2
2.5.1 Problemas das condições de corrida e região crítica

O problema de compartilhamento de recursos entre processos concorrentes fica


evidente com o exemplo a seguir, onde a ordem de execução de dois processos in-
terfere no resultado final, conhecido como condições de corrida (race conditions).
Utilizando o diagrama da Figura 34, têm-se dois processos que postam ar-
quivos para impressão e o spooler (tabela), que recebe arquivos a serem impres-
sos e ao finalizar a impressão, o arquivo é retirado do spooler. Em um determina-
do momento, o Processo “A” e “B” decidem imprimir um arquivo ao mesmo
tempo. Os procedimentos que se seguem são:
1. Os dois processos consultam a variável de Entrada do spooler para obter o
próximo slot livre e para postarem os arquivos para impressão figura 34 (a).
2. Os dois obtém o mesmo slot livre para impressão, o slot 10 (figura 34 (b)).
3. O processo “A” posta o arquivo “Arq_A.doc” para a impressão e incre-
menta a variável de Entrada para 11 (figura 34 (c)).
4. No mesmo instante o processo “B”, posta o arquivo “Arq_B.doc”, sobre-
pondo o “Arq_A.doc”, e em seguida incrementa a variável de Entrada
para 11 (figura 34 (d)).
5. CONCLUSÃO: o processo “A” nunca receberá a impressão do arquivo
“Arq_A.doc”.

Arq_A.doc Spooler Arq_A.doc Spooler


Fila de Impressão Fila de Impressão
Processo A (slots) Processo A (slots)

Próximo 7 Figura.png Próximo 7 Figura.png


10
Slot Livre 8 Tarifa.xls Entrada Slot Livre 8 Tarifa.xls Entrada
9 Apostila.pdf 10 9 Apostila.pdf 10
Próximo 10 Próximo Próximo 10 Próximo
Slot Livre Slot Livre 10
Slot livre Slot livre
Processo A Processo B
Arq_B.doc Arq_B.doc

Arq_A.doc Spooler Arq_A.doc Spooler


Fila de Impressão Fila de Impressão
Processo A (slots) Processo A (slots)

Próximo 7 Figura.png Próximo 7 Figura.png


Slot Livre 8 Tarifa.xls Entrada Slot Livre 8 Tarifa.xls Entrada
9 Apostila.pdf 11 9 Apostila.pdf 11
Próximo 10 Arq_A.doc Próximo Próximo 10 Arq_B.doc Próximo
Slot Livre 10 Slot Livre
Slot livre Slot livre
Processo B Processo B
Arq_B.doc Arq_B.doc

Figura 34 – Condições de corrida.

capítulo 2 • 53
A solução para o problema de condições de corrida (race conditions) se inicia
pela identificação da parte do programa que gera disputa dos recursos compar-
tilhados e da parte que não gera disputa. A parte que gera disputa é conhecida
como região crítica ou seção crítica e a que não gera disputa e conhecida como
códigos reentrante ou código público.
Uma vez identificado à região crítica, o próximo passo para a solução do pro-
blema é atender os seguintes aspectos:
• Exclusão mútua: garantir que apenas um processo por vez terá acesso à
região crítica.
• Progresso: caso um processo deseja utilizar uma região crítica que não está
em uso, outros processos não podem bloqueá-lo de utilizar a região crítica.
• Espera limitada: caso um processo deseja utilizar uma região crítica, o mes-
mo não deve esperar indefinidamente para a utilização da região crítica.

A literatura oferece várias soluções para o problema da região crítica e que


satisfazem os três aspectos descritos anteriormente. A seguir são abordadas al-
gumas destas soluções.

ATENÇÃO
Uma das tarefas dos programadores é testar o programa que esta sendo criado. Esta tarefa
não é nada fácil quando o programa em teste contém condições de corrida. Esta condição
faz com que a maioria dos testes tenham bons resultados, mas, de tempos em tempos, algo
estranho e inexplicável acontece (TANENBAUM; WOODHYLL, 1999).

2.5.2 Sincronismo por software

Esta solução leva em consideração a utilização apenas de software. A entrada da


região crítica é feita através de uma variável de sincronismo busy (Figura 35). A
variável busy incialmente contém o valor 0 (zero) o que indica que qualquer pro-
cesso pode entrar na região crítica. Um processo ao entrar na região crítica, altera
busy para 1 impedido o acesso de outro processo a região. Suponha que temos dois
processos, “A” e “B”, sendo executados concorrentemente e que desejam entrar na
região crítica. O processo “A” lê a variável busy com valor 0 (linha 5), entra na região

54 • capítulo 2
crítica e antes de mudar o valor de busy para 1 (linha 6), ocorreu uma interrupção que
passou o controle para o processo “B”. O processo “B” lê busy igual a 0, entra na
região crítica e altera busy para 1. Ocorre novamente a interrupção voltando a
executar o processo “A”. Neste momento, para o processo “A” o valor de busy
ainda é 0, o que ocasiona também a sua entrada na região crítica.

Figura 35 – Sincronismo por software.


Fonte: Maziero (2014).

Abordagem de software apresenta uma propriedade denominada busy-wai-


ting (espera ativa). Busy-wating ocorre quando um processo tem que aguardar em
um laço a sinalização de um evento. Segundo Oliveira et al. (2010) a propriedade
Busy-wating aliado ao fato que a implementação de soluções de software serem
altamente complexas, faz com que não sejam muito empregadas na prática.

2.5.3 Sincronismo por Hardware

Em sistemas que utilizam um único processador a solução adotada é desabili-


tar as interrupções. O processo ao entrar na região crítica, desabilita todas as
interrupções e habilita ao sair. Dessa forma o processador não efetua a troca
de processo enquanto a interrupção estiver desabilitada. Este tipo de solução
apresenta algumas restrições:
• Segurança: não é uma solução segura pelo fato do processo, por algum
motivo, não habilitar novamente as interrupções e assim não conseguir
ser finalizado.
• Eficiência: a perda de eficiência esta relacionada aos periféricos que de-
pendem das interrupções para serem atendidos imediatamente durante
a utilização de regiões críticas. Os periféricos somente serão atendidos
depois que o processo sair da região crítica.

capítulo 2 • 55
• Limitação: desabilitar a interrupção depende de acesso privilegiado e
processos do usuário pode não ter esta permissão. Em máquinas onde
há vários processadores executando simultaneamente, desabilitar as in-
terrupções não funciona. Isto porque ao desabilitar a interrupção em um
processador, os demais continuaram funcionando. Desabilitando todas
interrupções em todos os processadores, ainda assim os processadores
estariam executando simultaneamente os processos.

2.5.4 Semáforos

Em 1965 o matemático holandês E.W.Dijkstra sugeriu a utilização de um meca-


nismo conhecido como semáforo para o sincronismo entre processos. A proteção
da região crítica tornou-se simples com a utilização do semáforo. Logo, os proje-
tos de sistemas operacionais e aplicações concorrentes passaram a adotar o me-
canismo se semáforo como principal forma de implementar exclusão mútua e a
sincronização condicional entre processos. Os semáforos são classificados em:
binário ou contadores. Semáforos binários só podem assumir valores 0 e 1, por
isso também são chamados de mutexes (mutual exclusion semaphores). Já os se-
máforos contadores permitem qualquer valor desde que sejam inteiros positivos.
O semáforo é composto por uma variável do tipo inteiro que é controlada
por duas instruções: Down e Up. Down e Up são instruções que garante uma úni-
ca ação atômica e indivisível, ou seja, não podem ser interrompidas quando
estiverem em execução.
O recurso compartilhado fica associado a um semáforo que controla o aces-
so dos processos concorrentes ao recurso. O recurso estará disponível para uso
caso a variável semáforo esteja maior que 0, caso contrário, o recurso esta sen-
do utilizado por algum processo.
A instrução Down é executada quando um processo deseja entrar em sua
região crítica. Estando o valor da variável semáforo maior que 0, este valor é
decrementado de 1 e a região crítica é liberado para uso do processo. Se em se-
guida, outro processo executar a instrução Down, verá que o valor da variável é 0,
não podendo assim acessar sua região crítica, ficando então na fila de estado de
espera. O processo que está na região crítica, ao sair, executa a instrução Up que
incrementa o valor da variável semáforo, liberando o acesso do recurso. Caso
haja processos na fila de espera, associados ao recurso, um desses processos
terá seu estado alterado para pronto pelo sistema.

56 • capítulo 2
2.5.5 Monitores

O mecanismo de semáforo é muito importante para a implementação de exclu-


são mútua, mas por não ser estruturado, pode ser difícil sua utilização em um
programa. Este fato exige do desenvolvedor um cuidado redobrado na progra-
mação, teste e depuração para não causar problemas intermitentes, difícil de
reproduzir e solucionar. Em 1974 C.A.R Hoare propôs um mecanismo de sin-
cronização de alto nível chamado Monitor. Os monitores oferecem as funciona-
lidades dos semáforos, porém tem a característica de ser estruturado, logo seu
código é mais legível e consequentemente mais imune a bugs.
Formado por um módulo, que encapsula as variáveis e procedimentos, o
monitor diminui a complexidade da programação além de implementar a ex-
clusão mútua entre os procedimentos de forma automática. A exclusão mútua
entre procedimentos significa que, em um determinado instante, apenas um
processo de cada vez tem a permissão de executar um dos procedimentos do
monitor. Caso outro processo chame qualquer um dos procedimentos, este fi-
cará bloqueado, aguardando em um fila de entrada até que seja sua vez.

2.5.6 2.5.6 Troca de mensagens

Quando a memória não é compartilhada, os processos trocam mensagens para


compartilhar informações entre si. Esta situação pode ocorrer quando os pro-
cessos estão executando em diferentes computadores. A troca de mensagens é
feita utilizando um canal de comunicação entre os processos. O canal de comu-
nicação pode ser um buffer ou um link de rede entre os computadores. Uma vez
o canal de comunicação estabelecido entre os processos, às mensagens podem
ser trocadas utilizando duas funções básicas: Send e Receive.
O processo transmissor (origem) utiliza a função Send(Receptor, Mensa-
gem) para enviar mensagens (dados) para um processo receptor (destino). O
processo receptor recebe as mensagens enviadas através da função Receive
(transmissor, mensagem). A mensagem só pode ser lida após ter sido enviada.
Logo é necessário que haja um sincronismo entre os processos envolvidos na
troca das mensagens.

capítulo 2 • 57
Processo A Processo B

Send(B, MSG) Receive(A, MSG)


Contexto de Contexto de
Software Software

msg
Espaço de Espaço de
Endereçamento Thread 1 Endereçamento Thread 1

Canal de Comunicação

Contexto de Contexto de
Hardware Hardware

Figura 36 – Transmissão de mensagem.

Para que a comunicação entre processos aconteça, os processos necessitam


saber como se referir um ao outro. A forma como os processos se referenciam
caracteriza o tipo de comunicação entre eles podendo ser:
• Comunicação direta: este tipo de comunicação exige que o processo que de-
seja enviar ou receber uma mensagem, deve explicitar o nome do processo
receptor ou transmissor da mensagem. O tipo de comunicação direta tem a
restrição de permitir a troca de mensagens somente entre dois processos.

Processo A Processo B

Contexto de Contexto de
Software Software

Espaço de Espaço de
Endereçamento Thread 1 Endereçamento Thread 1

Contexto de Contexto de
Hardware Hardware

Figura 37 – Comunicação direta.

• Comunicação indireta: neste tipo de comunicação, são utilizadas caixas


postais para o recebimento e envio de mensagens. O processo transmis-
sor deposita mensagens na caixa postal que são retiradas pelo proces-
so receptor. Neste tipo de comunicação pode haver várias caixas postais
para a comunicação dos processos. Cada caixa recebe uma identificação

58 • capítulo 2
única, assim um processo pode enviar ou receber mensagens de outro
processo utilizando caixas postais diferentes, desde que os processos
compartilhem o uso da mesma caixa.

Processo A Processo B

Contexto de Contexto de
Software Software

Espaço de
Thread 1
Caixa Espaço de
Thread 1
Endereçamento Endereçamento
Postal

Contexto de Contexto de
Hardware Hardware

Figura 38 – Comunicação indireta.

ATIVIDADE
1. O processo é composto por três partes, entre elas o contexto de hardware. Das opções
abaixo, qual opção que faz parte do contexto de hardware?
f) Endereço de memória
g) Registrador PC
h) PID
i) Privilégio
j) Tempo de processador

2. O processo é composto por três partes, entre elas o contexto de software. Das opções
abaixo, qual opção que faz parte do contexto de software?
a) Registrador SP
b) Registrador PC
c) PID
d) Endereço de memória
e) Registrador de status

3. Por que os processos I/O-Bound ficam no estado “Em Espera” durante grande parte do
seu ciclo de vida?

capítulo 2 • 59
REFLEXÃO
Neste capítulo estudamos como os programas são executados pelo processador através dos
processos. Posteriormente vimos como os processos são estruturados em contexto de har-
dware, software e espaço de endereçamento, permitindo um gerenciamento mais eficiente do
sistema operacional. Em seguida, discutimos as threads, comunicação e sincronização entre
processos, conceitos que nos auxiliam entender melhor a multiprogramação. Sugerimos que
você faça todos os exercícios propostos e pesquise outras fontes para aprofundar seus conhe-
cimentos. Em caso de dúvidas, retorne aos tópicos e faça a releitura com bastante atenção.

LEITURA
Para você avançar mais o seu nível de aprendizagem envolvendo os conceitos de sistemas
operacionais e demais assuntos deste capítulo, consulte as sugestões de links abaixo:

MACORATTI, J. C. VB.NET – Trabalhando com Threads. Disponível em: <http://www.maco-


ratti.net/vbn_thd1.htm>. Acesso em: set. 2014.

MACORATTI, J. C. Trabalhando com MultiThreads no VB.NET. Disponível em: <http://www.


macoratti.net/vbn_thrd.htm>. Acesso em: set. 2014.

REFERÊNCIAS BIBLIOGRÁFICAS
DEITEL H. M.; DEITEL P. J.; CHOFFNES D. R. Sistemas Operacionais. 3ª ed. São Paulo,
Editora Prentice-Hall, 2005.

HENNESSY, J. L.; PATTERSON, D. A. Arquitetura de Computadores: uma abordagem quan-


titativa. 3ª ed. Rio de Janeiro: Campus, 2003.

MACHADO, F. B.; MAIA, L. P. Arquitetura de sistemas operacionais. 4ª ed. Rio de Janeiro:


LTC - Livros Técnicos Editora S.A., 2007.

MAZIERO, C. A. Sistemas Operacionais: Conceitos e Mecanismos. Disponível em: <http://


dainf.ct.utfpr.edu.br/~maziero/lib/exe/fetch.php/so:so-livro.pdf>. Acesso em: set. 2014.

60 • capítulo 2
OLIVEIRA, R. S.; CARISSIMI, A. S.; TOSCANI, S. S. Sistemas Operacionais. 4ª ed. Porto
Alegre : Editora Bookman, 2010.

SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G Fundamentos de Sistemas Operacionais. 6ª


ed. Rio de Janeiro: LTC - Livros Técnicos Editora S.A., 2004.

TANENBAUM, A. S.; WOODHYLL, A. S. Sistemas operacionais projeto e implementação. 2ª


ed Porto Alegre: Bookman, 1999.

NO PRÓXIMO CAPÍTULO
No capítulo seguinte, estudaremos sobre os principais conceitos relacionados ao escalona-
mento de processos. Você observará as diferenças entre os diversos tipos de escalonadores.
Serão apresentados como é feito a avaliação de um escalonador.

capítulo 2 • 61

Você também pode gostar