Skip to content

Commit cc5b87e

Browse files
committed
Commit final do projeto
1 parent 74dffd6 commit cc5b87e

14 files changed

+41
-132
lines changed

bin/entrada/FabricaDeEntradas.class

0 Bytes
Binary file not shown.

bin/memoria/MemoriaFisica.class

0 Bytes
Binary file not shown.

bin/memoria/PaginaVirtual.class

0 Bytes
Binary file not shown.

bin/simuSO/MMU.class

-97 Bytes
Binary file not shown.

bin/simuSO/Processo.class

50 Bytes
Binary file not shown.

bin/simuSO/So.class

-148 Bytes
Binary file not shown.

src/entrada/FabricaDeEntradas.java

-4
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ public FabricaDeEntradas(int tamanhoMemoria) {
1414
this.tamanhoMemoriaVirtual = tamanhoMemoria;
1515
Random r = new Random();
1616
this.seed = r.nextInt(tamanhoMemoria);
17-
//System.out.println("Semente = " + seed);
1817
if(tamanhoMemoria < TAMANHO_MEMORIA) {
1918
throw new IllegalArgumentException("Memória muito pequena - valor mínimo 32");
2019
}
@@ -37,16 +36,13 @@ public String getNewEntrada() {
3736
StringBuffer sb = new StringBuffer();
3837
int loop1 = QTD_ACESSO_ENTRADA/3 * 1;
3938
int loop2 = QTD_ACESSO_ENTRADA/3 * 2;
40-
//System.out.println("Loop1 = " + loop1 + " - loop2 = " + loop2);
4139

4240
for (int i = 0; i < QTD_ACESSO_ENTRADA; i++) {
4341
if(i == loop1 || i == loop2) {
44-
//sb.append("|- ");
4542
for (int j = 0; j < loop.length; j++) {
4643
sb.append(loop[indexLoop++]);
4744
indexLoop = indexLoop % loop.length;
4845
}
49-
//sb.append(" -|");
5046
i = i + loop.length-1;
5147
continue;
5248
}

src/log/Log.java

-46
This file was deleted.

src/memoria/MemoriaFisica.java

-9
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package memoria;
22

33
public class MemoriaFisica {
4-
//private int indice;
54
private Integer[] memoriaFisica;
65
private int tamanho = 0;
76

@@ -22,14 +21,6 @@ public int getTamanho() {
2221
return this.tamanho;
2322
}
2423

25-
/*public void setIndice(int pIndice) {
26-
this.indice = pIndice;
27-
}*/
28-
29-
/*public int getIndice(){
30-
return this.indice;
31-
}*/
32-
3324
public Integer[] getMemoria() {
3425
return this.memoriaFisica;
3526
}

src/memoria/MemoriaHD.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,11 @@ public Integer getValorHD(int indice) {
7070

7171
public void swap(Integer pValor, Integer pIndice) {
7272
try {
73-
// Variáveis para leitura
73+
7474
FileReader arq = new FileReader(this.local);
7575
BufferedReader lerArq = new BufferedReader(arq);
7676
String linha = lerArq.readLine();
77-
78-
// Variáveis para escrita
77+
7978
BufferedWriter buffWrite = null;
8079

8180
String []linhasSplite = new String[this.tamanho];

src/memoria/PaginaVirtual.java

-11
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ public class PaginaVirtual {
55
private boolean modificada;
66
private boolean presente;
77
private Integer molduraPagina;
8-
//private Integer valor;
98
private int indice;
109
private int tempoVirtualAtual;
1110

@@ -14,7 +13,6 @@ public PaginaVirtual() {
1413
modificar(false);
1514
presenca(false);
1615
setMolduraPagina(null);
17-
//setValor(null);
1816
setTempoVirtualAtual(0);
1917
setIndice(-1);
2018
}
@@ -24,7 +22,6 @@ public void descartarPagina(){
2422
this.modificar(false);
2523
this.presenca(false);
2624
this.setMolduraPagina(null);
27-
//this.setValor(null);
2825
this.setTempoVirtualAtual(0);
2926
}
3027

@@ -68,14 +65,6 @@ public Integer getMolduraPagina(){
6865
return this.molduraPagina;
6966
}
7067

71-
/*public void setValor(Integer pValor){
72-
this.valor = pValor;
73-
}
74-
75-
public Integer getValor(){
76-
return this.valor;
77-
}*/
78-
7968
public void setTempoVirtualAtual(int pTempo) {
8069
this.tempoVirtualAtual = pTempo;
8170
}

src/simuSO/MMU.java

+17-35
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,9 @@ public MMU(int pTamanhoMemoriaFisica, int pTamanhoMemoriaVirtual, MemoriaVirtual
2020
@Override
2121
public void escrever(int pIndiceVirtual, int idProcesso) {
2222

23-
// Se a pagina NÃO está referenciada (bit P) na memória fisica
2423
if(this.memVirtual.getPagina(pIndiceVirtual).presente() == false) {
2524
Integer indiceLivre = this.memFisica.getIndiceLivre(this.memFisica.getMemoria());
2625

27-
// Se NÃO tiver espaço na memória física
2826
if(indiceLivre == null){
2927

3028
this.WS();
@@ -38,37 +36,31 @@ public void escrever(int pIndiceVirtual, int idProcesso) {
3836

3937
Random r = new Random();
4038
Integer novoValor = r.nextInt(100);
41-
System.out.println("ESCREVENDO1 " + novoValor);
39+
System.out.println("1-Valor escrito: " + novoValor);
4240
this.memFisica.setValor(indiceLivreTemp, novoValor);
43-
44-
// Se tiver espaço na memória física
41+
4542
} else {
4643

4744
Integer indiceLivreTemp = this.memFisica.getIndiceLivre(this.memFisica.getMemoria());
4845
this.memVirtual.getPagina(pIndiceVirtual).referenciar(true);
4946
this.memVirtual.getPagina(pIndiceVirtual).modificar(true);
5047
this.memVirtual.getPagina(pIndiceVirtual).presenca(true);
51-
48+
5249
this.memVirtual.getPagina(pIndiceVirtual).setMolduraPagina(indiceLivreTemp);
5350
this.memVirtual.getPagina(pIndiceVirtual).setTempoVirtualAtual(tempoAtual);
5451
Random r = new Random();
55-
Integer valor = r.nextInt(100); // Pega um valor qualquer, ja que não é relevante no nosso caso
56-
System.out.println("ESCREVENDO2 " + valor);
52+
Integer valor = r.nextInt(100);
53+
System.out.println("2-Valor Escrito: " + valor);
5754
this.memFisica.setValor(indiceLivreTemp, valor);
5855
}
59-
60-
// Se o valor da pagina está presente na memória fisica
56+
6157
} else {
6258

6359
Integer molduraPagina = memVirtual.getPagina(pIndiceVirtual).getMolduraPagina();
64-
/*if(this.memVirtual.getPagina(pIndiceVirtual).modificada() == true){
65-
Integer valorModificado = this.memFisica.getValor(molduraPagina);
66-
this.memoriaHD.swap(valorModificado, pIndiceVirtual);
67-
}*/
6860

6961
Random r = new Random();
70-
Integer novoValor = r.nextInt(100); // Gerando um valor aleatório, já que não importa para o nosso caso
71-
System.out.println("Escrevendo valor " + novoValor + " na memória física");
62+
Integer novoValor = r.nextInt(100);
63+
System.out.println("3-Valor escrito: " + novoValor);
7264
this.memFisica.setValor(molduraPagina, novoValor);
7365
this.memVirtual.getPagina(pIndiceVirtual).referenciar(true);
7466
this.memVirtual.getPagina(pIndiceVirtual).modificar(true);
@@ -83,17 +75,16 @@ public Integer ler(int pIndiceVirtual, int IDProcesso) {
8375
try {
8476
if(this.memVirtual.getPagina(pIndiceVirtual).presente() == false){
8577
Integer indiceLivre = this.memFisica.getIndiceLivre(this.memFisica.getMemoria());
86-
//System.out.println(indiceLivre);
87-
// Se a memória física tiver espaço
78+
8879
if(indiceLivre != null){
8980
this.memVirtual.getPagina(pIndiceVirtual).presenca(true);
9081
this.memVirtual.getPagina(pIndiceVirtual).referenciar(true);
9182
this.memVirtual.getPagina(pIndiceVirtual).modificar(false);
9283
this.memVirtual.getPagina(pIndiceVirtual).setMolduraPagina(indiceLivre);
9384
this.memVirtual.getPagina(pIndiceVirtual).setTempoVirtualAtual(this.tempoAtual);
94-
System.out.println(this.tempoAtual);
9585
valorDoHD = this.memoriaHD.getValorHD(pIndiceVirtual);
9686
this.memFisica.setValor(indiceLivre, valorDoHD);
87+
9788
} else {
9889

9990
this.WS();
@@ -120,28 +111,24 @@ public Integer ler(int pIndiceVirtual, int IDProcesso) {
120111
}
121112

122113
private void WS() {
123-
int t = 3000;
124-
boolean marcada = false; // marca pagina candidata a ser retirada da memFisica
114+
int t = 15000;
115+
boolean marcada = false;
125116
int idadePaginaAtual = 0;
126-
// Variaveis temporarias para comparação de pagina mais antiga escolhida a sair
127117
int idadePaginaTemp = 0;
128118
int iTemp = 0;
129119

130120
for(int countPaginas = 0; countPaginas < this.memVirtual.getTamanho(); countPaginas++) {
131121

132-
// Se a página tiver o bit Presente em 0, passa pra próxima
133122
if(this.memVirtual.getPagina(countPaginas).presente() == false){
134123
continue;
135124
}
136-
137-
// Se a pagia foi referenciada durante o ultimo tick de clock, ela não é candidata à sair do WS
125+
138126
if(this.memVirtual.getPagina(countPaginas).referenciada() == true){
139127

140128
this.memVirtual.getPagina(countPaginas).setTempoVirtualAtual(this.tempoAtual);
141129
idadePaginaAtual = (this.tempoAtual - this.memVirtual.getPagina(countPaginas).getTempoVirtualAtual());
142130
idadePaginaTemp = (this.tempoAtual - this.memVirtual.getPagina(iTemp).getTempoVirtualAtual());
143131

144-
// Guardar o indice da pagina mais antiga até então
145132
if(idadePaginaAtual >= idadePaginaTemp){
146133
iTemp = countPaginas;
147134
marcada = true;
@@ -152,11 +139,10 @@ private void WS() {
152139
if(this.memVirtual.getPagina(countPaginas).referenciada() == false && (this.tempoAtual - this.memVirtual.getPagina(countPaginas).getTempoVirtualAtual()) > t){
153140
Integer moldura = this.memVirtual.getPagina(countPaginas).getMolduraPagina();
154141

155-
// Verifica se a página foi modificada
156142
if(this.memVirtual.getPagina(countPaginas).modificada() == true){
157143
this.memoriaHD.swap(this.memFisica.getValor(moldura), countPaginas);
158144
}
159-
// Reseta a página para tirar a referencia dela para a memoria fisica
145+
160146
this.memFisica.setValor(this.memVirtual.getPagina(countPaginas).getMolduraPagina(), null);
161147
this.memVirtual.getPagina(countPaginas).descartarPagina();
162148
marcada = false;
@@ -174,28 +160,24 @@ private void WS() {
174160
continue;
175161
}
176162

177-
178-
// Verifica se a página foi marcada
179163
if(marcada == true){
180-
System.out.println("UKULELE");
181164
if(this.memVirtual.getPagina(iTemp).modificada() == true){
182165
Integer moldura2Swap = this.memVirtual.getPagina(countPaginas).getMolduraPagina();
183166
Integer valor = this.memFisica.getValor(moldura2Swap);
184167
this.memoriaHD.swap(valor, countPaginas);
185168
}
186-
187-
// Desreferenciar a pagina da memoria fisca
169+
188170
this.memFisica.setValor(this.memVirtual.getPagina(iTemp).getMolduraPagina(), null);
189171
this.memVirtual.getPagina(countPaginas).descartarPagina();
190172
}
191173
}
192174
}
193-
// Para zerar os bits de referenciado das páginas virtuais
194-
// Tick do clock!
175+
195176
public void eventoZerarRecebido(int tempoClock){
196177
this.tempoAtual = tempoClock;
197178
for(int i = 0; i < this.memVirtual.getTamanho(); i++){
198179
this.memVirtual.getPagina(i).referenciar(false);
199180
}
181+
System.out.println("- Tick de clock -");
200182
}
201183
}

src/simuSO/Processo.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,15 @@ public void run() {
4646

4747

4848
try {
49-
Thread.sleep(1000);
49+
Thread.sleep(SO.INTERVALO_PROCESSO);
5050
} catch (InterruptedException e) {
5151
// TODO Auto-generated catch block
5252
e.printStackTrace();
5353
}
5454

5555
}
56+
57+
System.out.println("Processo " + this.id + " terminou.");
5658
}
5759

5860
}

0 commit comments

Comments
 (0)