Gerenciamento de Memória
              Walter Fetter Lages
               w.fetter@ieee.org


   Universidade Federal do R...
Introdução

•   Alocação e desalocação de memória
     • Estática
     • Dinâmica

•   Memória virtual
     • Overlay
    ...
Sistemas Monotarefa
•   Um único programa na memória
     • O programa utiliza toda a memória
     • O programa deve ter t...
Sistemas Multitarefa
•   Partições fixas
     • Partições definidas manualmente pelo
       operador
     • Uma partição de ...
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 m...
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 sinaliz...
Métodos de Gerenciamento
•   Listas ligadas
     • Existe uma lista ligada que relaciona os
       blocos de memória aloca...
Métodos de Gerenciamento
•   Buddy System
     • Utiliza o fato dos endereços serem binários
     • Existe uma lista de bl...
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/compila...
Segmentação

•   Associa-se a cada área de memória um valor de
    base e um valor de limite
•   base=endereço inicial
•  ...
Segmentação

•   Endereço final = Offset + base
     • Soma feita por hardware a cada acesso à
       memória
•   Endereços...
Segmentação

•   O seletor e descritor de segmento são controlados
    pelo sistema operacional
•   O offset é controlado ...
Segmentação no ix86

•   Local Descriptor Table (LDT)
•   Global Descriptor Table (GDT)




                              ...
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
    permi...
Segmentação no 8086/8088

•   Endereço físico=reg. de segmento * 16 + offset
•   Endereço físico=reg. de segmento « 4 + of...
Memória Virtual



•   Paginação
     • Falta de
       página
     • Page-table

•   Endereço
     • Virtual
     • Físic...
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
     • Registrad...
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
       m...
Verificação de Privilégios




                        Copyright (c) Walter Fetter Lages – p.31
I/O Permission Bit Map




                     Copyright (c) Walter Fetter Lages – p.32
Próximos SlideShares
Carregando em…5
×

Gerenciamento de Memória

3.137 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.137
No SlideShare
0
A partir de incorporações
0
Número de incorporações
24
Ações
Compartilhamentos
0
Downloads
89
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Gerenciamento de Memória

  1. 1. 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
  2. 2. 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
  3. 3. 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
  4. 4. 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-fit • Fila única com best-fit e máximo de skip-over Copyright (c) Walter Fetter Lages – p.4
  5. 5. Partições Fixas Copyright (c) Walter Fetter Lages – p.5
  6. 6. 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
  7. 7. Lay-out de Memória das Tarefas Copyright (c) Walter Fetter Lages – p.7
  8. 8. 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
  9. 9. 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
  10. 10. 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
  11. 11. Buddy System Copyright (c) Walter Fetter Lages – p.11
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. 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
  16. 16. Segmentação no ix86 • Local Descriptor Table (LDT) • Global Descriptor Table (GDT) Copyright (c) Walter Fetter Lages – p.16
  17. 17. GLDT e LDT Copyright (c) Walter Fetter Lages – p.17
  18. 18. Segmentação no ix86 Copyright (c) Walter Fetter Lages – p.18
  19. 19. Seletor de Segmento no ix86 Copyright (c) Walter Fetter Lages – p.19
  20. 20. Descritor de Segmento Copyright (c) Walter Fetter Lages – p.20
  21. 21. 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 quot;parágrafosquot; • Segmentação mal implementada • O quot;tamanho máximoquot;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
  22. 22. 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
  23. 23. Memória Virtual • Paginação • Falta de página • Page-table • Endereço • Virtual • Físico Copyright (c) Walter Fetter Lages – p.23
  24. 24. Tabela de Páginas Copyright (c) Walter Fetter Lages – p.24
  25. 25. 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
  26. 26. Páginas de 4KB no ix86 Copyright (c) Walter Fetter Lages – p.26
  27. 27. Páginas de 4MB no ix86 Copyright (c) Walter Fetter Lages – p.27
  28. 28. Segmentação e Paginação no ix86 Copyright (c) Walter Fetter Lages – p.28
  29. 29. Proteção de Memória no ix86 Copyright (c) Walter Fetter Lages – p.29
  30. 30. 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
  31. 31. Verificação de Privilégios Copyright (c) Walter Fetter Lages – p.31
  32. 32. I/O Permission Bit Map Copyright (c) Walter Fetter Lages – p.32

×