Baixe o app para aproveitar ainda mais
Prévia do material em texto
Gerenciamento de Memória Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia ElØtrica ENG04008 Sistemas de Tempo Real Copyright (c) Walter Fetter Lages – p.1 Introduçªo • Alocação e desalocação de memória • Estática • Dinâmica • Memória virtual • Overlay • Paginação • Segmentação de memória Copyright (c) Walter Fetter Lages – p.2 Sistemas Monotarefa • Um único programa na memória • O programa utiliza toda a memória • O programa deve ter todos os drivers de I/O • Divisão da memória entre o programa e o sistema operacional Copyright (c) Walter Fetter Lages – p.3 Sistemas Multitarefa • Partições fixas • Partições definidas manualmente pelo operador • Uma partição de tamanho suficiente é alocada para cada tarefa • Em geral, o número de tarefas > número de partições =>diversas politicas para utilização das partições • Uma fila de tarefas para cada partição • Uma fila única • Fila única com best-�t • Fila única com best-�t e máximo de skip-over Copyright (c) Walter Fetter Lages – p.4 Partiçıes Fixas Copyright (c) Walter Fetter Lages – p.5 Partiçıes VariÆveis • O tamanho das partições varia conforme a criação/destruição das tarefas • Fragmentação de memória • Compactação de memória • Consome muito tempo -> normalmente feito durante a alocação/desalocação de memória em sistemas não tempo real • Espaço para a memória das tarefas crescer • Alocação dinâmica de memória para dados Copyright (c) Walter Fetter Lages – p.6 Lay-out de Memória das Tarefas Copyright (c) Walter Fetter Lages – p.7 MØtodos de Gerenciamento • Bit-map • Memória dividida em unidades de alocação • Existe um bit-map para sinalizar se cada unidade de alocação está alocada ou livre • Procura por espaços livres não é eficiente Copyright (c) Walter Fetter Lages – p.8 MØtodos de Gerenciamento • Listas ligadas • Existe uma lista ligada que relaciona os blocos de memória alocados e livres • Normalmente a lista é ordenada por endereço • Algoritmos de Alocação de memória • First-fit • Next-fit • Best-fit • Worst-fit • Quick-fit Copyright (c) Walter Fetter Lages – p.9 MØtodos de Gerenciamento • Buddy System • Utiliza o fato dos endereços serem binários • Existe uma lista de blocos livres de tamanho 1, 2, 4, 8 ... tamanho da memória • Ineficiente no uso da memória • Fragmentação interna Copyright (c) Walter Fetter Lages – p.10 Buddy System Copyright (c) Walter Fetter Lages – p.11 Relocaçªo • Em sistemas multitarefa, cada tarefa terá um endereço inicial diferente. Como o programador/compilador/linker saberá o endereço inicial (e endereços de subrotinas, dados, etc...) da tarefa? • Problema da relocação • Gerar apenas código com endereços relativos • Código relocável • Relocação durante a carga da tarefa na memória Copyright (c) Walter Fetter Lages – p.12 Segmentaçªo • Associa-se a cada área de memória um valor de base e um valor de limite • base=endereço inicial • limite=endereço máximo ou tamanho • Todas as tarefas são codificadas assumindo que a sua área de memória começa em 0 • Quando a tarefa é selecionada para executar, base e limite são carregados em registradores especiais na CPU Copyright (c) Walter Fetter Lages – p.13 Segmentaçªo • Endereço final = Offset + base • Soma feita por hardware a cada acesso à memória • Endereços são verificados quanto ao limite • Uma tarefa não pode acessar a área das outras Copyright (c) Walter Fetter Lages – p.14 Segmentaçªo • O seletor e descritor de segmento são controlados pelo sistema operacional • O offset é controlado pelo programa de aplicação • Proteção • Usualmente o descritor de segmentos tem alguns bits associados que são utilizados para determinar as características de proteção do segmento • Permissões de leitura, escrita, execução • Cache de descritor de segmento • Evita dois acessos a memória • Alterado apenas quando o registrador de seletor de segmento é alterado Copyright (c) Walter Fetter Lages – p.15 Segmentaçªo no ix86 • Local Descriptor Table (LDT) • Global Descriptor Table (GDT) Copyright (c) Walter Fetter Lages – p.16 GLDT e LDT Copyright (c) Walter Fetter Lages – p.17 Segmentaçªo no ix86 Copyright (c) Walter Fetter Lages – p.18 Seletor de Segmento no ix86 Copyright (c) Walter Fetter Lages – p.19 Descritor de Segmento Copyright (c) Walter Fetter Lages – p.20 Segmentaçªo no 8086/8088 • Processadores sem modo protegido • Sem proteção, não tem sentido a existência de permissões e limite no segmento • O descritor de segmento resume-se à base • Como os registradores são de 16 bits decidiu-se limitar o início de segmentos apenas alinhados com "parágrafos" • Segmentação mal implementada • O "tamanho máximo"do segmento é 64KB • O limite do segmento não é garantido • Na verdade é apenas um esquema para endereçar 1MB utilizando 2 registradores Copyright (c) Walter Fetter Lages – p.21 Segmentaçªo no 8086/8088 • Endereço físico=reg. de segmento * 16 + offset • Endereço físico=reg. de segmento « 4 + offset Copyright (c) Walter Fetter Lages – p.22 Memória Virtual • Paginação • Falta de página • Page-table • Endereço • Virtual • Físico Copyright (c) Walter Fetter Lages – p.23 Tabela de PÆginas Copyright (c) Walter Fetter Lages – p.24 Hardware de Paginaçªo • Usualmente a tabela de páginas é mantida em memória e não em registradores • Registrador de base da tabela de páginas • Translation look-aside buffer (TLB) • Evita dois acessos a memória • Memória associativa • Páginas também podem ter bits de proteção associados • Bit de presença/ausência Copyright (c) Walter Fetter Lages – p.25 PÆginas de 4KB no ix86 Copyright (c) Walter Fetter Lages – p.26 PÆginas de 4MB no ix86 Copyright (c) Walter Fetter Lages – p.27 Segmentaçªo e Paginaçªo no ix86 Copyright (c) Walter Fetter Lages – p.28 Proteçªo de Memória no ix86 Copyright (c) Walter Fetter Lages – p.29 Proteçªo de I/O no ix86 • Existe um nível de privilégio de I/O • Apenas processos com nível de privilégio menor ou igual podem executar instruções de I/O • Associado a cada processo pode existir um bitmap de permissões de I/O • Apenas as portas habilitadas podem ser acessadas • Hardware Virtual • Virtualização de dispositivos Copyright (c) Walter Fetter Lages – p.30 Veri�caçªo de PrivilØgios Copyright (c) Walter Fetter Lages – p.31 I/O Permission Bit Map Copyright (c) Walter Fetter Lages – p.32 Introdução Sistemas Monotarefa Sistemas Multitarefa Partições Fixas Partições Variáveis Lay-out de Memória das Tarefas Métodos de Gerenciamento Métodos de Gerenciamento Métodos de Gerenciamento Buddy System Relocação Segmentação Segmentação Segmentação Segmentação no ix86 GLDT e LDT Segmentação no ix86 Seletor de Segmento no ix86 Descritor de Segmento Segmentação no 8086/8088 Segmentação no 8086/8088 Memória Virtual Tabela de Páginas Hardware de Paginação Páginas de 4KB no ix86 Páginas de 4MB no ix86 Segmentação e Paginação no ix86 Proteção de Memória no ix86 Proteção de I/O no ix86 Verificação de Privilégios I/O Permission Bit Map
Compartilhar