Gerenciamento de Memória

Table of Contents

1. Introdução

1.0.1. Introdução assíncrona ao Gerenciamento de Memória

1.0.2. Vídeos sobre memória

1.0.3. Vídeos

1.1. Exercícios

  1. Considere um sistema cuja gerência de memória é feita através de partições variáveis.
    • Nesse momento, existem as seguintes lacunas (áreas livres): 10K, 4K, 20K,18K, 7K, 9K, 12K e 13K, nessa ordem.
    • Quais espaços serão ocupados pelas solicitações: 4K, 10K e 6K, nessa ordem, se:
      • first-fit for utilizado?
      • best-fit for utilizado?
      • worst-fit for utilizado?
  2. Calcule o número de bits para página, quadro e deslocamento.
    • Memória lógica = 512K, Memória física = 512K, Tamanho de página = 8K
    • Tamanho de página = 4K, número de páginas = 8, número de quadros = 16
  3. O que é paginação?
  4. Qua é a diferença entre paginação e segmentação?
  5. Considere que os processos da tabela abaixo devem ser executados em um SO com paginação.
    • A memória total é de 64K, o tamanho das páginas é de 4K e o SO ocupa 8K. Mostre como seria a alocação de quadros para cada processo.
Processo Mem. (K) T. Chegada T. Execução
P1 8 0 10
P2 6 1 15
P3 15 2 10
P4 5 3 14
P5 10 15 5
  1. Qual a diferença entre fragmentação interna e externa da memória principal?
  2. Qual a principal diferença entre os sistemas que implementam paginação e segmentação?
  3. Para que serve o bit de validade nas tabelas de páginas e segmentos?
  4. Nos sistemas com paginação, a rotina para tratamento de page faults está residente na memória principal
    • Esta rotina pode ser removida da memória em algum momento?
    • O que aconteceria se esta rotina não estivesse na memória principal durante a ocorrência de um page fault?
  5. Descreva como ocorre a fragmentação interna em um sistema que implementa paginação
  6. Na figura abaixo está representada um esquema de paginação que utiliza 4 bits para índice da página e 12 bits para deslocamento. :profIslene: questao-memoria-A17.png
    • Considerando esta tabela, indique para cada endereço virtual o endereço físico correspondente ou escreva page fault
      • 0010 0000 0000 0111
      • 0011 0000 1010 0000
      • 0100 0000 0000 0101
      • 1111 1111 1111 1111
      • 0000 0000 0000 0000
  7. Seria possível e/ou viável implementar as conversões de endereços realizados pelas MMU em software, ao invés de usar um hardware dedicado? Por quê?
  8. O que é memória virtual?
  9. Quais das seguintes técnicas e estruturas de programação são "boas" para um ambiente de paginação por demanda? Quais delas são "más"? Explique suas respostas.
    • pilha
    • Busca Sequencial
    • Busca Binária
    • Operações em vetor
    • Simulação
  10. Considere os seguintes algoritmos de substituição de páginas. Classifique estes algoritmos em uma escala de cinco pontos do "ruim" ao "perfeito" de acordo com a sua taxa de erros de página. Separe os algoritmos afetados pela anomalia de Belady daqueles que não o são.
    • Substituição LRU
    • Substituição FIFO
    • Substituição Ótima
    • Substituição da segunda chance
  11. Considere a seguinte sequência de referências de páginas: 1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6
    • Quantos erros de pághinas iriam ocorrer para os seguintes algoritmos de substituição , considerando um, dois, três, quatro, cinco, seis ou sete quadros? Lembre-se de que todos os quadros estão inicialmente vazios, de modo que a primeira página de cada um implicará em um erro de página.
      • Substituição LRU
      • Substituição Ótima
      • Substituição do Relógio
      • Substituição WSClock
  12. Você consegue imaginar alguma situação em que dar suporte à memória virtual seria uma má ideia e o que se ganha quando não é necessário o suporte a memória virtual? Explique
  13. Exercícios do capítulo 3 do Tanembaum
  14. Qual é a diferença entre paginação e segmentação? Qual a principal diferença entre os sistemas que implementam paginação e segmentação? Por quê alguns sistemas implementam Segmentação com Paginação?
  15. Observe o programa abaixo:
 1: #define PAGESIZE 4096
 2: #define N 500000
 3: char mat[N][PAGESIZE];
 4: void funcao_A(char c) {
 5:   int i, j;
 6:   for (i = 0; i < N; i++)
 7:     for (j = 0; j < PAGESIZE; j++)
 8:       mat[i][j] = c;
 9: }
10: void funcao_B(char c) {
11:   int i,j;
12:   for (j = 0; j < PAGESIZE; j++)
13:     for (i = 0; i < N; i++)
14:       mat[i][j] = c;
15: }
16: int main() {
17:   funcao_A('*');
18:   funcao_B('-');
19:   return 0;
20: }

Considere que o seu sistema utiliza paginação e que o endereço mat[i][j] é calculado da seguinte forma: mat[i][j] = mat + (i*PAGESIZE+j)*sizeof(char)

  • Qual função (funcao_A ou funcao_B) irá, provavelmente, ser executada mais rápido?
  • Descreva duas razões relacionadas ao gerenciamento de memória que justificam a sua resposta acima.

Author: Bruno Ribas

Created: 2022-08-08 seg 16:17

Validate