-
Notifications
You must be signed in to change notification settings - Fork 1
/
TablaPagina.cpp
65 lines (51 loc) · 1.22 KB
/
TablaPagina.cpp
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
#include "TablaPagina.h"
#define LIBRE 0
#define OCUPADO 1
TablaPagina::TablaPagina()
{
}
// crea la tabla de pagina y agrega entradas por defecto
//v=0 y r=0 sin nmp definido
//
TablaPagina::TablaPagina(int cantidad, int cantidad_marcos_de_pagina)
{
marco_actual = 0;
puntero_LRU = 0;
contador_de_fallos = 0;
cantidad_marcos_disponibles = cantidad_marcos_de_pagina;
tamano = cantidad;
tamano_mp = cantidad_marcos_de_pagina;
entrada = new EntradaTP[cantidad];
int k = 0;
for (k = 0; k < cantidad; k++)
{
entrada[k] = EntradaTP();
}
marcos_libres = new bool[cantidad_marcos_de_pagina];
for (unsigned int i = 0; i < cantidad_marcos_de_pagina; i++)
{
marcos_libres[i] = LIBRE;
}
}
EntradaTP* TablaPagina::get_entrada(int posicion)
{
if (posicion < tamano)
return &entrada[posicion];
else
throw - 1;
}
void TablaPagina::imprimir()
{
for (int i = 0; i < tamano; i++)
{
std::cout << "i:%d V:%d R:%d Nmp:%d" << i << entrada[i].V << entrada[i].R << entrada[i].Nmp << endl;
}
}
int TablaPagina::circular()
{
return (marco_actual++) % tamano;
}
int TablaPagina::circular_LRU()
{
return (puntero_LRU++) % tamano;
}