Trabalho Prático de Sistemas Operacionais - 1º semestre de 2015
Memória Virtual

Equipe de dois alunos - Entrega 15 de maio

Neste trabalho, um simulador de gerenciamento de memória virtual com paginação deve ser implementado, tendo um aspecto iterativo. Para tal, processos são submetidos e sua execução simulada, através de uma séria de referências a memória. Essas referências podem ser de leitura ou de gravação em um endereço virtual memória.

Seu simulador deve ler em arquivo(s) as informações sobre a "vida" do processo, contendo para cada processo, o tamanho de sua imagem e uma seqüência de operações de acesso à memória principal que o respectivo processo realiza. 


Ainda, seu simulador deve conter as seguintes opções de configuração de mecanismos associados à memória virtual:

  • Tamanho das páginas e quadros de página
  • Tamanho em bits do endereço lógico
  • Tamanho da Memória física que deve ser múltiplo de tamanho do quadro
  • Tamanho máximo da memória secundária
  • Tamanho da imagem de cada processo a ser executado
O gerenciador de memória deve utilizar um algoritmo de substituição de páginas, para alocar um quadro a uma página não residente em memória em caso da MP estar toda alocada.  Os algoritmos a serem implementados devem ser:
  • Algoritmo de substituição de páginas LRU e relógio com somente o bit de utilização u
  • Escopo de substituição global

Como entrada do simulador, representando a execução de um programa, uma seqüência consistente de acesso a endereços lógicos de memória de um determinado processo e o tipo de acesso a esses endereços lógicos deve ser dada. Os tipos de acesso são: leitura (R); e gravação (W), que devem ser interpretados pelo simulador.  Este arquivo deve em cada linha, conter as seguintes informações:

número-do-processo  tipo-de-acesso (R ou W) endereço-lógico

Ainda, para cada processo novo, uma linha com o tag C (criação) representa que o processo deve ser criado considerando o tamanho especificado nesta linha. A unidade de armazenamento deve ser especificada pelo projetista.

      número-do-processo  C  tamanho-em-alguma-unidade

Exemplo de um arquivo de entrada:

##### início do arquivo ######
P1 C 500
P1 R (0)2
P1 R  (1)2
P1 R (2)2
P1 W  (1024)2
P7 C 1000
P7 R (4095)2
P7 R  (800)2
P7 R (801)2
P7 W  (4096)2

P1 R (3)2
P1 R  (4)2
P1 W (1025)2
P1 W  (1026)2
……etc
##### final do arquivo ######

Obs.: a notação (x)2 representa o valor x em binário

 Especificar as estruturas de dados necessárias para implementar cada política de substituição e escopo. Uma saída (interface amigável) deve mostrar:

  • o que está acontecendo tanto na memória principal, quanto na secundária;
  • a tabela de páginas associada a cada processo em execução;
  • as ocorrências de falta de página.