Você está na página 1de 26

Gerncia de Memria

A multiprogramao permite que a CPU possa ser compartilhada por um conjunto de processos, em benefcio do desempenho global do computador. Entretanto, para obter esse ganho, necess!rio compartilhar a mem"ria entre m#ltiplos processos. $este captulo sero discutidas as %!rias formas de gerenciar a mem"ria. 6.1 Introduo

A mem"ria corresponde a um longo array de pala%ras ou b&tes, cada um com o seu endereo. A CPU e os controladores dos dispositi%os perif ricos podem ler e escre%er em posi'es da mem"ria(
Sistema de I/O

CPU

Memria

Mecanismos para gerncia de memria: )!quina pura )onitor residente Swapping Parti'es m#ltiplas Paginao *egmentao *egmentao com paginao Mquina pura

6.2

Este o esquema mais simples que se pode imaginar, ou seja, no e+iste ger,ncia de mem"ria. $este caso, o usu!rio lida diretamente com o hard-are e possui total controle sobre toda a mem"ria. Este mecanismo o que fornece maior fle+ibilidade para o usu!rio, m!+ima simplicidade e custo mnimo, uma %e. que no e+ige nenhum soft-are nem hard-are especiais. Por outro lado, o esquema apresenta uma s rie de problemas, que podem ser resumidos pela aus,ncia de ser%ios( o sistema operacional no controla interrup'es, no h! monitor residente para processar chamadas de sistema ou erros, etc. Considerando que o usu!rio pode alterar o c"digo do pr"prio sistema operacional, nos endereos dos tratadores de interrupo, etc., esta opo %i!%el apenas em sistemas dedicados /por e+emplo, sistemas embarcados0, onde o computador controla um equipamento especfico, como um eletrodom stico, uma m!quina de controle num rico, um mssil, um sat lite, uma bomba de gasolina, etc.
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890 p" $

6.3

Monitor Residente

$este esquema a mem"ria di%idida em duas partes( !rea do usu!rio e !rea do sistema operacional. A !rea do sistema operacional fica geralmente no incio da mem"ria porque a tabela de interrupo usualmente ocupa os primeiros endereos da mem"ria.
8 MONITOR 3egistrador limite U*U:3;2

<9=

%ard&are de prote'#o *e o sistema operacional est! na mem"ria bai+a e a !rea de usu!rio na mem"ria alta, necess!rio proteger o c"digo e os dados do *2 contra o acesso acidental ou malicioso por parte de um programa de usu!rio. Esta proteo de%e ser fornecida pelo hard-are e pode ser implementada atra% s de um registrador de proteo, denominado (imite. 2 mecanismo de acesso > mem"ria s" ?aceita@ endereos maiores ou iguais ao %alor desse registrador. 2 %alor do registrador .erado quando a e+ecuo %ai para o *2 e somente o *2 pode alterar o %alor desse registrador. Re(oca'#o Um problema a ser considerado a carga de programas. Embora o espao de endereamento do computador inicie em 8, o primeiro endereo do programa usu!rio /endere'o inicia( de carga0 aquele contido no registrador limite. A preciso de alguma forma acertar os endereos referidos no programa do usu!rio /isto , no c"digo de m!quina correspondente ao programa de usu!rio0. *e o endereo inicial de carga conhecido pre%iamente, os endereos absolutos /endereos fsicos0 podem ser gerados na compilao /mais e+atamente, na ligao0, durante a gerao do c"digo de m!quina. $este caso, uma alterao no endereo de carga implica em recompilar o programa. Buando o endereo inicial de carga no conhecido pre%iamente, o c"digo de m!quina /ar)*i+o e,ec*t-+e(0 gerado supondo que o programa %ai ser carregado e e+ecutado a partir do endereo .ero. $este caso, se um programa tem tamanho =, os seus endereos /isto , os endereos referidos nas instru'es de m!quina desse programa0 certamente so %alores entre .ero e =5C. Estes endereos entre 8 e =5C constituem o que se denomina espa'o de endere'amento (gico do programa. Buando o programa carregado na mem"ria necess!rio acertar os seus endereos l"gicos para que eles passem
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890 p" .

a indicar os endere'os !/sicos corretos. 2 acerto muito simples, basta somar o endereo inicial de carga > cada endereo l"gico referido no programa. 2s endereos l"gicos so tamb m referidos como endereos relati%os e o processo de acerto dos mesmos conhecido como re(oca'#o. A relocao pode ser feita de forma est!tica ou de forma dinDmica. $a re(oca'#o est-tica, os endereos relati%os so transformados em absolutos no momento da carga do programa. Para isso, o arqui%o e+ecut!%el de%e conter tamb m a indicao dos locais do c"digo que referem endereos. Essa indicao conhecida como in!orma'#o de re(oca'#o. A tarefa do carregador /(oader0 fa.er o acerto dos endereos e isso feito durante a carga do programa. $o caso da re(oca'#o din0mica, os endereos do programa permanecem l"gicos o tempo inteiro /isto , as instru'es de m!quina no so alteradas para referir endereos fsicos0. A o mecanismo de acesso > mem"ria que %ai fa.er a correo /relocao0 durante a e+ecuo do programa, conforme e+plicado a seguir. Para fa.er a relocao, necess!rio que o endereo inicial de carga fique arma.enado em um registrador da UCP. $o esquema de proteo descrito anteriormente, esse endereo fica%a no registrador limite. Agora, em um computador que faa relocao dinDmica, esse %alor fica em um registrador referido normalmente como registrador 1ase ou registrador de re(oca'#o. Buando a UCP requer um acesso ao endereo /l"gico0 E, o mecanismo de acesso a mem"ria entende como sendo um acesso ao endereo RBEE, onde RB o %alor contido no registrador base. A figura abai+o mostra como os endereos relati%os so transformados em endereos absolutos durante a e+ecuo(

registrador base

$233

CPU

end. l"gico F9<

end. fsico CG9< MEM

2 uso de relocao dinDmica permite mo%imentar um programa na mem"ria com facilidade, basta alterar o %alor do registrador base. ;sto permite mudar o tamanho do sistema operacional durante a e+ecuo de um programa /como por e+emplo para incluir mais buffers ou ento um controlador de dispositi%o pouco utili.ado0. 2utra forma comum de permitir o aumento do tamanho do *2 carregar o programa do usu!rio sempre no fim da mem"ria. ;sto permite que o sistema operacional cresa at o endereo contido no registrador base e no necess!rio mo%imentar o programa de usu!rio. Com o uso de registrador base, passam a ha%er dois tipos de endereos( endereos (gicos, entre 3"""MA5 /endereos %istos pelo programa0H
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890 p" 6

endereos !/sicos, entre RB43"""RB4MA5 /%istos pelo sistema operacional0. 4odos os endereos manipulados pelo *2 so fsicos, pois ele acessa a mem"ria de di%ersos processos. Cada endereo passado entre um programa de usu!rio e o *2 precisa ser apropriadamente con%ertido. Este conceito de espao de endereamento l"gico mapeado para um espao de endereamento fsico central quando se trata de esquemas de ger,ncia de mem"ria. 6.4 Swapping

2 esquema de mem"ria descrito acima pouco utili.ado, uma %e. que monousu!rio. Entretanto, ele pode ser utili.ado para multiprogramao atra% s da adio de swapping(

3egistrador Iase

monitor usu!rio C usu!rio 7

espao do usu!rio

s-ap in

s-ap out

1;*C2

2 programa que perde a CPU copiado para o disco, enquanto o programa que ganha transferido do disco para a mem"ria principal. Este m todo foi utili.ado nos primeiros sistema timesharing. 2s programas so mantidos em um disco, que de%e ser r!pido e grande o bastante para conter di%ersas imagens de processos /c"digos e+ecut!%eis0. 6.5 Parties M !tip!as

$a multiprogramao, di%ersos programas de%em estar presentes na mem"ria ao mesmo tempo, para que a CPU possa ser rapidamente alternada entre eles. A soluo natural para esta necessidade di%idir a mem"ria em regi'es ou parti'es. Cada partio pode conter um programa a ser e+ecutado, limitando ento o grau de multiprogramao pelo n#mero de parti'es. A mem"ria pode ser di%idida em parti'es de duas maneiras distintas( parti'7es !i,as, onde as regi'es so est!ticas; parti'7es +ari-+eis, onde as regi'es so dinDmicas %ard&are de prote'#o Passa a ser necess!rio proteger no apenas o c"digo e dados do sistema operacional, mas tamb m c"digo e dados de outros usu!rios. A poss%el implementar proteo para parti'es m#ltiplas utili.ando duas t cnicas diferentes( atra% s de registradores de (imite
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890 p" 2

in!erior e s*perior ou atra% s de registrador 1ase e registrador (imite. A primeira t cnica usada quando o computador trabalha com relocao est!tica. $esse caso, sendo 8I e 8S os endereos contidos nos registradores limite inferior e limite superior, respecti%amente, um endereo E consideralo %!lido quando 8IJEK8S. A segunda t cnica usada quando o computador trabalha com relocao dinDmica. $esse caso o registrador base / RB0 usado para relocao /todo endereo E mapeado em RBEE0 e o registrador limite / R80 usado para proteo /um endereo E consideralo %!lido quando EKR80. 2bser%e que o conte#do do RB o endereo inicial de carga /incio da partio0 e o conte#do do R8 o tamanho do programa. Parti'7es !i,as A mem"ria di%idida em parti'es que no so alteradas durante a e+ecuo do sistema. Por e+emplo, uma mem"ria de 7L<= pala%ras poderia ser di%idida da seguinte forma( )onitor residente( <9= pala%rasH Espao para processos pequenos( C<= pala%rasH Espao para processos m dios( 9M= pala%rasH Espao para processos grandes( C7M= pala%ras.

Buando um programa %ai ser e+ecutado, necess!rio le%ar em conta as suas necessidades de mem"ria, para escolher a partio onde ele %ai ser colocado. 4al pode ser especificado pelo usu!rio ou ento automaticamente determinado pelo sistema operacional. A partir desse momento h! duas possibilidades b!sicas( 9a: montar uma fila indi%idual para cada tamanho de partio ou 91: montar uma fila #nica que englobe todas as requisi'es. E+istem dois tipos de perdas de mem"ria por fragmentao. Elas so chamadas de !ragmenta'#o interna e !ragmenta'#o e,terna. Um processo que necessita m pala%ras de mem"ria pode e+ecutar em uma regio de tamanho n, onde n >= m. A diferena n - m representa a fragmentao interna, isto , a mem"ria desperdiada dentro da regio. 2corre fragmentao e+terna quando uma regio est! dispon%el para uso, mas pequena demais para os processos serem e+ecutados. Por e+emplo, F programas esto esperando para serem e+ecutados. Eles possuem as seguintes necessidades de mem"ria( <8=, M8= e N8=. E+istem F parti'es li%res, cada uma com 98=. Apesar da !rea li%re total ser de C78=, a mesma no pode ser apro%eitada para process!5los. Considere agora uma situao onde e+istem 9 parti'es li%res, com respecti%amente C88=, 98=, 98= e 98=. $este momento, 9 processos desejam e+ecutar, necessitando das seguintes quantidades de mem"ria( G8=, F8=, <8= e <8=. Ap"s fornecer a partio de C88= ao processo que precisa de G8=, e fornecer uma partio de 98= ao processo que precisa de F8=, a perda de mem"ria por fragmentao interna soma 98= /F8= E C8=0. A perda por fragmentao e+terna de M8= /98= E 98=0. A perda total nesta situao de ;;< da memria.
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890 p" ;

Parti'7es =ari-+eis 2 maior problema das parti'es fi+as determinar a melhor di%iso da mem"ria, mesmo porque a melhor di%iso %aria ao longo do tempo. A soluo permitir que o tamanho das parti'es %arie ao longo do tempo /mecanismo de parti'es %ari!%eis0. 2 esquema bastante simples( o sistema operacional mant m informa'es sobre quais partes da mem"ria esto dispon%eis e quais esto ocupadas. ;nicialmente, toda a mem"ria est! dispon%el /um #nico ?buraco@0. Buando um processo chega para ser e+ecutado, a lista de buracos pesquisada e o processo colocado em uma regio li%re suficientemente grande. 1o buraco que representa a regio li%re remo%ida a !rea a ser utili.ada pelo processo, sendo o restante mantido no buraco li%re. E+emplificando, considere os seguintes processos a serem e+ecutados( >OB $ . 6 2 ; Memria ?3@ $33@ 63@ A3@ ;3@ Tempo $3 ; .3 B $;

monitor

monitor

monitor

monitor

monitor

98=

98=

98=

98=

98= Oob L

Oob C
C88= C88=

Oob C
C88=

Oob C job C termina


C88=

aloca job L Oob 9


CG8=

N8= C88=

Oob 9 Oob 7 aloca job 9 job 7 termina


CG8=

Oob 9
CG8=

788=

788=

788=

788=

788=

Oob F
7F8= 7L<= 7F8= 7L<=

Oob F
7F8= 7L<=

Oob F
7F8= 7L<=

Oob F
7F8= 7L<=

Oob F

Caracter/sticas das parti'7es +ari-+eis sempre e+iste um conjunto de !reas li%res espalhadas pela mem"riaH este conjunto pesquisado, sendo necess!rio uma !rea maior ou igual > necessidade do programaH se a !rea maior, a parte restante continua li%reH quando o processo termina, ele libera a !rea. *e ela for adjacente a uma outra !rea li%re, ambas so reunidas em uma #nica !rea li%re. Esta liberao pode fa.er com que programas esperando possam ser e+ecutadosH
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890 p" ?

para e%itar o trabalho com pequenos espaos, a unidade de alocao no necessariamente o b&te, podendo ser blocos de tamanho 7 =b&tes, por e+emplo. ;sto introdu. uma pequena fragmentao interna. A(goritmos de a(oca'#o para parti'7es +ari-+eis E+istem di%ersos algoritmos para a escolha de uma !rea li%re. Este problema conhecido genericamente como alocao dinDmica de mem"ria. Abai+o esto descritos os F principais algoritmos( first-fit( aloca o primeiro espao li%re que seja suficientemente grandeH best-fit( aloca o menor espao li%re que seja suficientemente grande. Produ. a menor sobra de espao li%reH worst-fit( aloca o maior espao li%re. Produ. a maior sobra de espao li%re. Este espao maior que fica poder! ser mais #til do que o pequeno espao li%re dei+ado pelo best5fit. Um bom algoritmo, utili.ado na pr!tica conhecido como circular-fit. Ele funciona como o first-fit, mas inicia a procura na lacuna seguinte > #ltima sobra. Compacta'#o e swapping A utili.ao da mem"ria melhor com parti'es %ari!%eis do que com parti'es fi+as, mas a fragmentao e+terna sempre um problema. Uma soluo para isto a compacta'#o. 2s programas so deslocados na mem"ria de forma que todo o espao li%re de mem"ria fique reunido em uma s" !rea, no incio ou no fim da mem"ria. *e o sistema trabalha com relocao est!tica, a compactao fica in%i!%el /pois necess!rio corrigir os endereos utili.ados nos programas0. *e o sistema utili.a relocao dinDmica /registradores base e limite0 a compactao fica simples, mas mesmo assim, o custo da compactao em termos de tempo de CPU de%e ser considerado. A poss%el acrescentar swapping ao esquema de parti'es %ari!%eis. Enquanto o processo est! suspenso, sua mem"ria apro%eitada por outros processos. *e o hard-are disp'e de registradores de base e limite, o programa pode %oltar em qualquer ponto da mem"ria. Podemos assim obter compactao atra% s do swapping. 6.6 Paginao

2 uso de parti'es %ari!%eis apresenta o problema da fragmentao e+terna, que se manifesta quando a mem"ria no est! contgua, mas fragmentada em di%ersos blocos espalhados. Considerando que o espao de endereamento de um processo precisa ser contguo, esta mem"ria li%re espalhada no pode ser utili.ada. A compactao permite o melhor apro%eitamento da mem"ria, mas possui um custo de CPU associado e nem sempre poss%el. 2 problema resol%ido pelo esquema de paginao, que permite que o espao fisico ocupado por um processo seja no contguo.

AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

p" A

%ard&are Cada endereo gerado pela CPU quebrado em duas partes( um n#mero de p!gina p e um deslocamento d. A mem"ria l"gica de um processo est! di%idida em blocos denominados p-ginas (gicas. 1a mesma forma, a mem"ria fsica do computador est! di%idida em blocos denominados p-ginas !/sicas ou frames. P!ginas fsicas e l"gicas possuem o mesmo tamanho, definido a n%el de hard-are.
endereo l"gico CPU deslocamento endereo fsico

p d

d
)em"ria fsica

n#mero da p!gina

n#mero do frame

tabela de p!ginas

Para fi+ar id ias, %amos supor que o computador utili.e endereos de C< bits e que a mem"ria seja organi.ada /acessada0 em pala%ras. ;sto resulta num espao de endereamento l"gico de tamanho 7C< /P <9=0 -ords para os processos. $este caso, as di%is'es poderiam ser, por e+emplo, L bits para p eCC bits para d /isto resulta num espao l"gico com F7 p!ginas de tamanho 7=-ords0, ou < bits para p eC8 bits para d /<9 p!ginas de tamanho C=-ords0 ou ainda G bits para p eN bits para d /C7M p!ginas de tamanho LC7 -ords0. A figura abai+o ilustra a di%iso que usa < bits para p e C8 bits para d(
p-gina CL C8 N des(ocamento 8

Essa di%iso decidida em tempo de projeto do computador. $este e+emplo /endereos de C< bits0, qualquer que seja a di%iso adotada pelo hard-are, tem5se que o espao de endereamento l"gico dos processos sempre um espao contnuo de <9= -ords. A o hard-are que %ai considerar esse espao l"gico di%idido em p!ginas. $a %erdade, a UCP %ai trabalhar sempre com endereos l"gicos /entre .ero e 7 C<5C0 e %ai ser o mecanismo de acesso > mem"ria / MMU MemorC Management Unit 0 quem %ai con%erter os endereos l"gicos em endereos fsicos. Por isso, costuma5se di.er que a paginao transparente para o soft-are. 1e fato, os compiladores e ligadores geram c"digo /arqui%os e+ecut!%eis0 considerando que o programa %ai ocupar uma !rea contgua da mem"ria, iniciando no endereo .ero /para eles no e+iste paginao0. Uma obser%ao importante que o tamanho da mem"ria fsica determinado pelo n#mero de bits utili.ados para representar os endereos fsicos. Por e+emplo, se a ))U utili.a 78 bits para representar endereos fsicos, ento a mem"ria fsica fica com tamanho 778 /P C)ega0 -ords, com endereos que %o de .ero > 7 785C. *e esse sistema utili.a p!ginas de tamanho C =-ords, essa mem"ria fsica ser! %ista pelo hard-are como
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890 p" B

tendo C879 p!ginas. Por #ltimo, de%e ser obser%ado que a mem"ria fsica pode ser maior, igual ou menor que a mem"ria l"gica. ;sso depende do n#mero de bits usados nos endereos l"gicos e fsicos. 2utra obser%ao que a UCP trabalha sempre com endereos l"gicos, os quais so mapeados para endereos fsicos pela ))U. Portanto tem5se relocao em tempo de e+ecuo. Buando um programa de%e ser e+ecutado, suas p!ginas l"gicas so carregadas em quaisquer p!ginas fsicas dispon%eis, e uma ta1e(a de p-ginas criada para tradu.ir n#meros de p!ginas l"gicas em n#meros de p!ginas fsicas, conforme ilustrado abai+o(
8 p!gina 8 p!gina C p!gina 7 p!gina F mem"ria l"gica de um processo 8 C 7 F $ 2 6 ? C 7 F 9 L < p!gina F mem"ria fsica da m!quina p!gina 7 p!gina C p!gina 8

tabela de p!ginas

2s %alores p e d correspondentes a um endereo l"gico U so obtidos da seguinte forma( p D U di+ P d D U mod P onde P o tamanho da p!gina. *e o tamanho da p!gina pot,ncia de 7 /e isto sempre ocorre0, a operao simplificada, pois o quociente e o resto so obtidos diretamente, atra% s de uma simples operao de shift. Imp(ementa'#o da ta1e(a de p-ginas Q! F formas b!sicas de implementar a tabela de p!ginas( conE*nto de registradores dedicadosF memria principa( e memria associati+a" A tabela de p!gina pode ser contruda a partir de um conE*nto de registradores dedicados, na UCP. $a mudana do processo em e+ecuo, estes registradores so carregados com os %alores correspondentes ao processo que recebe a UCP. 2 acesso aos registradores da tabela feito atra% s de instru'es pri%ilegiadas. Como estes registradores so caros, sua utili.ao no %i!%el para tabelas grandes. A tabela de p!ginas pode ser mantida na pr"pria mem"ria principal. 2 registro descritor de cada processo cont m o endereo da sua respecti%a tabela de p!ginas. 2 hard-are inclui um registrador que aponta para a tabela de p!ginas em uso / !"# - age
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890 p" G

!able "ase #egister0. Este registrador acessado atra% s de instru'es pri%ilegiadas. 2 problema com esta soluo o tempo de acesso. A necess!rio reali.ar dois acessos > mem"ria, um para fa.er o mapeamento /acesso > tabela0 e outro para acessar os dados. Uma forma alternati%a utili.ar mem"ria associati%a. A mem"ria associati%a uma mem"ria de alta %elocidade onde cada posio cont m 7 campos( uma cHa+e e um +a(or. Buando a mem"ria associati%a consultada, ela recebe uma cha%e, a qual comparada com o campo cha%e de todas as posi'es, simultaneamente. *e alguma cha%e igual encontrada, o campo %alor correspondente de%ol%ido. A pesquisa r!pida, mas o hard-are bastante caro. A id ia colocar os n#meros de p!gina no campo cha%e e os n#meros dos respecti%os frames no campo %alor. A mem"ria associati%a cont m apenas algumas das entradas da tabela. Buando um endereo l"gico gerado pela CPU, seu n#mero de p!gina fornecido como cha%e para a mem"ria associati%a. *e ele est! l!, o n#mero do frame obtido imediatamente, com toda a operao consumindo apenas, por e+emplo, C8R a mais que um acesso normal > mem"ria. *e aquela entrada na tabela no est! na mem"ria associati%a, ento um acesso > mem"ria principal de%e ser feito. Al m disto, pode5se adicionar esta entrada > mem"ria associati%a, remo%endo alguma que esteja l! agora. Ela poder! ento ser encontrada rapidamente no pr"+imo acesso. 8oca(idade da e,ec*'#o A probabilidade de uma pesquisa > mem"ria associati%a resultar em sucesso grande graas a propriedade conhecida como (oca(idade de e,ec*'#o, que apresentada pela maioria dos programas. 4odo programa a%ana acessando o seu espao l"gico /buscando de l! instru'es e dados0. 1urante esse a%ano, a cada inter%alo de tempo, utili.a apenas pequenas regi'es do seu espao de endereamento /muitas regi'es sequer so acessadas durante toda a e+ecuo0. A essa propriedade da e+ecuo se manter sobre pequenas regi'es do espao de endereamento que denominada localidade de e+ecuo. Tempo de acesso e!eti+o 2 n#mero de %e.es em que o n#mero da p!gina encontrado na mem"ria associati%a depende do tamanho desta. Uma mem"ria associati%a de M ou C< posi'es permite uma ta+a de acerto de M8R ou N8R. Este n#mero chamado de hit ratio /ta+a de acerto0. Por e+emplo, imagine que em determinado computador, a pesquisa na mem"ria associati%a demore L8 ns e que um acesso normal > mem"ria demore GL8 ns. $este caso, um acesso com sucesso na pesquisa demora M88 ns, enquanto um acesso com fracasso na pesquisa demorar! CLL8 ns. *e uma ta+a de acerto de M8R for obtida, o tempo de acesso e!eti+o I memria ser!( 8.M S M88 ns E 8.7 S CLL8 ns P NL8 ns. P-ginas comparti(Hadas Atra% s da paginao poss%el compartilhar c"digo entre os processos, desde que ele seja reentrante /no modifique a si pr"prio0. 2 sistema operacional de%e garantir /%ia hard-are0 que nenhum processo altere /escre%a0 estas p!ginas. 2utra restrio que as p!ginas com c"digo de%em ter os mesmos n#meros para todos os processos. Por e+., se a p!gina compartilhada pelos processos PC e P7 a p!gina L do processo PC, ela de%e ser
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" $3 Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

tamb m a p!gina L do processo P7. Em outras pala%ras, as p!ginas compartilhadas de%em ocupar as mesmas posi'es relati%as dentro dos espaos l"gicos de cada processo. Prote'#o Cada entrada na tabela de p!ginas possui alguns bits adicionais para implementar proteo. Como todos os acessos passam pela tabela, o hard-are pode %erificar a legitimidade do acesso apenas %erificando estes bits. Por e+emplo( um bit para indicar que a p!gina de apenas leituraH um bit para indicar p!gina %!lidaTin%!lida.

Jragmenta'#o Com paginao e+iste apenas fragmentao interna na #ltima p!gina do programa. Como raramente o tamanho de um programa um m#ltiplo do tamanho de uma p!gina, a #ltima p!gina dificilmente ser! preenchida completamente. Pode5se di.er que, em m dia, ha%er! um desperdcio de U p!gina por processo. 2utra perda de mem"ria associada > paginao se refere > representao da tabela de p!ginas. Para um dado tamanho de mem"ria l"gica, quanto menor o tamanho da p!gina, maior ser! o tamanho da tabela de p!ginas. 6." Seg#entao

A +is#o da memria pe(o *s*-rio 2 usu!rio /programador0 no pensa no seu programa organi.ado como um array linear de pala%ras, mas sim como uma coleo de segmentos de tamanho %ari!%el, sem que e+ista necessariamente uma ordem entre os segmentos. A segmentao um forma de ger,ncia de mem"ria que suporta esta %iso do usu!rio. Com segmentao, o espao de endereamento l"gico uma coleo de segmentos. Cada segmento tem um nome e um tamanho. Cada posio da mem"ria l"gica especificada por um segmento e um deslocamento dentro deste. Para facilitar a implementao, os segmentos no recebem nomes, mas sim n#meros. 2s compiladores e montadores automaticamente criam segmentos para refletir a organi.ao do programa. $o momento da carga do programa, cada um recebe um n#mero de segmento especfico.

AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" $$ Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

s*1rotina pi(Ha !*n'#o Ta1e(a de S/m1o(os Programa Principa(

Espa'o de Endere'amento 8gico

%ard&are A necess!rio mapear os endereos l"gicos, do tipo segmento/des(ocamentoF para endereos fsicos, que continuam sendo /e sempre sero0 ndices de um array unidimensional. ;sto feito atra% s de uma tabela de segmentos.

C988

*egmento 8
7988

s*1rotina segmento $ !*n'#o segmento % Programa Principa( segmento &

pi(Ha segmento '

Ta1e(a de S/m1o(os segmento (

8 C 7 F 9

1ase C988 <F88 9F88 F788 9G88

(imite C888 988 988 CC88 C888

F788

*egmento F *egmento 7 *egmento 9


LG88 9F88 9G88

4abela de segmentos

Espa'o de Endere'amento 8gico

*egmento C

<F88 <G88

Memria J/sica

Imp(ementa'#o da ta1e(a de segmentos 1a mesma forma que a tabela de p!ginas, a tabela de segmentos pode ser colocada em registradores r!pidos, na mem"ria principal ou numa tabela em mem"ria associati%a. *e a tabela de segmentos mantida em registradores, todo o mapeamento feito rapidamente. Prote'#o e comparti(Hamento
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" $. Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

Como segmentos representam partes bem definidas do programa, eles possuem caractersticas bem definidas. *egmentos de c"digo podem ser definidos como de apenas leitura, e o hard-are de mapeamento ir! sempre %erificar se um segmento de apenas leitura no est! sendo alterado. ;sto poss%el atra% s da associao de bits de proteo a cada entrada da tabela de segmentos, como foi feito na paginao. *egmentos podem ser compartilhados entre usu!rios, mas, para isso, persiste a restrio dos segmentos de c"digo terem que ocupar as mesmas posi'es relati%as dentro dos espaos l"gicos dos processos compartilhantes. 2utra soluo seria descre%er os segmentos compartilhados atra% s de uma tabela de segmentos separada V a tabela de segmentos compartilhados. *e considerarmos um sistema com de.enas de programas e+ecutando, e a maioria deles compartilhando as mesmas bibliotecas, poderemos perceber a importDncia do compartilhamento de c"digo. 4amb m necess!rio salientar a importDncia dos bits de proteo no momento de restringir o acesso dos processos aos segmentos compartilhados. 2b%iamente, um segmento contendo dados de um programa do tipo Wpara leitura e escritaW e no pode ser compartilhado. Jragmenta'#o *egmentos possuem um tamanho %ari!%el. Buando um programa de%e ser e+ecutado, o espao alocado para cada segmento de%e ser contnuo. A soluo utili.ar um dos m todos first-fit) best-fit) etc., para alocar cada segmento. 3epete5se pois o problema da !ragmenta'#o e,terna( a sucessi%a alocao e liberao de segmentos com diferentes tamanhos fa. surgir pequenos espaos de mem"ria li%re, onde no cabe um segmento /lacunas in#teis0. Buanto menores forem os segmentos dos programas, menor ser! o problema da fragmentao e+terna. 6.$ Seg#entao %ersus paginao

Bual dos esquemas o melhorX 4al%e. no e+ista resposta definiti%a para esta questo, pois se trata de um assunto pol,mico que %em sendo discutido h! muito tempo. Contudo, pode5se apresentar as %antagens /e des%antagens0 de cada um. A seguir so apresentadas as principais diferenas entre segmentao e paginao. Jragmenta'#o Com a segmentao e+iste fragmentao e+terna, com paginao e+iste fragmentao interna /em m dia, perda de U p!gina por processo0. Aqui a paginao parece ser %antajosa /desde que os tamanhos das p!ginas no sejam muito grandes0. Administra'#o da memria A administrao da mem"ria fsica muito mais simples na paginao, j! que qualquer p!gina fsica pode ser usada para carregar qualquer p!gina l"gica. Praticamente, basta o *2 manter uma lista com os n#meros das p!ginas fsicas dispon%eis, para controlar a alocao de mem"ria. Prote'#o e comparti(Hamento
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" $6 Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

Aqui a segmentao bem melhor, pois os segmentos constituem as unidades l"gicas do programa /isto , cada segmento tem um determinado significado ou funo0. Cada segmento poder! ser compartilhado e ter asssociada a si uma determinada proteo. Com paginao as partes de um programa esto aglutinadas, formando um bloco #nico /em uma mesma p!gina podem estar fun'es, subrotinas e dados, por e+emplo0. Espa'ode endere'amento Com paginao o espao de endereamento l"gico um espao #nico /unidimensional0, contnuo, com endereos que %o desde .ero at )AY /onde )AY o tamanho do programa menos C0. Com segmentao o espao l"gico formado por um conjunto de segmentos, cada segmento * com endereos que %o de .ero at )AYu /onde )AYu o tamanho de * menos C0. $a paginao o espao l"gico contnuo, pois se pegarmos o #ltimo endereo dentro da p!gina p e somarmos C, teremos o primeiro endereo da p!gina pEC. Por e+emplo, considerando que /p0 7 seja a representao bin!ria de p, tem5se que o #ltimo endereo da p!gina p ?/p07CCC...C@. *omando5se C tem5se ?/pEC0 7888...8@, que o primeiro endereo da p!gina pEC. ;sto no ocorre na segmentao, onde o espao l"gico descontnuo. Aqui no se pode di.er que haja %antagem de um esquema sobre o outro. As %antagens e des%antagens esto nas conseqZ,ncias destas organi.a'es. 6.& Siste#as 'o#(inados

E+istem sistemas onde a paginao e a segmentao so combinadas em um #nico mecanismo. A poss%el utili.ar tanto ?paginao segmentada@ como ?segmentao paginada@, sendo mais comum a segunda forma, que ser! discutida a seguir. Segmenta'#o paginada Com a segmentao, tem5se o problema da fragmentao e+terna. Uma forma de eliminar essa fragmentao di%idir os segmentos em p!ginas. $a soluo mostrada na figura C, a tabela de segmentos no cont m o endereo do segmento na mem"ria, mas sim o endereo da tabela de p!ginas do segmento. 2 problema da fragmentao e+terna eliminado completamente. Entretanto, o sistema passa a ter fragmentao interna. Em m dia, teremos meia p!gina de fragmentao interna por segmento de processo. Se as tabelas de segmentos e de pginas so mantidas na memria principal, ento para cada acesso memria vo ser necessrios dois acessos adicionais. Para acessar o endereo (s,p,d) tem-se que acessar inicialmente a entrada s da tabela de segmentos para l pegar o endereo da tabela de pginas correspondente, aps isso, acessar a entrada p da tabela de pginas para pegar o endereo da pgina fsica f e, finalmente, acessar o que interessa, que est na posio f+d. So dois acessos extras, em relao ao caso de uma mquina simples que no tenha segmentao nem paginao. A soluo para essa degradao no desempenho o uso de uma memria associativa para conter os endereos fsicos das pginas lgicas recentemente acessadas. Agora, cada entrada da tabela associativa ter como chave um par (s,p) e como valor o nmero da pgina fsica f correspondente a esse par. Uma tabela pequena (p.ex., 16 entradas) j consegue obter um bom hit ratio (p.ex., 80%).
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" $2 Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

s d

4abela de *egmentos Iase da 4abela de P!ginas 4amanho do *egmento

KD
N

d erro p dL

MEM

! d[

Figura 1 Segmentao paginada

6.1)

Paginao por de#anda

$o que foi considerado at aqui, sup'e5se que os programas sejam carregados por inteiro na mem"ria principal do computador /como conseqZ,ncia, o espao de endereamento l"gico de um processo de%e ser menor que a mem"ria fsica0. Entretanto, um programa no precisa estar todo na mem"ria para e+ecutar. )uitas partes de um programa sequer so necess!rias em toda e+ecuo. Por e+emplo, considere o programa editor de te+to. $ormalmente, os editores de te+to oferecem fun'es que raramente so utili.adas pela maioria dos usu!rios. As rotinas que implementam tais fun'es somente precisam estar na mem"ria naqueles raros instantes em que realmente so necess!rias. $esta seo ser! descrita a t cnica de ger,ncia de mem"ria conhecida como pagina'#o por demanda, que permite e+ecutar programas no completamente carregados na mem"ria fsica. Al m de permitir o compartilhamento da mem"ria por um n#mero maior de processos, a t cnica permite e+ecutar programas maiores do que a mem"ria fisica do computador. Memria +irt*a( e memria (gica A e+presso memria +irt*a( pode ser entendida de duas maneiras. Para alguns autores, mem"ria %irtual sin\nimo de mem"ria l"gica. ;sto , a mem"ria %irtual de um processo o conjunto de endereos que so referidos no c"digo de m!quina desse processo. Para outros autores, somente e+iste mem"ria %irtual quando o computador permite a e+ecuo de programas que no esto completamente carregados na mem"ria fsica. 4anto paginao como segmentao podem ser estendidas para permitir a e+ecuo de programas parcialmente carregados na mem"ria. As t cnicas para isso so denominadas paginao por demanda e segmentao por demanda. Aqui iremos considerar apenas o caso da paginao, que mais comum na pr!tica. Mecanismo 1-sico da pagina'#o por demanda

AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" $; Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

A paginao por demanda baseada no mecanismo de paginao simples. $a paginao simples, considerada at aqui, todas as p!ginas l"gicas de um processo so carregadas na mem"ria fsica. $a tabela de p!ginas, o bit de %!lidoTin%!lido usado para indicar quais p!ginas esto fora da mem"ria l"gica. Buando uma p!gina marcada como in%!lida acessada, o processo abortado por acesso ilegal > mem"ria. $a paginao por demanda, apenas as p!ginas efeti%amente acessadas pelo processo so carregadas para a mem"ria fsica. Agora o bit %!lidoTin%!lido usado para indicar quais p!ginas l"gicas foram carregadas. 1essa forma, na paginao por demanda, uma p!gina marcada como in%!lida na tabela de p!ginas pode significar apenas que essa p!gina ainda no foi carregada para a mem"ria fsica. Na paginao por demanda, quando a pgina lgica acessada pelo processo est marcada como vlida na tabela de pginas, o endereo lgico transformado em endereo fsico, e o acesso transcorre normalmente. Quando a pgina lgica est marcada como invlida, a MMU (Memory Management Unit) gera uma interrupo de proteo e aciona o sistema operacional. O SO consulta, ento, o descritor do processo em questo. Caso a pgina acessada esteja fora do espao de endereamento do processo, o processo abortado. Caso contrrio tem-se que a pgina referenciada ainda no foi carregada para a memria, e dito que ocorreu uma interrupo por falta de pgina (page fault). Quando ocorre uma falta de pgina, as seguintes aes devem ser realizadas: O processo que gerou a interrupo de falta de pgina suspenso, seu descritor de processo removido da fila do processador e inserido em uma fila especial, a "fila dos processos esperando pgina lgica"; Uma pgina fsica livre deve ser alocada; A pgina lgica acessada deve ser localizada no disco (a localizao das pginas no disco indicada no registro descritor do processo); Uma operao de leitura do disco deve ser solicitada, indicando o endereo da pgina lgica no disco e o endereo da pgina fsica alocada.

Enquanto isso, o processo que executava fica suspenso, espera da pgina de que ele necessita para continuar sua execuo. A gerncia do processador pode ento selecionar outro processo para executar. Quando a operao de leitura do disco for concluda, a gerncia de memria concluir o atendimento falta de pgina realizando as seguintes aes: A tabela de pginas do processo corrigida para indicar que a pgina lgica causadora da interrupo agora vlida e est na pgina fsica que fora alocada antes; O descritor do processo retirado da "fila dos processos esperando pgina lgica" e colocado na fila do processador.

Observe que o processo dever repetir a instruo que causou a falta de pgina (esta instruo no foi executada devido a falta de pgina). Repetir uma instruo aps a carga da pgina faltante requer uma arquitetura de computador adequada, especialmente
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" $? Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

projetada para suportar memria virtual. Nem todos os processadores suportam esse mecanismo. Na "paginao por demanda pura", somente so carregadas para a memria fsica aquelas pginas realmente referidas pelo processo (a carga das pginas feita medida que ocorrem as faltas de pgina). O processo inicia s com a sua pgina zero na memria, ou seja, todas as entradas da sua tabela de pginas, exceto a primeira, so invlidas. Nas primeiras instrues que o processo executa certamente ocorrem vrias faltas de pgina. Aps algum tempo, o processo consegue se estabilizar e iniciar efetivamente sua execuo. Para evitar essa rajada inicial de interrupes por falta de pgina, alguns sistemas carregam vrias pginas automaticamente, antes de iniciar um processo. O sistema procura carregar pginas que sero realmente usadas. Um "bom chute" carregar as pginas iniciais da memria lgica. A Figura 2 ilustra o mecanismo da paginao por demanda. O processo da figura possui uma memria lgica composta por 8 pginas. Entretanto, apenas 3 pginas foram carregadas para a memria principal. So elas as pginas lgicas 2, 3 e 6. As demais esto marcadas como invlidas na tabela de pginas. Caso o processo tente acessar as pginas 2, 3 e 6, tudo transcorre como na paginao simples. Caso o processo tente acessar alguma das outras pginas, vai ocorrer uma interrupo por falta de pgina. Nesse momento, o sistema operacional dever alocar uma pgina fsica livre, copiar a pgina solicitada do disco para a memria fsica e corrigir a tabela de pginas do processo. S*1stit*i'#o de p-ginas na memria Como parte do atendimento a uma interrupo por falta de pgina, uma pgina fsica livre deve ser alocada. Entretanto, medida que processos vo sendo carregados para a memria, possvel que todas as pginas fsicas acabem ocupadas. Nesse caso, para atender falta de pgina, ser necessrio antes liberar uma pgina fsica ocupada. Isso significa escolher uma pgina lgica que est na memria, copiar seu contedo de volta para o disco (se necessrio) e marcar a respectiva pgina como invlida na tabela de pginas do seu processo. A pgina a ser substituda chamada de pgina vtima.

AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" $A Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

Memria Lgica 0 1 2 3 4 5 6 7
A B C D E F G H

Memria Fsica 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
C D G A B C D E F G H

Disco

Tabela de Pginas 0 1 2 1 3 4 5 6 7
" ! i i v v i i v i

Figura 2 - Mecanismo bsico da paginao por demanda.

As Figuras 3 e 4 ilustram o mecanismo de substituio de pginas. A Figura 3 mostra a situao original do sistema. Existem dois processos, chamados processo 1 e processo 2. Cada processo possui uma memria lgica composta por 4 pginas lgicas. Seriam necessrias 8 pginas fsicas para manter os dois processos integralmente na memria. Como a memria fsica possui apenas 6 pginas, esses processos possuem algumas pginas na memria fsica e outras no disco. Existe espao alocado no disco para toda a memria lgica de cada processo, mas uma pgina na memria fsica pode ser alterada durante a execuo e, portanto, sua respectiva cpia em disco pode estar desatualizada. A Figura 3 mostra que o processo 1 possui as pginas 0, 1 e 3 na memria fsica e a pgina 2 no disco. O processo 2 possui as pginas 0, 1 e 2 na memria fsica e a pgina 3 no disco. Suponha agora que o processo 2 tente acessar sua pgina lgica 3. A MMU vai gerar uma interrupo de proteo, pois essa pgina est marcada como invlida na tabela de pginas. O sistema operacional vai identificar essa interrupo como uma falta de pgina e tentar alocar uma pgina fsica livre. Como no existem mais pginas fsicas livres, um algoritmo de substituio de pginas deve ser usado para escolher uma pgina vtima. Suponha que a pgina lgica 2 do processo 2 seja escolhida como vtima. Ela deve ento ser marcada como invlida na tabela de pginas do processo 2, e seu contedo, copiado para o disco. Aps a escrita em disco terminar, a pgina fsica 4 declarada livre. A partir desse momento, aplicado o tratamento normal para uma interrupo por falta de pgina. A pgina lgica 3 do processo 2 ser lida do disco para a pgina fsica 4. A configurao final da memria mostrada na Figura 4.

AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" $B Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

Memria Lgica do Processo 1

Tabela de Pginas do Processo 1

0 1 2 3

A B C D

0 1 2 3

1 #

v v i v Memria Fsica

Disco A B C D E F G H

0 1 2 3 4 5

D A F E G B

Memria Lgica do Processo $

Tabela de Pginas do Processo $

0 1 2 3

E F G H

0 1 2 3

! $ "

v v v i

Figura 3 - Sistema hipottico com dois processos.

O algoritmo de substituio de pginas responsvel pela escolha da pgina vtima. Ele muito importante para a eficincia do mecanismo como um todo. Uma escolha errada significa que a pgina removida ser novamente acessada em seguida, gerando uma nova falta de pgina. importante que o algoritmo usado seja capaz de remover da memria fsica pginas que provavelmente no sero necessrias logo em seguida.
Memria Lgica do Processo 1 Tabela de Pginas do Processo 1

0 1 2 3

A B C D

0 1 2 3

1 #

v v i v Memria Fsica

Disco A B C D E F G H

Memria Lgica do Processo $

Tabela de Pginas do Processo $

0 1 2 3

E F G H

0 1 2 3

! $ "

v v i v

0 1 2 3 4 5

D A F E H B

Figura 4 - Sistema da Figura 3 aps uma substituio de pgina.

Bits a*,i(iares da ta1e(a de p-ginas Vrios bits auxiliares so normalmente adicionados tabela de pginas, com o objetivo de facilitar a implementao do mecanismo de substituio de pginas. Embora a existncia de tais bits no seja absolutamente necessria, eles tornam o mecanismo mais simples e eficiente.
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" $G Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

O bit de sujeira (dirty bit) indica quando uma pgina foi alterada durante a execuo do processo. Esse bit zerado pelo sistema operacional quando a pgina carregada para a memria. A MMU automaticamente liga o bit quando o processo realiza uma operao de escrita nessa pgina. Dessa forma, o sistema operacional capaz de determinar se essa pgina est alterada com relao sua cpia em disco. A maioria das pginas de um processo (cdigo e constantes) apenas lida e nunca escrita. Dessa forma, graas ao bit de sujeira, na maioria das substituies de pginas haver apenas um acesso ao disco, e no dois. Observe que o tempo necessrio para atender a uma falta de pgina dado basicamente pelo tempo do acesso ao disco. A disponibilidade do bit de sujeira significa que o tempo de atendimento falta de pgina pode ser reduzido para a metade na maioria dos casos. O bit de referncia (reference bit) indica quando uma pgina foi acessada pelo processo. Este bit feito igual a zero determinadas situaes, ditadas pelo algoritmo de substituio de pgina empregado. A MMU liga automaticamente esse bit sempre que a pgina correspondente acessada. O bit de tranca (lock bit) serve para o sistema operacional "trancar" uma pgina lgica na memria fsica. Existem situaes nas quais uma determinada pgina lgica no deve ser escolhida como vtima (por exemplo, quando a pgina est envolvida em uma operao de E/S).

A(goritmos de s*1stit*i'#o de p-ginas Vamos agora descrever os principais algoritmos de substituio de pginas encontrados na literatura. Em geral, os sistemas operacionais empregam alguma variao dos algoritmos apresentados aqui. Isso ocorre porque necessrio adaptar o algoritmo desejado s facilidades oferecidas pela MMU do processador em questo. JCJS 9First Come First Served:

o algoritmo com implementao mais simples. A pgina escolhida como vtima sempre aquela que est h mais tempo na memria. Para implementar FCFS, o SO deve manter uma lista de nmeros de pginas lgicas carregadas. Quando uma pgina carregada na memria, o seu nmero includo no final da lista. No momento de escolher uma pgina vtima, basta pegar o nmero que aparece no incio da lista, pois essa a pgina que est h mais tempo na memria. Em geral, o desempenho do FCFS no bom. O fato de uma pgina estar velha na memria principal no est relacionado com a sua necessidade (ou no) para a execuo do processo. MTIMO

O algoritmo escolhe como vtima a pgina lgica cujo prximo acesso vai ocorrer mais remotamente no futuro. Na verdade, impossvel implementar tal algoritmo, pois ele exige o conhecimento prvio do comportamento dos processos. Saber quais pginas um processo vai acessar no futuro implica conhecer exatamente o seu fluxo de controle futuro. Como, na maioria dos programas, o fluxo de execuo depende dos dados
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" .3 Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

processados, no possvel implementar o algoritmo TIMO. Entretanto, podemos tentar imaginar algoritmos factveis que aproximem o seu comportamento. 8RU 9Least Recently Used:

O algoritmo escolhe para vtima a pgina acessada mais remotamente no passado (isto , aquela que h mais tempo no acessada). Ele se baseia na suposio de que as pginas acessadas recentemente por um processo continuaro sendo acessadas no futuro prximo. A utilizao de laos, sub-rotinas e mdulos na construo dos programas faz com que essa suposio seja verdadeira a maior parte das vzes. Embora possvel de ser implementado, o LRU exige um suporte de hardware raramente encontrado. necessrio que a MMU mantenha na tabela de pginas o instante exato no qual cada pgina foi acessada pela ltima vez. Isso implica em manter um registrador adicional de vrios bytes para cada uma das entradas da tabela. Seg*nda cHance

O algoritmo da 2 chance tenta se aproximar do LRU. O gerente de memria considera que todas as pginas lgicas presentes na memria formam uma lista circular. Um apontador percorre essa lista e indica qual a pgina vtima, da maneira explicada a seguir. Quando uma pgina vtima necessria, o algoritmo verifica o bit de referncia da pgina indicada pelo apontador. Caso esse bit esteja desligado, essa pgina efetivamente escolhida como vtima, e o apontador avana uma posio na lista circular. Caso o bit de referncia da pgina apontada esteja ligado, o bit de referncia desligado, e ela recebe uma segunda chance. O apontador avana uma posio na lista circular, e o procedimento repetido para a prxima pgina. No caso extremo, todas as pginas possuem o bit de referncia ligado. Nesse caso, o apontador far uma volta completa na lista, desligando todos os bits de referncia. Ao chegar novamente na primeira pgina visitada, essa ter agora o bit de referncia desligado e ser escolhida como pgina vtima. Devido a esse comportamento circular, o algoritmo tambm conhecido como algoritmo do relgio (clock algorithm), em analogia aos ponteiros de um relgio. =ariante da seg*nda cHance

O seguinte algoritmo combina os algoritmos FIFO e 2 chance e pode ser usado mesmo quando a MMU no implementa o bit de referncia. Novamente, um apontador percorre uma lista circular de pginas lgicas. Alm disso, o gerente de memria mantm uma fila de pginas fsicas livres com um nmero fixo de pginas. Quando ocorre uma falta de pgina, o algoritmo de substituio escolhe como vtima a primeira pgina da fila de pginas livres (e a remove da fila). A pgina indicada pelo apontador ento marcada como invlida, atualizada em disco e inserida no fim da fila de pginas fsicas livres. Entretanto, seu contedo no alterado. Caso essa pgina volte a ser acessada em seguida, ocorrer uma falta de pgina, pois ela est marcada como invlida na respectiva tabela de pginas. Entretanto, essa falta de pgina ser atendida rapidamente, pois no necessrio nenhum acesso a disco. A pgina simplesmente retirada da fila de pginas livres (pode ser retirada do meio da fila) e reativada na tabela de pginas apropriada. O tempo de permanncia da pgina na fila de pginas livres oferece a ela uma segunda
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" .$ Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

chance de permanecer na memria e evitar o acesso ao disco. importante observar que, como uma pgina removida do conjunto de pginas livres, uma outra pgina vtima deve ser escolhida para completar o conjunto. A(oca'#o de p-ginas !/sicas Uma questo importante : quantas pginas lgicas cada processo deve possuir na memria fsica? Em outras palavras, quantas pginas fsicas devem ser alocadas para cada processo? A(oca'#o (oca(

Uma soluo possvel o SO decidir, para cada processo, o nmero de pginas fsicas que ele dispor para executar o seu programa. Quando for necessrio escolher uma pgina vtima, a escolha se restringir ao conjunto de pginas do prprio processo (isto , a substituio ocorrer entre as prprias pginas do processo que gerou a falta). Dessa forma, o nmero de pginas fsicas alocadas ao processo permanece fixo e tem-se uma poltica de substituio local. O problema da alocao local est exatamente em definir quantas pginas fsicas cada processo deve receber. Os programas possuem tamanhos diferentes. Ao mesmo tempo, o nmero de pginas fsicas que um programa necessita para executar com uma baixa taxa de falta de pginas depende do fluxo de controle desse programa. A(oca'#o g(o1a(

possvel evitar o problema da definio do nmero de pginas fsicas para cada processo empregando uma alocao global. Neste caso, a escolha da pgina vtima envolve todas as pginas que esto na memria fsica. Isso significa que uma pgina de um processo pode substituir uma pgina de outro processo. Um inconveniente que processos com baixa prioridade so prejudicados. Como eles executam com baixa freqncia, acabam perdendo suas pginas fsicas para processos de prioridade mais alta. Quando o processo de baixa prioridade finalmente consegue executar, seu nmero de pginas fsicas pequeno, e logo acontece uma falta de pgina. necessrio algum mecanismo limitador, que impea um processo de ficar com um nmero muito pequeno de pginas fsicas, que venha prejudicar sua execuo. Solues para o problema da alocao de pginas fsicas so consideradas a seguir, na discusso de um outro problema associado, denominado thrashing. Vale observar que todos os algoritmos de substituio de pginas apresentados anteriormente podem utilizar tanto polticas locais como globais. Mesmo o variante da 2 chance pode usar uma poltica local, se for desejado (nesse caso, cada processo ter a sua fila de pginas fsicas livres). TrasHing O tratamento de uma falta de pgina vrias ordens de grandeza mais lento que um acesso normal memria. Logo, o impacto da taxa de page faults sobre o tempo de execuo do processo muito grande. Quando um processo possui um nmero alto de
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" .. Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

pginas fsicas alocadas, a sua taxa de page faults baixa. medida que o nmero de pginas fsicas diminui, a taxa de page faults aumenta e pode chegar a um ponto em que o processo pra de realizar trabalho til. Tudo que o processo faz esperar pelo atendimento de falta de pginas. Nesse momento, dito que est ocorrendo thrashing. Para os usurios, o thrashing se manifesta como um congelamento do sistema. No caso da alocao local, esse congelamento pode se limitar a apenas alguns processos. Quando alocao global empregada, a tendncia o thrashing tomar conta de todo o sistema, pois os processos roubam pginas uns dos outros. Para retirar o sistema do estado de thrashing necessrio suspender alguns processos temporariamente, remov-los para o disco e liberar suas pginas fsicas. Isto feito atravs do mecanismo de swapping. Como o swapping no algo desejvel, pois aumenta o tempo de resposta dos processos, necessrio que a gerncia de memria seja capaz de detectar o momento certo de us-lo, isto , o momento em que o sistema vai entrar em thrashing. Uma forma simples de detectar o thrashing observar a taxa de falta de pginas no sistema (o SO pode ter um contador de falta de pginas que seja testado e zerado a cada segundo, por exemplo - nesse caso, em cada teste o valor do contador indica o nmero de page faults por segundo). definida uma taxa mxima aceitvel e, sempre que o sistema exibe uma taxa maior que a aceitvel, imediatamente feito o swap-out de algum processo. Outra indicao de thrashing o tamanho da fila de processos esperando carga de pgina lgica (tamanho da fila do disco, ou partio, usado na implementao da paginao). O emprego de um mecanismo para detectar o thrashing e iniciar o swapping torna atraente o emprego de alocao global. Alm disso, a alocao global libera a gerncia de memria da tarefa de determinar quantas pginas fsicas cada processo deve receber para sua execuo. O mode(o do Working Set Uma vantagem do modelo de alocao local sobre o modelo global que o comportamento de um processo no afeta outros processos, isto , a falta de pgina de um processo no resolvida reduzindo o conjunto de pginas de outro processo. Por outro lado, o nmero de pginas fsicas que um programa realmente necessita para executar com uma baixa taxa de page faults depende apenas do fluxo de controle desse programa. Essas e outras consideraes levaram ao desenvolvimento da teoria do working set. O working set de um processo no tempo t, para um perodo de observao (ou janela temporal) , definido como o conjunto das pginas que o processo refere no intervalo de tempo (t-; t). Normalmente, os sistemas trabalham com simplificaes do modelo, que consideram apenas a cardinalidade do working set (isto , o nmero de elementos do conjunto). A idia bsica dos algoritmos que alocam pginas fsicas com base nesta teoria manter alocadas para o processo o nmero de pginas do seu working set. O problema do modelo determinar o valor adequado para a constante (largura da janela temporal). Um valor pequeno para pode no englobar toda a localidade de
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" .6 Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

referncia de um processo, provocando falta de pginas. Um valor grande demais tende a manter na memria pginas que no so mais referenciadas. Normalmente, o valor de definido de forma emprica, levando em conta o grau de multiprogramao desejado, a quantidade de memria RAM disponvel e o tamanho mdio dos processos. O seguinte algoritmo se baseia na teoria do working set para definir o nmero de pginas necessrias para um processo e, como conseqncia, obter um bom desempenho para o sistema. Vai ser utilizada uma lista global de pginas livres e os processos no iro roubar pginas uns dos outros A(goritmo JJP 9Jre)Nncia de Ja(ta de P-ginas:

O mtodo utiliza trs parmetros de configurao: taxa de page faults mxima admitida no sistema (tax_max), taxa de page faults mnima (tax_min) e perodo de contabilizao de page faults. Se um processo, durante o perodo de contabilizao, provoca um nmero de page faults maior que tax_max, isto significa que ele est executando com menos memria que o necessrio; nesse caso o SO aloca mais pginas fsicas para o processo. Se, durante o perodo de contabilizao, o processo provoca um nmero de page faults menor que tax_min, isto significa que ele possui mais memria que o necessrio; nesse caso o SO libera algumas de suas pginas fsicas, as quais so inseridas na lista de pginas fsicas livres do sistema. Se um processo necessita de mais pginas fsicas e no h espao disponvel (i., a lista de pginas livres est vazia), a soluo suspender um processo e transfer-lo para a rea de swap. O processo a ser suspenso pode ser o que ocasionou a falta de pgina ou outro qualquer (a deciso tomada pelo escalonador de mdio prazo). OesempenHo da pagina'#o por demanda O tempo efetivo de acesso memria (te) em um sistema que utiliza paginao por demanda dado por:

te = (1-p) * tam + p * ttf


onde p a taxa de page faults, tam o tempo mdio de acesso memria principal quando no ocorre page fault e ttf o tempo mdio necessrio para o tratamento completo de uma falta de pgina (inclusive o acesso ao endereo fsico resultante, aps a busca). Observe que a taxa de page faults corresponde, de fato, probabilidade de ocorrncia de um page fault: se p=0 todos os acessos ao espao de endereamento no geram page fault; no outro extremo, se p=1, todos os acessos geram page faults. Como tam uma constante (caracterstica de hardware), restam dois fatores para melhorar o desempenho do sistema (ttf e p). O valor de ttf pode ser melhorado otimizando o procedimento de acesso ao disco (localizao e busca de pginas). Isto normalmente feito atravs da definio de reas especficas do disco para implementao de paginao (p.ex., as parties de swap dos sistemas UNIX). O valor de p pode ser minimizado atravs de polticas adequadas de alocao de memria e de substituio de pginas.

AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" .2 Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

Exerccios
1) Considere um sistema cuja gerncia de memria feita atravs de parties variveis. Nesse momento, existem as seguintes lacunas (reas livres): 10K, 4K, 20K, 18K, 7K, 9K, 12K e 13K, nessa ordem. Quais espaos sero ocupados pelas solicitaes: 5K, 10K e 6K, nessa ordem, se: (a) First-Fit for utilizado? (b) Best-Fit for utilizado? (c) Worst-Fit for utilizado? (d) Circular-Fit for utilizado? 2) Compare parties fixas, parties variveis, paginao simples e segmentao simples com respeito ao compartilhamento de memria (cdigo). Para cada uma, mostre como possvel implementar ou por que impossvel implementar. Lembre-se de que sempre necessrio manter a proteo entre usurios, e que os programas ocupam um espao lgico contguo. 3) Qual a fragmentao apresentada pelos mtodos de gerncia de memria baseados em parties fixas, parties variveis, paginao simples e segmentao simples? Justifique. 4) Considere um sistema operacional que trabalha com paginao simples. As pginas so de 1Kbyte. O endereo lgico formado por 16 bits. O endereo fsico formado por 20 bits. Qual o tamanho do: (a) Espao de endereamento lgico (maior programa possvel)? (b) Espao de endereamento fsico (memria principal)? (c) Entrada da tabela de pginas, sem considerar bits de proteo? (d) Tabela de pginas (nmero de entradas necessrias no pior caso)? 5) O sistema operacional XYZ utiliza paginao como mecanismo de gerncia de memria. So utilizadas pginas de 1Kbyte. Um endereo lgico ocupa 20 bits. Um endereo fsico ocupa 24 bits. Cada entrada na tabela de pginas contm, alm do nmero da pgina fsica, um bit de vlido/invlido e um bit que indica apenas leitura ( read-only). Mostre como podem ser calculados os seguintes valores: (a) Qual o tamanho mximo para a memria fsica. (b) Qual o maior programa que o sistema suporta. (c) Quantas entradas possui a tabela de pginas. (d) Quantos bits sero necessrios para a tabela de pginas (clculo exato). 6) Mostre a diferena entre fragmentao interna e fragmentao externa. Em que situao poder ocorrer fragmentao interna quando parties variveis so utilizadas? 7) Descreva passo a passo o que acontece aps uma falta de pgina. 8) Como possvel determinar se uma interrupo de proteo acionada pela MMU devida a um acesso ilegal memria ou a uma falta de pgina? 9) Um processo deve executar em 5 pginas fsicas. O momento da carga (valor do relgio no momento da carga), o momento do ltimo acesso (valor do relgio no ltimo acesso) e o bit de referncia para cada pgina na memria so mostrados. Qual pgina ser escolhida como vtima se o algoritmo de substituio utilizado for: (a) Segunda chance circular (apontador inicia em 0)? (b) LRU?
AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" .; Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

(c) Segunda chance FIFO? P!gina Carga 8 C7< C 7F8 7 C<8 F CCN 9 C7F

]ltima refer. 7GN 7LL 7M8 7G7 C7F

Iit refer. C 8 C 8 8

10) Como a medida da freqncia de page faults pode ser utilizada para controlar o thrashing? 11) Porque no se pode determinar quantos frames um processo necessita para seu conjunto de trabalho (working set), em um dado instante, olhando apenas o tamanho do programa? 12) O sistema operacional SO/S-plus observa o conjunto de pginas lgicas em uso pelos processos para decidir se pode ou no iniciar a execuo de um novo processo. Esse sistema define, como conjunto de trabalho, o conjunto das pginas acessadas no ltimo intervalo completo do timer. O sistema dispe de 20 pginas fsicas. A histria do sistema no ltimo intervalo completo do timer mostrada abaixo. Quantas pginas fsicas o sistema poder fornecer a um novo processo, mantendo ainda o conjunto de trabalho dos processos atuais? P8/9,L,F,<,F,9,L,F,F,<0 PC/C,G,M,M,C,F,C,G,M,N0 P7/<,G,M,L,M,<,<,G,L,L0 13) Ilustre, atravs de um exemplo numrico com 10 acessos memria, a diferena entre os algoritmos de substituio de pginas TIMO e LRU. Faa com que o nmero de faltas de pgina seja diferente. Utilize 3 pginas fsicas. 14) Cite uma vantagem e uma desvantagem de usar pginas menores na memria virtual com paginao por demanda. 15) Qual problema pode ocorrer quando um perifrico pode acessar diretamente a memria e utiliza-se paginao por demanda? Como resolv-lo? 16) Suponha que a taxa de page faults em um sistema seja inversamente proporcional quantidade de memria RAM. Quando a capacidade de memria dobrada a taxa de page faults reduz-se metade. Correntemente, o sistema possui 32 Mb de memria e o tempo efetivo de acesso 300 s. Nos acessos normais (sem page fault) o tempo mdio de acesso 1 s. Quando ocorre um page fault o tempo mdio de acesso de 1 ms. Calcule quanto de memria adicional seria necessrio para reduzir o tempo efetivo de acesso para 100 s. Suponha que a memria total do sistema deva ser uma potncia de 2.

AMBIENTES OPERACIONAIS Pro!" Sim#o Toscani p" .? Gerncia de Memria /1o li%ro Sistemas Operacionais , 2li%eira 3., Carissimi A. e 4oscani *., Ed. *agra56u..atto, 78890

Você também pode gostar