@@ -38,6 +38,7 @@ public void escrever(int pIndiceVirtual, int idProcesso) {
38
38
39
39
Random r = new Random ();
40
40
Integer novoValor = r .nextInt (100 );
41
+ System .out .println ("ESCREVENDO1 " + novoValor );
41
42
this .memFisica .setValor (indiceLivreTemp , novoValor );
42
43
43
44
// Se tiver espaço na memória física
@@ -52,6 +53,7 @@ public void escrever(int pIndiceVirtual, int idProcesso) {
52
53
this .memVirtual .getPagina (pIndiceVirtual ).setTempoVirtualAtual (tempoAtual );
53
54
Random r = new Random ();
54
55
Integer valor = r .nextInt (100 ); // Pega um valor qualquer, ja que não é relevante no nosso caso
56
+ System .out .println ("ESCREVENDO2 " + valor );
55
57
this .memFisica .setValor (indiceLivreTemp , valor );
56
58
}
57
59
@@ -118,38 +120,43 @@ public Integer ler(int pIndiceVirtual, int IDProcesso) {
118
120
}
119
121
120
122
private void WS () {
121
- int t = 2000 ;
123
+ int t = 3000 ;
122
124
boolean marcada = false ; // marca pagina candidata a ser retirada da memFisica
123
125
int idadePaginaAtual = 0 ;
124
126
// Variaveis temporarias para comparação de pagina mais antiga escolhida a sair
125
127
int idadePaginaTemp = 0 ;
126
128
int iTemp = 0 ;
127
129
128
130
for (int countPaginas = 0 ; countPaginas < this .memVirtual .getTamanho (); countPaginas ++) {
129
- System .out .println ("TEMPO DA PAGINA ATUAL " + this .memVirtual .getPagina (countPaginas ).getTempoVirtualAtual ());
131
+
132
+ // Se a página tiver o bit Presente em 0, passa pra próxima
130
133
if (this .memVirtual .getPagina (countPaginas ).presente () == false ){
131
134
continue ;
132
135
}
133
136
137
+ // Se a pagia foi referenciada durante o ultimo tick de clock, ela não é candidata à sair do WS
134
138
if (this .memVirtual .getPagina (countPaginas ).referenciada () == true ){
135
- System . out . println ( "BB" );
139
+
136
140
this .memVirtual .getPagina (countPaginas ).setTempoVirtualAtual (this .tempoAtual );
137
141
idadePaginaAtual = (this .tempoAtual - this .memVirtual .getPagina (countPaginas ).getTempoVirtualAtual ());
138
142
idadePaginaTemp = (this .tempoAtual - this .memVirtual .getPagina (iTemp ).getTempoVirtualAtual ());
139
143
144
+ // Guardar o indice da pagina mais antiga até então
140
145
if (idadePaginaAtual >= idadePaginaTemp ){
141
- iTemp = countPaginas ;
146
+ iTemp = countPaginas ;
142
147
marcada = true ;
143
148
}
144
149
continue ;
145
150
}
146
151
147
152
if (this .memVirtual .getPagina (countPaginas ).referenciada () == false && (this .tempoAtual - this .memVirtual .getPagina (countPaginas ).getTempoVirtualAtual ()) > t ){
148
153
Integer moldura = this .memVirtual .getPagina (countPaginas ).getMolduraPagina ();
154
+
155
+ // Verifica se a página foi modificada
149
156
if (this .memVirtual .getPagina (countPaginas ).modificada () == true ){
150
157
this .memoriaHD .swap (this .memFisica .getValor (moldura ), countPaginas );
151
158
}
152
- // Resetar página para tirar a referencia dela para a memoria fisica
159
+ // Reseta a página para tirar a referencia dela para a memoria fisica
153
160
this .memFisica .setValor (this .memVirtual .getPagina (countPaginas ).getMolduraPagina (), null );
154
161
this .memVirtual .getPagina (countPaginas ).descartarPagina ();
155
162
marcada = false ;
@@ -167,6 +174,8 @@ private void WS() {
167
174
continue ;
168
175
}
169
176
177
+
178
+ // Verifica se a página foi marcada
170
179
if (marcada == true ){
171
180
System .out .println ("UKULELE" );
172
181
if (this .memVirtual .getPagina (iTemp ).modificada () == true ){
0 commit comments