Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
so:algoritmos_de_substituicao_de_paginas [2010/12/08 17:33] mazieroso:algoritmos_de_substituicao_de_paginas [2010/12/10 17:57] (atual) maziero
Linha 1: Linha 1:
 +====== Algoritmos de substituição de páginas ======
 +
 +O objetivo deste projeto é escrever um programa para simular os principais algoritmos de substituição de páginas usados no gerenciamento da memória virtual. O programa deverá simular os seguintes algoritmos:
 +
 +  * FIFO (//First In, First Out//)
 +  * OPT (Algoritmo ótimo)
 +  * LRU (//Least Recently Used//)
 +
 +O programa deverá receber como parâmetro o número de quadros disponíveis na RAM e ler da entrada padrão (//stdin//) a sequência de referências às páginas (uma referência por linha), conforme o exemplo a seguir:
 +
 +<code>
 +simula-vm 4 < referencias.txt
 +
 +ou
 +
 +cat referencias.txt | simula-vm 4
 +</code>
 +
 +Neste exemplo, a memória RAM tem 4 quadros disponíveis e o arquivo ''referencias.txt'' contém as referências de acesso às páginas.
 +
 +O programa deve gerar como saída o número de falta de páginas verificado para cada algoritmo, de acordo com o exemplo a seguir:
 +
 +<code>
 +    4 quadros,      30 refs: FIFO:    17 PFs, LRU:    15 PFs, OPT:    11 PFs
 +</code>
 +
 +**Atenção**: deve ser usada a //string// de formato abaixo para a impressão do resultado na tela. ** Não imprima mais nada além disso**.
 +
 +<code>
 +printf ("%5d quadros, %7d refs: FIFO: %5d PFs, LRU: %5d PFs, OPT: %5d PFs\n", ...) ;
 +</code>
 +
 +Para testar seu código, use os seguintes arquivos, que correspondem às strings de referências usadas no livro do professor (capítulo V - //Gerência de Memória//):
 +
 +  * {{:so:vsim-exemplo.txt|Arquivo 1}}, com resultados mostrados na figura 28 do livro.
 +  * {{:so:vsim-belady.txt|Arquivo 2}}, com resultados mostrados na figura 31 do livro.
 +  * {{:so:vsim-gcc.txt.gz|Arquivo 3}}, trecho de //tracing// de acessos à memória do compilador GCC (obtido e adaptado [[http://www.cse.nd.edu/~dthain/courses/cse341/spring2005/projects/memory/|desta página]]). Este //tracing// tem 10<sup>6</sup> referências a 64K páginas. Os seguintes resultados são esperados para este teste:
 +
 +^  Quadros  ^  FIFO  ^  LRU  ^  OPT  ^
 +|  64  |  38496  |  30416  |  18377  |
 +|  256  |  9859  |  6270  |  3107  |
 +|  1024  |  1450  |  1273  |  1260  |
 +|  4096  |  1260  |  1260  |  1260  |
 +
 +Deve ser entregue ao professor o código-fonte em C do simulador (arquivo ''simula-vm.c''), devidamente comentado.
 +
 +Dicas:
 +  * para ler os parâmetros da linha de comando use ''argc/argv''
 +  * para ler dados da entrada padrão (//stdin//) use ''scanf''
 +
 +<code c>
 +n = 0 ;
 +while ( (! feof(stdin)) && (n < MAXIMO) )
 +  scanf ("%d\n", vetor[n++]) ;
 +</code>