Vous êtes sur la page 1sur 15

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE CENTRO DE ENSINO SUPERIOR DO SERID CERES DEPARTAMENTO DE CINCIAS EXATAS E APLICADAS - DCEA

CURSO DE SISTEMAS DE INFORMAO DISCIPLINA DE SISTEMAS OPERACIONAIS PROF. JOO BORGES

ATIVIDADE DA IMPLEMENTAO E ANLISE DOS ALGORITMOS DE SUBSTITUIO DE PGINAS, E DO RELATRIO

FERNANDA CARDINALY DE ARAJO SILVA JOS STNIO GOMES MEDEIROS

CAIC 2011

Abstract. Page replacement algorithms directly affect the performance of computing systems that use paged virtual memory. Each algorithm has its advantage and disadvantage. In this paper I will approach from the management of memory, particularly in the mechanisms of virtual memory, to implementation and comparative analysis of page replacement algorithms FIFO (First-In First-Out) and LRU (Least Recently Used).

Resumo. Algoritmos de substituio de pginas influenciam diretamente no desempenho de sistemas computacionais que utilizam memria virtual paginada. Cada algoritmo tem a sua vantagem e desvantagem. N este trabalho irei abordar desde a gerncia de memria, particulamente nos mecanismos de memria virtual , at a implementao e a anlise comparativa dos algoritmos de substituio de pginas FIFO (First -in First-out) e LRU (Least Recently Used).

INTRODUO

Quando os programas excedem o espao de memria fsica disponvel para eles, possvel dividir o programa em pedaos chamados overlays. No entanto, isto exige que o programador seja responsvel por esta diviso. De forma a facilitar o desenvolvimento de programas, passando esta tarefa para o Sistema Operacional, foi criado o mtodo conhecido como Memria Virtual. Neste trabalho, abordaremos sobre os mecanismos de suporte memria virtual, em especial a paginao que possibilita a uma aplicao utilizar mais memria do que a fisicamente existente, nela investigaremos e implementaremos alguns de seus algoritmos de substituio de pginas que so usados para retirar pginas de um frame caso a memria fsica esteja completamente cheia.

MEMRIA VIRTUAL

A idia bsica da memria virtual permitir que programas muito maiores que a memria disponvel possam ser executados. Para isso, em 1961 Fotheringham criou o mtodo conhecido como memria virtual. Com o uso dessa memria o SO mantm as partes ativas do programa na memria e o restante em disco, sendo carregadas ou removidas da memria de acordo com as necessidades. Memria virtual uma tcnica que se utiliza da memria secundria para produzir o efeito prtico de aumentar significativamente o espao de endereamento disponvel aos programas. Essa tcnica no depende do tamanho da memria principal que continua sendo limitado para ser implementada. A memria secundria (normalmente um disco rgido) passa a servir como uma espcie de extenso da memria principal, armazenando a maior parte dos programas e dados carregados para execuo. memria principal so transferidas por vez apenas algumas partes destes programas e dados, essenciais ao momento pontual da execuo. Deste modo, cria-se dois espaos de endereamento de memria: o espao de endereamento virtual e o espao de endereamento real. Endereos virtuais so os endereos gerados pelos compiladores e linkers na implementao dos programas. Eles representam o espao completo que os programas necessitam para serem carregados, isto , o tamanho de memria que efetivamente ocupam. No entanto, a memria real ou memria principal (RAM Random Access Memory) pode ser bastante limitada, possuindo um espao de endereamento real s vezes menor at mesmo que um nico programa. Um endereo real corresponde a uma clula fsica de endereamento presente na memria principal da mquina. Obviamente, apenas parte das aplicaes carregadas no espao de endereamento virtual poder ocupar a memria real num certo instante. Por outro lado, somente os dados carregados na memria principal so processados pela CPU. Como vrias aplicaes podem estar sob execuo, concorrendo pela utilizao do processador, uma soluo encontrada foi dividir o espao total de endereamento dos programas em pequenos blocos de tamanho fixo, as chamadas pginas de memria. A implementao dessa estratgia constitui o mecanismo de paginao. Outra alternativa dividir o cdigo de uma aplicao com base em critrios lgicos, ou seja, modularizando o programa de acordo com a funo dos diversos trechos de cdigo identificados. Segmentao o nome que se d a esta segunda estratgia de particionamento de cdigo, em que

os segmentos gerados possuem tamanhos independentes e variveis. Ambos os mecanismos so importantes, sobretudo em ambientes multiusurios e multiprogramveis. Conforme o momento de execuo, parte dos dados (working set) so transferidos temporariamente para a memria principal a fim de serem processados, retornando memria secundria quando solicitados pelo sistema operacional, o qual responsvel pelo gerenciamento da memria.

Figura 1. Endereos virtuais x fsicos. A traduo feita por uma tab. de pginas.

Paginao A tcnica denominada paginao utilizada na maioria dos sistemas com memria virtual. Como sabemos, os endereos gerados pelos programas so denominados endereos virtuais e constituem o espao de endereamento virtual. Em computadores que no tem memria virtual, os endereos virtuais so idnticos aos endereos fsicos. Por outro lado, quando usamos memria virtual estes endereos diferem. Portanto, o endereo gerado pelo programa no pode ser colocado diretamente no barramento do sistema para acessar uma posio qualquer de memria. Assim, a MMU mapeia os end. virtuais em fsicos. A memria fsica dividida em blocos de tamanho fixos denominados molduras de pginas (page frames). J a memria lgica dividida em blocos de tamanho fixos denominados pginas (pages). As pginas e as molduras de pginas so sempre do mesmo tamanho. Quando um programa tenta usar uma pgina virtual que no est mapeada gerada uma interrupo da CPU para o sistema operacional a fim de buscar esta pgina na memria. Esta interrupo (trap) denominada falta de pgina (page fault). As aes desencadeadas so: o sistema operacional escolhe uma moldura de pgina (page frame) pouco usada e a salva em disco. Em seguida, carrega a pgina virtual referenciada pela instruo na moldura de pgina que foi liberada. Feito isso o sistema operacional pode reinicializar a instruo causadora da interrupo. Tabela de Pginas

A tabela de pginas montada durante o instante em que o processo carregado e servir para informar qual a pgina fisica correspondente a cada pgina lgica. Para que um programa possa ser executado corretamente necessrio que o endereo lgico especificado em cada instruo seja traduzido no endereo fisico que representa as posies reais de memria.

Figura 2. Esquema de paginao.

Conforme podemos observar na Figura 2 o endereo lgico constitudo de 2 partes: a primeira (bits de mais alta ordem) corresponde ao nmero da pgina lgica e a segunda representando o deslocamento dentro desta pgina (bits de mais baixa ordem). O nmero da pgina lgica usado para encontrar a pgina fsica correspondente atravs da tabela de pginas. Os bits de mais baixa ordem so mantidos e ajudam a constituir o endereo fsico. Para isso s utilizar os bits encontrados na tabela de pginas com os bits de deslocamento. A Figura 2 mostra como isso feito considerando o endereo lgico do byte Y2. O endereo lgico 00101 dividido em nmero de pgina lgica 001 e deslocamento 01. A entrada 001 da tabela de pginas indica que essa pgina lgica foi carregada na pgina fsica 101. Ento, unimos as duas partes e formamos o endereo fsico 10101. Geralmente, os tamanhos de pgina variam entre 512 bytes e 64 Kbytes, sendo que um valor muito utilizado o de 4 Kbytes. Os espaos de endereamento lgico podem variar de 64 Kbytes (sistemas antigos) at muitos Gbytes (mquinas atuais). J os espaos de endereamento fsico podem ser na ordem de Gbytes. Durante a paginao, qualquer pgina fsica disponvel pode ser utilizada para carregar uma pgina lgica. Por isso, no existe fragmentao externa. No entanto, pelo fato da unidade de alocao ser uma pgina, qualquer processo sempre ocupar um nmero inteiro de pginas fsicas (podendo no ocupar todo o espao da pgina) gerando com isso uma fragmentao interna. Por exemplo, imagine que um sistema utilize pginas de 4 Kbytes, e um programa P1 precise de 201 Kbytes para ser carregado e poder executar. Nesse sistema, 51 pginas sero alocadas, totalizando 204 Kbytes. Portanto, 3 Kbytes sero desperdiados (fragmentao interna). Podemos dizer que o tamanho da pgina definido pode trazer algumas vantagens e desvantagens ao sistema computacional. Portanto, importante saber definir um tamanho de pgina coerente para que o sistema possa realizar a paginao. Utilizar pginas de tamanhos maiores significa que um processo ocupar menos pginas e, portanto, a tabela de pginas ser menor e a leitura do disco ser mais eficiente. Normalmente, as pginas maiores resultam em melhor desempenho do mecanismo de gerncia de memria. Contudo, devemos saber que pginas maiores geram uma fragmentao interna maior. O tamanho das pginas normalmente fixado pelo hardware que suporta a gerncia de memria, ou seja, pela MMU.

Implementao da Tabela de Pginas A forma como a tabela de pginas implementada um fator importante e que deve ser pensado, uma vez que ela deve ser consultada a cada acesso memria. Tabelas de pginas pequenas podem ser colocadas em registradores de acesso rpido, melhorando bastante o desempenho de pesquisas pelo endereo fsico. Suponha que um PC tenha uma memria lgica para os processos de apenas 64 Kbytes e que cada pgina ocupe 8 Kbytes, ento existir apenas 8 entradas nas tabelas de pginas. O que acontece quando um processo escalonado e outro assume o processador? A tabela de pginas do processo que ser executado dever ser copiada do descritor de processo (DP) para os registradores. Tabelas de pginas muito grandes no podem ser mantidas em registradores, portanto, outra soluo deve ser pensada. Uma outra estratgia manter a tabela de pginas na prpria memria do computador. Nesta abordagem, a MMU possui dois registradores para localizar a tabela de pginas na memria. O primeiro chamado de registrador de base da tabela de pginas (Page Table Base Register, PTBR) que indica o endereo fsico de memria onde a tabela est colocada. O segundo denominado registrador de limite da tabela de pginas (Page Table Limit Register, PTLR) indica o nmero de entradas da tabela. Qual o problema dessa soluo? Agora cada acesso que um processo faz memria lgica transforma-se em dois acessos memria fsica. No primeiro acesso, a tabela de pginas consultada, e o endereo lgico transformado em endereo fsico. No segundo acesso, a memria do processo lida ou escrita. Quando processos so escalonados, os valores do PTBR e do PTLR para a tabela de pginas do processo que recebe o processador devem ser copiados do DP para os registradores na MMU. Alm disso, a memria cache deve ser esvaziada (flushed), pois ela ainda contm entradas da tabela de pgina do processo que executou antes e agora perdeu o processador. Qual uma estratgia para melhorar o desempenho desta soluo? Adicionar uma memria cache especial pode ser uma forma de reduzir o tempo de acesso memria no esquema apresentado. Esta cache ir manter as entradas da tabela de pginas mais recentemente

utilizadas. Essa memria cache interna MMU chamada de Translation Lookaside Buffer (TLB). Portanto, quando a entrada requerida da tabela de pginas est na TLB, o acesso memria lgica do processo feito com um nico acesso memria fsica, como quando registradores so utilizados. Nessa situao diz que houve um acerto (hit). Por outro lado, quando a entrada da tabela de pginas associada com a pgina lgica no est na TLB diz que ocorreu uma falta (miss). Neste caso, necessrio um duplo acesso memria fsica, como no esquema sem o cache. O procedimento adotado semelhante ao que acontece na cache convencional, ou seja, a entrada referente a pgina lgica acessada includa na TLB. Os prximos acessos j encontraro essa entrada da tabela de pginas na TLB e o acesso ser rpido.

Figura 3. Implementao da tabela de pginas com TLB.

As entradas na tabela de pginas so compostas por alguns campos que permitem localizar o endereo efetivo de cada pgina na memria principal (quando carregada) ou na memria secundria (rea de swap). As seguintes informaes so mantidas [CAS03]: 1. Nmero da pgina virtual (NPV): identifica uma nica pgina virtual correspondente entrada; de acordo com o tamanho de pgina utilizado, o endereo na memria secundria pode ser calculado. 2. Bit de presena: indica se a pgina est ou no carregada na memria principal (a pgina est carregada se o bit possui valor 1). 3. Endereo do bloco: se a pgina estiver carregada na memria principal, este campo informa o endereo fsico em que est alocada; um bloco, ou janela (frame), um conjunto de clulas da memria principal que comporta dados de uma pgina. 4. Bits de proteo: definem as permisses de acesso pgina, normalmente atravs de 2 ou 3 bits (leitura, gravao e eventualmente execuo).

5. Bit de modificao: indica se a pgina carregada na memria teve ou no seu contedo alterado; se teve, o contedo dever ser atualizado na memria secundria antes de a pgina deixar a memria principal.

Outro conceito associado a paginao o working set (conjunto de trabalho). O working set de um processo em execuo definido como o conjunto das pginas requeridas para o seu processamento durante um determinado intervalo de tempo. Por este motivo, o conjunto de trabalho representa a concretizao do princpio de localidade. Quando uma informao que ser processada no est disponvel em uma pgina da memria principal, dizemos que ocorreu uma falta de pgina. Neste momento, preciso que esta pgina seja alocada na memria para que a execuo do processo possa continuar. No entanto, se a memria j estiver cheia, uma das pginas carregadas dever ser sobreposta pela pgina que est sendo trazida da memria secundria. Portanto, dever acontecer uma substituio de pgina e, conseqentemente, ser necessrio escolher qual pgina deixar a memria. Para isso, o sistema operacional implementa um algoritmo de substituio de pgina e escolhe aquela menos importante execuo do processo e a retira da memria. Segmentao O esquema de paginao foi criado para facilitar o gerenciamento da memria. Contudo, os programadores e compiladores no so capazes de ver a memria lgica dividida em pginas, mas sim em segmentos. Dependendo do sistema a granularidade desses segmentos pode ser diferente. Por exemplo, comumente verificamos que um programa pode ser segmentado em: cdigo, dados alocados dinamicamente, dados alocados estaticamente e pilha de execuo. No entanto, alguns sistemas enxergam cada objeto ou mdulo como se fosse um segmento. Quando o sistema utiliza o esquema de segmentao, o endereo lgico tambm dividido em: nmero do segmento e deslocamento dentro do segmento (semelhante ao esquema de paginao). Os segmentos no necessariamente precisam ter o mesmo tamanho. No entanto, existe um tamanho mximo definido para os segmentos. Os endereos lgicos so traduzidos para um endereo fsico atravs de uma tabela de segmentos, que basicamente contm as mesmas informaes da tabela de pginas vista anteriormente. Essa tabela informa o local onde o segmento foi colocado em memria e qual o seu tamanho.

Figura 4. Esquema de traduo de endereos lgicos em fsico. Quando o deslocamento maior que o limite especificado na tabela de segmentos significa que o processo que est executando est tentando enderear alm do final do segmento, ou seja, fora da sua rea de memria lgica. Nesse instante ser gerada uma interrupo de proteo.

Figura 5. Exemplo de traduo de end. lgico para fsico.

SIMULADOR DE MEMRIA VIRTUAL Na pgina do simulador utilizado, consta algumas informaes sobre ele, o objetivo continuar o estudo da gesto de memria, focando agora os mecanismos associados ao suporte de memria virtual, em particular o que acontece quando ocorre uma falta de pgi na e os algoritmos de substituio de pginas. O programa permite simular as aces do hardware de paginao e da rotina de tratamento da interrupo por falta de pgina. Essa simulao feita nas seguintes condies: 1. S h um processo que tem um espao de endereamento virtual com 32 bits em que 12 bits so para o deslocamento e 20 bits para o nmero da pgina virtual. O processo poder ter no mximo 2^20 pginas virtuais (1024*1024). Cada pgina ter 2^12 (4096) bytes. A tabela de pginas simulada por um vector de registos que para cada pgina contm: o bit de validade o nmero da frame em que a pgina est carregada 2. A memria fsica est dividida em pginas fsicas ou "frames" com a mesma dimenso. O nmero de frames que o processo pode ocupar um parmetro da simulao definido na linha de comando.A tabela de frames (tabela de pginas invertida) simulada por um vector de registos que para cada frame contm: o nmero da pgina guardada na frame o bit de referncia o bit de modificao (dirty bit) a data do carregamento da pgina virtual na frame a data da ltima referncia frame 3. As referncias s pginas podem ser em leitura ou em escrita 4. A gesto das pginas feita em paginao a pedido pura. Isto significa que inicialmente o processo no ocupa nenhuma "frame" na memria fsica. As pginas vo sendo carregadas medida que vo sendo referenciadas. 5. Quando no existe nenhuma "frame" livre preciso escolher uma pgina virtual PV para ser sacrificada. A pgina PV (pgina vtima) deixa de estar carregada em memria. A escolha da pgina vtima feita por um algoritmo de substituio de pginas que pode ser definido a partir da linha de comando, a saber: Random: a frame vtima escolhida ao acaso FIFO: a frame vtima a que est h mais tempo em RAM LRU: a frame vtima a que no referenciada h mais tempo IMPLEMENTAO DOS ALGORITMOS Nos anexos deste trabalho fizemos as devidas mudanas no simulador, incluindo solues de trocas de pginas baseadas em FIFO e em LRU, no FIFO foi usada uma tcnica que ao ser chamada a funo de substituio do tipo, foi feita a remoo da pgina mais antiga, ou seja, aquela que est mais tempo na memria principal. No LRU a tcnica foi simples, foi usado um contador de uso de pgina para cada entrada que atualizado com o valor de relgio da ltima referncia a esta pgina, substitumos ento a pgina com menor valor de data. A seguir falaremos dos resultados desta experincia.

ANLISE COMPARATIVA DE ALGORITMOS Nos grficos a seguir demonstrado os resultados das modificaes no simulador , o LRU parece ser bem melhor do que o FIFO, na anlise levamos em conta o random tambm, em nossa implementao amadora d para se perceber a diferena entre os resultados mas nenhuma se aproxima ao random que em uma implementao profissional , dever ser o pior caso.

CONCLUSO Sistemas computacionais mais simples no precisam realizar nenhum tipo de gerenciamento pois, usualmente, seus programas rodam diretamente na memria principal disponvel. No entanto, esta no a situao mais comum. Na maioria dos sistemas em uso, os programas so muito maiores que a quantidade de memria principal disponvel e/ou necessrio rodar mais de um programa ao mesmo tempo. Nestes casos, a utilizao de esquemas de troca, pginas e segmentos pode ser uma alternativa. Um modelo de memria virtual, que fornece um espao de endeream ento maior do que o fsico, pode ser disponibilizado para os programadores no desenvolvimento de seus sistemas. Internamente, no entanto, o S.O. deve ser capaz de gerenciar a memria de forma a manter as partes do programa em uso na memria principal, armazenando as demais partes em disco.

REFERNCIAS BIBLIOGRFICAS CASSETTARI, H. H. Anlise da Localidade de Programas e Desenvolvimento de Algoritmos Adaptativos para Substituio de Pginas. Qualificao de Mestrado. Escola Politcnica da Universidade de So Paulo. Departamento de Engenharia de Computao e Sistemas Digitais. 2003

OLIVEIRA, R. S.; CARISSIMI, A. S. e TOSCANI, S. S. Sistemas Operacionais. Sagra Luzzatto, Porto Alegre, 2001. (Cap. 5) TANENBAUM, A. S. Sistemas Operacionais Modernos. 2 Edio. Prentice Hall, 2003. [internet] pt.wikiversity.org