• Nenhum resultado encontrado

10 Sistemas operacionais - Gerência de Memória Virtual v2r2

N/A
N/A
Protected

Academic year: 2021

Share "10 Sistemas operacionais - Gerência de Memória Virtual v2r2"

Copied!
30
0
0

Texto

(1)

GERÊNCIA DE MEMÓRIA VIRTUAL

SISTEMAS OPERACIONAIS

Prof. Filippo Valiante Filho

(2)

INTRODUÇÃO

Virtual remete à abstração, dissociação do físico e do lógico...

Na memória virtual o endereçamento feito pelos programas é dissociado dos endereços físicos da memória principal.

A memória física (principal) e uma parte da memória secundária são combinadas e é gerado um novo endereçamento.

• A memória virtual é maior do que a memória física e comporta mais processos.

Memória virtual está presente em praticamente todos os sistemas operacionais atuais e seu gerenciamento possui um forte relacionamento com a arquitetura do hardware.

Há três técnicas principais: paginação, segmentação e segmentação com paginação.

(3)

ESPAÇO DE ENDEREÇAMENTO VIRTUAL

O espaço de endereçamento virtual funciona como um vetor definido em uma linguagem de alto nível.

• Qual o endereço do elemento 25 do vetor?

(4)

ESPAÇO DE ENDEREÇAMENTO VIRTUAL

Na memória, os programas fazem

referência aos endereços virtuais, que precisam ser convertidos para endereços reais (da memória física).

Esse mecanismo é chamado de

mapeamento.

Adaptado de Machado e Maia (2013)

(5)

ESPAÇO DE ENDEREÇAMENTO VIRTUAL

Mas se o espaço de endereçamento virtual é maior do que o físico (memória principal), como entregar o resto da memória “vendida” aos programas?

• Memória __________________.

(6)

MAPEAMENTO

O mapeamento, ou seja, a tradução do endereço virtual em físico, é realizado em parceria com o sistema operacional pelo hardware, através da MMU — Memory Management Unit.

Com o mapeamento, o programa é carregado sequencialmente na memória virtual, mas não precisa mais estar carregado sequencialmente na memória principal. Aliás, nem precisa ser totalmente carregado na memória principal.

Isso não era um problema para o hardware, pois se tratam de memórias de acesso aleatório, mas para o gerenciamento da memória pelo sistema operacional.

(7)

MAPEAMENTO

Mas vai além, cada processo tem o

seu próprio espaço de

endereçamento exclusivo (virtual!) na memória virtual.

O sistema operacional mantém

tabelas de mapeamento exclusivas para cada processo, relacionando os endereços virtuais aos reais.

(8)

MAPEAMENTO

Cada processo possui sua própria tabela de mapeamento, então a cada troca de contexto a tabela precisa ser trocada. Um registrador da CPU com o endereço da tabela de mapeamento é utilizado para isso.

Mas se o mapeamento for feito endereço a endereço, precisaríamos de uma tabela do mesmo tamanho da memória principal...

(9)

MAPEAMENTO

Para resolver isso, o mapeamento é feito em blocos de endereços (dados).

Por exemplo, uma memória virtual que utiliza um espaço de endereçamento de 32 bits possui 232 endereços, ou 4G endereços.

Se essa memória utilizar blocos de 212 endereços, ou 4k,

haverá apenas 220 blocos, ou seja, 1M blocos, e a tabela

precisará da mesma 1M entradas.

• Supondo que cada entrada ocupe um único endereço, é o tamanho da quina vermelha no quadrado ao lado!

(10)

MAPEAMENTO

Os sistemas operacionais trabalham com blocos da seguinte forma:

Paginação – blocos de tamanho fixo;

Segmentação – blocos de tamanho variável;

(11)

MEMÓRIA VIRTUAL POR PAGINAÇÃO

Os blocos de dados na memória virtual e na memória real possuem o mesmo tamanho.

São chamados de páginas.

Páginas virtuais ficam no espaço de endereçamento virtual.

Frames, ou páginas reais, ficam no espaço de endereçamento real.

É a técnica de memória virtual empregada nos Unix (Linux incluído) e no Windows

(12)

MEMÓRIA VIRTUAL POR PAGINAÇÃO

O mapeamento é realizado através de tabelas de páginas.

Cada processo possui a sua e cada página virtual tem sua Entrada na Tabela de Páginas (ETP) para o

mapeamento na memória real

(página virtual → frame).

(13)

MEMÓRIA VIRTUAL POR PAGINAÇÃO

O endereço virtual é formado pelo número da página virtual (NPV) e um deslocamento.

O endereço físico é obtido combinando-se o endereço do frame na tabela de páginas com o deslocamento do endereço virtual.

(14)

MEMÓRIA VIRTUAL POR PAGINAÇÃO

Cada entrada na tabela de páginas possui um bit de validade:

1 - página está na memória principal;

0 – página não está na memória

principal, portanto está na secundária.

Isso é chamado de page fault.

Necessário fazer uma paginação ou

page in.

Como chama mesmo esse arquivo no Windows?

(15)

MEMÓRIA VIRTUAL POR PAGINAÇÃO

Semelhante ao swapping, a liberação de

uma página da memória para seu

armazenamento no arquivo de paginação na memória secundária é chamado de page out.

Há um bit de modificação (dirty bit ou modify bit) que controla quais páginas que

(16)

MEMÓRIA VIRTUAL POR PAGINAÇÃO

A quantidade de page faults gerado por processo em um dado intervalo de tempo corresponde à taxa de paginação do processo.

Se essa taxa subir muito comprometerá o desempenho (thrashing).

Lembre que a paginação é um processo de E/S.

(17)

MEMÓRIA VIRTUAL POR PAGINAÇÃO

Existem outros detalhes sobre a paginação que não serão aprofundados em nossa aula. Apenas para citá-los brevemente:

• Políticas de busca de páginas

• Paginação por demanda (demand paging) – carrega as páginas apenas quando referenciadas;

• Paginação antecipada (antecipatory paging / prepaging) – carrega várias páginas de uma vez.

• Políticas de alocação de páginas

• Quantos frames (páginas na memória principal) cada processo pode manter.

• Alocação fixa ou variável.

• Políticas de substituição de páginas

(18)

MEMÓRIA VIRTUAL POR PAGINAÇÃO

E a lista continua:

• Working Set

• O “conjunto de trabalho” seria o conjunto (ideal) de páginas do processo em uso que é (seria) mantido na memória principal para evitar page faults, otimizar o uso da memória e melhorar o desempenho do sistema. Esse conjunto pode ser determinado com base nos princípios de localidade.

• Algoritmos de substituição de páginas

• Qual frame liberar da memória principal para dar lugar a um novo? Claro que sem provocar page faults ou comprometer o desempenho do sistema e nem o working set...

• Já que o algoritmo ótimo é utópico (ou meramente teórico para comparação), há uma série de algoritmos de substituição: aleatório, FIFO (First In, First Out), LFU (Least Frequently Used), LRU (Least Recently Used), NRU (Not Recently Used, uma versão mais simples do LRU com apenas um bit de controle), FIFO com buffer de páginas (usado no Windows e no Mach), FIFO circular (clock, usado nos Unix).

(19)

MEMÓRIA VIRTUAL POR PAGINAÇÃO

E a lista continua a continuar:

• Tamanho de página.

• Depende do hardware. Entre 512 e 16M endereços.

• Paginação em múltiplos níveis.

• Para tornar mais eficiente o gerenciamento das tabelas de paginação, aplicando os princípios de localidade.

• Translation Lookaside Buffer (TLB).

• Mecanismo de cache da tabela de paginação. Geralmente feita processo a processo. Reduz significativamente o impacto da gerência de memória virtual no desempenho do sistema.

(20)

PROTEÇÃO DE MEMÓRIA

É preciso proteger o acesso às área de memória do sistema operacional e também às áreas dos processos dos usuários.

Cada processo tem sua própria tabela de

mapeamento, o que já é um mecanismo de proteção. O compartilhamento de páginas só

ocorre se for deliberado. Machado e Maia (2013)

Na tabela são acrescentados bits de proteção verificados pelo sistema sempre que um acesso for solicitado.

(21)

COMPARTILHAMENTO DE MEMÓRIA

A memória virtual facilita a reentrância (compartilhamento do código entre diversos processos), pois basta que as tabelas de mapeamento apontem para os mesmos frames.

Isso também vale para o

compartilhamento de dados, desde que o sincronismo seja garantido.

(22)

MEMÓRIA VIRTUAL POR SEGMENTAÇÃO

Na memória virtual por segmentação o

espaço de endereçamento virtual é

dividido em blocos de tamanhos diferentes chamados segmentos, que correspondem à divisões lógicas dos programas em sub-rotinas e estruturas de dados.

(23)

MEMÓRIA VIRTUAL POR

SEGMENTAÇÃO

A divisão dos segmentos é feita normalmente pelo compilador (o programa precisa ter uma estrutura que permita isso).

O tamanho do segmento é variável.

O mapeamento é similar ao da paginação, mas

agora com tabelas de mapeamento de

segmentos (TMS), número de segmento virtual (NSV) e o mesmo deslocamento.

(24)

MEMÓRIA VIRTUAL POR SEGMENTAÇÃO

Cada entrada na tabela de segmentação inclui, além do endereço do segmento na memória principal, as seguintes informações adicionais:

• Tamanho – tamanho do segmento;

• Bit de validade – se o segmento está na memória principal;

• Bit de modificação – se o segmento foi alterado;

• Bit de referência – se o segmento foi recentemente referenciado (usado pelo algoritmo de substituição);

(25)

PAGINAÇÃO X SEGMENTAÇÃO

Característica Paginação Segmentação

Tamanho dos blocos de memória Iguais Diferentes

Proteção Complexa Mais simples

Compartilhamento Complexo Mais simples

Estruturas de dados dinâmicas Complexo Mais simples Fragmentação interna Pode existir Não existe Fragmentação externa Não existe Pode existir Programação modular Dispensável Indispensável Alteração do programa Mais trabalhosa Mais simples

(26)

MEMÓRIA VIRTUAL POR

SEGMENTAÇÃO COM PAGINAÇÃO

O espaço de endereçamento é dividido primeiro em

segmentos e depois em páginas, oferecendo o melhor das duas opções.

Cada endereço virtual é formado por um número de segmento virtual (NSV), um número de página virtual (NPV) e um deslocamento.

Para o programador continua como na segmentação.

O sistema trata cada segmento como um conjunto de páginas de mesmo tamanho, mapeadas por uma tabela de páginas, fazendo com que o segmento não precise estar contíguo na memória e eliminando o problema da fragmentação externa existente na segmentação pura.

(27)

SWAPPING EM MEMÓRIA VIRTUAL

O swap pode ser feito no próprio arquivo de paginação, ou em um arquivo, ou partição exclusivo para essa finalidade.

O swap é compartilhado por todos os processos do sistema.

Excesso de swapping leva ao

thrashing.

(28)

NA PRÁTICA

Os comandos para gerenciamento de processos mostram muitas informações sobre a memória. Verifique os arquivos de ajuda:

man ps | grep –i memory

• man top | grep –i memory

O comando “free” mostra informações sobre a memória:

• free –ht

Os comandos pmap, vmstat e getconf –a também estão relacionados.

Execute e estude o script “memhier” no GitHub do professor:

(29)

NA PRÁTICA

Verifique as informações disponíveis no

Gerenciador de Tarefas e no Monitor de Recursos do sistema.

Se você estiver usando o Windows Subsystem for Linux poderá testar os mesmos comandos do Linux no Windows.

(30)

Referências

Machado, Francis Berenger

e Maia, Luiz

Paulo. Arquitetura de Sistemas Operacionais

- 5ª edição. LTC Editora. 2013.

Referências

Documentos relacionados

Segundo Éric Laurent, a psicose ordinária se caracteriza pela não resposta aos significantes-mestres tradicionais, manifestando o fim do poder do Nome-do-Pai como

Se você vai para o mundo da fantasia e não está consciente de que está lá, você está se alienando da realidade (fugindo da realidade), você não está no aqui e

De seguida, vamos adaptar a nossa demonstrac¸ ˜ao da f ´ormula de M ¨untz, partindo de outras transformadas aritm ´eticas diferentes da transformada de M ¨obius, para dedu-

Trata-se de um estudo descritivo com abordagem quantitativa O local escolhido como cenário para a pesquisa foi a Faculdade de Enfermagem Nova Esperança de Mossoró – FACENE/RN

• Se existirem mais processos para serem executados que memória real disponível, a única solução é a expansão da memória principal. • Este problema não ocorre apenas em

2. Identifica as personagens do texto.. Indica o tempo da história. Indica o espaço da história. Classifica as palavras quanto ao número de sílabas. Copia do texto três

DEFEITO QUANTI- DADE % DO TOTAL % ACUMU- LADA Espessura Menor Adesão entre Faces Opacidade Espessura Maior Largura Incorreta Grumos Micro Furos Outros TOTAL 485 100

A pesquisa pode ser caracterizada como exploratória e experimental em uma primeira etapa (estudo piloto), na qual foram geradas hipóteses e um conjunto de observáveis, variáveis