Gerenciamento de Memória
Gerência de memória Introdução Multiprogramação implica em manter-se vários processos em memória Memória necessita ser alocada de forma eficiente para permitir o máximo de processos Existem diferentes técnicas para gerência de memória dependem do hardware do processador
Memória lógica e memória física Memória lógica É aquela que o processo “enxerga” Endereços lógicos são aqueles manipulados por um processo Memória física Implementada pelos circuitos integrados de memória Endereços físicos são aqueles que correspondem a uma posição real de memória Endereços lógicos são transformados em endereços físicos no momento de execução dos processos
Unidade de Gerência de Memória Memory Management Unit (MMU) Hardware que faz o mapeamento entre endereço lógico e endereço físico Complexidade variável de acordo com a funcionalidade oferecida CPU MMU endereço lógico endereço físico
Exemplo de MMU CPU < > memória 100 799 sim sim não não registrador de limite inferior registrador de limite superior interrupção (endereço ilegal) interrupção (endereço ilegal) 123 123
Exemplo de MMU CPU > + memória 200 500 sim não 623 registrador de limite registrador de base interrupção (endereço ilegal) 123
Execução de programas Um programa deve ser transformado em um processo para ser executado Alocação de um descritor de processos Alocação de áreas de memória para código, dados e pilha Transformação é feita através de uma série de passos, alguns com a ajuda do próprio programador Compilação, diretivas de compilação e /ou montagem, ligação, etc ... Amarração de endereços (binding)
Amarração de endereços Atribuição de endereços (posições de memória) para código e dados pode ser feita em três momentos diferentes: Em tempo de compilação Em tempo de carga Em tempo de execução Diferenciação entre endereço lógico e endereço físico Como traduzir endereço lógico em endereço físico Código absoluto e código relocável
Transformação de programa em processos programa compilador objeto ligador executável carregador RAM . . . fase de compilação fase de ligação fase de carga
Carregador absoluto x carregador relocador Programador não tem conhecimento onde o programa será carregado na memória Endereço só é conhecido no momento da carga durante a execução do programa sua localização física pode ser alterada swapping Necessidade de traduzir endereços lógicos à endereços físicos Relocação é a técnica que realiza essa tradução Via software: carregador relocador Via hardware: carregador absoluto
Código relocável Carregador relocador correção de todas as referências a memória de forma a corresponder ao endereço de carga do programa Necessidade de identificar quais endereços devem ser corrigidos código relocável  mapeamento das posições corrigidas é mantida através de tabelas Código executável mantém informações de relocação na  forma de tabelas no momento da carga o programa executável é interpretado e os endereços corrigidos
Código absoluto Carregador absoluto Não realiza correção de endereços no momento da carga do programa em memória Código executável absoluto não necessita manter tabelas de endereços a serem corrigidos Endereço de carga fixo pelo programa (programador) qualquer correção pode ser feita automaticamente, de forma transparente, a partir de registradores de base
Mecanismos básicos de gerência de memória Até estudarmos memória virtual, supor que para um programa ser executado ele necessita estar todo carregado em memória Mecanismos básicos partições fixas partições variáveis paginação segmentação
Partições fixas Forma mais simples de gerência de memória Divisão da memória em duas partes uso do S.O. uso dos processos de usuários Parte dedicada aos processos de usuários é por sua vez subdividida em partições de tamanhos iguais ou diferentes, porém sempre fixos implementada tanto através de registradores de limite superior e inferior como base e limite Método também conhecido como alocação particionada estática
Gerenciamento de partições fixas O S.O. é responsável pelo controle das partições mantendo informações como: partições alocadas partições livres tamanho da partições S.O. S.O. p5 p8 p2 S.O. p5 p2 S.O. p5 p2 p9
Gerenciamento de partições fixas Problemas O que fazer se a partição já estiver ocupada por um processo Processos podem ser carregados em qualquer partição depende se código é absoluto ou relocável Número de processos que podem estar em execução ao mesmo tempo sem swapping    igual ao número de partições (máximo) com swapping    maior que número de partições Programa é maior que o tamanho da partição não executa a menos que se empregue um esquema de overlay 4 combinações (tamanho variável ou fixo) x (código absoluto ou relocável)
Gerenciamento de partições fixas Com código absoluto Um processo só pode ser carregado na área de memória (partição) para a qual foi compilado Pode haver disputa por uma partição mesmo tendo outras livres processo é mantido no escalonador de longo prazo empregar swapping
Gerenciamento de partições fixas Com código relocável Um processo de tamanho menor ou igual ao tamanho da partição pode ser carregado em qualquer partição disponível Se todas as partições estão ocupadas, 2 soluções processo é mantido no escalonador de longo prazo empregar swapping
Desvantagem de partições fixas Uso ineficiente da memória principal Um processo, não importando quão pequeno seja, ocupa uma partição inteira Fragmentação interna S.O. 8 M 5 M 8 M 8 M 8 M processo fragmentação  interna
Algoritmos para alocação de partições fixas Se código é absoluto a alocação é determinada na compilação Se código é relocável partições de igual tamanho não importa qual partição é utilizada partições de diferentes tamanhos atribui o processo a menor partição livre capaz de armazená-lo fila para cada partição processos são atribuídos a partições de forma a minimizar o desperdício de memória (fragmentação interna)
Partições variáveis Também denominada de alocação particionada dinâmica Processos alocam memória de acordo com suas necessidades elimina a fragmentação interna Partições são em número e tamanho variáveis S.O. p1 p2 p3 320 K 224 K 288 K 400 K S.O. p1 p3 320 K 224 K 288 K 400 K S.O. p1 p3 320 K 128 K 288 K 400 K p4 96 K
Algoritmos para alocação de partições variáveis Determinar em que lacuna (bloco) de memória livre um processo será alocado Políticas best fit miminizar tam_proc - tam_bloco deixar espaços livres menores possíveis worst fit maximizar tam_proc - tam_bloco deixar espaços livres os maiores possíveis first fit/next fit tam_proc > tam_bloco
Algoritmos para alocação de partições variáveis Exemplos S.O. C A 20 K 40 K 30 K S.O. C A 20 K 40 K 30 K S.O. C A 20 K 40 K 30 K S.O. C A 20 K 40 K 30 K processo (10 K) best fit worst fit first fit
Desvantagens de partições variáveis Tende a criar lacunas de memória livres que individualemente podem não ser suficientes para acomodar um processo pode haver memória livre, mas não contígua fragmentação externa Exemplo: criação de processo com 120 K S.O. P1 P4 P3 96 K 64 K
Soluções possíveis para fragmentação externa Reunir espaços adjacentes de memória Empregar compactação Realocar as partições de forma a eliminar os espaços entre elas e criando uma área contígua Desvantagem consumo do processador acesso a disco Acionado somente quando ocorre fragmentação Necessidade de código relocável
Sistema Buddy Partições fixas Limita o número de processos ativos O uso da memória pode ser ineficiente Partições variáveis É mais complexo de manter Overhead de compactação Sistema Buddy Procura unir as vantagens de ambos minimizando as desvantagens
Sistema Buddy 1024 1 M + 100 K + 240 K + 64 K + 256 K B A + 75 K C E D A=128 128 256 512 A=128 128 B=256 512 A=128 B=256 512 C=64 64 A=128 B=256 C=64 64 D=256 256 A=128 256 C=64 64 D=256 256 128 256 C=64 64 D=256 256 E=128 256 C=64 64 D=256 256 E=128 256 D=256 256 128 512 D=256 256 1024
Swapping RAM backing store P1 P2 swap out swap in
Swapping Tempo de swap depende tamanho de processo política de swapping escalonador de médio prazo Atenção!!!!!!!!!!!!!!!!!! Não faça swap com processos com I/O pendente para evitar a transferência de dados para endereços inválidos de memória Solução Utilizar buffer de I/O internos ao sistema
Paginação Partição fixa gera fragmentação interna Partição variável gera fragmentação externa Solução paginação elimina fragmentação externa limita fragmentação interna
Paginação página 0 1 2 3 frame 0 1 2 3 4 5 6 7 processo RAM
Endereço lógico em paginação Endereço lógico número de página deslocamento dentro da página (offset) página 0 1 2 3 processo p E p p - número da página d - deslocamento P - tamanho da página (pot 2) d E = p + d b = E div p d = E mod p p d E m bits n m-n
Tradução endereço lógico em físico Tabela de página relaciona página lógica com frame físico CPU p d endereço lógico f f d tabela de páginas RAM endereço físico
Exemplo de paginação Características do sistema memória física: 64 KBytes (16 bits) tamanho processo (máx): 32 KBytes (15 bits) páginas: 8 KBytes Sistema de páginas número de frames: 64/8=8 (0 a 7 )    3 bits número de páginas: 32/8= 4 (0 a 3)    2 bits deslocamento: 8 Kbytes    13 bits
Exemplo de paginação p d Endereço lógico Endereço físico f d 15 bits 2 13 16 bits 3 13
Exemplo de paginação CPU 0 C98 endereço lógico 0C98 tabela de páginas endereço físico 8C98 8 8 C98 End 0000 2000 4000 6000 8000 A000 C000 E000 Frame 0 1 2 3 4 5 6 7 memória física
Tamanho da página Página grande tabela de página menor processo tem menos páginas aumenta fragmentação interna Página pequena tabela de página maior processo tem mais páginas diminui fragmentação interna Trade off tamanho depende do HW (MMU)
Proteção de páginas Acesso garantido por definição processos acessam somente suas páginas  endereços válidos Inclusão de bits de controle na tabela de página (por entrada) leitura, escrita ou executável Bit de validade página pertence ou não ao endereço lógico do processo
Compartilhamento de páginas Código compartilhado cópia read-only, reentrante compartilhado entre vários processos editor de texto, compiladores, etc... O código compartilhado pertence ao espaço lógico de todos os processos Dados e códigos próprios Cada processo possui sua área de códigos e seus dados
Proteção e Compartilhamento CPU p d endereço lógico tabela de páginas endereço físico 4 f d End 0000 2000 4000 6000 8000 A000 C000 E000 Frame 0 1 2 3 4 5 6 7 memória física x x x A 2 pag. 2 pag. 0 pag. 1
Implementação da tabela de páginas Quais recursos e estrutura de dados para controlar estes recursos o subsistema de gerência de memória deve manter? Como implementar a tabela de páginas? Registradores cada página um registrador no descritor de processo são mantidas cópias dos registradores troca de contexto: atualização dos registradores desvantagem: quantidade de registradores  Memória
Tabela de páginas em memória PTBR  -  Page-table base register aponta para a tabela de página PRLR  -  Page-table length register indica o tamanho da tabela em número de entradas p d f d endereço lógico endereço físico memória PTBR acesso 1 acesso 2 tabela processo
Translation look-aside buffers  (TLBs) memória cache especial (memória associativa) tamanho limitado (custo) 10 vezes mais rápido que RAM p d f d endereço lógico endereço físico tabela de páginas CPU TLB hit miss RAM
Tempo de acesso a memória Depende da taxa de acertos  h  (hit rate) miss rate = 1 -  h  CPU TLB MEM MEM MEM h 1 - h t médio  =  h  . ( t a tlb  +   t a mem ) + ( 1 - h  ) . (t a tlb  +   t a mem  + t a mem  )
Paginação multinível Motivação Tamanho da tabela de página pior caso Intel 32 bits páginas de 4 KBytes    tabela com 1 Mega entradas Como armazenar tabelas de páginas contíguo na memória    fragmentação externa paginando a própria tabela Múltiplos níveis Diretório de tabela de páginas (n níveis) Tabelas de páginas
Paginação a dois níveis Intel 80x86 Endereços lógicos: 4 GBytes (32 bits) Páginas: 4 KBytes Tamanho da tabela de páginas 4 GBytes / 4 KBytes = 1.048.576 entradas cada entrada 4 bytes = tabela com 4 MBytes p d f d t 32 bits 10 10 12 tabela de páginas diretório de tabela de páginas memória física
Paginação a três níveis Típico das arquiteturas de processadores de 64 bits nível 1 nível 2 nível 3 deslocamento diretório global diretório intermediário tabela de página página
Tabela de páginas invertida Tabelas de páginas consomem muita memória cada processo tem sua tabela de páginas Ao invés de mapear as páginas aos frames, mapear os frames (limitado ao tamanho da memória física) às páginas CPU p d endereço lógico pid  p f d tabela de páginas endereço físico pid f
Segmentação Esquema de gerenciamento de memória que suporta a visão do usuário Usuário não vê a memória como um vetor linear, mas como uma coleção de segmentos de tamanho variável código pilha dados alocados estaticamente dados alocados dinamicamente
Segmentação pilha main program heap dados sqrt
Segmentação pilha main program heap dados sqrt <segment number, offset> segmento 0 segmento 1 segmento 2 segmento 3 segmento 4
Segmentação pilha main program heap dados sqrt segmento 0 segmento 1 segmento 2 segmento 3 segmento 4 seg 0 seg 3 seg 4 seg 2 seg 1
Hardware de Segmentação CPU s d s limite  base tabela de segmento < + RAM erro de endereçamento
Segmentação pilha main program heap dados sqrt segmento 0 segmento 1 segmento 2 segmento 3 segmento 4 seg 0 seg 3 seg 4 seg 2 seg 1 0 1 2 3 4 limite  base 100 300 100 400 100 50 1050 900 200 700 tabela de segmentos 50 200 600 700 800 900 1000 1050 1350 150
Proteção e Compartilhamento editor editor dados 1 dados 2 segmento 0 segmento 1 segmento 0 segmento 1 memória lógica processo 1 memória lógica processo 2 0 1 limite  base 100 300 50 200 tabela de segmentos processo 1 0 1 limite  base 100 500 50 800 tabela de segmentos processo 2 editor 50 150 dados 1 200 500 dados 2 800 1300
Implementação da tabela de segmentos Análogo a tabela de páginas registradores  tamanho limitado memória STBR - segment table base register STLR - segment table length register tabela pode ser muito grande dois acessos a memória para acessar um dado/instrução solução TLB (memória associativa)
Segmentação - desvantagens fragmentação externa mesmo problema de alocação de partições variáveis com as mesmas soluções concatenação de segmentos adjacentes compactação de memória
Solução para fragmentação externa Segmentação com paginação Recuperar as vantagens dos dois métodos em relação a fragmentação: paginação - fragmentação interna segmentação - fragmentação externa solução paginar segmentos endereço lógico s d s d p

Gerenciamento de Memoria

  • 1.
  • 2.
    Gerência de memóriaIntrodução Multiprogramação implica em manter-se vários processos em memória Memória necessita ser alocada de forma eficiente para permitir o máximo de processos Existem diferentes técnicas para gerência de memória dependem do hardware do processador
  • 3.
    Memória lógica ememória física Memória lógica É aquela que o processo “enxerga” Endereços lógicos são aqueles manipulados por um processo Memória física Implementada pelos circuitos integrados de memória Endereços físicos são aqueles que correspondem a uma posição real de memória Endereços lógicos são transformados em endereços físicos no momento de execução dos processos
  • 4.
    Unidade de Gerênciade Memória Memory Management Unit (MMU) Hardware que faz o mapeamento entre endereço lógico e endereço físico Complexidade variável de acordo com a funcionalidade oferecida CPU MMU endereço lógico endereço físico
  • 5.
    Exemplo de MMUCPU < > memória 100 799 sim sim não não registrador de limite inferior registrador de limite superior interrupção (endereço ilegal) interrupção (endereço ilegal) 123 123
  • 6.
    Exemplo de MMUCPU > + memória 200 500 sim não 623 registrador de limite registrador de base interrupção (endereço ilegal) 123
  • 7.
    Execução de programasUm programa deve ser transformado em um processo para ser executado Alocação de um descritor de processos Alocação de áreas de memória para código, dados e pilha Transformação é feita através de uma série de passos, alguns com a ajuda do próprio programador Compilação, diretivas de compilação e /ou montagem, ligação, etc ... Amarração de endereços (binding)
  • 8.
    Amarração de endereçosAtribuição de endereços (posições de memória) para código e dados pode ser feita em três momentos diferentes: Em tempo de compilação Em tempo de carga Em tempo de execução Diferenciação entre endereço lógico e endereço físico Como traduzir endereço lógico em endereço físico Código absoluto e código relocável
  • 9.
    Transformação de programaem processos programa compilador objeto ligador executável carregador RAM . . . fase de compilação fase de ligação fase de carga
  • 10.
    Carregador absoluto xcarregador relocador Programador não tem conhecimento onde o programa será carregado na memória Endereço só é conhecido no momento da carga durante a execução do programa sua localização física pode ser alterada swapping Necessidade de traduzir endereços lógicos à endereços físicos Relocação é a técnica que realiza essa tradução Via software: carregador relocador Via hardware: carregador absoluto
  • 11.
    Código relocável Carregadorrelocador correção de todas as referências a memória de forma a corresponder ao endereço de carga do programa Necessidade de identificar quais endereços devem ser corrigidos código relocável mapeamento das posições corrigidas é mantida através de tabelas Código executável mantém informações de relocação na forma de tabelas no momento da carga o programa executável é interpretado e os endereços corrigidos
  • 12.
    Código absoluto Carregadorabsoluto Não realiza correção de endereços no momento da carga do programa em memória Código executável absoluto não necessita manter tabelas de endereços a serem corrigidos Endereço de carga fixo pelo programa (programador) qualquer correção pode ser feita automaticamente, de forma transparente, a partir de registradores de base
  • 13.
    Mecanismos básicos degerência de memória Até estudarmos memória virtual, supor que para um programa ser executado ele necessita estar todo carregado em memória Mecanismos básicos partições fixas partições variáveis paginação segmentação
  • 14.
    Partições fixas Formamais simples de gerência de memória Divisão da memória em duas partes uso do S.O. uso dos processos de usuários Parte dedicada aos processos de usuários é por sua vez subdividida em partições de tamanhos iguais ou diferentes, porém sempre fixos implementada tanto através de registradores de limite superior e inferior como base e limite Método também conhecido como alocação particionada estática
  • 15.
    Gerenciamento de partiçõesfixas O S.O. é responsável pelo controle das partições mantendo informações como: partições alocadas partições livres tamanho da partições S.O. S.O. p5 p8 p2 S.O. p5 p2 S.O. p5 p2 p9
  • 16.
    Gerenciamento de partiçõesfixas Problemas O que fazer se a partição já estiver ocupada por um processo Processos podem ser carregados em qualquer partição depende se código é absoluto ou relocável Número de processos que podem estar em execução ao mesmo tempo sem swapping  igual ao número de partições (máximo) com swapping  maior que número de partições Programa é maior que o tamanho da partição não executa a menos que se empregue um esquema de overlay 4 combinações (tamanho variável ou fixo) x (código absoluto ou relocável)
  • 17.
    Gerenciamento de partiçõesfixas Com código absoluto Um processo só pode ser carregado na área de memória (partição) para a qual foi compilado Pode haver disputa por uma partição mesmo tendo outras livres processo é mantido no escalonador de longo prazo empregar swapping
  • 18.
    Gerenciamento de partiçõesfixas Com código relocável Um processo de tamanho menor ou igual ao tamanho da partição pode ser carregado em qualquer partição disponível Se todas as partições estão ocupadas, 2 soluções processo é mantido no escalonador de longo prazo empregar swapping
  • 19.
    Desvantagem de partiçõesfixas Uso ineficiente da memória principal Um processo, não importando quão pequeno seja, ocupa uma partição inteira Fragmentação interna S.O. 8 M 5 M 8 M 8 M 8 M processo fragmentação interna
  • 20.
    Algoritmos para alocaçãode partições fixas Se código é absoluto a alocação é determinada na compilação Se código é relocável partições de igual tamanho não importa qual partição é utilizada partições de diferentes tamanhos atribui o processo a menor partição livre capaz de armazená-lo fila para cada partição processos são atribuídos a partições de forma a minimizar o desperdício de memória (fragmentação interna)
  • 21.
    Partições variáveis Tambémdenominada de alocação particionada dinâmica Processos alocam memória de acordo com suas necessidades elimina a fragmentação interna Partições são em número e tamanho variáveis S.O. p1 p2 p3 320 K 224 K 288 K 400 K S.O. p1 p3 320 K 224 K 288 K 400 K S.O. p1 p3 320 K 128 K 288 K 400 K p4 96 K
  • 22.
    Algoritmos para alocaçãode partições variáveis Determinar em que lacuna (bloco) de memória livre um processo será alocado Políticas best fit miminizar tam_proc - tam_bloco deixar espaços livres menores possíveis worst fit maximizar tam_proc - tam_bloco deixar espaços livres os maiores possíveis first fit/next fit tam_proc > tam_bloco
  • 23.
    Algoritmos para alocaçãode partições variáveis Exemplos S.O. C A 20 K 40 K 30 K S.O. C A 20 K 40 K 30 K S.O. C A 20 K 40 K 30 K S.O. C A 20 K 40 K 30 K processo (10 K) best fit worst fit first fit
  • 24.
    Desvantagens de partiçõesvariáveis Tende a criar lacunas de memória livres que individualemente podem não ser suficientes para acomodar um processo pode haver memória livre, mas não contígua fragmentação externa Exemplo: criação de processo com 120 K S.O. P1 P4 P3 96 K 64 K
  • 25.
    Soluções possíveis parafragmentação externa Reunir espaços adjacentes de memória Empregar compactação Realocar as partições de forma a eliminar os espaços entre elas e criando uma área contígua Desvantagem consumo do processador acesso a disco Acionado somente quando ocorre fragmentação Necessidade de código relocável
  • 26.
    Sistema Buddy Partiçõesfixas Limita o número de processos ativos O uso da memória pode ser ineficiente Partições variáveis É mais complexo de manter Overhead de compactação Sistema Buddy Procura unir as vantagens de ambos minimizando as desvantagens
  • 27.
    Sistema Buddy 10241 M + 100 K + 240 K + 64 K + 256 K B A + 75 K C E D A=128 128 256 512 A=128 128 B=256 512 A=128 B=256 512 C=64 64 A=128 B=256 C=64 64 D=256 256 A=128 256 C=64 64 D=256 256 128 256 C=64 64 D=256 256 E=128 256 C=64 64 D=256 256 E=128 256 D=256 256 128 512 D=256 256 1024
  • 28.
    Swapping RAM backingstore P1 P2 swap out swap in
  • 29.
    Swapping Tempo deswap depende tamanho de processo política de swapping escalonador de médio prazo Atenção!!!!!!!!!!!!!!!!!! Não faça swap com processos com I/O pendente para evitar a transferência de dados para endereços inválidos de memória Solução Utilizar buffer de I/O internos ao sistema
  • 30.
    Paginação Partição fixagera fragmentação interna Partição variável gera fragmentação externa Solução paginação elimina fragmentação externa limita fragmentação interna
  • 31.
    Paginação página 01 2 3 frame 0 1 2 3 4 5 6 7 processo RAM
  • 32.
    Endereço lógico empaginação Endereço lógico número de página deslocamento dentro da página (offset) página 0 1 2 3 processo p E p p - número da página d - deslocamento P - tamanho da página (pot 2) d E = p + d b = E div p d = E mod p p d E m bits n m-n
  • 33.
    Tradução endereço lógicoem físico Tabela de página relaciona página lógica com frame físico CPU p d endereço lógico f f d tabela de páginas RAM endereço físico
  • 34.
    Exemplo de paginaçãoCaracterísticas do sistema memória física: 64 KBytes (16 bits) tamanho processo (máx): 32 KBytes (15 bits) páginas: 8 KBytes Sistema de páginas número de frames: 64/8=8 (0 a 7 )  3 bits número de páginas: 32/8= 4 (0 a 3)  2 bits deslocamento: 8 Kbytes  13 bits
  • 35.
    Exemplo de paginaçãop d Endereço lógico Endereço físico f d 15 bits 2 13 16 bits 3 13
  • 36.
    Exemplo de paginaçãoCPU 0 C98 endereço lógico 0C98 tabela de páginas endereço físico 8C98 8 8 C98 End 0000 2000 4000 6000 8000 A000 C000 E000 Frame 0 1 2 3 4 5 6 7 memória física
  • 37.
    Tamanho da páginaPágina grande tabela de página menor processo tem menos páginas aumenta fragmentação interna Página pequena tabela de página maior processo tem mais páginas diminui fragmentação interna Trade off tamanho depende do HW (MMU)
  • 38.
    Proteção de páginasAcesso garantido por definição processos acessam somente suas páginas endereços válidos Inclusão de bits de controle na tabela de página (por entrada) leitura, escrita ou executável Bit de validade página pertence ou não ao endereço lógico do processo
  • 39.
    Compartilhamento de páginasCódigo compartilhado cópia read-only, reentrante compartilhado entre vários processos editor de texto, compiladores, etc... O código compartilhado pertence ao espaço lógico de todos os processos Dados e códigos próprios Cada processo possui sua área de códigos e seus dados
  • 40.
    Proteção e CompartilhamentoCPU p d endereço lógico tabela de páginas endereço físico 4 f d End 0000 2000 4000 6000 8000 A000 C000 E000 Frame 0 1 2 3 4 5 6 7 memória física x x x A 2 pag. 2 pag. 0 pag. 1
  • 41.
    Implementação da tabelade páginas Quais recursos e estrutura de dados para controlar estes recursos o subsistema de gerência de memória deve manter? Como implementar a tabela de páginas? Registradores cada página um registrador no descritor de processo são mantidas cópias dos registradores troca de contexto: atualização dos registradores desvantagem: quantidade de registradores Memória
  • 42.
    Tabela de páginasem memória PTBR - Page-table base register aponta para a tabela de página PRLR - Page-table length register indica o tamanho da tabela em número de entradas p d f d endereço lógico endereço físico memória PTBR acesso 1 acesso 2 tabela processo
  • 43.
    Translation look-aside buffers (TLBs) memória cache especial (memória associativa) tamanho limitado (custo) 10 vezes mais rápido que RAM p d f d endereço lógico endereço físico tabela de páginas CPU TLB hit miss RAM
  • 44.
    Tempo de acessoa memória Depende da taxa de acertos h (hit rate) miss rate = 1 - h CPU TLB MEM MEM MEM h 1 - h t médio = h . ( t a tlb + t a mem ) + ( 1 - h ) . (t a tlb + t a mem + t a mem )
  • 45.
    Paginação multinível MotivaçãoTamanho da tabela de página pior caso Intel 32 bits páginas de 4 KBytes  tabela com 1 Mega entradas Como armazenar tabelas de páginas contíguo na memória  fragmentação externa paginando a própria tabela Múltiplos níveis Diretório de tabela de páginas (n níveis) Tabelas de páginas
  • 46.
    Paginação a doisníveis Intel 80x86 Endereços lógicos: 4 GBytes (32 bits) Páginas: 4 KBytes Tamanho da tabela de páginas 4 GBytes / 4 KBytes = 1.048.576 entradas cada entrada 4 bytes = tabela com 4 MBytes p d f d t 32 bits 10 10 12 tabela de páginas diretório de tabela de páginas memória física
  • 47.
    Paginação a trêsníveis Típico das arquiteturas de processadores de 64 bits nível 1 nível 2 nível 3 deslocamento diretório global diretório intermediário tabela de página página
  • 48.
    Tabela de páginasinvertida Tabelas de páginas consomem muita memória cada processo tem sua tabela de páginas Ao invés de mapear as páginas aos frames, mapear os frames (limitado ao tamanho da memória física) às páginas CPU p d endereço lógico pid p f d tabela de páginas endereço físico pid f
  • 49.
    Segmentação Esquema degerenciamento de memória que suporta a visão do usuário Usuário não vê a memória como um vetor linear, mas como uma coleção de segmentos de tamanho variável código pilha dados alocados estaticamente dados alocados dinamicamente
  • 50.
    Segmentação pilha mainprogram heap dados sqrt
  • 51.
    Segmentação pilha mainprogram heap dados sqrt <segment number, offset> segmento 0 segmento 1 segmento 2 segmento 3 segmento 4
  • 52.
    Segmentação pilha mainprogram heap dados sqrt segmento 0 segmento 1 segmento 2 segmento 3 segmento 4 seg 0 seg 3 seg 4 seg 2 seg 1
  • 53.
    Hardware de SegmentaçãoCPU s d s limite base tabela de segmento < + RAM erro de endereçamento
  • 54.
    Segmentação pilha mainprogram heap dados sqrt segmento 0 segmento 1 segmento 2 segmento 3 segmento 4 seg 0 seg 3 seg 4 seg 2 seg 1 0 1 2 3 4 limite base 100 300 100 400 100 50 1050 900 200 700 tabela de segmentos 50 200 600 700 800 900 1000 1050 1350 150
  • 55.
    Proteção e Compartilhamentoeditor editor dados 1 dados 2 segmento 0 segmento 1 segmento 0 segmento 1 memória lógica processo 1 memória lógica processo 2 0 1 limite base 100 300 50 200 tabela de segmentos processo 1 0 1 limite base 100 500 50 800 tabela de segmentos processo 2 editor 50 150 dados 1 200 500 dados 2 800 1300
  • 56.
    Implementação da tabelade segmentos Análogo a tabela de páginas registradores tamanho limitado memória STBR - segment table base register STLR - segment table length register tabela pode ser muito grande dois acessos a memória para acessar um dado/instrução solução TLB (memória associativa)
  • 57.
    Segmentação - desvantagensfragmentação externa mesmo problema de alocação de partições variáveis com as mesmas soluções concatenação de segmentos adjacentes compactação de memória
  • 58.
    Solução para fragmentaçãoexterna Segmentação com paginação Recuperar as vantagens dos dois métodos em relação a fragmentação: paginação - fragmentação interna segmentação - fragmentação externa solução paginar segmentos endereço lógico s d s d p