5565650 09gerencia de memoria virtual

Upload: gbdiogo

Post on 12-Jul-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

SISTEMAS OPERACIONAIS NOTAS DE AULA

GERNCIA DE MEMRIA VIRTUAL

NDICE:

1. Introduo 2. Espao de Endereamento Virtual 3. Mapeamento 4. Memria Virtual por Paginao 5. Memria Virtual por Segmentao 6. Memria Virtual por Segmentao com Paginao 7. Swapping em Memria Virtual 8. Trashing 9. Bibliografia 10. Lista de Exerccios

1 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

1.

INTRODUOMemria virtual uma tcnica sofisticada e poderosa de gerncia de memria, onde as

memrias principal e secundria so combinadas, dando ao usurio a iluso de existir uma memria muito maior que a capacidade real da memria principal. O conceito de memria virtual fundamenta-se em no vincular o endereamento feito pelo programa aos endereos fsicos da memria principal. Desta forma, programas e suas estruturas de dados deixam de estar limitados ao tamanho da memria fsica disponvel, pois podem possuir endereos associados memria secundria. Outra vantagem da tcnica de memria virtual permitir um nmero maior de processos compartilhando a memria principal, j que apenas partes de cada processo estaro residentes. Isto leva a uma utilizao mais eficiente tambm do processador. Alm disso, essa tcnica possibilita minimizar o problema da fragmentao da memria principal. A primeira implementao de memria virtual foi realizada no incio da dcada de 1960, no sistema Atlas, desenvolvido na Universidade de Manchester. Posteriormente, a IBM introduziria este conceito comercialmente na famlia System/370 em 1972. Atualmente, a maioria dos sistemas implementa memria virtual, com exceo de alguns sistemas operacionais de supercomputadores. Existe um forte relacionamento entre a gerncia da memria virtual e a arquitetura de hardware do sistema computacional. Por motivos de desempenho, comum que algumas funes da gerncia de memria virtual sejam implementadas diretamente no hardware. Alm disso, o cdigo do sistema operacional deve levar em considerao vrias caractersticas especficas da arquitetura, especialmente o esquema de endereamento do processador.

2. ESPAO DE ENDEREAMENTO VIRTUALO conceito de memria virtual se aproxima muito da idia de um vetor, existente nas linguagens de alto nvel. Quando um programa faz referncia a um elemento do vetor, no h preocupao em saber a posio de memria daquele dado. O compilador se encarrega de gerar instrues que implementam esse mecanismo, tornando-o totalmente transparente ao programador.

2 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 1: Vetor de 100 posies A memria virtual utiliza abstrao semelhante, s que em relao aos endereos dos programas e dados. Um programa no ambiente de memria virtual no faz referncia a endereos fsicos de memria (endereos reais), mas apenas a endereos virtuais. No momento da execuo de uma instruo, o endereo virtual referenciado traduzido para um endereo fsico, pois o processador manipula apenas posies da memria principal. O mecanismo de traduo do endereo virtual para endereo fsico denominado mapeamento. Em ambientes que implementam memria virtual, o espao de endereamento do processo conhecido como espao de endereamento virtual e representa o conjunto de endereos virtuais que o processo pode enderear. Analogamente, o conjunto de endereos reais que o processador pode referenciar chamado de espao de endereamento real.

Figura 2: Espao de endereamentos virtual e real Como o espao de endereamento virtual no tem nenhuma relao direta com os endereos no espao real, um programa pode fazer referncia a endereos virtuais que estejam fora dos limites da memria principal, ou seja, os programas e suas estruturas de dados no esto mais limitados ao tamanho da memria fsica disponvel. Para que isso seja possvel, o sistema operacional utiliza a memria secundria como extenso da memria principal. Quando um programa executado, somente uma parte do seu cdigo fica residente na memria principal, permanecendo o restante na memria secundria at o3 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

momento de ser referenciado. Esta condio permite aumentar o compartilhamento da memria principal entre muitos processos.

Figura 3: Espao de endereamento virtual No desenvolvimento de aplicaes, a existncia dos endereos virtuais ignorada pelo programador. Os compiladores e linkers se encarregam de gerar o cdigo executvel em funo do espao de endereamento virtual, e o sistema operacional cuida dos detalhes durante sua execuo.

3. MAPEAMENTOO processador apenas executa instrues e referencia dados residentes no espao de endereamento real; portanto, deve existir um mecanismo que transforme os endereos virtuais em endereos reais. Esse mecanismo, conhecido por mapeamento, permite traduzir um endereo localizado no espao virtual para um associado no espao real. Como conseqncia do mapeamento, um programa no mais precisa estar necessariamente em endereos contguos na memria principal para ser executado.

4 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 4: Mapeamento Nos sistemas modernos, a tarefa de traduo de endereos virtuais realizada por hardware juntamente com o sistema operacional, de forma a no comprometer seu desempenho e torn-lo transparente a usurios e suas aplicaes. O dispositivo de hardware responsvel por esta traduo conhecido como unidade de gerncia de memria (Memory Management Unit MMU), sendo acionado sempre que se faz referncia a um endereo virtual. Depois de traduzido, o endereo real pode ser utilizado pelo processador para o acesso memria principal. Cada processo tem o seu espao de endereamento virtual como se possusse sua prpria memria. O mecanismo de traduo se encarrega, ento, de manter tabelas de mapeamento exclusivas para cada processo, relacionando os endereos virtuais do processo s suas posies na memria real.

5 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 5: Tabela de mapeamento A tabela de mapeamento uma estrutura de dados existente para cada processo. Quando um determinado processo est sendo executado, o sistema utiliza a tabela de mapeamento do processo em execuo para realizar a traduo de seus endereos virtuais. Se um outro processo vai ser executado, o sistema deve passar a referenciar a tabela de mapeamento do novo processo. A troca de tabelas de mapeamento realizada atravs de um registrador, que indica a posio inicial da tabela corrente, onde, toda vez que h mudana de contexto, o registrador atualizado com o endereo da nova tabela. Caso o mapeamento fosse realizado para cada clula na memria principal, o espao ocupado pelas tabelas seria to grande quanto o espao de endereamento virtual de cada processo, o que inviabilizaria a implementao do mecanismo. Em funo disso, as tabelas mapeiam blocos de dados, cujo tamanho determina o nmero de entradas existentes nas tabelas de mapeamento. Quanto maior o bloco, menos entradas nas tabelas de mapeamento e, conseqentemente, tabelas de mapeamento que ocupam um menor espao de memria.

6 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Espao de endereamento virtual 2 endereos 232 endereos 264 endereos 264 endereos32

Tamanho do bloco Nmero de blocos Nmero de entradas na tabela de mapeamento 512 endereos 4k endereos 4k endereos 64k endereos 223

223 220 252 248

220 252 248

3.1.

Exemplo de MapeamentoEspao de endereos virtuais Endereos fsicos de memria

Um exemplo de como o mapeamento trabalha mostrado abaixo:

0 - 4K 4K - 8K 8K - 12K 12K - 16K 16K - 20K 20K - 24K 24K 28K 28K 32K 32K 36K 36K 40K 40K 44K 44K 48K 48K 52K 52K 56K 56K 60K 60K 64K

2 1 6 0 4 3 X X X 5 X 7 X X X X pgina virtual

0 - 4K 4K 8K 8K 12K 12K 16K 16K 20K 20K 24K 24K 28K 28K 32K moldura de pgina

Neste exemplo, temos um computador que pode gerar endereos de 16 bits, de 0 at 64K, correspondentes ao espao de endereamento virtual da mquina. No entanto, este computador tem apenas 32K de memria fsica, de forma que apesar de podermos escrever programas com at 64K, estes no podem ser totalmente carregados na memria e executados. Uma cpia completa do programa deve sempre ser mantida no disco, de forma que pedaos dele possam ser colocados na memria quando necessrio. Quando o programa tenta acessar o endereo 0, por exemplo, usando a instruo MOVE REG, 0 o endereo virtual 0 enviado MMU. Esta conclui que este endereo virtual cai na pgina 0 (endereos virtuais de 0 a 4.095), que de acordo com seu processo de7 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

mapeamento est na moldura de pgina 2 (endereos reais de 8.192 a 12.287). Ela ento transforma o endereo que lhe foi entregue para 8.192, e coloca este valor no barramento da memria. A placa de memria desconhece a existncia da MMU, e simplesmente enxerga uma requisio para ler ou escrever no endereo 8.192, realizando tal acesso. Ento, a MMU efetivamente mapeia todos os endereos virtuais de 0 a 4.095 nos endereos reais de 8.192 a 12.287. Da mesma forma, a instruo MOVE REG, 8192 executada como MOVE REG, 24.576 em virtude do endereo virtual 8.192 encontrar-se na pgina 2, e esta pgina ser mapeada na moldura 6 (endereos fsicos de 24.576 a 28.671). Em outro exemplo, o endereo virtual 20.500 est a 20 bytes do incio da pgina virtual 5 (endereos virtuais de 20.480 a 24.575) e mapeado no endereo real 12.288 + 20 = 12.308. O que ocorre se um programa tenta usar uma pgina no mapeada, tentando, por exemplo, executar a instruo MOVE REG, 32780 cujo endereo virtual gerado est 12 bits aps a origem da pgina 8, que tem incio em 32.768? A MMU observa que se trata de uma pgina no-mapevel e fora o processador a executar um trap para o sistema operacional. Este trap denominado falta de pgina. Como resposta ao trap, o sistema operacional pega a moldura de pgina menos usada e a copia de volta para o disco. Ento ele busca a pgina referenciada e a copia na moldura que acabou de ser liberada, modifica o mapa e reexecuta a instruo causadora do trap. Por exemplo, se o sistema operacional resolver substituir a pgina na moldura 1, ele deve carregar a pgina virtual 8 no endereo 4K e fazer duas mudanas no mapeamento da MMU. Primeiro, ele deve marcar a entrada correspondente pgina virtual 1 como nomapevel, para que um trap seja gerado quando houver acesso futuro a um endereo virtual desta pgina. Depois, ele deve substituir o X na entrada correspondente pgina virtual 8 por um 1, de maneira que quando a instruo que gerou o trap for reexecutada, deve haver o mapeamento do endereo virtual 32.780 no endereo fsico 4.108. Vamos verificar dentro da MMU, para ver como ela funciona. Na figura abaixo, vemos um exemplo do endereo virtual 8.196 (0010000000000100 em binrio), sendo mapeado usando o mapa da MMU da figura anterior.

8 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

0

0

1

0

0

0

0

0

0

0

0

0

0

1

0

0 Endereo virtual 8.196 (entrada)

1

Pgina virtual = 2 Parmetro usado como ndice para a tabela de pginas Bit de presena ausncia (residncia) 0 010 1 1 001 1 110 2 110 1 3 000 1 4 100 1 Tabela de 12 bits do 5 011 1 pginas deslocamento 6 000 0 so copiados 7 000 0 diretamente da 8 000 0 entrada para 9 101 1 a sada 10 000 0 11 111 1 12 000 0 13 000 0 14 000 0 15 000 0 Endereo fsico ou real 24.580 (sada) 1 0 0 0 0 0 0 0 0 0 0 1 0 0

O endereo virtual de 16 bits que chega MMU dividido em um nmero de pgina de quatro bits, e em um deslocamento de 12 bits. Com os quatro bits referentes ao nmero da pgina, podemos representar 16 pginas, e com os 12 do deslocamento, podemos enderear todos os 4.096 bytes que compem uma determinada pgina.

4. MEMRIA VIRTUAL POR PAGINAOA memria virtual por paginao a tcnica de gerncia de memria onde o espao de endereamento virtual e o espao de endereamento real so divididos em blocos do mesmo tamanho chamados pginas. As pginas no espao virtual so denominadas pginas virtuais, enquanto as pginas no espao real so chamadas de pginas reais ou frames. Todo o mapeamento de endereo virtual em real realizado atravs de tabelas de pginas. Cada processo possui sua prpria tabela de pginas e cada pgina virtual do processo possui uma entrada na tabela (entrada na tabela de pginas ETP), com informaes de mapeamento que permitem ao sistema localizar a pgina real correspondente.

9 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 6: Tabela de pginas Quando um programa executado, as pginas virtuais so transferidas da memria secundria para a memria principal e colocadas nos frames. Sempre que um programa fizer referncia a um endereo virtual, o mecanismo de mapeamento localizar na ETP da tabela do processo o endereo fsico do frame no qual se encontra o endereo real correspondente. Nessa tcnica, o endereo virtual formado pelo nmero da pgina virtual (NPV) e por um deslocamento. O NPV identifica unicamente a pgina virtual que contm o endereo, funcionando como um ndice na tabela de pginas. O deslocamento indica a posio do endereo virtual em relao ao incio da pgina na qual se encontra. O endereo fsico obtido, ento, combinando-se o endereo do frame, localizado na tabela de pginas, com o deslocamento, contido no endereo virtual.

10 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 7: Traduo do endereo virtual Alm da informao sobre a localizao da pgina virtual, a ETP possui outras informaes, como o bit de validade (valid bit) que indica se uma pgina est ou no na memria principal. Se o bit tem valor 0, isto indica que a pgina virtual no est na memria principal, mas se igual a 1, a pgina est localizada na memria. Sempre que o processo referencia um endereo virtual, a unidade de gerncia de memria verifica, atravs do bit de validade, se a pgina que contm o endereo referenciado est ou no na memria principal. Caso a pgina no esteja na memria, dizemos que ocorreu uma falta de pgina (page fault). Neste caso, o sistema transfere a pgina da memria secundria para a memria principal, realizando uma operao de E/S conhecida como page in ou paginao. O nmero de page faults gerado por um processo depende de como o programa foi desenvolvido, alm da poltica de gerncia de memria implementada pelo sistema operacional.

11 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 8: Mecanismo de traduo O nmero de page faults gerado por um processo em um determinado intervalo de tempo definido como taxa de paginao do processo. O overhead gerado pelo mecanismo de paginao inerente da gerncia de memria virtual, porm se a taxa de paginao dos processos atingir valores elevados, o excesso de operaes de E/S poder comprometer o desempenho do sistema. Quando um processo referencia um endereo e ocorre um page fault, o processo em questo passa do estado de execuo para o estado de espera, at que a pgina seja transferida do disco para a memria principal. Na troca de contexto, as informaes sobre a tabela de mapeamento so salvas e as informaes do novo processo escalonado so restauradas. Aps a transferncia da pgina para a memria principal, o processo recolocado na fila de processos no estado de pronto, e quando for reescalonado poder continuar sua execuo. 4.1. Polticas de Busca de Pginas

O mecanismo de memria virtual permite a execuo de um programa sem que seu cdigo esteja completamente residente na memria principal. A poltica de busca de12 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

pginas determina quando uma pgina deve ser carregada para a memria. Basicamente, existem duas estratgias para este propsito: paginao por demanda e paginao antecipada. Na paginao por demanda (demand paging), as pginas dos processos so transferidas da memria secundria para a principal apenas quando so referenciadas. Este mecanismo conveniente, na medida em que leva para a memria principal apenas as pginas realmente necessrias execuo do programa. Desse modo, possvel que partes no executadas do programa, como rotinas de tratamento de erros, nunca sejam carregadas para a memria. Na paginao antecipada (anticipatory paging ou prepaging), o sistema carrega para a memria principal, alm da pgina referenciada, outras pginas que podem ou no ser necessrias ao processo ao longo do seu processamento. Se imaginarmos que o programa est armazenado seqencialmente no disco, existe uma grande economia de tempo em levar um conjunto de pginas da memria secundria, ao contrrio de carregar uma de cada vez. Por outro lado, caso o processo no precise das pginas carregadas antecipadamente, o sistema ter perdido tempo e ocupado memria principal desnecessariamente. A tcnica de paginao antecipada pode ser empregada no momento da criao de um processo ou na ocorrncia de um page fault. Quando um processo criado, diversas pginas do programa na memria secundria devem ser carregadas para a memria principal, gerando um elevado nmero de page faults e vrias operaes de leitura em disco. Na medida em que as pginas so carregadas para a memria, a taxa de paginao tende a diminuir. Se o sistema carregar no apenas uma, mas um conjunto de pginas, a taxa de paginao do processo dever cair imediatamente e estabilizar-se durante um certo perodo de tempo. Seguindo o mesmo raciocnio, sempre que houver um page fault, o sistema poder carregar para a memria, alm da pgina referenciada, pginas adicionais, na tentativa de evitar novos page faults e sucessivas operaes de leitura em disco. 4.2. Poltica de Alocao de Pginas

A poltica de alocao de pginas determina quantos frames cada processo pode manter na memria principal. Existem, basicamente, duas alternativas: alocao fixa e alocao varivel. Na poltica de alocao fixa, cada processo tem um nmero mximo de frames que pode ser utilizado durante a execuo do programa. Caso o nmero de pginas reais seja insuficiente, uma pgina do processo deve ser descartada para que uma nova seja carregada. O limite de pginas reais pode ser igual para todos os processos ou definido individualmente. Apesar de parecer justo alocar o mesmo nmero de pginas para todos os processos, pode no ser uma boa opo, pois a necessidade de memria de cada13 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

processo raramente a mesma. O limite de pginas deve ser definido no momento da criao do processo, com base no tipo de aplicao que ser executada. Essa informao faz parte do contexto de software do processo. Apesar de sua simplicidade, a poltica de alocao fixa de pginas apresenta dois problemas. Se o nmero mximo de pginas alocadas for muito pequeno, o processo tender a ter um elevado nmero de page faults, o que pode impactar no desempenho de todo o sistema. Por outro lado, caso o nmero de pginas seja muito grande, cada processo ir ocupar na memria principal um espao maior do que o necessrio, reduzindo o nmero de processos residentes e o grau de multiprogramao. Nesse caso, o sistema pode implementar a tcnica de swapping, retirando e carregando processos da/para a memria principal. Na poltica de alocao varivel, o nmero mximo de pginas alocadas ao processo pode variar durante sua execuo em funo de sua taxa de paginao e da ocupao da memria principal. Nesse modelo, processos com elevadas taxas de paginao podem ampliar o limite mximo de frames, a fim de reduzir o nmero de page faults. Da mesma forma, processos com baixas taxas de paginao podem ter pginas realocadas para outros processos. Este mecanismo, apesar de mais flexvel, exige que o sistema operacional monitore constantemente o comportamento dos processos, gerando maior overhead. 4.3. Polticas de Substituio de Pginas

Em algumas situaes, quando um processo atinge o seu limite de alocao de frames e necessita alocar novas pginas na memria principal, o sistema operacional deve selecionar, dentre as diversas pginas alocadas, qual dever ser liberada. Este mecanismo chamado de poltica de substituio de pginas. Uma pgina real, quando liberada por um processo, est livre para ser utilizada por qualquer outro processo. A partir dessa situao, qualquer estratgia de substituio de pginas deve considerar se uma pgina foi ou no modificada antes de liber-la; caso contrrio, os dados armazenados na pgina podem ser perdidos. No caso de pginas contendo cdigo executvel, que no sofrem alteraes, no existe essa preocupao, pois existe uma cpia do cdigo no arquivo executvel em disco. As pginas modificveis, que armazenam variveis e estruturas de dados, podem sofrer alteraes. Neste caso, o sistema dever grav-la na memria secundria antes do descarte, preservando seu contedo para uso em futuras referncias. Este mecanismo conhecido como page out. Com este propsito, o sistema mantm um arquivo de paginao (page file) onde todas as pginas modificadas e descartadas so armazenadas. Sempre que uma pgina modificada for novamente referenciada, ocorrer um page in, carregando-a para a memria principal a partir do arquivo de paginao.

14 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 9: Substituio de pgina O sistema operacional consegue identificar as pginas modificadas atravs de um bit que existe em cada entrada da tabela de pginas, chamado bit de modificao (dirty bit ou modify bit). Sempre que uma pgina sofre uma alterao, o valor do bit de modificao alterado, indicando que a pgina foi modificada. A poltica de substituio de pginas pode ser classificada conforme seu escopo, ou seja, dentre os processos residentes na memria principal quais so candidatos a ter pginas realocadas. Em funo desse escopo, a poltica de substituio pode ser definida como local ou global. Na poltica de substituio local, apenas as pginas do processo que gerou o page fault so candidatas a realocao. Nesse modelo, sempre que um processo precisar de uma nova pgina, o sistema dever selecionar, dentre os frames alocados pelo processo, a pgina a ser substituda. Os frames dos demais processos no so avaliados para substituio. J na poltica de alocao global, todas as pginas alocadas na memria principal so candidatas a substituio, independente do processo que gerou o page fault. Como qualquer processo pode ser escolhido, possvel que o processo selecionado sofra um aumento na sua taxa de paginao, em funo da reduo do nmero de pginas alocadas na memria. Na verdade, nem todas as pginas podem ser candidatas a substituio. Algumas pginas, como as do ncleo do sistema, so marcadas como bloqueadas e no podem ser realocadas. Existe uma relao entre o escopo da poltica de substituio e a poltica de alocao de pginas. A poltica de alocao fixa permite apenas a utilizao de uma poltica de substituio local. Nesse caso, sempre que um processo necessita de uma nova pgina, o sistema dever selecionar um frame do prprio processo para ser realocado, mantendo assim o seu limite de pginas. A poltica de alocao varivel permite uma poltica de substituio tanto local quanto global. Na poltica de alocao varivel com substituio global, quando um processo15 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

necessita de uma nova pgina, o sistema poder selecionar um frame dentre todas as pginas na memria principal, independente do processo. Nesse caso, o processo escolhido perde uma de suas pginas, reduzindo assim o nmero de frames alocados na memria pelo processo. Por outro lado, o processo que gerou o page fault recebe um novo frame e tem seu nmero de pginas aumentado. Na poltica de alocao varivel com substituio local, quando um processo necessita de nova pgina o sistema dever selecionar uma pgina do prprio processo para substituio. Em funo do comportamento do processo e do nvel de utilizao do sistema, o nmero de pginas alocadas ao processo pode ser aumentado ou diminudo, a fim de melhorar o desempenho do sistema. 4.4. Conjunto de Trabalho (Working Set)

Apesar de suas diversas vantagens, o mecanismo de memria virtual introduz um srio problema. Como cada processo possui na memria principal apenas algumas pginas alocadas, o sistema deve manter um conjunto mnimo de frames buscando uma baixa taxa de paginao. Ao mesmo tempo, o sistema operacional deve impedir que os processos tenham um nmero excessivo de pginas na memria, de forma a aumentar o grau de compartilhamento da memria principal. Caso os processos tenham na memria principal um nmero insuficiente de pginas para a execuo do programa, provvel que diversos frames referenciados ao longo do seu processamento no estejam na memria. Esta situao provoca a ocorrncia de um nmero elevado de page faults e, conseqentemente, inmeras operaes de E/S. Neste caso, ocorre um problema conhecido como trashing, provocando srias conseqncias ao desempenho do sistema. O conceito de working set surgiu com o objetivo de reduzir o problema do trashing e est relacionado ao princpio da localidade. Existem dois tipos de localidades que so observados durante a execuo da maioria dos programas. A localidade espacial a tendncia de que aps uma referncia a uma posio de memria sejam realizadas novas referncias a endereos prximos. A localidade temporal a tendncia de que aps a referncia a uma posio de memria esta mesma posio seja novamente referenciada em um curto intervalo de tempo. O princpio da localidade significa que o processador tender a concentrar suas referncias a um conjunto de pginas do processo durante um determinado perodo de tempo. Imaginando um loop, cujo cdigo ocupe trs pginas, a tendncia de essas trs pginas serem referenciadas diversas vezes muito alta.

16 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 10: Conceito de localidade No incio da execuo de um programa, observa-se um elevado nmero de page faults, pois no existe nenhum frame do processo na memria principal. Com o decorrer da sua execuo, as pginas so carregadas para a memria e o nmero de page faults diminui. Aps um perodo de estabilidade, o programa gera novamente uma elevada taxa de paginao, que depois de algum tempo volta a se estabilizar. Esse fenmeno pode repetirse inmeras vezes durante a execuo de um processo e est relacionado com a forma com que a aplicao foi escrita. Normalmente, se um programa foi desenvolvido utilizando tcnicas estruturadas, o conceito de localidade quase sempre vlido. Nesse caso, a localidade ser percebida, por exemplo, durante a execuo de repeties e sub-rotinas. O princpio da localidade indispensvel para que a gerncia de memria virtual funcione eficientemente. Como as referncias aos endereos de um processo concentramse em um determinado conjunto de pginas, possvel manter apenas parte do cdigo de cada um dos diversos programas na memria principal, sem prejudicar a execuo dos processos. Caso contrrio, o sistema teria que manter integralmente o cdigo de todos os programas na memria para evitar o problema do trashing. Considerando um programa com rotinas de inicializao, um loop principal e rotinas de finalizao, manter o programa inteiro na memria principal seria ineficiente. A m utilizao da memria fica mais clara quando o programa possui rotinas de tratamento de erros na memria que, por muitas vezes, nunca sero executadas. A partir da observao do princpio da localidade, Peter Denning formulou o modelo de working set. O conceito de working set definido como sendo o conjunto das pginas referenciadas por um processo durante determinado intervalo de tempo. A figura 11 ilustra que no tempo t2, o working set do processo, W(t2, t), so as pginas referenciadas no intervalo t (t2 t1), isto , as pginas P2, P3 e P8. O intervalo de tempo t denominado janela do working set. Podemos observar, ento, que o working set de um processo uma funo do tempo e do tamanho da janela do working set.17 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 11: Modelo de working set Dentro da janela do working set, o nmero de pginas distintas referenciadas conhecido como tamanho do working set. Na figura 12, so apresentadas as referncias s pginas de um processo nas janelas ta (t2 t1) e tb (t3 t2). O working set do processo no instante t2, com a janela ta, corresponde s pginas P2, P3, P4 e P5, e o tamanho do working set igual a quatro pginas. No instante t3, com a janela tb, o working set corresponde s pginas P5 e P6, e o tamanho do working set igual a duas pginas.

Figura 12: Tamanho do working set O modelo de working set proposto por Denning possibilita prever quais pginas so necessrias execuo de um programa de forma eficiente. Caso a janela do working set seja apropriadamente selecionada, em funo da localidade do programa, o sistema operacional dever manter as pginas do working set de cada processo residentes na memria principal. Considerando que a localidade de um programa varia ao longo da sua execuo, o tamanho do working set do processo tambm varia, ou seja, o seu limite de pginas reais deve acompanhar esta variao. O working set refletir a localidade do programa reduzindo a taxa de paginao dos processos e evitando, conseqentemente, o trashing. Caso o limite de pginas reais de um processo seja maior do que o tamanho do working set, menor ser a chance de ocorrer uma referncia a uma pgina que no esteja na memria principal. Por outro lado, as pginas dos processos ocuparo excessivo espao, reduzindo o grau de compartilhamento da memria. No caso do limite de pginas reais ser menor, a taxa de paginao ser alta, pois parte do working set no estar residente na memria principal. Outro fato que pode ser observado a existncia de um ponto onde o aumento do limite de pginas reais do processo no implica a diminuio significativa da taxa de paginao, sendo este ponto alcanado muito antes do programa ser totalmente carregado para a memria.18 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 13: taxa de page fault x limite de pginas reais Apesar do conceito de working set ser bastante intuitivo, sua implementao no simples, por questes de desempenho. Para implementar esse modelo, o sistema operacional deve garantir que o working set de cada processo permanea na memria principal, determinando quais pginas devem ser mantidas e retiradas em funo da ltima janela de tempo. Em funo disso, o modelo de working set deve ser implementado somente em sistemas que utilizam a poltica de alocao de pginas varivel, onde o limite de pginas reais no fixo. Uma maneira de implementar o modelo de working set analisar a taxa de paginao de cada processo, conhecida como estratgia de freqncia de page fault. Caso um processo tenha uma taxa de paginao acima de um limite definido pelo sistema, o processo dever aumentar o seu limite de pginas reais na tentativa de alcanar o seu working set. Por outro lado, se o processo tem uma taxa de paginao abaixo de um certo limite, o sistema poder reduzir o limite de pginas sem comprometer seu desempenho. O sistema operacional OpenVMS implementa uma estratgia semelhante a esta. Na prtica, o modelo de working set serve como base para inmeros algoritmos de substituio de pginas. 4.5. Algoritmos de Substituio de Pginas

O maior problema na gerncia de memria virtual por paginao no decidir quais pginas carregar para a memria principal, mas quais liberar. Quando um processo necessita de uma nova pgina e no existem frames disponveis, o sistema dever selecionar, dentre as diversas pginas alocadas na memria, qual dever ser liberada pelo processo. Os algoritmos de substituio de pginas tm o objetivo de selecionar os frames que tenham as menores chances de serem referenciados em um futuro prximo; caso contrrio, o frame poderia retornar diversas vezes para a memria principal, gerando vrios page faults e acessos memria secundria. A partir do princpio da localidade, a maioria dos algoritmos tenta prever o comportamento futuro das aplicaes em funo do comportamento passado, avaliando o nmero de vezes que uma pgina foi referenciada, o momento em que foi carregada para a memria principal e o intervalo de tempo da ltima referncia.19 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

A melhor estratgia de substituio de pginas seria aquela que escolhesse um frame que no fosse mais utilizado no futuro ou levasse mais tempo para ser novamente referenciado. Porm, quanto mais sofisticado o algoritmo de substituio deve tentar manter o working set dos processos na memria principal e, ao mesmo tempo, no comprometer o desempenho do sistema. a. timo O algoritmo timo seleciona para substituio uma pgina que no ser mais referenciada no futuro ou aquela que levar o maior intervalo de tempo para ser novamente utilizada. Apesar deste algoritmo garantir as menores taxas de paginao para os processos, na prtica impossvel de ser implementado, pois o sistema operacional no tem como conhecer o comportamento futuro das aplicaes. Essa estratgia utilizada apenas como modelo comparativo na anlise de outros algoritmos de substituio. b. Aleatrio O algoritmo aleatrio no utiliza critrio algum de seleo. Todas as pginas alocadas na memria principal tm a mesma chance de serem selecionadas, inclusive os frames que so freqentemente referenciados. Apesar de ser uma estratgia que consome poucos recursos do sistema, raramente implementada, em funo de sua baixa eficincia. c. FIFO (First-in-first-out) No algoritmo FIFO, a pgina que primeiro foi utilizada ser a primeira a ser escolhida, ou seja, o algoritmo seleciona a pgina que est a mais tempo na memria principal. O algoritmo pode ser implementado associando-se a cada pgina o momento em que foi carregada para a memria ou utilizando-se uma estrutura de fila, onde as pginas antigas esto no incio e as mais recentes no final.

Figura 14: FIFO Parece razovel pensar que uma pgina que esteja a mais tempo na memria seja justamente aquela que deve ser selecionada, porm isto nem sempre verdade. No caso de uma pgina que seja constantemente referenciada, como o caso de pginas20 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

que contm dados, o fator tempo torna-se irrelevante e o sistema tem que referenciar a mesma pgina diversas vezes ao longo do processamento. O algoritmo FIFO raramente implementado sem algum outro mecanismo que minimize o problema da seleo de pginas antigas que so constantemente referenciadas. d. LFU (Least-frequently-used) O algoritmo LFU seleciona a pgina menos referenciada, ou seja, o frame menos utilizado. Para isso, mantido um contador com o nmero de referncias para cada pgina na memria principal. A pgina que possuir o contador com o menor nmero de referncias ser a escolhida, ou seja, o algoritmo evita selecionar pginas que so bastante utilizadas. Inicialmente, esta parece ser uma boa estratgia, porm as pginas que esto h pouco tempo na memria principal podem ser, justamente aquelas selecionadas, pois seus contadores estaro com o menor nmero de referncias. possvel tambm que uma pgina muito utilizada no passado no seja mais referenciada no futuro. Nesse caso, como o contador possuiria um nmero elevado de referncias, a pgina no seria selecionada para substituio. Este esquema, como apresentado, raramente implementado, servindo apenas de base para outros algoritmos de substituio. e. LRU (Least-recently-used) O algoritmo LRU seleciona a pgina na memria principal que est h mais tempo sem ser referenciada. Se considerarmos o princpio da localidade, uma pgina que no foi utilizada recentemente provavelmente no ser referenciada novamente em um futuro prximo. Para implementar esse algoritmo, necessrio que cada pgina tenha associado o momento do ltimo acesso, que deve ser atualizado a cada referncia a um frame. Quando for necessrio substituir uma pgina, o sistema far uma busca por um frame que esteja h mais tempo sem ser referenciado. Outra maneira de implementar o LRU seria atravs de uma lista encadeada, onde todas as pginas estariam ordenadas pelo momento da ltima referncia. Neste caso, cada acesso memria exigiria um acesso lista. Apesar de ser uma estratgia com uma eficincia comparvel ao algoritmo timo, pouco empregada na prtica, devido ao seu elevado custo de implementao. f. NRU (Not-recently-used)

O algoritmo NRU bastante semelhante ao LRU, porm com menor sofisticao. Para a implementao deste algoritmo necessrio um bit adicional, conhecido como bit de

21 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

referncia (BR). O bit indica se a pgina foi utilizada recentemente e est presente em cada entrada da tabela de pginas. Quando uma pgina carregada para a memria principal, o bit BR referncia alterado pelo hardware, indicando que a pgina foi referenciada (BR = 1). Periodicamente, o sistema altera o valor do bit de referncia (BR = 0), e medida que as pginas so utilizadas, o bit associado a cada frame retorna para 1. Desta forma, possvel distinguir quais frames foram recentemente referenciados. No momento da substituio de uma pgina, o sistema seleciona um dos frames que no tenha sido utilizado recentemente, ou seja, com o bit de referncia igual a zero. O algoritmo NRU torna-se mais eficiente se o bit de modificao for utilizado em conjunto com o bit de referncia. Neste caso, possvel classificar as pginas em quatro categorias, conforme a tabela abaixo:Categorias 1 2 3 4 Bits avaliados BR = 0 e BM = 0 BR = 0 e BM = 1 BR = 1 e BM = 0 BR = 1 e BM = 1 Resultado Pgina no referenciada e no modificada Pgina no referenciada e modificada Pgina referenciada e no modificada Pgina referenciada e modificada

O algoritmo, inicialmente, seleciona as pginas que no foram utilizadas recentemente e no foram modificadas, evitando assim um page out. O prximo passo substituir as pginas que no tenham sido referenciadas recentemente, porm modificadas. Neste caso, apesar de existir um acesso memria secundria para a gravao da pgina modificada, seguindo o princpio da localidade, h pouca chance dessa pgina ser novamente referenciada. g. FIFO com buffer de pginas O algoritmo FIFO com buffer de pginas combina uma lista de pginas alocadas (LPA) com uma lista de pginas livres (LPL). A LPA organiza todas as pginas que esto sendo utilizadas na memria principal, podendo ser implementada como uma lista nica para todos os processos ou uma lista individual para cada processo. Independente da poltica utilizada, a LPA organiza as pginas alocadas h mais tempo na memria no incio da lista, enquanto as pginas mais recentes no seu final. Da mesma forma, a LPL organiza todos os frames livres da memria principal, sendo que as pginas livres h mais tempo esto no incio e as mais recentes no final. Sempre que um processo necessita alocar uma nova pgina, o sistema utiliza a primeira pgina da LPL, colocando-a no final da LPA (figura 15a). Caso o processo tenha que liberar uma pgina, o mecanismo de

22 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

substituio seleciona o frame em uso h mais tempo na memria, isto , o primeiro da LPA, colocando-o no final da LPL (figura 15b).

Figura 15: FIFO com buffer de pginas importante notar que a pgina selecionada e que entrou na LPL continua disponvel na memria principal por um determinado intervalo de tempo. Caso esta pgina seja novamente referenciada e ainda no tenha sido alocada, basta retir-la da LPL e devolv-la ao processo (figura 15c). Nesse caso, a LPL funciona como um buffer de pginas, evitando o acesso memria secundria. Por outro lado, se a pgina no for mais referenciada, com o passar do tempo ir chegar ao incio da LPL, quando ser utilizada para um outro processo. Caso a pgina seja posteriormente referenciada, o sistema ter que carreg-la novamente da memria secundria. O buffer de pginas permite criar um algoritmo de substituio de pginas simples e eficiente, sem o custo de outras implementaes. O sistema operacional Mach utiliza o esquema de buffer de pginas nico, enquanto o OpenVMS e o Windows 2000 utilizam dois buffers: um para pginas livres (free page list) e outro para pginas modificadas (modified page list). h. FIFO circular (clock) O algoritmo FIFO circular utiliza como base o FIFO, porm as pginas alocadas na memria esto em uma estrutura de lista circular, semelhante a um relgio. Este algoritmo implementado, com pequenas variaes na maioria dos sistemas Unix. Para a implementao do algoritmo existe um ponteiro que guarda a posio da pgina mais antiga na lista (figura 16a). Cada pgina possui associado um bit de referncia, indicando se a pgina foi recentemente referenciada. Quando necessrio substituir uma pgina, o sistema verifica se o frame apontado tem o bit de referncia desligado (BR = 0). Nesse caso, a pgina selecionada para descarte, pois, alm de ser a mais antiga, no foi utilizada recentemente. Por outro lado, se a pgina apontada tem o bit de referncia ligado (BR = 1), o bit desligado e o ponteiro incrementado, pois, apesar de ser a pgina mais antiga, foi utilizada recentemente. O processo se repete at ser encontrada uma pgina com bit de referncia igual a zero (figura 16b).23 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 16: FIFO circular Neste algoritmo, existe a possibilidade de todos os frames possurem o bit de referncia ligado. Nesse caso, o ponteiro percorrer toda a lista, desligando o bit de referncia de cada pgina. Ao final, a pgina mais antiga selecionada. A utilizao do bit de referncia permite conceder a cada pgina uma segunda chance antes de ser substituda. possvel melhorar a eficincia do algoritmo utilizando o bit de modificao, juntamente com o bit de referncia, como apresentado no esquema NRU. 4.6. Tamanho de Pginas

A definio do tamanho de pgina um fator importante no projeto de sistemas que implementam memria virtual por paginao. O tamanho da pgina est associado arquitetura do hardware e varia de acordo com o processador, mas normalmente est entre 512 e 16 M endereos. Algumas arquiteturas permitem a configurao do tamanho de pgina, oferecendo assim maior flexibilidade. O tamanho da pgina tem impacto direto sobre o nmero de entradas na tabela de pginas e, conseqentemente, no tamanho da tabela e no espao ocupado na memria principal. Por exemplo, em uma arquitetura de 32 bits para endereamento e pginas de 4k endereos, teramos tabelas de pginas de at 220 entradas. Se cada entrada ocupasse 4 bytes, poderamos ter tabelas de pginas de 4Mb por processo. Logo, pginas pequenas necessitam de tabelas de mapeamento maiores, provocam maior taxa de paginao e aumentam o nmero de acessos memria secundria. Apesar de pginas grandes tornarem menor o tamanho das tabelas de pginas, ocorre o problema da fragmentao interna. Como podemos observar na figura 17, o programa ocupa quase que integralmente todas as pginas. A fragmentao s encontrada, realmente, na ltima pgina, quando o cdigo no ocupa o frame por completo.24 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 17: Fragmentao interna O principal argumento a favor do uso de pginas pequenas a melhor utilizao da memria principal. A partir do princpio da localidade, com pginas pequenas teramos na memria apenas as partes dos programas com maiores chances de serem executadas. Quanto maior o tamanho de pgina, maiores as chances de ter na memria cdigo pouco referenciado, ocupando espao desnecessariamente. Alm disso, pginas pequenas reduzem o problema da fragmentao interna. Outra preocupao quanto ao tamanho da pgina a relacionada aos tempos de leitura e gravao na memria secundria. Devido ao modo de funcionamento dos discos, o tempo de operao de E/S com duas pginas de 512 bytes muito maior do que uma pgina de 1024 bytes. Com o aumento do espao de endereamento e da velocidade de acesso memria principal, a tendncia no projeto de sistemas operacionais com memria virtual por paginao a adoo de pginas maiores, apesar dos problemas citados. 4.7. Paginao em Mltiplos Nveis

Em sistemas que implementam apenas um nvel de paginao, o tamanho das tabelas de pginas pode ser um problema. Como j visto, em uma arquitetura de 32 bits para endereamento e pginas com 4k endereos por processo, onde cada entrada na tabela de pginas ocupe 4 bytes, a tabela de pginas poderia ter mais de um milho de entradas e ocuparia 4 Mb de espao. Imaginando vrios processos residentes na memria principal, manter tabelas desse tamanho para cada processo certamente seria de difcil gerenciamento.

25 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 18: Paginao em um nvel Uma boa soluo para contornar o problema apresentado a utilizao de tabelas de pginas em mltiplos nveis. A idia que o princpio da localidade seja aplicado tambm s tabelas de mapeamento apenas as informaes sobre pginas realmente necessrias aos processos estariam residentes na memria principal. No esquema de paginao em dois nveis existe uma tabela diretrio, onde cada entrada aponta para uma tabela de pgina. A partir do exemplo anterior, podemos dividir o campo NPV em duas partes: nmero da pgina virtual de nvel 1 (NPV1) e nmero da pgina virtual de nvel 2 (NPV2), cada um com 10 bits. O NPV1 permite localizar a tabela de pginas na tabela diretrio; por sua vez, o NPV2 permite localizar o frame desejado na tabela de pginas.

Figura 19: Endereo virtual em dois nveis

26 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Utilizando-se o exemplo anterior, possvel que existam 1024 tabelas de pginas para cada processo. A grande vantagem da paginao em mltiplos nveis que apenas estaro residentes na memria principal as tabelas realmente necessrias aos processos, reduzindo, dessa forma, o espao ocupado na memria. A arquitetura VAX da Compaq/Digital um exemplo de implementao de paginao em dois nveis.

Figura 20: Paginao em dois nveis Em uma arquitetura de 64 bits, a estrutura em dois nveis j no mais adequada devido ao espao de endereamento de 264. Considerando pginas de 4 k endereos, NPV2 com 10 bits e NPV1 com 42 bits, teramos tabelas com 242 entradas. Novamente a soluo passa por dividir a tabela diretrio, criando uma estrutura em trs nveis. Por exemplo, NPV1 com 32 bits, NPV2 com 10 bits e NPV3 com 10 bits. Esse tipo de implementao pode ser encontrado em alguns processadores da famlia SPARC, da Sun Microsystems.

27 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

A tcnica de paginao em mltiplos nveis pode ser estendida para quatro nveis, como nos processadores Motorola 68030, cinco ou mais nveis. A cada nvel introduzido h, pelo menos, mais um acesso memria principal, o que sem gera problemas de desempenho. Tais problemas podem ser solucionados utilizando-se cachs. 4.8. Translation Lookaside Buffer

A gerncia de memria virtual utiliza a tcnica de mapeamento para traduzir endereos virtuais em endereos reais, porm, o mapeamento implica pelo menos dois acessos memria principal: o primeiro tabela de pginas e o outro prpria pgina. Sempre que um endereo virtual precisa ser traduzido, a tabela de mapeamento deve ser consultada para se obter o endereo do frame e, posteriormente, acessar o dado na memria principal. Como a maioria das aplicaes referencia um nmero reduzido de frames na memria principal, seguindo o princpio da localidade, somente uma pequena frao da tabela de mapeamento realmente necessria. Com base neste princpio, foi introduzida uma memria especial chamada translation lookaside buffer (TLB), com o intuito de mapear endereos virtuais em endereos fsicos sem a necessidade do acesso tabela de pginas.

Figura 21: Translation lookaside buffer (TLB)

28 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

O TLB funciona como uma memria cache, mantendo apenas as tradues dos endereos virtuais das pginas mais recentemente referenciadas. Em geral, o TLB utiliza o esquema de mapeamento associativo, que permite verificar simultaneamente em todas as suas entradas a presena do endereo virtual. Dessa forma, para localizar uma entrada, no necessrio realizar uma pesquisa em todo o TLB. Alm disso, as tradues dos endereos virtuais podem ser armazenadas em qualquer posio da cache. Na traduo de um endereo virtual, o sistema verifica primeiro o TLB. Caso o endereo virtual (tag) esteja na cache, o endereo fsico utilizado, eliminando o acesso tabela de mapeamento (TLB hit). Caso o endereo no esteja na cache, a tabela de mapeamento deve ser consultada (TLB miss). Se a pgina estiver na memria principal, a traduo do endereo virtual colocada no TLB e o endereo traduzido. Caso contrrio, ocorre um page fault, a pgina carregada para a memria, a tabela de mapeamento atualizada e a informao carregada para a TLB. Como a TLB pode eliminar o acesso tabela de mapeamento, as informaes de um endereo virtual, contidas na entrada da tabela de pginas, devem tambm estar na cache. A tabela 3 descreve os campos de uma entrada tpica de uma TLB.Campo Tag Modificao Referncia Proteo Endereo fsico Descrio Endereo virtual sem o deslocamento Bit que indica se a pgina foi alterada Bit que indica se a pgina foi recentemente referenciada, sendo utilizada para a realocao de entradas na TLB Define a permisso de acesso pgina Posio do frame na memria principal

Geralmente, a TLB contm apenas informaes sobre endereos do processo em execuo, ou seja, quando h uma mudana de contexto, a TLB deve ser reinicializada com informaes da tabela de mapeamento do novo processo. Caso a TLB possa armazenar endereos de vrios processos, deve existir um campo adicional em cada entrada da TLB para a identificao do processo. Sempre que a TLB fica com todas as suas entradas ocupadas e um novo endereo precisa ser armazenado, uma entrada da cache deve ser liberada. Geralmente, a poltica de realocao de entradas da TLB aleatria e, mais raramente, utiliza-se a poltica NRU. A TLB essencial para reduzir o nmero de operaes de acesso memria principal em sistemas que implementam memria virtual. Devido ao conceito de localidade, a TLB pode ser implementada com poucas entradas, mapeando de 8 a 2048 endereos. Mesmo pequena, a taxa de TLB hits muito alta, reduzindo significativamente o impacto da gerncia de memria virtual no desempenho do sistema.29 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

4.9.

Proteo de Memria

Em qualquer sistema multiprogramvel, onde diversas aplicaes compartilham a memria principal, devem existir mecanismos para preservar as reas de memria do sistema operacional e dos diversos processos dos usurios. O sistema operacional deve impedir que um processo tenha acesso ou modifique uma pgina do sistema sem autorizao. Caso uma pgina do sistema operacional seja indevidamente alterada, possvel que, como conseqncia, haja uma instabilidade no funcionamento do sistema ou sua parada completa. At mesmo pginas dos processos de usurios necessitam serem protegidas contra alterao, como no caso de frames contendo cdigo executvel. Um primeiro nvel de proteo inerente ao prprio mecanismo de memria virtual por paginao. Neste esquema, cada processo tem a sua prpria tabela de mapeamento e a traduo dos endereos realizada pelo sistema. Desta forma, no possvel a um processo acessar reas de memria de outros processos, a menos que haja compartilhamento explcito de pginas entre processos. A proteo de acesso realizada individualmente em cada pgina da memria principal, utilizando-se as entradas das tabelas de mapeamento, onde alguns bits especificam os acessos permitidos.

Figura 22: Proteo para pginas De forma resumida, definiremos dois tipos de acessos bsicos realizados em uma pgina: leitura e gravao. O acesso de leitura permite a leitura da pgina, enquanto o de gravao a sua alterao. Os dois tipos de acessos combinados produzem um mecanismo de proteo simples e eficiente, permitindo desde o total acesso pgina, passando por acessos intermedirios, at a falta completa de acesso.

Figura 23: Mecanismo de proteo Sempre que uma pgina referenciada, o sistema operacional verifica na tabela de mapeamento do processo a proteo do frame e determina se a operao permitida. Caso a tentativa de uma operao de gravao seja realizada em uma pgina com proteo apenas de leitura, o sistema gera um erro indicando a ocorrncia do problema.30 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

4.10.

Compartilhamento de Memria

Em sistemas que implementam memria virtual, bastante simples a implementao da reentrncia, possibilitando compartilhamento de cdigo entre os diversos processos. Para isso, basta que as entradas das tabelas de mapeamento dos processos apontem para os mesmos frames na memria principal, evitando, assim, vrias cpias de um mesmo programa na memria. Apesar de os processos compartilharem as mesmas pginas de cdigo, cada um possui sua prpria rea de dados em pginas independentes.

Figura 24: Compartilhamento de memria O compartilhamento de memria tambm extremamente importante em aplicaes que precisam compartilhar dados na memria principal. Similar ao compartilhamento de cdigo, o mecanismo de paginao permite que processos faam o mapeamento de uma mesma rea na memria e, conseqentemente, tenham acesso compartilhado de leitura e31 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

gravao. A nica preocupao da aplicao garantir o sincronismo no acesso regio compartilhada, evitando problemas de inconsistncia.

5. MEMRIA VIRTUAL POR SEGMENTAOMemria virtual por segmentao a tcnica de gerncia de memria onde o espao de endereamento virtual dividido em blocos de tamanhos diferentes chamados segmentos. Na tcnica de segmentao, um programa dividido logicamente em sub-rotinas e estruturas de dados, que so alocadas em segmentos na memria principal.

Figura 25: Segmentao Enquanto na tcnica de paginao o programa dividido em pginas de tamanho fixo, sem qualquer ligao com sua estrutura, na segmentao existe uma relao entre a lgica do programa e sua alocao na memria principal. Normalmente, a definio dos segmentos realizada pelo compilador, a partir do cdigo fonte do programa, e cada segmento pode representar um procedimento, funo, vetor ou pilha. O espao de endereamento virtual de um processo possui um nmero mximo de segmentos que podem existir, onde cada segmento pode variar de tamanho dentro de um limite. O tamanho do segmento pode ser alterado durante a execuo do programa, facilitando a implementao de estruturas de dados dinmicas. Espaos de endereamento independentes permitem que uma sub-rotina seja alterada sem a necessidade do programa principal e todas as suas sub-rotinas serem recompiladas e religadas. Em sistemas que implementam paginao, a alterao de uma sub-rotina do programa implica recompilar e religar a aplicao por completo. O mecanismo de mapeamento muito semelhante ao da paginao. Os segmentos so mapeados atravs de tabelas de mapeamento de segmentos (TMS), e os endereos so32 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

compostos pelo nmero do segmento virtual (NSV) e por um deslocamento. O NSV identifica unicamente o segmento virtual que contm o endereo, funcionando como um ndice na TMS. O deslocamento indica a posio do endereo virtual em relao ao incio do segmento no qual se encontra. O endereo fsico obtido, ento, combinando-se o endereo do segmento, localizado na TMS, com o deslocamento, contido no endereo virtual.

Figura 26: Traduo do endereo virtual

Cada ETS possui, alm do endereo do segmento na memria principal, informaes adicionais, conforme a tabela abaixo:

Campo

Descrio

33 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Tamanho Bit de validade Bit de modificao Bit de referncia Proteo

Especifica o tamanho do segmento Indica se o segmento est na memria principal Indica se o segmento foi alterado Indica se o segmento foi recentemente referenciado, sendo utilizado pelo algoritmo de substituio Indica a proteo do segmento

Uma grande vantagem da segmentao em relao paginao a sua facilidade em lidar com estruturas de dados dinmicas. Como o tamanho do segmento pode ser facilmente alterado na ETS, estruturas de dados, como pilhas e listas encadeadas, podem aumentar e diminuir dinamicamente, oferecendo grande flexibilidade ao desenvolvedor. Enquanto na paginao a expanso de um vetor implica a alocao de novas pginas e, conseqentemente, o ajuste da tabela de paginao, na segmentao deve ser alterado apenas o tamanho do segmento. Na tcnica de segmentao, apenas os segmentos referenciados so transferidos da memria secundria para a memria principal. Se as aplicaes no forem desenvolvidas em mdulos, grandes segmentos estaro na memria desnecessariamente, reduzindo o compartilhamento da memria e o grau de multiprogramao. Logo, para que a segmentao funcione de forma eficiente, os programas devem estar bem modularizados. Para alocar os segmentos na memria principal, o sistema operacional mantm uma tabela com as reas livres e ocupadas da memria. Quando um novo segmento referenciado, o sistema seleciona um espao livre suficiente para que o segmento seja carregado na memria. A poltica de alocao de pginas pode ser a mesma utilizada na alocao particionada dinmica (best-fit, worst-fit ou first-fit) apresentada no captulo Gerncia de Memria. Enquanto na paginao existe o problema da fragmentao interna, na segmentao surge o problema da fragmentao externa. Este problema ocorre sempre que h diversas reas na memria principal, mas nenhuma grande o suficiente para alocar um novo segmento. Neste caso, necessrio que os segmentos sejam realocados na memria de forma que os espaos livres sejam agrupados em uma nica rea maior. Em sistemas com segmentao, a proteo de memria mais simples de ser implementada do que em sistemas com paginao. Como cada segmento possui um contedo bem definido, ou seja, instrues ou dados, basta especificar a proteo do segmento na ETS, onde alguns bits podem especificar os tipos de acesso ao segmento. Na segmentao mais simples o compartilhamento de memria do que na paginao, pois a tabela de segmentos mapeia estruturas lgicas e no pginas. Para compartilhar um segmento, basta que as ETS dos diversos processos apontem para o mesmo segmento na34 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

memria principal. Por exemplo, enquanto o mapeamento de um vetor pode necessitar de vrias entradas na tabela de pginas, na tabela de segmentos necessria apenas uma nica entrada. A tabela abaixo compara as tcnicas de paginao e segmentao em funo de suas principais caractersticas:

Caracterstica Tamanho dos blocos de memria Proteo Compartilhamento Estruturas de dados dinmicas Fragmentao interna Fragmentao externa Programao modular Alterao do programa

Paginao Iguais Complexa Complexa Complexa Pode existir No existe Dispensvel Mais trabalhosa

Segmentao Diferentes Mais simples Mais simples Mais simples No existe Pode existir Indispensvel Mais simples

6. MEMRIA VIRTUAL POR SEGMENTAO COM PAGINAOMemria virtual por segmentao com paginao a tcnica de gerncia de memria onde o espao de endereamento dividido em segmentos e, por sua vez, cada segmento dividido em pginas. Esse esquema de gerncia de memria tem o objetivo de oferecer as vantagens tanto da tcnica de paginao quanto da segmentao. Nessa tcnica, um endereo virtual formado pelo nmero do segmento virtual (NSV), um nmero de pgina virtual (NPV) e um deslocamento. Atravs do NSV, obtm-se uma entrada na tabela de segmentos, que contm informaes da tabela de pginas do segmento. O NPV identifica unicamente a pgina virtual que contm o endereo, funcionando como um ndice na tabela de pginas. O deslocamento indica a posio do endereo virtual em relao ao incio da pgina na qual se encontra. O endereo fsico obtido, ento, combinando-se o endereo do frame, localizado na tabela de pginas, com o deslocamento, contido no endereo virtual.

35 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 27: Segmentao com paginao Na viso do programador, sua aplicao continua sendo mapeada em segmentos de tamanhos diferentes, em funo das sub-rotinas e estruturas de dados definidas no programa. Por outro lado, o sistema trata cada segmento como um conjunto de pginas de mesmo tamanho, mapeadas por uma tabela de pginas associada ao segmento. Dessa forma, um segmento no precisa estar contguo na memria principal, eliminando o problema da fragmentao externa encontrado na segmentao pura.

36 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

7. SWAPPING EM MEMRIA VIRTUAL

A tcnica de swapping tambm pode ser aplicada em sistemas com memria virtual, permitindo aumentar o nmero de processos que compartilham a memria principal e, conseqentemente, o grau de multiprogramao do sistema. Quando existem novos processos para serem executados e no h memria principal livre suficiente para alocao, o sistema utiliza o swapping, selecionando um ou mais processos para sarem da memria e oferecer espao para novos processos. Depois de escolhidos, o sistema retira os processos da memria principal para a memria secundria (swap out), onde as pginas ou segmentos so gravados em um arquivo de swap (swap file). Com os processos salvos na memria secundria, os frames ou segmentos alocados so liberados para novos processos. Posteriormente, os processos que foram retirados da memria devem retornar para a memria principal (swap in) para serem novamente executados.

Figura 28: Swapping em memria virtual H vrias polticas que podem ser aplicadas na escolha dor processos que devem ser retirados da memria principal. Independente do algoritmo utilizado, o sistema tenta37 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

selecionar os processos com as menores chances de serem executados em um futuro prximo. Na maioria das polticas, o critrio de escolha considera o estado do processo e sua prioridade. O swapping com base no estado dos processos seleciona, inicialmente, os processos que esto no estado de espera. A seleo pode ser refinada em funo do tipo de espera de cada processo. possvel que no existam processos suficientes no estado de espera para atender as necessidades de memria do sistema. Nesse caso, os processos no estado de pronto com menor prioridade devero ser selecionados. O arquivo de swap compartilhado por todos os processos que esto sendo executados no ambiente. Quando um processo criado, o sistema reserva um espao no arquivo de swap para o processo. Da mesma forma, quando um processo eliminado o sistema libera a rea alocada. Em alguns sistemas operacionais, o arquivo de swap , na verdade, uma rea em disco reservada exclusivamente para esta funo. Independentemente da implementao, o arquivo de swap deve oferecer o melhor desempenho possvel para as operaes de swapping.

8. TRASHINGTrashing pode ser definido como sendo a excessiva transferncia de pginas/segmentos entre a memria principal e a memria secundria. Esse problema est presente em sistemas que implementam tanto paginao como segmentao. Na memria virtual por paginao, o trashing ocorre em dois nveis: no do prprio processo e no do sistema. No nvel do processo, a excessiva paginao ocorre devido ao elevado nmero de page faults gerado pelo programa em execuo. Esse problema faz com que o processo passe mais tempo esperando por pginas que realmente sendo executado. Existem dois motivos que levam um processo a sofrer esse tipo de trashing. O primeiro o mau dimensionamento do limite mximo de pginas do processo, pequeno demais para acomodar o working set. O segundo a ausncia do princpio da localidade. O trashing no sistema ocorre quando existem mais processos competindo por memria principal que espao disponvel. Nesse caso, o primeiro passo a reduo do nmero de pginas de cada processo na memria; porm, como j analisamos, esse mecanismo leva ao trashing do processo. Caso a reduo no seja suficiente, o sistema inicia o swapping, retirando processos da memria principal para a memria secundria. Se esse mecanismo for levado ao extremo, o sistema passar mais tempo realizando swapping que atendendo aos processos. O trashing em sistemas que implementam segmentao tambm ocorre em dois nveis. No nvel do processo, a transferncia excessiva de segmentos devida modularizao38 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

extrema do programa. O trashing no sistema semelhante ao da paginao, com a ocorrncia de swapping de processos para liberar memria para os demais. Independentemente das solues apresentadas, se existirem mais processos para serem executados que memria real disponvel, a nica soluo a expanso da memria principal. importante ressaltar que este problema no ocorre apenas em sistemas que implementam memria virtual, mas tambm em sistemas com outros mecanismos de gerncia de memria.

9. BIBLIOGRAFIAMACHADO, F. B., MAIA, L. P., Arquitetura de Sistemas Operacionais, 3 a edio, Ed. LTC, 2002, Rio de Janeiro TANENBAUM, A., Sistemas Operacionais Modernos, 5a edio, Ed. Makron Books, 1999, Rio de Janeiro

39 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

10. LISTA DE EXERCCIOS 1.Quais os benefcios oferecidos pela tcnica de memria virtual? Como este conceito permite que um programa e seus dados ultrapassem os limites da memria principal?

2. 3. 4. 5. 6. 7. 8.

Explique como um endereo virtual de um processo traduzido para um endereo real na memria principal? Por que o mapeamento deve ser feito em blocos e no sobre clulas individuais? Apresente um exemplo numrico. Qual a principal diferena entre os sistemas que implementam paginao e os que implementam segmentao? Diferencie pgina virtual de pgina real. O que so tabelas de pginas e tabelas de segmentos? Para que serve o bit de validade nas tabelas de pginas e segmentos? O que um page fault, quando ocorre e quem controla a sua ocorrncia? Como uma elevada taxa de page fault pode comprometer o sistema operacional?

9.

Nos sistemas com paginao, a rotina para tratamento de page faults est residente na memria principal. Esta rotina pode ser removida da memria em algum momento? O que aconteceria se esta rotina no estivesse na memria principal durante a ocorrncia de um page fault?

10. 11. 12. 13.

Descreva como ocorre a fragmentao interna em um sistema que implementa paginao. Compare as polticas de busca de pginas apresentadas. Quais as vantagens e desvantagens da poltica de alocao de pginas varivel comparada alocao fixa? Um sistema com gerncia de memria virtual por paginao possui tamanho de pginas com 512 posies, espao de endereamento virtual com 512 pginas endereadas de 0 a 511 e memria real com 10 pginas numeradas de 0 a 9. O contedo atual da memria real contm apenas informaes de um nico processo e descrito resumidamente na tabela abaixo:

Endereo fsico 1536 2048 3072 3584

Contedo Pgina virtual 34 Pgina virtual 9 Tabela de pginas Pgina virtual 6540 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

4608

Pgina virtual 10

a) Considere que a entrada da tabela de pginas contm, alm do endereo do frame,o nmero da pgina virtual. Mostre o contedo da tabela de pginas deste processo.

b) Mostre o contedo da tabela de pginas aps a pgina virtual 49 ser carregada namemria a partir do endereo real 0 e a pgina virtual 34 ser substituda pela pgina virtual 12.

c) Como o formato do endereo virtual deste sistema? d) Qual endereo fsico est associado ao endereo virtual 4613? 14.Um sistema operacional implementa gerncia de memria virtual por paginao, com frames de 2 kb. A partir da tabela abaixo, que representa o mapeamento de pginas de um processo em um determinado instante de tempo, responda: Pgina 0 1 2 3 4 5 6 Residente Sim Sim Sim Sim No No Sim Frame 20 40 100 10 50 70 1000

a) Qual o endereo fsico de uma varivel que ocupa o ltimo byte da pgina 3?b) Qual o endereo fsico de uma varivel que ocupa o primeiro byte da pgina 2? c) Qual o endereo fsico de uma varivel que tem deslocamento 10 na pgina 3? d) Quais pginas do processo esto na memria? 15. Um sistema operacional implementa gerncia de memria virtual por paginao. Considere endereos virtuais com 16 bits, referenciados por um mesmo processo durante sua execuo e sua tabela de pginas abaixo com no mximo 256 entradas. Esto representadas apenas as pginas presentes na memria real. Indique para cada endereo virtual a seguir a pgina virtual em que o endereo se encontra, o respectivo deslocamento e se a pgina se encontra na memria principal neste momento.

a) (307)10 b) (2049)10 c) (2304)10Pgina 0 Endereo fsico 8 kb41 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

1 2 3 4 5 9 11

4 kb 24 kb 0 kb 16 kb 12 kb 20 kb 28 kb

16.

Uma memria virtual possui pginas de 1024 endereos, existem 8 pginas virtuais e 4096 bytes de memria real. A tabela de pginas de um processo est descrita abaixo. O asterisco indica que a pgina no est na memria principal: Pgina virtual 0 1 2 3 4 5 6 7 Pgina real 3 1 * * 2 * 0 *

a) Faa a lista/faixa de todos os endereos virtuais que iro causar page fault.b) Indique o endereo real correspondente aos seguintes endereos virtuais 0, 1023, 1024, 6500 e 3728. 17. 18. 19. 20. 21. 22. Por que existe a necessidade de uma poltica de substituio de pginas? Compare as polticas de substituio local e global. Para que serve o bit de modificao nas tabelas de pginas e segmentos? Como o princpio da localidade viabiliza a implementao da gerncia de memria virtual por paginao? Por que programas no estruturados esto sujeitos a uma alta taxa de paginao? Descreva os algoritmos de substituio de pginas FIFO e LRU, apresentando vantagens e desvantagens. Considere um sistema com memria virtual por paginao com endereo virtual com 24 bits e pgina com 2048 endereos. Na tabela de pginas a seguir, de um processo em determinado instante de tempo, o bit de validade 1

42 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

indica pgina na memria principal e o bit de modificao 1 indica que a pgina sofreu alterao. Pgina 0 1 2 3 4 5 BV 1 1 1 0 0 1 BM 1 0 1 1 0 0 End. do Frame 30.720 0 10.240 * * 6.144

a) Quantos bits possui o campo deslocamento do endereo virtual? b) Qual o nmero mximo de entradas que a tabela de pginas pode ter? c) Qual o endereo fsico que ocupa o ltimo endereo da pgina 2? d) Qual o endereo fsico traduzido do endereo virtual (00080A)16? e) Caso ocorra um page fault e uma das pginas do processo deva ser descartada,quais pginas poderiam sofrer page out?

23.

Considere um sistema de memria virtual que implemente paginao, onde o limite de frames por processo igual a trs. Descreva para os itens abaixo, onde apresentada uma seqncia de referncias a pginas pelo processo, o nmero total de page faults para as estratgias de realocao de pginas FIFO e LRU. Indique qual a mais eficaz para cada item.

a) 1 / 2 / 3 / 1 / 4 / 2 / 5 / 3 / 4 / 3 b) 1 / 2 / 3 / 1 / 4 / 1 / 3 / 2 / 3 / 3 24.Em um sistema de memria virtual que implementa paginao, as pginas tm 4 k endereos, a memria principal possui 32 kb e o limite de pginas na memria principal de 8 pginas. Um programa faz referncia a endereos virtuais situados nas pginas 0, 2, 1, 9, 11, 4, 5, 2, 3, 1, nesta ordem. Aps essa seqncia de acessos, a tabela de pginas completa desse programa tem a configurao abaixo. As entradas em branco correspondem a pginas ausentes. Pgina 0 1 2 3 4 5 End. Fsico 8 kb 4 kb 24 kb 0 kb 16 kb 12 kb43 de 44

SISTEMAS OPERACIONAIS NOTAS DE AULA

6 7 8 9 10 11 12 13 14 15

* * * 20 kb * 28 kb * * * *

a) Qual o tamanho em bits e o formato do endereo virtual? b) O processo faz novas referncias a endereos virtuais situados na pgina 5, 15, 12,8 e 0, nesta ordem. Complete o quadro a seguir, que ilustra o processamento dessa seqncia de acessos utilizando a estratgia de remoo FIFO. Mostre o estado final da tabela de pginas.

44 de 44