Sistemas Operacionais - 06 - Gerencia de Memoria

Embed Size (px)

Citation preview

Sistemas OperacionaisGerncia de Memria O contedo desta apresentao utiliza textos, grficos e exerccios extrados do livro-texto Oliveira, R. S., Carissimi, A. S., Toscani, S. S. Sistemas Operacionais. 3. ed. Sagra Luzzatto. 2004. ISBN 85-241-0643-3. A propriedade intelectual deste contedo de posse da editora e dos autores da obra.Prof. Fabricio Bortoluzzi, MSc. ([email protected])

6. Gerncia de Memria Para o chaveamento de contexto da CPU, o processo deve estar na memria. Desafio da gerncia de memria: Prover os mecanismos para que os processos dividam a memria fsica disponvel de forma segura

Consideraes Considera-se que o processo inteiro est na memria. Adiante, em memria virtual, o cenrio muda para corresponder a realidade atual

6.1 Memria lgica e fsica Memria lgica a que o processo enxerga a que o processo enderea onde armazena suas instrues de execuo cada processo tem uma

Memria fsica est nos circuitos de memria do computador seu endereo existe nos chips de memria

O espao de endereamento lgico de um processo o conjunto de endereos lgicos que ele ocupa.

6.1 Memria lgica e fsica Unidade de gerncia de memria Memory Management Unit - MMU Componente de hardware. Prov o mapeamento entre os endereos lgicos de um processo e os endereos fsicos existentes.

Processador

Endereo Lgico

MMU

Endereo Fsico

RAM

Figura 6.1 Diagrama incluindo a MMU entre o processador e a RAM

Unidade de gerncia de memria Esquema bsico Endereos LGICOS iguais aos FSICOS Exemplo: Processo tem rea de memria entre 100 e 799Limite inferior 100 Limite superior 799

Proc

157

no

157

RAM

sim INT

sim INT

Figura 6.2 Mecanismo de proteo para a memria com registradores de limite

Unidade de gerncia de memria Esquema real: Endereos LGICOS diferentes dos FSICOS Exemplo: Processo tem rea de memria entre 500 e 700Registrador LIMITE 200 Registrador de BASE 500

Proc

157

>

no

+

no

657

RAM

sim INT

sim

Figura 6.3 Mecanismo de proteo para a memria com registradores de BASE e de LIMITE

6.1 Memria lgica e fsica Os registradores de memria (inferior, superior, base ou limite) devem ser protegidos Inacessveis em modo usurio

Fazem parte do CONTEXTO de execuo dos processos Portanto, so mantidos na tabela descritora de processos No chaveamento, quando o processo entra: Registradores de memria so copiados DA RAM PARA A MMU

No chaveamento, quando o processo sai: Registradores de memria so copiados DA MMU PARA A RAM.

6.1 Memria lgica e fsica Relocao Necessria quando os endereos LGICOS e FSICOS so diferentes. Casos reais portanto. Mapear o REGISTRADOR DE BASE (ex: 500) como sendo o endereo ZERO (0) do processo. Definir o REGISTRADOR DE LIMITE com o valor de memria destinado ao PROCESSO (ex: 200). Logo A posio 500 FSICA deve ser marcada na MMU como sendo o endereo ZERO do PROCESSO. O processo tem seu espao de endereamento fsico iniciando em 500 e indo at 700, mas no sabe disso. Sabe apenas que tem: O espao virtual de ZERO (0) at 200.

O trabalho do relocador da MMU fazer este mapeamento / correo.

6.2 Parties fixas Forma mais simples de gerncia Previamente dividida em uma parte para o S.O. e outras para os processos. A escolha do espao para um processo depende do tamanho do programa a carregar O tamanho do programa deve ser menor ou igual a partio pretendida Caso uma partio no esteja disponvel, o processo aguarda. Implementvel tanto com o par inferior/superior como o base/limiteS.O. 225 KBytes

Partio 1 200 Kbytes Partio 2 100 Kbytes Partio 3 50 Kbytes Partio 4 25 Kbytes Figura 6.4 Memria fsica em parties fixas.

6.2 Parties fixas - Problemas Raramente o programa ter o tamanho exato da partio Desperdcio de memria interna ao processo: FRAGMENTAO INTERNA Caso a partio de 200 esteja ocupada e um novo processo com 110 Kbytes criado, haver 175 Kbytes livres, mas no CONTGUOS: FRAGMENTAO EXTERNA S.O. 225 KBytes

Partio 1 200 Kbytes Partio 2 100 Kbytes Partio 3 50 Kbytes Partio 4 25 Kbytes Figura 6.4 Memria fsica em parties fixas.

6.3 Parties variveis Neste caso, o tamanho das parties ajustado dinamicamente s necessidades exatas dos processos. S.O. mantm uma lista de lacunas Ao criar um processo, o S.O. varre as lacunas S.O. usa uma lacuna igual ou maior a solicitada 4 algoritmos bsicos para percorrer a RAM: First-fit: primeira lacuna com tamanho suficiente Best-fit: lacuna que resultar em menor sobra Worst-fit: lacuna que resultar em maior sobra Circular-fit: First-fit, mas inicia a procura da lacuna seguinte ltima sobra.

6.3 Parties variveis Fim de um processo = NOVA LACUNA! Cenrio: P4 aguarda - P2 finalizouS.O. 225 KBytes Processo 4 85 Kbytes S.O. 225 KBytes

Processo 1 174 Kbytes Processo 2 98 Kbytes Processo 3 23 Kbytes Lacuna 25 Kbytes (A)

Processo 1 174 Kbytes Processo 4 85 Kbytes Lacuna - 13 KB Processo 3 23 Kbytes Lacuna 25 Kbytes (B)

Figura 6.5 Parties variveis

6.3 Parties variveis Teoricamente, no h fragmentao interna! Entretanto, a alocao no perfeitamente exata preciso definir uma unidade mnima de kilobytes, como no disco rgido, para que o gerenciamento da RAM fique adequado Exemplo: unidades de 32 bytes. Na RAM, a unidade chama-se PARGRAFO Se o pargrafo de 32 bytes, a maior fragmentao interna possvel fica em 31 bytes.

6.3 Parties variveis Vantagens: Na prtica, pouca fragmentao interna Facilita atendimento as exigncias das arquiteturas Tipos inteiros de 4 bytes devem ser posicionados em um byte com endereo lgico par. Menos bits para enderear uma lacuna na memria Em 1 Gigabyte de RAM custaria 30 bits para enderear um byte, mas apenas 25 bits para enderear um pargrafo. Implementadas em lista encadeada de lacunas Endereo Tamanho Lacuna anterior e prxima Utiliza o espao da prpria lacuna para armazenar esses dados No precisa portanto, de uma tabela parte

6.3 Parties variveis Desvantagens: Fragmentao externa um problema grave Alocao e desalocao de reas causam a fragmentao Resultado: numerosas lacunas pequenas Aparncia de queijo suo Frequentemente a fragmentao externa chega a 1/3 da rea total disponvel na RAM possvel desfragmentar, realocando os processos e formando uma s lacuna, mas isso custoso! Mecanismo de realocao dinmica (e automtica) depende de recurso no hardware (registrador de base)

6.4 Swapping Resolve o problema de a RAM ser menor do que a soma de ocupao de todos os processos Rever a figura 6.5A O S.O. reserva uma parte do disco rgido para seu uso As vezes um processo inteiro copiado da RAM para o HD Sua execuo suspensa SWAP OUT Seu descritor de processo posto em uma fila de suspensos Mais tarde, antes de voltar a executar feito um SWAP IN Seu descritor volta ento fila de aptos

6.4 Swapping Impe um GRANDE CUSTO em termos de execuo Copiar da RAM para o HD demorado! O usurio sente a queda no desempenho Ruim para processos de interao com o usurio Utilizar em ltimo caso

Mais aceitvel para processos no interativos

Usa-se tanto em parties da RAM fixas como em parties variveis No swap in, necessrio corrigir os espaamento de endereamento.

6.5 Paginao Parties fixas geram perda de memria Parties variveis causam fragmentao externa A origem da fragmentao externa reside no fato de que o programa precisa ocupar uma rea contgua de memria Se essa restrio for eliminada, no haveria fragmentao externa Essa a tcnica de paginao: O processo acredita possuir uma rea contgua de endereamento lgico Cada endereo lgico aponta para um endereo fsico que pode OU NO ser contguo na memria (fsica)

6.5 Paginao - Cenrio de exemplo Exemplo bem pequeno O endereamento lgico do processo dividido em pginas lgicas de tamanho fixo Os endereos so binrios A memria lgica composta por 12 bytes 3 pginas lgicas 4 bytes por pgina (12 bytes/3 pginas = 4bpp)

O endereamento lgico tambm est dividido em duas partes 1. nmero da pgina lgica 2. deslocamento dentro da pgina

Y2 est em 00101 001 3 posies para o nmero da pgina

6.5 Paginao - Cenrio de exemplo

A memria FSICA tambm dividida em pginas fsicas O tamanho de uma pgina lgica e uma fsica idntico. A quantidade de pginas lgicas de um processo menor que a quantidade total de pginas fsicas montada uma tabela de pginas para o processo. Ela contem um mapa entre os endereos lgicos e os endereos fsicos Uma pgina lgica carregada em qualquer pgina fsica livre. No existe fragmentao externa!

Memria Lgica000 00 000 01 000 10 000 11 001 00 001 01 001 10 001 11 010 00 010 01 010 10 010 11X1 X2 X3 X4 Y1 Y2 Y3 Y4 Z1 Z2 Z3 Z4

Memria FsicaZ1 Z2 Z3 Z4

X1 X2 X3 X4

Endereo Lgico de Y2

Endereo Fsico de Y2

001 01 Tabela de Pginas Lgicas Fsicas 000 001 101 010 101 000

101 01Y1 Y2 Y3 Y4

000 00 000 01 000 10 000 11 001 00 001 01 001 10 001 11 010 00 010 01 010 10 010 11 011 00 011 01 011 10 011 11 100 00 100 01 100 10 100 11 101 00 101 01 101 10 101 11

Figura 6.6 Mecanismo bsico de paginao

6.5 Paginao Num sistema onde uma pgina ocupa 4 Kbytes e um programa necessita 201 Kbytes sero alocadas 51 pginas ocupando um total de 204 Kbytes desperdiando 3 Kbytes 1,47% de desperdcio de memria

Concluso Pginas maiores = menos pginas por processo = velocidade = menos imposto de hardware = menor overhead = menor sobrecarga = maior fragmentao Pginas menores = menor fragmentao VALORES DEFINIDOS PELO HARDWARE, NO PELO S.O.

Sobre a tabela de paginao Quando pequena, colocada em registradores de acesso rpido Num computador com 64 Kbytes, h 8 pginas de 8 Kbytes cada. Isso uma tabela pequena para uma quantidade de memria pequena

Quando grande, mantida na RAM fsica A MMU ento possui 2 registradores para acesso: Registrador de Base de Tabela de Pgina PTBR -> Page Table Base Register e Indica o endereo fsico de memria onde a tabela est colocada e Registrador de Limite de Tabela de Pgina PTLR -> Page Table Limit Register Indica o nmero de entradas da tabela

Sobre a tabela de paginao Com ela, para se encontrar um endereo fsico na RAM, so necessrios 2 acessos 1 para verificar na tabela de pginas o endereo fsico do endereo lgico a ser trabalhado 1 para acessar o endereo fsico em si

Resultado: RAM 2x mais lenta! Soluo: Memria cache para a MMU Chamada de Translation Lookaside Buffer (TLB) Rpido e caro! Bem caro! Se a pgina lgica solicitada est na TLB (hit) ento o retorno rpido. Se no est (miss), buscada normalmente na RAM, mas uma cpia fica na TLB! Resultado: A degradao de performance no fica em 50%, mas entre 20 e 30%. E isso aceitvel!

Sobre a tabela de paginao A cada chaveamento de contexto, copia-se o valor do PTBR e PTLR da tabela de pginas do descritor de processo para os registradores na MMU. A memria cache precisa ser esvaziada (flushed) para que no ocorra a passagem de falsas informaes dela para o novo processo solicitante de endereos lgicos A memria cache uma memria do tipo associativa. Alm das clulas de memria, existe todo o aparato eletrnico para que ela atenda a pesquisas paralelas. Isso caro! 32 entradas nessa memria j garantem um nvel de HITs (acertos) em torno de 80 a 90%

Sobre a tabela de paginao Contem outros controles bit vlido/invlido se invlido, a MMU gera uma interrupo de proteo. S.O. acionado. Erro de programao. bit pode/no pode usar pginas somente leitura pginas somente escrita pginas somente execuo pginas de leitura e escrita

Proteo de memria fica fcil com a TP Acesso a PTBR e PTLR privilegiado Marca como invlida todas as pginas que no pertencem ao processo

Sobre a tabela de paginao Uma s tabela de pginas raro Na prtica, vrias tabelas de tamanho variado, ajustadas de acordo com as necessidades de cada processo Se elas podem ter qualquer tamanho, ento ocorrer fragmentao externa A maior razo para a paginao foi justamente a eliminao de fragmentao externa Para evitar isso, so usadas tabelas com dois nveis As tabelas de pginas crescem de pedao em pedao uma tabela auxiliar chamada diretrio mantm o endereo de cada pedao para evitar a fragmentao externa, cada pedao da tabela de pginas deve ter um nmero mnimo inteiro de pginas: NAO IMPORTANDO A FINALIDADE Entradas desnecessrias so marcadas como invlidas Assim evita-se a fragmentao externa no uso da TP

Sobre a tabela de pginas No i386 a TP tem dois nveis Diretrio de pginas Pedaos (Tabelas de pginas propriamente ditas) Endereo lgico de 32 bits 10 bits: numero entrada no diretrio de tabela de pginas 10 bits: nmero da pgina na tabela de pginas indicadas 12 bits: deslocamento dentro da pgina

Em resumo: A tabela cresce de pedao em pedao, a medida em que a alocao de pginas fsicas acontece Apenas o necessrio usado, com uma pequena fragmentao interna na prpria tabela, quando no so necessrias todas as entradas do pedao alocado O processo pode povoar diferentes regies do espao lgico sem dificuldades

6.6 Segmentao O conceito de Paginao til para o S.O., uma criao dele. E os programas? Como enxergam o endereamento lgico que lhes so fornecidos? Programas e compiladores entendem a memria como SEGMENTOS. Diviso tpica de um segmento: Cdigo, dados alocados estaticamente, dados alocados dinamicamente, e pilha de execuo

O programador atribui nomes aos segmentos. O compilador transforma esses nomes em nmeros.

6.6 Segmentao possvel orientar a gerncia de memria para suportar diretamente o conceito de segmentos A memria lgica portanto organizada em segmentos Uma posio na memria lgica do processo passa a ser endereada por um nmero de segmento e um deslocamento (em relao ao incio de seu segmento) Em tempo de carga, cada segmento copiado para a memria fsica e uma tabela de segmentos construida. Essa tabela informa, para cada segmento, qual o endereo da memria fsica onde ele foi colocado e qual o seu tamanho

6.6 Segmentao Processos geram endereos lgicos compostos por um nmero de segmento e um nmero de deslocamento dentro do segmento

A MMU utiliza o nmero do segmento fornecido para indexar a tabela de segmentos. caso o nmero no exista: INTERRUPO uma vez localizada a entrada, o deslocamento fornecido comparado com o limite do segmento o deslocamento fornecido,caso correto, somado ao valor de base do segmento resultado: Endereo fsico equivalente ao endereo lgico fornecido

6.6 Segmentaot p d Tabela de Pginas p.f. d

Diretrio das Tabelas de Pginas Tabela de Pginas

Figura 6.7 Tabela de pginas organizadas em dois nveis

6.6 Segmentao Na prxima figura, supor que o processo gere o endereo lgico D3 o segmento 01 e deslocamento 00010. A tabela de segmentos informa que o segmento 01 possui base 00000 e limite 0100. O deslocamento 0010 vlido? Sim pois menor do que o limite 00100 Somando-se 00000 + 00010 tem-se o endereo fsico 00010. Esse, 00010, o endereo fsico do byte D3 na memria fsica

MEMRIA LGICA Segmento 00 00000 00001 00010 00011 00100 00101 C1 C2 C3 C4 C5 C6 Segmento 01 D1 D2 D3 D4

MEMRIA FSICA

D1 D2 D3 D4

00000 00001 00010 00011

C1 C2 C3 C4 C5 C6

Segmento 10 P1 00000 P2 00001 P3 00010

Tabela de SegmentosSegmento 00 01 10 Base 01000 00000 10100 Limite 0110 0100 0011

P1 P2 P3

00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111

Figura 6.8 Gerncia de memria baseada em segmentos

6.6 Segmentao Grande atrativo: compartilhamento de memria cada segmento representa uma parte especfica do programa podendo ou no ser compartilhado exemplos de compartilhamento: sub-rotina pilha de funes biblioteca de programao

Sendo uma funo somente execuo, pode haver dois processos apontando para ela sem a necessidade de replic-la O segmento s removido depois de no constar em mais nenhuma tabela de segmentos em uso Obviamente um segmento leitura-e-escrita no poder ser compartilhado

6.7 Segmentao paginada Com a segmentao, volta o problema da fragmentao externa A alocao e liberao sucessiva de segmentos com diferentes tamanhos gera lacunas pequenas demais para serem teis Soluo: Paginar cada segmento! O espao lgico formado por segmentos Cada segmento possui uma tabela de pginas associada. No momento de enderear a memria, a tabela de segmentos indica onde a tabela de pginas est A tabela de pginas transforma o endereo da pgina lgica em pgina fisica

6.7 Segmentao paginadas p dTabela de Pginas do Segmento 0

p.f.

d

Diretrio das Tabelas de Pginas Tabela de Pginas do Segmento 3

Figura 6.9 Esquema clssico de segmentao paginada

6.7 Segmentao paginada A alocao de espao em memria feita na base da pgina fsica. Elimina completamente a fragmentao externa Causa fragmentao interna aceitvel Mdia de meia pgina de fragmentao interna por segmento de processo.