-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrelatorio.txt
More file actions
155 lines (116 loc) · 5.17 KB
/
relatorio.txt
File metadata and controls
155 lines (116 loc) · 5.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
Alunos: Handel Scholze (1512479) e Lucas Pavanelli (1511341)
Compilação:
------------------
gcc -o simulador simulador.c
Compilação modo DEBUG:
------------------
gcc -o simulador simulador.c -D_DEBUG
Executar:
-------------
./simulador
Resumo do projeto:
----------------------
O simulador foi organizado de tal forma que para cada algoritmo
existe uma função que o implementa e, além disso, existem funções
auxiliares que implementam certas instruções que são comuns a
todos os algoritmos. Um exemplo de função auxiliar é calcular
o índice de uma página dado seu endereço completo ou colocar em
uma moldura de página vazia uma página.
No nosso simulador duas estruturas de dados são utilizadas por
todos os algoritmos:
1) Vetor de inteiros que guarda para cada página qual é a
sua moldura de página correspondente e caso esta página
não esteja na memória física guardamos -1.
2) Vetor de PageFrame, em que PageFrame é um struct que
tem os flags R e M, um inteiro que guarda o instante de
último acesso (lastAcessed) e um inteiro que guarda o
índice da página que está em certa moldura, que guarda
as informações sobre as molduras de página.
Para o algoritmo LRU foi utilizado um vetor de inteiros sem
sinal (ageArr) o quão recentemente cada moldura de página foi
acessada. Para cada intervalo de tempo esse vetor é atualizado
conforme o algoritmo do envelhecimento.
Para o algoritmo NRU somente foi necessário usar as duas
estruturas comuns a todos os algoritmos.
As estruturas utilizadas pelo algoritmo NOVO estão descritas
a seguir.
Descrição algoritmo NOVO:
---------------------------
A ideia do nosso algoritmo NOVO é quando ocorrer um page-fault
escolher a página que menos foi acessada e caso ocorra um empate
escolher a página menos recentemente acessada. Para isso utilizamos
uma estrutura de dados auxiliar que guardar quantas vezes cada
página que está numa moldura de página foi acessada e usamos o
campo lastAcessed da estrutura da moldura de página para saber a
que foi menos recentemente acessada.
Análise do desempenho:
--------------------------
Para fazer a análise rodamos o simulador para tamanhos de página
16 KB e 32 KB e com tamanho de memória física igual a 1 MB.
Segue abaixo os resultados:
1) Arquivo compilador.log
-> Página 16 KB:
LRU - Numero de Faltas de Páginas: 2125
Numero de Paginas escritas: 1439
NRU - Numero de Faltas de Páginas: 2031
Numero de Paginas escritas: 1350
NOVO - Numero de Faltas de Páginas: 2013
Numero de Paginas escritas: 879
-> Página 32 KB:
LRU - Numero de Faltas de Páginas: 1818
Numero de Paginas escritas: 1275
NRU - Numero de Faltas de Páginas: 1730
Numero de Paginas escritas: 1190
NOVO - Numero de Faltas de Páginas: 1629
Numero de Paginas escritas: 798
2) Arquivo compressor.log
-> Página 16 KB:
LRU - Numero de Faltas de Páginas: 232
Numero de Paginas escritas: 109
NRU - Numero de Faltas de Páginas: 206
Numero de Paginas escritas: 3
NOVO - Numero de Faltas de Páginas: 195
Numero de Paginas escritas: 62
-> Página 32 KB:
LRU - Numero de Faltas de Páginas: 221
Numero de Paginas escritas: 87
NRU - Numero de Faltas de Páginas: 181
Numero de Paginas escritas: 36
NOVO - Numero de Faltas de Páginas: 175
Numero de Paginas escritas: 53
3) Arquivo matriz.log
-> Página 16 KB:
LRU - Numero de Faltas de Páginas: 2727
Numero de Paginas escritas: 1716
NRU - Numero de Faltas de Páginas: 3124
Numero de Paginas escritas: 1928
NOVO - Numero de Faltas de Páginas: 1870
Numero de Paginas escritas: 1357
-> Página 32 KB:
LRU - Numero de Faltas de Páginas: 2322
Numero de Paginas escritas: 1358
NRU - Numero de Faltas de Páginas: 2994
Numero de Paginas escritas: 1878
NOVO - Numero de Faltas de Páginas: 1645
Numero de Paginas escritas: 1291
4) Arquivo simulador.log
-> Página 16 KB:
LRU - Numero de Faltas de Páginas: 2988
Numero de Paginas escritas: 2289
NRU - Numero de Faltas de Páginas: 2908
Numero de Paginas escritas: 2330
NOVO - Numero de Faltas de Páginas: 2856
Numero de Paginas escritas: 2163
-> Página 32 KB:
LRU - Numero de Faltas de Páginas: 2550
Numero de Paginas escritas: 1934
NRU - Numero de Faltas de Páginas: 2552
Numero de Paginas escritas: 2043
NOVO - Numero de Faltas de Páginas: 2385
Numero de Paginas escritas: 1843
Pelos resultados acima podemos ver que o algoritmo NOVO supera
os outros dois algoritmos nos dois quesitos para todos programas,
exceto para o compressor em que seu número de páginas escritas é
maior que o do NRU. É possivel perceber também que para o arquivo
matrix.log, o algoritmo NOVO supera por muito os outros dois tendo
por volta de 1000 page-fault a menos.