Você está na página 1de 22

Introdução a Sistemas Operacionais Aula 3 - Gerência de Memória RAM

Instituto Federal de Brasília Profa. Msc. Cristiane Jorge de Lima Bonfim

Semestre Letivo 2015/1 Coordenação do Eixo de Informação e Comunicação

Roteiro da Aula

Gerência de Memória - Justificativa

Gerência de Memória - Objetivos

Tipos de Alocação de Memória

Paginação

Swapping

Memória

Paginação,

Virtual

por

Swapping

Thashing

Segmentação

e

Gerência de Memória - Justificativa

A memória principal do computador (RAM) sempre foi historicamente um

recurso escasso e caro. Os primeiros computadores pessoas de 16 bits ti- nham memória básica de 640Kb, esta quantidade de memória pode ao longo do tempo ser estendida e depois expandida para patamares maiores mais compatíveis com as demandas atuais de sistemas operacionais e aplicações.

O desenvolvedor de sistemas sempre teve que se preocupar com este re-

curso para possibilitar a convivência de suas aplicações com as demais necessidades de uso desta memória pelo sistema computacional gerencia- da pelo sistema operacional.

Nos sistemas mono programáveis a gerência da memória não é muito complexa, porém nos sistemas multi programáveis (nosso foco neste cur- so) ela se torna crítica, devido à necessidade de se maximizar o número de usuários e aplicações utilizando eficientemente o espaço da memória prin- cipal.

Gerência de memória - Objetivos

Tentar manter na memória principal o maior número de processos resi- dentes, permitindo maximizar o compartilhamento do processador e de- mais recursos disponíveis no sistema computacional gerenciado.

Mesmo sem espaços livres na memória o sistema deve permitir criação de processos e a sua execução. Este recurso transfere de forma temporá- ria os processos residentes na memória principal para a memória secun- dária (disco rígido) fazendo swapping que será detalhado posteriormente.

Deve permitir a execução de programas maiores que a memória física disponível, implementada através de técnicas de overlay e memória vir- tual.

Deve prover proteção das áreas de memória ocupada (alocada) pelos processos e pelo próprio sistema operacional, porém deve prover o com- partilhamento de memória por processos diferentes quando for o caso (comunicação entre processos visto na aula 2)

Tipos de Alocação de Memória

A alocação contígua simples foi implementada nos primeiros sistemas operacionais porém ainda está presente em alguns sistemas mono programáveis. Nesta alocação a memória principal é subdividida em duas áreas: uma para o SO e outra pra o programa.

Memória principal

Área ocupada pelo Sistema Opera- cional

Registrador que delimita as áreas de sistema e de pro- grama

que delimita as áreas de sistema e de pro- grama Área ocupada pelos programas em execução
que delimita as áreas de sistema e de pro- grama Área ocupada pelos programas em execução
que delimita as áreas de sistema e de pro- grama Área ocupada pelos programas em execução
que delimita as áreas de sistema e de pro- grama Área ocupada pelos programas em execução
que delimita as áreas de sistema e de pro- grama Área ocupada pelos programas em execução

Área ocupada pelos programas em execução no sistema

Obs: Caso o programa não ocupe toda a área alocada haverá memória livre na área de programa sem utilização

Tipos de Alocação de Memória - Cont

Alocação particionada Estática: Na inicialização do sistema a memória era divida em tamanhos fixos chamada de partição. Este particionamento era feito com base nos programas que iriam rodar no sistema. Havendo necessidade de um reparticionamento a inicialização do computador era requerida.

Este tipo de alocação gera uma fragmentação interna nas

das

programas/processos.

áreas

de

memória

alocadas

para

Tipos de Alocação de Memória - Cont

Alocação particionada Dinâmica: neste tipo de alocação cada programa utiliza o espaço necessário tornam essa área sua partição. Isso resolve o problema da fragmentação interna da alocação particionada estática.

Porém este tipo de alocação gera a fragmentação externa nas áreas alocadas na memória. Solução 1: desfragmentação das áreas ociosas da memória Solução 2: realocação das áreas ocupadas eliminando áreas ociosas entre elas.

Tipos de Alocação de Memória - Cont

Esse mecanismo de compactação das áreas alocadas da memória principal é conhecido como alocação particionada dinâmica com relocação.

Este tipo de gerência de memória foi implementado pelo OS/MVT (Multiprogramming with a Variable number of Tasks) da IBM.

Estrategias de alocação de partição

Os sistemas operacionais implementam, basicamente três estratégias para determinar em qual área livre o programa/processo será carregado para execução. O objetivo destas estratégias é diminuir a fragmentação externa.

A melhor estratégia a ser adotada por um sistema depende de uma série de fatores, sendo o mais importante o tamanho dos programas processados no ambiente. Independente do algoritmo utilizado, o sistema possui uma lista de área livres, com o endereço e tamanho de cada área.

Estrategias de alocação de partição

Best-fit: este algoritmo seleciona a área a ser alocada com o tamanho que traga menor fragmentação interna.

Problema: Este algoritmo ao longo do funcionamento do sistema poderá trazer de volta o problema da fragmentação externa.

Estrategias de alocação de partição – Cont.

Worst-fit: este algoritmo seleciona a área a ser alocada com o tamanho com maior sobra interna.

Esta técnica deixa espaços livres maiores que permitem a um maior número de programas utilizar a memória diminuindo a fragmentação externa.

Problema: Este algoritmo ao longo do funcionamento do sistema poderá trazer de volta o problema da fragmentação interna.

Estrategias de alocação de partição – Cont.

First-fit: este algoritmo seleciona a primeira partição livre de tamanho suficiente para carga do programa. Neste algoritmo, a lista de área livres está ordenada por endereços crescentemente.

Este algoritmo ao longo do funcionamento do sistema poderá de se obter uma grande partição livre nos endereços de memória mais altos.

Das três estratégias esta é a mais rápida e consome menos recursos do sistema.

Paginação

A paginação é um esquema de gerenciamento de memória que permi-

te que o espaço de endereçamento físico de um processo não seja

contíguo.

Evita a fragmentação externa e a necessidade de compactação.

Tradicionalmente o suporte à paginação tem sido manipulado pelo hardware.

Projetos recentes tem implementado a paginação integrante fortemente

o hardware e o sistema operacional principalmente em processadores de 64 bits.

Swapping

Com o aumento da eficiência da multiprogramação, muitas vezes um programa não podia ser executado por falta de uma partição livre disponível.

A técnica de swapping foi introduzida para contornar o pro-

blema da insuficiência de memória principal.

Em todos os esquemas apresentados anteriormente, um pro- grama/processo permanecia na memória principal até o final de sua execução.

O swapping é uma técnica de gerência de memória aplicada

à programas que aguardam espaço na memória para sua

execução.

Swapping – Cont.

O sistema escolhe um processo residente, que é transferido da memória principal para a memória secundária (Disco Rígido).

Os processos enviados à memória secundária são resgatados sempre que necessitarem voltar o ciclo de processamento, de acordo com os algoritmos que administram a prioridade de acesso ao processador.

Processos colocados na área de swap estão geralmente em estado de espera (wait) por serem em geral processos não candidatos a serem escalonados para utilizar o processador.

Memória Virtual - Justificativa

As diversas técnicas de gerência de memória evoluíram ao longo do tempo no sentido de proporcionar um grande número de processos na memória principal e reduzir a questão da fragmentação nos espaços alocados para atendimentos de programas/processos.

Considerando que a técnica de overlay é de difícil implementação na prática e nem sempre é uma solução garantida.

Dessa forma:

A memória virtual é uma técnica sofisticada e poderosa de gerên- cia de memória, ondas memórias principal e secundária são combina- das dando ao usuário a ilusão de existir uma memória muito maior que a capacidade real da memória principal.

Memória Virtual – Questões Técnicas

Assim programas e suas estruturas de dados deixam de estar limitados ao tamanho da memória física disponível, pois podem possuir endere- ços associados à memória secundária.

A primeira implementação de memória virtual foi realizada no início da década de 60 em um sistema chamado Atlas desenvolvido na Univer- sidade de Manchester (Kilburn, 1962).

Posteriormente a IFB introduziu este conceito comercialmente na famí- lia System/370 em 1972.

Atualmente, a maioria dos sistemas operacionais implementa memória virtual, com exceção de alguns sistemas operacionais de supercompu- tadores.

Memória Virtual por Paginação

É uma técnica de memória em que o espaço de endereçamento virtual

e o espaço de endereçamento real é realizado através de tabelas de páginas.

Cada processo possui sua própria tabela de páginas, e cada página vir- tual do processo possui uma entrada na tabela (entrada na tabela de páginas – ETP) que traz informações de mapeamento que permitem ao sistema localizar a página real correspondente estando na memória principal ou secundária (disco rígido)

Memória Virtual por Segmentação

É uma técnica de gerência de memória onde o espaço de endereçamento virtual é dividido em blocos de tamanhos di- ferentes chamados segmentos. Nesta técnica um programa é dividido logicamente em sub rotinas e estrutura de dados, que são alocadas em segmentos na memória principal.

Enquanto na técnica de paginação o programa é dividido em páginas de tamanho fixo, sem qualquer ligação com sua es- trutura, na segmentação existe uma relação entre a lógica do programa e sua alocação na memória principal.

A definição do segmento é realizada pelo compilador, a par- tir do código-fonte do programa e cada segmento pode re- presentar um procedimento, função, vetor ou pilha.

Thashing

É quando há excessiva transferência de página/segmentos entre memória principal e a memória secundária. Este problema está tanto em sistemas que implementam paginação quanto segmentação.

Ocorre quando existem mais processos competindo por memória principal que espaço disponível.

Solução: redução do número de páginas de cada processo na memória. Se a redução não for suficiente o SO faz swapping para memória secun- dária e cai a performance do sistema.

Assim vimos hoje:

O as possibilidades de implementação de gerência de memória principal (RAM) em um Sistema Operacio- nal, com objetivo de proporcionar um uso eficiente e eficaz deste importante recurso imprescindível a um sistema computacional mono ou multi programável.

Referências Bibliográficas

TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3ed. São Paulo:

Pearson Pretice Hall, 2010 MACHADO, Francis B. Arquitetura de Sistemas Operacionais 4e. Rio de Janeiro: LTC, 2011 SILBERSCHATZ, Abraham. Fundamentos de Sistemas Operacionais. Rio de Janeiro: LTC, 2011 OLSEN, Diogo Roberto. Sistemas Operacionais. Curitiba:Editora Livro Técnico, 2010.