Gerenciamento de Memória Segmentação
Transcrição
Gerenciamento de Memória Segmentação
Gerenciamento de Memória Prof. Clodoaldo Ap. Moraes Lima 1 Segmentação • Objetivo – Melhorar o aspecto de localidade de referência em sistemas de memória virtual • Em sistema paginado, os itens que são transferidos de uma unidade de acesso (página) não estão necessariamente relacionados de forma lógica – Itens que não serão utilizados podem estar sendo trazidos – Possível desperdício de espaço em memória e de banda de passagem – Livrar o programador da obrigatoriedade de gerenciar a expansão e contração de tabelas, do mesmo modo que a memória virtual elimina a preocupação de organizar o programa em overlays 2 1 Segmentação Procedimento X PROGRAM Segmento; VAR A: ARRAY... C: ... PROCEDURE X; Programa Principal Funçã o Y END; FUNCTION Y; Array A END; BEGIN END. Va riável C . . . 3 Segmentação - Mecanismo • Agrupar itens relacionados logicamente em unidades de acesso (segmentos) de tamanho variável – unidades de acesso mais próximas da visão usuário (programas, dados) – segmentos de uso comum podem ser compartilhados – memória virtual segmentada tem gerenciamento mais complexo • entrada na tabela de segmentos tem que manter informação sobre comprimento do segmento • alocação de um segmento à memória deve gerenciar problema de fragmentação externa • Endereços em memória segmentadas são bidimensionais – em sistema paginado, quando um valor de deslocamento é incrementado além de seu valor máximo um endereço na página seguinte é gerado Æ espaço de endereçamento linear – em sistema segmentado, uma condição de tentativa de acesso fora de limites é detectada 4 2 Segmentação - Mecanismo • Compartilhamento de segmentos -- duas possibilidades – O processo que for usar o segmento compartilhado tem que conhecer o endereço virtual alocado para o segmento -- uma única tabela de segmentos é mantida – O processo que for usar o segmento compartilhado pode acessá-lo através de seu índice particular -- uma tabela de segmentos para cada processo • endereço do início da tabela de segmentos mantido em um registrador base da tabela de segmentos 5 Segmentação • Espaço de endereçamento unidimensional com tabelas crescentes • Uma tabela pode atingir outra 6 3 Segmentação • Leva em consideração a visão de programadores e compiladores • Um programa é uma coleção de segmentos, tipicamente: – – – – Código Dados alocados estaticamente Dados alocados dinamicamente Pilha • Um segmento pode ser uma unidade lógica – Procedimentos (funções), bibliotecas • Gerência de memória pode dar suporte diretamente ao conceito de segmentos 7 Esquema lógico de Segmentação 1 4 1 3 2 2 4 3 Espaço do Usuário Espaço Físico 8 4 Comparação entre paginação e segmentação 9 Endereço lógico em segmentação • Endereço lógico é composto por duas partes: – Número de segmento – Deslocamento dentro do segmento • Os segmentos não necessitam ter o mesmo tamanho • Existe um tamanho máximo de segmento • Segmentação é similar a alocação particionada dinâmica 10 5 Tradução de endereço lógico em endereço físico • Tradução é feita de forma similar a paginação (via tabela) – Tabela de segmentos • Entrada na tabela de segmentos: – Base: endereço inicial (físico) do segmento na memória – Limite: tamanho do segmento • Necessidade de verificar a cada acesso se ele é válido – Hardware (comparador) 11 Esquema de tradução da segmentação s d f d 12 6 Exemplo de tradução de endereço lógico em endereço físico 13 Implementação da tabela de segmentos • Construção de uma tabela de segmentos – Cada segmento corresponde a uma entrada na tabela • Cada segmento necessita armazenar dois valores: – Limite e base • Análogo a tabela de páginas – Registradores – Memória 14 7 Implementação da tabela de segmentos via registradores • Tabela de segmentos é mantida por um conjunto de registradores – Cada segmento possui dois registradores (base e limite) – No descritor do processo devem ser mantidas cópias dos registradores • Troca de contexto: atualização dos registradores • Número de registradores impõem uma limitação prática ao tamanho da tabela de segmentos (como na paginação) 15 Implementação da tabela de segmentos em memória • Tabela de segmentos armazenada em memória • Segment-table base register (STBR): localização do inicio da tabela de segmentos na memória • Segment-table length register (STLR): indica o número de segmentos de um processo – Segmento é válido apenas se: s<STLR 16 8 Problemas com implementação da tabela em memória • Problemas similares ao da paginação – Tabela pode ser muito grande – Dois acessos a memória • Solução – Empregar TLB • Observação (válida também para a paginação) – A consulta a tabela em memória provoca no mínimo 2 acessos a memória, pois uma entrada na tabela pode representar mais de um acesso 17 Implementação da tabela de segmentos via TLB sucesso Falta 18 9 Aspectos de proteção e compartilhamento • Os princípios já estudados para paginação continuam válidos para a segmentação – Ex: bits de proteção (rwx), bits de compartilhamento, etc. • Segmentação adiciona a possibilidade de compartilhar apenas trechos da área de código • Problema associado: – Segmentos compartilhados devem ter a mesma identificação (entrada) na tabela de segmentos. 19 Desvantagem da segmentação • A segmentação provoca fragmentação externa quando segmentos começam a ser liberados da memória. • Mesmo problema de alocação partições variáveis com as mesmas soluções: – Concatenação de segmentos adjacentes – Compactação da memória 20 10 Implementação de Segmentação Pura (a)-(d) Desenvolvimento de fragmentação externa (e) Remoção da fragmentação via compactação 21 Solução para fragmentação externa • A paginação é a solução natural para a fragmentação • Analisar o problema sob dois pontos extremos – Um processo é um único segmento – Cada byte é um segmento • Sem fragmentação externa, nem interna • Não viável pelos overheads envolvidos • Similar a pagina de 1 byte • Solução: meio termo entre os extremos – Fazer um segmento ser composto por um número fixo (e reduzido de bytes) – Equivale a ter o segmento dividido internamente em blocos 22 11 Segmentação com paginação • Recuperar as vantagens dos dois métodos em relação a fragmentação – Fragmentação interna: paginação apresenta, segmentação não – Fragmentação externa: paginação não, segmentação apresenta • Solução se traduz em paginar segmentos 23 Arquitetura 68000 • Provê suporte de hardware para até 16 processos. • Cada um com espaço de endereçamento virtual de 1 K de páginas de 2K ou 4 K. • Considerando páginas de 4 K, cada processo terá um espaço de endereçamento virtual de 4 M, consistindo de 1024 páginas de 4 K cada. • O Hardware contém uma tabela com 16 seções, uma para cada um dos processos. • Cada seção tem 64 descritores de segmento, cada um contendo 16 páginas de 4 K. 24 12 MMU usada em muitos computadores baseados no 68000 (endereçamento virtual para sistema de 4M) 25 Gerencia de Memória no MULTICS 26 13 Gerencia de Memória no MULTICS Endereço Lógico s d sim < + Limite Base d Não Tabela Segmento p Trap d’ STBR Memória + f f d’ Endereço físico Tabela página para segmento s 27 Gerencia de Memória no Intel 386 • Usa segmenta com paginação para gerenciamento de memória com um esquema de paginação em dois níveis 28 14 Segmentação com Paginação: Pentium Mapeamento de um endereço linear sobre um endereço físico 29 Gerencia de Memória no Intel 386 Endereço lógico Deslocamento Seletor Tabela de descritores Descritor Segmento Endereço Linear diretório + página Des. Modura da página Endereço Fisico Diretório de Páginas Entrada Diretório Registrador Base do diretório de Páginas Tabela de Página Entrada Tabela Página 30 15