Escolar Documentos
Profissional Documentos
Cultura Documentos
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).
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.
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.
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.
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.
O SO mantm um 1 bit para indicar se cada bloco da memria (ou unidade de alocao) est ocupado (1) ou livre (0). A Memria dividida em unidades de alocao. Consideraes sobre o tamanho do bloco de memria: Quanto menor a unidade de alocao, maior ser o mapa de bits. - Pequeno: necessidade de muitos bits uso ineficiente da memria. Exemplo: se tamanho do bloco = 1 byte, 1/9 da memria sero utilizados para o mapa de bits. - Grande: memria sub-utilizada, pois se o tamanho do processo no for mltiplo do tamanho da unidade de alocao, uma quantidade de memria considervel ser desperdiada no ltimo bloco. Vantagens do uso de mapa de bits:
Simplicidade: o tamanho do mapa depende apenas do tamanho da memria e das unidades de alocao.
Desvantagens:
Quanto um processo necessita de k unidades de alocao, o gerenciador de memria deve encontrar uma sequncia de k bits 0, o que se constitui um processo lento.
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.
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.
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.
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.
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.
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.
de gerenciar a memria de forma a manter as partes do programa em uso na memria principal, armazenando as demais partes em disco.