Olá Vini, obrigado pela atenção, o código inicial foi passado pelo professor. O programa é realmente para paginação de memória, vou tentar passar a idéia do professor, espero que não complique.
P = Página
V = válido (0 ou 1)
Q = Quadro
R= Bit de referencia
Hist = Histórico
TC = Tempo de Carga
Exemplo:
6 3 4 5 21
0 1 2 1 0 1 0 1 0 1 3 0 3 0 3 3 4 3 4 5 1
Tabela de Páginas Inicial
|P|V|Q|R|HIST|TC|
|0|0|-|0|0000| -|
|1|0|-|0|0000| -|
|2|0|-|0|0000| -|
|3|0|-|0|0000| -|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|
Acesso e carregamento da página 0 (no quadro 0)
|P|V|Q|R|HIST|TC|
|0|1|0|1|0000| 0| <- A página 0 foi carregada no primeiro
|1|0|-|0|0000| -| quadro (0), foi marcada como válida (V),
|2|0|-|0|0000| -| o seu bit de referência ® foi ligado e
|3|0|-|0|0000| -| o histórico inicial foi definido
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|
Acesso e carregamento da página 1 (no quadro 1)
|P|V|Q|R|HIST|TC|
|0|1|0|1|0000| 0|
|1|1|1|1|0000| 1|
|2|0|-|0|0000| -|
|3|0|-|0|0000| -|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|
Acesso e carregamento da página 2 (no quadro 2)
|P|V|Q|R|HIST|TC|
|0|1|0|1|0000| 0|
|1|1|1|1|0000| 1|
|2|1|2|1|0000| 2|
|3|0|-|0|0000| -|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|
Acesso às página 1 e 0 (A tabela de páginas permanece igual)
SHIFT (Inserção dos bits de referência no histórico, pela esquerda descartando o bit menos significativo. O bit de referência é zerado.)
|P|V|Q|R|HIST|TC|
|0|1|0|0|1000| 0|
|1|1|1|0|1000| 1|
|2|1|2|0|1000| 2|
|3|0|-|0|0000| -|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|
Acesso às páginas 1, 0, 1, 0 e 1
|P|V|Q|R|HIST|TC|
|0|1|0|1|1000| 0|
|1|1|1|1|1000| 1|
|2|1|2|0|1000| 2|
|3|0|-|0|0000| -|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|
SHIFT
|P|V|Q|R|HIST|TC|
|0|1|0|0|1100| 0|
|1|1|1|0|1100| 1|
|2|1|2|0|0100| 2|
|3|0|-|0|0000| -|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|
Acesso à página 3, será feita uma substituição de página
|P|V|Q|R|HIST|TC|
|0|1|0|0|1100| 0| -> corresponde ao valor 12
|1|1|1|0|1100| 1| -> corresponde ao valor 12
|2|1|2|0|0100| 2| -> corresponde ao valor 4 (o algoritmo do
|3|0|-|0|0000| -| histórico dos bits de referência
|4|0|-|0|0000| -| substitui a página com o menor valor
|5|0|-|0|0000| -| formado por R+HIST)
Carregamento da página 3 (no lugar da página 2, ou seja, no quadro 2)
|P|V|Q|R|HIST|TC|
|0|1|0|0|1100| 0|
|1|1|1|0|1100| 1|
|2|0|-|0|0100| -|
|3|1|2|1|0000|10|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|
Acesso às páginas 0, 3, 0 e 3
|P|V|Q|R|HIST|TC|
|0|1|0|1|1100| 0|
|1|1|1|0|1100| 1|
|2|0|-|0|0100| -|
|3|1|2|1|0000|10|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|
SHIFT
|P|V|Q|R|HIST|TC|
|0|1|0|0|1110| 0|
|1|1|1|0|0110| 1|
|2|0|-|0|0010| -|
|3|1|2|0|1000|10|
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|
Acesso à página 3
|P|V|Q|R|HIST|TC|
|0|1|0|0|1110| 0| -> 14
|1|1|1|0|0110| 1| -> 6
|2|0|-|0|0010| -|
|3|1|2|1|1000|10| -> 24
|4|0|-|0|0000| -|
|5|0|-|0|0000| -|
Acesso e carregamento da página 4 (no lugar da página 1, ou seja, no quadro 1)
|P|V|Q|R|HIST|TC|
|0|1|0|0|1110| 0|
|1|0|-|0|0110| -|
|2|0|-|0|0010| -|
|3|1|2|1|1000|10|
|4|1|1|1|0000|16|
|5|0|-|0|0000| -|
Acesso às páginas 3 e 4
|P|V|Q|R|HIST|TC|
|0|1|0|0|1110| 0| -> 14
|1|0|-|0|0110| -|
|2|0|-|0|0010| -|
|3|1|2|1|1000|10| -> 24
|4|1|1|1|0000|16| -> 16
|5|0|-|0|0000| -|
Acesso e carregamento da página 5 (no lugar da página 0, ou seja, no quadro 0)
|P|V|Q|R|HIST|TC|
|0|0|-|0|1110| -|
|1|0|-|0|0110| -|
|2|0|-|0|0010| -|
|3|1|2|1|1000|10|
|4|1|1|1|0000|16|
|5|1|0|1|0000|19|
SHIFT
|P|V|Q|R|HIST|TC|
|0|0|-|0|0111| -|
|1|0|-|0|0011| -|
|2|0|-|0|0001| -|
|3|1|2|0|1100|10| -> 12
|4|1|1|0|1000|16| -> 8
|5|1|0|0|1000|19| -> 8
Acesso e carregamento da página 1. Há empate nos menores valores de
R+HIST (páginas 4 e 5 tem o mesmo valor). Utiliza-se a ordem de
carregamento, ou seja, o tempo de carga (TC) como critério de desempate.
Neste caso, a página 1 entra no lugar da página 4, que tem o menor tempo de carga (ou seja, o tempo de carga mais antigo). A página 1 ocupa o quadro 1.
|P|V|Q|R|HIST|TC|
|0|0|-|0|0111| -|
|1|1|1|1|0011|20|
|2|0|-|0|0001| -|
|3|1|2|0|1100|10|
|4|0|-|0|1000| -|
|5|1|0|0|1000|19|
Resposta esperada:
- Número de falhas de página = 7
- Páginas na memmória (em ordem crescente de quadro) = {5, 1, 3}
Formato:
7
5 1 3