Baixe o app para aproveitar ainda mais
Prévia do material em texto
CCT0011 – Sistemas Operacionais Aula 09 – Gerência de Memória (Parte 2) Sistemas Operacionais Conteúdo da Aula Funções Espaço de Endereçamento Físico Espaço de Endereçamento Lógico Sistemas Operacionais Técnica de Overlay Enquanto na alocação contígua simples os programas estão limitados ao tamanho da área disponível na memória principal para o usuário, na técnica de overlay os programas são divididos em módulos, deforma que seja possível a execução independente de cada módulo, utilizando uma mesma área da memória. Memória Principal Cadastramento Impressão Sistema Operacional2 Kb 3 Kb 4 Kb 4 Kb 2 Kb 2 Kb 1 Kb Módulo principal Área de overlay Área livre Área não utilizada Sistemas Operacionais Técnica de Overlay Um exemplo de overlay seria um programa que consista em um módulo principal e outros dois módulos independentes, um correspondente ao cadastro e outro, à impressão. Quando o programa é carregado, apenas o módulo principal é introduzido na memória, os demais aguardam em memória secundária. Quando um dos outros módulos for referenciado pelo módulo principal, aquele será carregado na memória principal, na área de overlay. Sistemas Operacionais Técnica de Overlay A definição das áreas de overlay é feita pelo próprio programador, através de comandos específicos da linguagem de programação. • O tamanho da área de overlay deve ser igual ou maior ao tamanho do maior módulo. • Como vantagem, a técnica de overlay possibilita um melhor aproveitamento da memória principal. • Sua utilização exige cuidado, pois pode trazer implicações tanto na manutenção como no desempenho das aplicações, devido à possibilidade de transferências excessivas dos módulos entre a memória principal e a memória secundária. Sistemas Operacionais Swapping Técnica aplicada à gerência de memória para programas que esperam por memória livre para serem executados. A técnica de swapping pode ser aplicada em sistemas com memória virtual, permitindo aumentar o número de processos que compartilham a memória principal e, consequentemente, o grau de multiprogramação do sistema. Quando existem novos processos para serem executados e não há espaço suficiente na memória principal para alocação, o sistema utiliza o swapping, selecionando um ou mais processos para saírem da memória e oferecer espaço para novos processos. Sistemas Operacionais Swapping O sistema escolhe e retira os processos da memória principal para a memória secundária (swap out), onde as páginas ou segmentos são gravados em um arquivo de swap (swap file). Com os processos salvos na memória secundária, os frames ou segmentos alocados são liberados para novos processos. Posteriormente, os processos que foram retirados da memória devem retornar para a memória principal (swap in) para serem novamente executados. Sistemas Operacionais Swapping • O processo precisa estar na memória para ser executado; • Se não há mais espaço em memória é necessário fazer um rodízio de processos em memória; • Prioriza a retirada da MP de processos com menores chances de ser executado; • Um processo pode ser temporariamente movido para fora da memória (backing store) e então trazido de volta para a memória para continuar a execução . Memória Principal Memória Principal Sistema Operacional Sistema Operacional Programa A Programa A Programa G Área Livre Swap in Swap out Arquivo de Swap Programa E Programa E Programa B Programa H H B B Sistemas Operacionais Swapping Sistema operacional mantém uma fila de processos que estão prontos para executar, que possuem imagens da memória em disco. Para a implementação da técnica é essencial que o S.O. execute relocação dinâmica de programas. Sistemas Operacionais Gerência de Memória Virtual É uma técnica eficiente e poderosa de gerência que combina memória principal e secundária dando a ilusão de existir um espaço muito maior que a capacidade da MP. O conceito de memória virtual fundamenta-se em não vincular o endereçamento necessário ao programa aos endereços físicos da memória principal deixando de estar limitados a ela. Outra vantagem é a possibilidade de um maior número de processos compartilhando a MP, já que apenas partes de cada processos estarão residentes. Sistemas Operacionais Gerência de Memória Virtual Existe uma relação muito estreita entre a gerência de memória virtual e a arquitetura de hardware. Por motivos de desempenho é comum que algumas funções da gerência sejam implementadas no hardware. Sistemas Operacionais Espaço de Endereçamento Virtual O conceito de memória virtual é semelhante a ideia de um vetor. Quando um programa faz referência a um elemento do vetor, não há preocupação em saber a posição de memória daquele dado. O compilador se encarrega de gerar instruções que implementam esse mecanismo. Um programa no ambiente de memória virtual não faz referência a endereços físicos de memória (endereços reais), mas a endereços virtuais. O espaço de endereçamento virtual (endereços virtuais) não tem nenhuma relação com o espaço de endereçamento real, permitindo que o programa faça referência a endereços virtuais que estejam fora dos limites da memória principal. Sistemas Operacionais Espaço de Endereçamento Virtual Memória Virtual Memória Principal Mapeamento . . . . . . Endereço Físico 500 501 502 503 504 . . . 599 VET [1] VET [2] VET [3] VET [4] VET [5] . . . . . . VET [100] O mecanismo de tradução de um endereço virtual para endereço físico é denominado mapeamento. Sistemas Operacionais Mapeamento O processador apenas executa instruções e referencia dados residentes no espaço de endereçamento real. Por esse motivo a necessidade de tradução dos endereços virtuais para os endereços reais. A unidade de gerência de memória (Memory Management Unit - MMU) é a parte do hardware responsável pela tradução dos endereços junto com o S.O.. Tabelas de mapeamento são estruturas exclusivas para cada processo relacionando os endereços virtuais às suas posições reais. Essas tabelas mapeiam blocos de dados, cujo tamanho determina o número de entradas existentes nas tabelas de mapeamentos. Sistemas Operacionais Mapeamento Quanto maior o bloco de dados menor o número de entradas na tabela de mapeamento e menor espaço na memória. Os sistemas operacionais podem trabalhar com os seguintes tipos de blocos; • Blocos de tamanho fixo Técnica da paginação. • Blocos de tamanho variável Técnica da segmentação • Implementar as duas técnicas (paginação e segmentação) Sistemas Operacionais Memória Virtual por Paginação A paginação permite que o programa possa ser espalhado por áreas não contíguas de memória. Define que os espaços de endereçamento virtual e real, são divididos em blocos de mesmo tamanho chamados de páginas virtuais e páginas reais (ou frames), respectivamente. O programa é carregado página a página, cada página lógica ocupa uma página física e as páginas físicas não são necessariamente contíguas. Não existe fragmentação externa, porém existe fragmentação interna. Sistemas Operacionais Memória Virtual por Paginação Sistemas Operacionais Memória Virtual por Paginação Cada processo possui sua própria tabela de páginas e cada página virtual uma entrada na tabela de páginas com informações do mapeamento para localizar o frame correspondente. O endereço virtual é formado por pois campos: • Número da página virtual (NPV) - usado como um índice para a tabela de páginas que contém os endereços base de cadapágina em memória. • Deslocamento - que indica a posição do endereço virtual em relação ao início da página na qual se encontra. Sistemas Operacionais Memória Virtual por Paginação O endereço físico é obtido combinando-se o endereço do frame, localizado na tabela de páginas, com o deslocamento, contido no endereço virtual. Os espaços de endereçamento dos processos não são relacionados de modo linear com a memória física. Cada vez que são usados, os endereços virtuais são convertidos pela MMU para endereços reais. Sistemas Operacionais Memória Virtual por Paginação A tabela de páginas reside em memória e cada entrada da tabela dá informação sobre o estado das páginas do processo. A ETP (entrada na tabela de páginas) também possui a informação (valid bit) que indica se uma pagina está ou não na memória principal. Sistemas Operacionais Memória Virtual por Paginação Se a unidade de gerência de memória identifica que o endereço referenciado não está na MP (page fault) o sistema transfere a memória da memória secundária para a MP (page in ou paginação). Sistemas Operacionais Memória Virtual por Paginação O bit de validade: 1 ou TRUE se a página está na memória 0 ou FALSE se a página não está na memória. As páginas do processo podem ser transferidas para a memória por demanda, levando apenas o que é necessário para a execução do programa ou por paginação antecipada, onde o sistema tenta prever as páginas que serão necessárias à execução do programa. Exemplo: Um programa que ocupe 21kb, em um sistema que tenha o tamanho de página 4 kb, será alocado em 6 páginas resultando em uma fragmentação interna de 3kb. Sistemas Operacionais Memória Virtual por Paginação O número de page faults gerado por um processo em um determinado intervalo de tempo é definido como taxa de paginação do processo. A referencia que gera um page fault exige que a página seja transferida do disco para a memória, requerendo operação de E/S e colocando o processo em estado de bloqueio até que a solicitação seja atendida. O overhead gerado pelo mecanismo de paginação é inerente da gerência de memória virtual, porém se a taxa de paginação dos processos atingir valores elevados, o excesso de operações de E/S poderá comprometer o desempenho do sistema. Sistemas Operacionais Paginação Sistemas Operacionais Politica de Busca de Páginas A política de busca de páginas determina quando uma página deve ser carregada para a memória. Basicamente, existem duas estratégias para este propósito: • Paginação por demanda as páginas dos processos são transferidas da memória secundária para a principal apenas quando são referenciadas. • Paginação antecipada o sistema carrega para a memória principal, além da página referenciada, outras páginas que podem ou não ser necessárias ao processo ao longo do seu processamento. Sistemas Operacionais Tamanho da Página O tamanho da página está associado a arquitetura de hardware e varia de acordo com o processador (entre 512 e 16 Mbytes). Tabelas mapeiam blocos de dados, cujo tamanho determina o número de entradas existentes na tabela de mapeamento. Sistemas Operacionais Tabela de Páginas Quanto maior o bloco, menos entradas nas tabelas de mapeamento e consequentemente, tabelas de mapeamento que ocupam um menor espaço de memória. Suponha uma máquina de 32 bits de endereçamento, com páginas de 4k. 232 endereços virtuais possíveis Páginas de 4k utilizam 12 bits 2 12 = 4096 = 4k (tamanho da página, deslocamento) 32 -12 bits = 20 220 entradas na tabela de páginas (número de páginas). Se cada entrada ocupasse 4 bytes, poderíamos ter tabelas de páginas de 4Mb por processo (2^20 x 4). Sistemas Operacionais Paginação em Múltiplos Níveis Num sistema baseado em paginação, a tabela de páginas pode tornar-se muito grande e originar gastos excessivos de memória. Uma boa solução para contornar o problema apresentado é a utilização de tabelas de páginas em múltiplos níveis. Sistemas Operacionais Paginação em Múltiplos Níveis Na paginação a 2-níveis existe uma tabela diretório, onde cada entrada aponta para uma tabela de página. Neste caso, podemos dividir o NPV em duas partes: Número da página virtual de nível 1 (NPV1) Número da página virtual de nível 2 (NPV2) O NPV1 permite localizar a tabela de páginas na tabela diretório; por sua vez, o NPV2 permite localizar o frame desejado na tabela de páginas. Sistemas Operacionais Paginação em Múltiplos Níveis Utilizando-se o exemplo anterior, é possível que existam 1024 tabelas de páginas para cada processo. A grande vantagem da paginação em múltiplos níveis é que apenas estarão residentes na memória principal as tabelas realmente necessárias aos processos, reduzindo, dessa forma, o espaço ocupado na memória. Sistemas Operacionais Paginação em Múltiplos Níveis Em uma arquitetura de 64 bits, a estrutura em dois níveis já não é mais adequada devido ao espaço de endereçamento de 2^64. Considerando páginas de 4 k endereços, NPV2 com 10 bits e NPV1 com 42 bits, teríamos tabelas com 2^42 entradas. Novamente a solução passa por dividir a tabela diretório, criando uma estrutura em três níveis. Por exemplo, NPV1 com 32 bits, NPV2 com 10 bits e NPV3 com 10 bits. Sistemas Operacionais Paginação em Múltiplos Níveis Sistemas Operacionais Paginação em Múltiplos Níveis Sistemas Operacionais Trashing Trashing pode ser definido como sendo a excessiva transferência de páginas entre a memória principal e a memória secundária. Esse problema está presente em sistemas que implementam tanto paginação como segmentação e faz com que o processo passe mais tempo esperando por páginas que realmente sendo executado. O monitoramento de memória pode ser realizado por meio de estatísticas que permitem medir o fluxo de páginas da memória do sistema para os dispositivos de armazenamento de massa. Altas taxas de transferência entre esses dispositivos podem significar que o sistema tem pouca memória e acaba gastando mais recursos do sistema para mover páginas para dentro e para fora da memória do que rodar aplicações. Sistemas Operacionais Trashing Na memória virtual por paginação, o trashing ocorre em dois níveis: • No nível do processo a excessiva paginação ocorre devido ao elevado número de page faults gerado pelo programa em execução. Esse problema faz com que o processo passe mais tempo esperando por páginas que realmente sendo executado. • No nível do sistema ocorre quando existem mais processos competindo por memória principal que espaço disponível. Nesse caso, o primeiro passo é a redução do número de páginas de cada processo na memória. Caso a redução não seja suficiente, o sistema inicia o swapping, retirando processos da memória principal para a memória secundária. Se esse mecanismo for levado ao extremo, o sistema passará mais tempo realizando swapping que atendendo aos processos. Sistemas Operacionais Working Set O conceito de working set surgiu com o objetivo de reduzir o problema do trashing e está relacionado ao princípio da localidade. Existem dois tipos de localidades que são observados durante a execução da maioria dos programas: • A localidade espacial é a tendência de que após uma referência a uma posição de memória sejam realizadas novas referências a endereços próximos. • A localidade temporal é a tendência de que após a referência a uma posição de memória esta mesma posição seja novamente referenciada em um curto intervalo de tempo. Sistemas Operacionais Working Set O conceito de working set é definido como sendo o conjunto das páginas referenciadas por um processo durante determinado intervalo de tempo.A figura ilustra que no tempo t2, o working set do processo, W(t2, Dt), são as páginas referenciadas no intervalo Dt (t2 – t1), isto é, as páginas P2, P3 e P8. O intervalo de tempo Dt é denominado janela do working set. Sistemas Operacionais Working Set Podemos observar, então, que o working set de um processo é uma função do tempo e do tamanho da janela do working set e dentro da janela, o número de páginas distintas referenciadas é conhecido como tamanho do working set. Sendo assim working set do processo no instante t2, corresponde às páginas P2, P3 e P8, e o tamanho do working set é igual a três páginas. Sistemas Operacionais Memória Virtual por Segmentação Memória virtual por segmentação é a técnica de gerência de memória onde o espaço de endereçamento virtual é dividido em blocos de tamanhos diferentes chamados segmentos. Na técnica de segmentação, um programa é dividido logicamente em sub- rotinas e estruturas de dados, que são alocadas em segmentos na memória principal. Sistemas Operacionais Memória Virtual por Segmentação Na segmentação existe uma relação entre a lógica do programa e sua alocação na memória principal. A principal diferença entre a paginação e a segmentação é a alocação da memória de maneira não fixa, a alocação depende da lógica do programa. Normalmente, a definição dos segmentos é realizada pelo compilador, a partir do código fonte do programa, e cada segmento pode representar um procedimento, função, vetor ou pilha. O espaço de endereçamento virtual de um processo possui um número máximo de segmentos que podem existir, onde cada segmento pode variar de tamanho dentro de um limite. Sistemas Operacionais Memória Virtual por Segmentação O mecanismo de mapeamento é muito semelhante ao da paginação. É feito através das tabelas de mapeamento de segmentos (TMS), e os endereços são compostos pelos números do segmento virtual (NSV) e um deslocamento dentro do segmento. O NSV identifica unicamente o segmento virtual que contém o endereço, funcionando como um índice na TMS. O deslocamento indica a posição do endereço virtual em relação ao início do segmento no qual se encontra. O endereço físico é obtido, então, combinando-se o endereço do segmento, localizado na TMS, com o deslocamento, contido no endereço virtual. Sistemas Operacionais Segmentação Sistemas Operacionais Memória Virtual por Segmentação Uma grande vantagem da segmentação em relação à paginação é a sua facilidade em lidar com estruturas de dados dinâmicas. Enquanto na paginação a expansão de um vetor implica a alocação de novas páginas e, consequentemente, o ajuste da tabela de paginação, na segmentação deve ser alterado apenas o tamanho do segmento. Na técnica de segmentação, apenas os segmentos referenciados são transferidos da me Se as aplicações não forem desenvolvidas em módulos, grandes segmentos estarão na memória desnecessariamente, reduzindo o compartilhamento da memória e o grau de multiprogramação. Logo, para que a segmentação funcione de forma eficiente, os programas devem estar bem modularizados. Sistemas Operacionais Memória Virtual por Segmentação com Paginação Memória virtual por segmentação com paginação é a técnica de gerência de memória onde o espaço de endereçamento é dividido em segmentos e, por sua vez, cada segmento dividido em páginas. Esse esquema de gerência de memória tem o objetivo de oferecer as vantagens tanto da técnica de paginação quanto da segmentação. Nessa técnica, um endereço virtual é formado pelo número do segmento virtual (NSV), um número de página virtual (NPV) e um deslocamento. Através do NSV, obtém-se uma entrada na tabela de segmentos, que contém informações da tabela de páginas do segmento. O NPV identifica unicamente a página virtual que contém o endereço, funcionando como um índice na tabela de páginas. O deslocamento indica a posição do endereço virtual em relação ao início da página na qual se encontra. O endereço físico é obtido, então, combinando-se o endereço do frame, localizado na tabela de páginas, com o deslocamento, contido no endereço virtual. Sistemas Operacionais Memória Virtual por Segmentação com Paginação Na visão do programador, sua aplicação continua sendo mapeada em segmentos de tamanhos diferentes, em função das sub-rotinas e estruturas de dados definidas no programa. Por outro lado, o sistema trata cada segmento como um conjunto de páginas de mesmo tamanho, mapeadas por uma tabela de páginas associada ao segmento. Dessa forma, um segmento não precisa estar contíguo na memória principal, eliminando o problema da fragmentação externa encontrado na segmentação pura. Sistemas Operacionais Memória Virtual - Segmentação vs Paginação Sistemas Operacionais Dúvidas
Compartilhar