Sie sind auf Seite 1von 11

Introduo aos Sistemas Operacionais/Gerncia de Memria

Da Wikiversidade < Introduo aos Sistemas Operacionais Ir para: navegao, pesquisa A maioria dos computadores trabalha com o conceito de hierarquia de memria, possuindo uma pequena quantidade de memria cache, muito rpida, uma quantidade de memria principal (RAM) e uma quantidade muito grande de memria de armazenamento em disco (HD), considerada lenta. O problema bsico para o gerenciamento de memria que os programas atuais so muito grandes para rodarem, completamente, na memria cache. O gerenciador de memria deve ser capaz de controlar parte da memria est em uso (e quais no esto), alocar memria para processos quando eles necessitam e desalocar quando eles terminam e, principalmente, gerenciar a troca entre a memria principal e o disco, quando a memria principal muito pequena para armazenar todos os processos.

Existem dois tipos de memria principal: a memria lgica e a memria fsica. A memria lgica aquela manipulada pelos programas, ela visvel para os programas; sempre que um programa necessita alocar um espao na memria esse espao alocado em memria lgica. A memria fsica a memria implementada pelos circuitos integrados nela que os espaos alocados em memria lgica vo realmente residir, portanto a memria fsica tem tamanho menor que a memria lgica, geralmente. Para isso necessrio realizar uma traduo de endereos lgicos para endereos fsicos, pois assim um programa que aloca uma memria lgica possa ter de fato uma memria fsica alocada para si. Esse processo de traduo de endereos lgicos em endereos fsicos realizado por uma unidade de gerncia de memria chamada MMU (Memory Management Unit).

ndice
[esconder]

1 Memria lgica x Memria fsica 2 Modelo de memria de processos 3 Gerenciamento Bsico de Memria o 3.1 Monoprogramao o 3.2 Monoprogramao sem troca ou paginao o 3.3 Multiprogramao o 3.4 Multiprogramao com Parties Fixas o 3.5 Multiprogramao com Parties Variveis 4 Gerenciamento de memria livre o 4.1 Gerenciamento de memria livre com mapas de bits o 4.2 Gerenciamento de memria livre com listas encadeadas 5 Memria Virtual o 5.1 Troca (Swapping) o 5.2 Paginao o 5.3 Tabelas de Pgina o 5.4 TLBs Translation Lookside Buffers Memria Associativa o 5.5 Tabelas de Pginas Invertidas o 5.6 Tamanho de pgina

5.7 Thrashing 6 Algoritmos de substituio de pginas 7 Segmentao 8 Segmentao com Paginao 9 Concluses

[editar] Memria lgica x Memria fsica


Os processos no enxergam a memria fsica, hardware usado para enderear os circuitos integrados de memria, e sim a memria lgica, que a memria capaz de ser endereada e acessada pelo conjunto de instrues do processador, sendo que cada processo possui a sua memria lgica que independente da memria lgica dos outros processos. A memria fsica implementada pelos circuitos integrados de memria, pela eletrnica do computador. Ela possui espao de endereamento fsico que o conjunto formado por todos os endereos dos circuitos integrados que formam a memria, normalmente esses endereos so em formato hexadecimal. A memria lgica possui um espao de endereamento lgico, maior que o espao de endereamento fsico, formado por todos os endereos lgicos gerado pelo processo, sendo gerado pela CPU e nico por processo. Como o processo "enxerga" endereo de memria lgico e o hardware "enxerga" endereo de memria fsico necessrio ter a converso de endereo de memria lgico para endereo de memria fsico. Esse mapeamento de endereo lgico em endereo fsico feito pela MMU, unidade de gerncia de memria. Basicamente a MMU que vai mapear os endereos lgicos gerados pelos processos nos correspondentes endereos fsicos que sero enviados para a memria. Existem duas formas bem simples de transformao do endereo lgico para o fsico:

A MMU verifica se o endereo lgico maior que o registrador limite inferior e menor que o registrador limite superior, se sim encaminha o acesso com esse endereo vlido, se no, gera uma interrupo de endereamento invlido. Nesse caso o endereo lgico igual ao endereo fsico. A MMU verifica se o endereo lgico menor que o registrador limite superior, se sim adiciona o registrador base ao endereo lgico e encaminha o acesso com esse endereo resultante, se no gera interrupo de endereamento invlido. Nesse caso o endereo lgico diferente do endereo fsico.

A MMU consiste de um chip ou uma coleo de chips.

[editar] Modelo de memria de processos


Para que um programa seja executado ele precisa ser transformado em processo(s), assim necessrio alocar o descritor de processos, alocar espao na memria para o cdigo (rea conhecida como TEXT, onde se localiza o programa principal, as funes e as bibliotecas estticas), os dados (Data, rea onde as variveis so alocadas - globais, locais estticas, buffers internos)e a pilha (que possui o HEAP, rea onde se localiza as variveis dinmicas, e o STACK, endereos de retorno de chamadas e parmetros de funes). A atribuio de endereo fsico para as reas de cdigo e reas de dados pode ser feita de trs formas: em tempo de compilao, em tempo de carga e em tempo de execuo. Em tempo de compilao o programador j faz a converso de endereo lgico em endereo fsico, pois ele tem conhecimento de qual rea da memria ira utilizar. Em tempo de carga o cdigo precisa ser relocvel de forma que todas as referncias a memria sejam corrigidas para que o endereo de carga corresponda (carregador relocador), em outras palavras no momento da carga o programa executvel interpretado e os endereos corrigidos, dispensando a MMU. Em tempo de execuo tem-se o cdigo absoluto e realizada uma relocao

dinmica usando a MMU, no sendo necessrio corrigir os endereos no momento da carga do programa em memria.

[editar] Gerenciamento Bsico de Memria


Os Sistemas de Gerenciamento de Memria podem ser divididos em duas classes: aqueles que levam e trazem processos entre a memria principal e o disco durante a execuo (fazendo troca de processos e paginao) e aqueles que mantm os processos fixos em memria primria. As prximas sees apresentam os mesmos.

[editar] Monoprogramao
A monoprogramao consiste em executar um processo por vez na memria, dessa forma todos os recursos de hardware so exclusivos para execuo do mesmo.

[editar] Monoprogramao sem troca ou paginao


Este o esquema mais simples possvel: s possvel executar um programa de cada vez, compartilhando a memria entre o programa e o S.O. Existem trs variaes para este modelo:

O SO carregado na parte inferior da memria, em RAM (Random Access Memory), e deixa a parte superior da memria disponvel para o processo do usurio. O endereamento por parte do processo usurio inicia do fim da RAM at o limite da memria. O SO carregado na parte superior da memria, em ROM (Read-Only Memory), e deixa a parte inferior da memria disponvel para o processo do usurio. O endereamento do processo usurio vai do endereo 0 ao incio da ROM. Os drives do SO so carregados em ROM (parte superior) e o restante do SO carregado em RAM (parte inferior).

Quando o sistema est organizado desta maneira, somente um processo por vez pode estar executando, desta forma esse tipo de sistema usado em aplicaes de carter muito especfico, como por exemplo sistemas de controle de temperatura ou presso.

[editar] Multiprogramao
A multiprogramao nada mais que manter diversos processos na memria, e essa memria precisa ser dividida de maneira eficiente para que possamos manter o nmero mximo de processos. Existem diversas tcnicas para gerenciar memria que variam de acordo com o hardware do processador.

[editar] Multiprogramao com Parties Fixas


A maneira mais simples de implementar a multiprogramao, em termos de memria, dividir a mesma, primeiramente em uma parte para uso do sistema operacional e outra para uso dos processos de usurios. Depois, a parte dos usurios dividida em n parties de tamanhos diferentes, porm com valores fixos. Quando um programa chega, h duas possibilidades: ele colocado em uma fila de entrada da menor partio capaz de armazen-lo ou ele colocado em uma fila de entrada nica. Com o esquema das parties de tamanho fixos, qualquer espao no ocupado por um programa perdido. Na maioria das vezes o programa a ser executado menor do que a partio alocada para ele. A partio alocada no pode ser menor que o tamanho do programa e improvvel que o tamanho do programa seja exatamente igual ao da partio alocada. Assim, muito provvel que ocorra desperdcio

de memria para cada programa alocado. Esse desperdcio chamado fragmentao interna, ou seja, perde-se memria dentro do espao alocado ao processo. H outra possibilidade de desperdcio de espao de memria, chamada de fragmentao externa. Ela ocorre quando se desperdia memria fora do espao ocupado por um processo. Por exemplo, suponha que h duas parties disponveis e o processo necessita de uma partio de tamanho maior que qualquer uma das duas livres, e ainda, menor que o total de memria livre, somando-se o tamanho de todas parties livres. Neste caso, o processo no ser executado devido ao esquema que a memria gerenciada, mesmo que exista memria total livre disponvel. Outra desvantagem de classificar os programas em entradas separadas apresentada quando uma fila para uma partio grande est vazia e filas para parties pequenas esto muito cheias. Uma possvel alternativa colocar todos os programas em uma nica fila de entrada e sempre que uma partio encontrar-se livre, alocar para o prximo programa da fila. Para no desperdiar espao pode-se realizar uma pesquisa para selecionar o programa que melhor se ajuste ao tamanho da partio. No entanto, isto pode deixar programas pequenos de fora, o que tambm indesejvel. Neste caso, interessante dispor de pelo menos uma partio pequena para programas pequenos ou criar uma regra que limite o nmero de vezes que um programa pode ser ignorado, obrigando que o mesmo seja selecionado em um determinado momento. Dois conceitos importantes devem ser introduzidos quando h ocorrncia de multiprogramao: realocao e proteo. Programas (jobs) diferentes so colocados em endereos diferentes (parties). Quando um programa vinculado, o linkeditor deve saber em que endereo o programa deve comear na memria. Como o gerenciador de memria s decide em qual partio (endereo) o programa vai executar quando este chegar, no h garantia sobre em qual partio um programa vai realmente ser executado. Este problema conhecido como realocao: modificao dos endereos especificados dentro do programa de acordo com a partio onde ele foi colocado. Outra questo importante est na proteo: programas diferentes no podem ter acesso a dados e/ou instrues fora de sua partio. Sem esta proteo, a construo de sistemas maliciosos seria facilitada. Uma possvel alternativa para ambos os problemas equipar a mquina com dois registradores especiais de hardware chamados registradores de base (RB) e registradores de limite (RL). Quando um processo agendado, o registrador de base carregado com o endereo de incio de sua partio e o registrador de limite com o comprimento de sua partio. Assim, instrues so verificadas em relao ao seu endereo de armazenamento e para verificar se o mesmo no est fora da partio. O hardware protege os RB e RL para impedir que programas de usurio os modifiquem.

[editar] Multiprogramao com Parties Variveis


Nesse modelo, o tamanho das parties so ajustados de acordo com as necessidades dos processos. Os espaos livres na memria fsica so mantidos pelo sistema operacional em uma lista, chamada de lista de lacunas. Quando um processo criado essa lista percorrida em busca de uma lacuna de tamanho maior ou igual ao requisitado pelo processo, se a lacuna possuir um tamanho maior do que o necessrio, ser criada uma nova lacuna com a poro extra, dessa forma, o processo receber o tamanho exato de que necessita. Existem quatro formas de percorrer a lista de lacunas:

First-Fit: utiliza a primeira lacuna com tamanho suficiente; Best-Fit: utiliza a lacuna que possuir a menor sobra; Worst-Fit: utiliza a lacuna que possuir a maior sobra; Circular-Fit: igual ao First-Fit, mas inicia a procura na lacuna seguinte ltima sobra.

Quando o processo termina, e a memria liberada, criada uma nova lacuna. Se essa lacuna for adjacente a outras, elas so unificadas. Com as parties variveis deixa-se de ter fragmentao interna mas continua com a fragmentao externa (espaos vazios no contguos), uma soluo para resolver este problema seria relocar as parties de forma a eliminar os espaos entre parties criando uma nica rea contgua porm essa soluo consome muito o processador e o acesso ao disco, visto que a cada acesso na memria seria necessrio verificar a possibilidade de realocao.

[editar] Gerenciamento de memria livre


Alm de gerenciar quais espaos em memria esto em uso, tambm necessrio controlar os espaos de memria livres. Existem duas tcnicas mais utilizadas para resolver este problema, estas sero vistas nas prximas sees.

[editar] Gerenciamento de memria livre com mapas de bits


Com mapas de bits, a memria dividida em unidades de alocao. Cada bit do mapa representa uma unidade de alocao, sendo que se o bit for 0, a unidade est livre; caso contrrio, a unidade est ocupada. Quanto menor for a unidade de alocao, maior ser o mapa de bits e vice-versa. O maior problema com os mapas de bits que procurar uma lacuna (seqncia de 0s) suficientemente grande para um determinado processo pode ser uma operao muito lenta.

[editar] Gerenciamento de memria livre com listas encadeadas


Neste caso, mantida uma lista encadeada com os segmentos de memria livres e encadeados. Uma possvel configurao seria manter, em cada entrada, o endereo em que inicia, o seu comprimento e, evidentemente, o ponteiro para a prxima entrada. A principal vantagem de utilizar uma lista encadeada classificada por endereo que sua atualizao simples e direta. Vrios algoritmos podem ser utilizados para encontrar uma lacuna de memria para alocao de um processo: 1. Primeiro ajuste: varre a lista desde o incio e aloca no primeiro espao (lacuna) suficientemente grande; 2. Prximo ajuste: varre a lista da posio atual e aloca no primeiro espao suficientemente grande; 3. Melhor ajuste: varre a lista completamente e aloca no espao que gerar a menor lacuna de memria; 4. Pior ajuste: varre a lista completamente e aloca no espao que gerar a maior lacuna de memria disponvel, de modo que a lacuna resultante possa ser suficientemente grande para ser til; 5. Ajuste rpido: mantm diversas listas separadas para os tamanhos de processos mais comuns.

[editar] Memria Virtual


A base do funcionamento da Memria Virtual o Princpio da Localidade que estabelece que h uma tendncia que os futuros endereos de memria de instrues e dados sejam prximos a endereos de memria recentemente acessados. Esse comportamento se deve as caractersticas peculiares aos programas, que frequentemente fazem uso de endereos em sequncia (vetores), localizados em blocos de cdigo bem definidos e frequentemente invocados (funes), ou de cdigos repetitivos (laos de repetio).

A ideia bsica da memria virtual que o tamanho combinado do programa, dos seus dados e da pilha pode exceder a quantidade de memria fsica disponvel para ele, ou seja, neste caso, a simples troca, vista anteriormente, no resolveria o problema. O Sistema Operacional, ento, mantm partes do programa atualmente em uso, em forma de pginas ou segmentos, na memria principal e o restante em disco. Essas pginas/segmentos so "trocados" entre memria principal e secundria conforme o SO as solicita, conforme a demanda do programa. A memria virtual tambm pode trabalhar em um sistema de multiprogramao, com pedaos de vrios programas na memria simultaneamente. Enquanto um programa est esperando parte dele prprio ser trazido para a memria (ele fica esperando a E/S e no pode executar) a CPU pode ser dada a outro processo, assim como em qualquer sistema de multiprogramao. Para a implementao desta tcnica, alguns recursos mnimos so necessrios: localizao da pgina atravs do hardware MMU, carga de pgina, substituio de pgina e rea de troca, partio ou arquivo especial de troca (swap ou pgina) destinada a armazenar pginas. Muitos sistemas de Memria Virtual utilizam uma tcnica denominada paginao, vista mais adiante.

[editar] Troca (Swapping)


Em algumas situaes no possvel manter todos os processos na memria e uma soluo para essas situaes o mecanismo conhecido como swapping (troca). A gerncia de memria reserva uma rea do disco para esse mecanismo, que utilizada para receber processos da memria. A execuo desse processo suspensa, com isso dito que o mesmo sofreu uma swap-out. Mais tarde, esse mesmo processo ser copiado do disco para a memria, mecanismo conhecido como swap-in. Esse mecanismo de trocas de processos no disco tem como objetivo permitir que o sistema operacional consiga executar mais processos do que caberia na memria. Esse processo gera um grande custo de tempo de execuo para os programas. Fazer a cpia do processo da memria para o disco e depois fazer o inverso demorado.

[editar] Paginao
O espao de endereo virtual dividido em unidades chamadas pginas. As unidades correspondentes na memria fsica so chamadas molduras de pgina (ou quadros). As pginas e as molduras (quadros) tm sempre exatamente o mesmo tamanho. No espao fsico (memria) tem-se vrias molduras de pgina. Por exemplo, podem existir 05 pginas situadas no espao de endereo virtual que so mapeadas na memria fsica. No entanto, o espao de endereo virtual maior que o fsico. As outras pginas no so mapeadas. No hardware real, um bit presente/ausente em cada entrada monitora se a pgina mapeada ou no. Quando um programa tenta utilizar uma pgina no mapeada em uma moldura, a MMU detecta o acontecimento (que a pgina no est mapeada) e gera uma interrupo, passando a CPU para o Sistema Operacional. Tal interrupo chamada falha de pgina. O S.O., ento, seleciona uma moldura de pgina pouco utilizada e grava o seu contedo de volta ao disco, substituindo-a pela pgina requisitada. Quanto forma como a paginao pode ser implementada, podemos considerar a paginao simples e a paginao por demanda. Na primeira, todas as pginas lgicas do processo so mapeadas e carregadas para a memria fsica, isso supondo-se que o espao de endereamento de memria para um processo tenha o tamanho mximo igual capacidade da memria fsica alocada para processos. No caso da paginao por demanda, apenas as pginas lgicas efetivamente acessadas pelos processo so carregadas. Nesse caso, uma pgina marcada como invlida na tabela de pginas de um processo pode tanto significar que a pgina est fora do espao lgico de endereamento do processo ou que simplesmente a pgina

ainda no foi carregada. Para descobrir qual das situaes a verdadeira basta conferir o descritor de processo, que contm os limites de endereamento lgico do processo em questo.

[editar] Tabelas de Pgina


O propsito de tabelas de pgina mapear pginas virtuais em molduras de pgina. No entanto, existem duas questes que devem ser consideradas:

A tabela de pginas pode ser extremamente grande, sendo que cada processo necessita de sua prpria tabela de pginas; O mapeamento deve ser rpido: o mapeamento do virtual para o fsico deve ser feito em cada referncia da memria, o que pode ocorrer diversas vezes em uma nica instruo,no devendo tomar muito tempo para no se tornar um gargalo na execuo da instruo.

Neste caso, h a necessidade de um mapeamento de pginas rpido e grande. Existem duas formas bsicas de projetar tabelas de pginas: 1. ter uma nica tabela de pginas, atravs de uma matriz de rpidos registradores de hardware, com uma entrada para cada pgina virtual, indexada pelo nmero da pgina. Esta uma soluo cara se a tabela de pginas grande; 2. manter a tabela de pginas inteiramente na memria principal, sendo que o hardware precisa de apenas um registrador que aponta para o incio da tabela de pginas. Esta ltima soluo possui algumas variaes que tm desempenho melhor. Uma das propostas que busca evitar o problema de ter enormes tabelas de pginas na memria todo tempo a de Tabelas de Pginas Multinvel. Neste caso, existe uma tabela de primeiro nvel e diversas tabelas de segundo nvel. O importante aqui que somente as tabelas mais utilizadas esto presentemente na memria. As demais se encontram em disco. Apesar de permitir um espao de endereamento muito grande, o espao ocupado de memria principal muito pequeno. O sistema de tabela de pginas de dois nveis pode ser expandido para trs, quatro ou mais nveis, sendo que nveis adicionais do mais flexibilidade, mas a complexidade da implementao acima de trs nveis dificilmente vale a pena. Em relao aos detalhes de uma nica entrada de uma tabela de pginas, seu arranjo pode depender da mquina, mas os tipos de informao usualmente so os mesmos. O campo mais importante o nmero da moldura de pgina, pois o objetivo do mapeamento de pginas localizar este valor. Ao lado dele, tem-se o bit de presente/ausente. Se este bit for 1, significa que a entrada vlida e pode ser utilizada. Se for 0, a pgina virtual a que esta entrada pertence no est atualmente na memria. Ao acessar uma entrada da tabela de pginas com este bit configurado como zero ocorrer uma falha de pgina. Os bits "proteo" informam que tipos de acesso so permitidos. Em sua forma simples, este campo contm apenas um bit, com 0 para leitura/gravao e 1 par leitura somente. Um arranjo mais sofisticado manter 3 bits, cada um para habilitar leitura, gravao e execuo da pgina. Os bits "modificada" e "referenciada" monitoram a utilizao da pgina. Ambos os bits tem como objetivo auxiliar no momento da substituio de pginas. O ltimo bit permite que o cache seja desativado para a pgina, recurso importante para pginas que so mapeadas em registradores de dispositivo em vez da memria. Alguns bits auxiliares so, normalmente, adicionados na tabela de pginas para facilitar na substituio de pginas quando a memria fsica estiver cheia e for necessrio retirar uma pgina lgica da memria fsica para alocar outra pgina lgica. Tem-se o bit de modificao (dirty bit) assim que a pgina for carregada tem valor zero se a pgina for alterada, na memria fsica, altera-se o valor para 1, portanto se a pgina for a pgina vtima e o bit de modificao for zero no ser necessrio fazer a cpia da pgina lgica em memria para a pgina lgica em disco pois as duas so iguais. Bit de referncia: zero assim

que a pgina lgica alocada na pgina fsica, se a pgina for acessada altera o valor para um (a MMU altera o valor). Bit de trava: usado em pginas que no podem sair da memria fsica, o Sistema Operacional "tranca" uma pgina lgica na memria fsica ativando esse bit.

[editar] TLBs Translation Lookside Buffers Memria Associativa


A TLB, tambm conhecida como memria associativa, um dispositivo de hardware cujo propsito mapear endereos virtuais em endereos fsicos sem passar pela tabela de pginas. Usualmente, ela faz parte da MMU. Ela constitui-se de um banco de registradores que armazenam um pequeno nmero de entradas, muito rpidas, contendo as tabelas de pginas mais utilizadas. Quando um endereo virtual enviado a MMU, ela primeiramente verifica se o seu nmero de pgina virtual est presente na TLB. Se o resultado for positivo (hit), a moldura de pgina tomada diretamente da TLB sem a necessidade de passar pela tabela de pginas na memria (mais lento). Caso contrrio (miss), a pesquisa feita normalmente na tabela de pginas presente na memria. Ento, uma das entradas removida da TLB e a entrada da tabela de pginas pesquisada colocada em seu lugar. A TLB melhora bastante o desempenho no acesso tabela de pginas, visto que registradores so muito mais rpidos que a memria RAM. Suas desvantagens esto em seu custo (registradores so caros), seu tamanho limitado e o fato de existir uma nica TLB na MMU, sendo esta compartilhada por todos os processos. Para calcularmos o desempenho da TLB, podemos tomar h como taxa de acerto (taxa em que a pgina necessria estar na TLB). Ento o erro seria 1-h. Sendo assim, a tempo de acesso hit (tempo necessrio para pegar a pgina da TLB) dada pelo tempo de acesso TLB mais o tempo de acesso memria uma nica vez. Enquanto o tempo de acesso miss (quando falta a pgina na TLB) dada pelo tempo de acesso TLB mais o tempo de dois acessos memria. O tempo de acesso mdio dado pelo tempo de acesso hit multiplicado por h somado do tempo de acesso miss multiplicado por (1-h). Resumindo em frmulas, temos:

TacessoHit = TacessoTLB + TacessoMemoria TacessoMiss = TacessoTLB + TacessoMemoria + TacessoMemoria TacessoMedio = h x TacessoHit + (1-h) x TacessoMiss

A taxa de acerto (h) depende do tamanho da TLB e do algoritmo que a controla, mantendo as pginas mais utilizadas.

[editar] Tabelas de Pginas Invertidas


Outra abordagem para trabalhar com pginas manter uma tabela onde cada entrada representa uma moldura de pgina ao invs de um endereo virtual. Desta forma, a entrada deve monitorar qual pgina virtual est associada quela moldura de pgina. Embora as tabelas de pginas invertidas economizem quantidade significativas de espao (pelo menos nas situaes em que o espao de endereo virtual muito maior que a memria fsica), elas tem a desvantagem de que o mapeamento (traduo) do endereo virtual para o fsico mais complexo e potencialmente mais lento. Uma forma de facilitar a traduo do virtual para o fsico a utilizao da TLB pesquisada por software. A pesquisa pode ser feita a partir de um encadeamento de pginas pginas virtuais que possuam um mesmo endereo hash.

[editar] Tamanho de pgina


Um ponto do qual o projetista deve se preocupar com o tamanho da pgina. Conforme visto anteriormente, se esse tamanho de pgina for grande, pode ocorrer de o processo utilizador no ocupar

todo o espao a ele destinado. Se a pgina tiver um tamanho demasiadamente pequeno, a tabela de pginas ser muito grande. possvel uma modelagem matemtica. Considere que cada processo tenha tamanho de s bytes, e cada pgina tenha tamanho de p bytes. A tabela de pginas ter um espao de e bytes por entrada. Assim, o numero de pginas que um processo precisar de s/p. O espao que esse processo ocupa na tabela de pginas s*e/p. O tamanho perdido na ltima pgina devido a fragmentao interna ser de p/2. Assim, haver um custo de s*e/p + p/2 da tabela de pginas. Para que o tamanho da pgina seja ideal, o custo ser zero. Dessa forma, derivando a expresso anterior e igualando a zero obtemos que o tamanho ideal de pgina de s*e*sqrt(2).

[editar] Thrashing
Estado no qual o sistema operacional ao invs de executar instrues efetivas "gasta" tempo efetuando a troca de pginas entre memria fsica e memria lgica, em outras palavras desperdia um tempo significante trazendo ou removendo pginas da memria. Para o usurio a sensao que o sistema est travado ou congelado e para o hardware h um significante acesso ao disco ao invs de processamento.

[editar] Algoritmos de substituio de pginas


Como visto anteriormente, sempre que uma pgina (endereo virtual) no estiver em uma moldura de pgina, uma interrupo ocorre e ela deve ser carregada para uma moldura antes de ser executada. No entanto, alguma pgina que est atualmente em uma moldura deve ser retirada (gravada em disco). Veja que o algoritmo escolhido afeta diretamente o desempenho do sistema como um todo, pois "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 em seguida."[R. da S. Oliveira, A. da S. Carissimi e S. S. Toscani; Sistemas Operacionais 2 ed] Os algoritmos de substituio de pginas se preocupam em escolher a melhor pgina a ser retirada da moldura. Existem vrias alternativas:

algoritmo de substituio de pgina timo: deve ser retirada a pgina que s ser referenciada o mais tarde possvel. Apesar de, teoricamente, ser um algoritmo interessante, extremamente difcil prever quando uma pgina ser referenciada; algoritmo de substituio de pgina no recentemente utilizada(NRU): o S.O. e o hardware mantm uma coleo de estatsticas sobre as pginas referenciadas e/ou modificadas (atravs dos bits de referncia e modificao das entradas da tabela de pginas) e do preferncia para a troca de pginas no referenciadas e/ou no modificadas; algoritmo de substituio de pgina primeira a entrar, primeira a sair (FIFO first-in first-out): a pgina mais antiga removida.No entanto, pode estar sendo removida uma pgina bastante utilizada; algoritmo de substituio de pgina de segunda chance(SC): uma modificao do algoritmo FIFO, que busca no substituir uma pgina antiga e, no entanto, bastante utilizada. A soluo inspecionar o bit R (referenciada) da pgina mais antiga; se o bit for 1 (foi referenciada) o bit ser limpo e a pesquisa continua. Se todas as pginas tiverem sido referenciadas, o algoritmo FIFO acaba sendo executado e a pgina mais antiga (que agora estar com o bit R limpo) ser substituda; algoritmo de substituio de pgina menos recentemente utilizada (LRU least recently used): a idia que as pginas que foram intensamente utilizadas nas ltimas instrues provavelmente sero utilizadas de forma intensa no futuro prximo. Desta forma, deve ser removida a pgina que no foi utilizada por mais tempo. algoritmo de substituio de pgina relgio: O algoritmo SC, apesar de mais eficiente do que algoritmo FIFO, reinsere pgimas no final da lista constantemente. Uma soluo para isso q a

lista seja ordenada em uma circularmente tal como um relgio. O ponteiro do relogio aponta para a pagina mais antiga e assim que ocorrer uma falta a pagina mais antiga inspecionada. Se o bit R dessa pagina for 0 ele substituida, se no esse bit setado como 0 e o ponteiro aponta para a proxima pagina mais antiga. Esse proesso ento repetido at a proxima pagina com o bit 0 ser encontrada. algoritmo de substituio de pgina menos recentemente utilizada(MRU):Trabalha de forma oposta ao algoritmo otimo, pois h a possibilidade de que as paginas que no foram referenciadas continuem no sendo referenciadas. A tarefa de implementa-l trabalhosa mas possivel. Ele pode ser implementado de uma maneira mais simples com um contador de 64-bits que incrementado automaticamente aps cada intruo e a tabel de paginas deve ter um campo extra para armazenar o valor do contador. O valor ento armazenado neste campo correpondente pagina que acabou de ser refernciada. Quando o corre a falta o S.O. examina esse campo e substitui a pagina que tiver o menor deles.Pode-se tambem implementalo com o auxlio de um hardware especial.

[editar] Segmentao
A memria virtual apresentada anteriormente unidimensional, ou seja, os endereos virtuais vo de 0 at algum valor mximo. No entanto, em alguns casos, ter dois ou mais espaos de endereos virtuais separados uma estratgia interessante. A segmentao prove mquina vrios espaos de endereo completamente independentes, chamados segmentos, liberando o programador da tarefa de gerenciar a expanso e a contrao de tabelas, da mesma forma que a memria virtual elimina a preocupao de organizar o programa em overlays. Os comprimentos de cada segmento podem ser diferentes e podem variar durante a execuo. Como cada segmento constitui um espao de endereamento completamente independente e diferente, eles podem aumentar ou encolher sem afetar um ao outro. Para especificar um endereo neste tipo de memria segmentada, o programa deve fornecer um endereo de duas partes: um nmero de segmento e o endereo dentro do segmento. importante salientar que cada segmento pode conter vrias pginas, logo, toda a discusso apresentada anteriormente sobre paginao continua vlida aqui. Outra questo fundamental que, diferentemente da paginao, que executada inteiramente pelo S.O., os segmentos so entidades lgicas das quais o programador est ciente e as quais ele pode utilizar como qualquer entidade lgica. Um segmento pode conter um procedimento ou uma matriz, ou uma pilha, mas normalmente ele no contm uma mistura de tipos diferentes. Como cada segmento forma uma entidade lgica da qual o programador est ciente (tal como pilha, procedimentos, etc.) segmentos diferentes podem ter tipos de proteo diferentes: possvel especificar que um procedimento s pode ser executado (sendo proibido ler ou armazenar nele), dados podero ser lidos e gravados e assim por diante. Este tipo de proteo til para detectar erros de programao. A proteo na memria segmentada importante porque o usurio est ciente do que est em cada segmento. Este modelo difcil de aplicar a paginao, pois a paginao invisvel ao programador (que no tem como saber de antemo em que pgina ou moldura um determinado pedao de programa est), o que no possibilita a separao dos tipos em cada pgina. Uma das possibilidades da segmentao que ela pode facilitar o compartilhamento de procedimentos e/ou dados entre vrios processos. Um exemplo uma biblioteca compartilhada. Neste caso, os procedimentos desta biblioteca permanecem em um nico segmento que pode ser utilizado por diversos programas (processos), sem que cada um precise possu-la em seu espao de endereo. A implementao da segmentao difere da paginao porque as pginas tm tamanho fixo e os segmentos no. A substituio dos processos gera lacunas fazendo com que a memria se transforme em um tabuleiro de xadrez, formado por segmentos e lacunas, que pode ser tratado com compactao. No entanto, se os segmentos so grandes pode ser impossvel mant-los na memria principal em sua totalidade (segmentao pura). Neste caso, pode ocorrer uma segmentao com paginao: o espao

lgico dividido em segmentos, este so divididos em pginas lgicas sendo que cada segmento ter uma tabela de pginas associada. A segmentao com paginao pode ser implementada de formas diferentes dependendo do sistema computacional. No Pentium, por exemplo, duas tabelas so utilizadas para a implantao da segmentao: a LDT (Local Descriptor Table) e a GDT (Global Descriptor Table). Cada programa tem sua prpria LDT, mas h uma nica GDT compartilhada por todos os programas no computador. A LDT descreve segmentos locais para cada programa e a GDT descreve segmentos do sistema, incluindo o prprio S.O. Com a paginao ativada, os endereos gerados so considerados virtuais e o mapeamento para o endereo fsico ocorre como explicado anteriormente.

[editar] Segmentao com Paginao


A segmentao com paginao vem como uma soluo aos problemas da segmentao e da paginao.Utilizando o meio termo entre os dois mtodos combinaremos suas vantagens:

A fragmentao interna da paginao reduzida pela segmentao. A fragmentao externa da segmentao eliminada pela paginao. A paginao passaria de forma invisvel ao programador. A segmentao ofereceria a diviso do processo em mdulos(segmentos). Teriamos a facilidade do compartilhamento e proteo da memria pela segmentao.

Basicamente,teriamos um segmento composto por um nmero fixo e reduzido de bytes(pginas). A desvantagen seria o uso de 2 tabelas(segmentao e a de paginao) e devido as pginas serem menores teriamos que a tabela de paginao seria maior.

[editar] Concluses
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 endereamento 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.