UTNianos

Versión completa: Duda Segmentacion con paginacion bajo demanda
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas vengo con otra duda.
Estoy haciendo un ejercicio de Memoria que dice asi:
  • Segmentacion con paginacion bajo demanda
  • Memoria fisica total de 16 mb, de los cuales solo hay disponibles 16384 bytes para 3 procesos
  • La memoria disponible se divide en 16 marcos, exclusivos para los 3 procesos
  • Cada proceso se divide en 8 segmentos como maximo y cada segmento en 8 paginas como maximo
  • Asignacion variable con reemplazo global

Proceso 1
Segmento Pagina Marco Present
0 0 1 1
0 1 4 1
0 2 10 0
1 0 5 0
1 1 6 0
Proceso 2
1 0 7 1
1 1 2 1
2 0 6 1
2 1 4 0
2 2 4 0
Proceso 3
1 0 8 1
1 1 10 1
1 2 3 1
1 3 5 1
2 0 8 0

Funcion del SO que elige victimas:

int ya_fuiste()
{
static int victima = 13;
int pepito = 1;
if (pepito) victima = victima - 3;
if (victima < 0) victima = 10;
return (victima);
}

Traza de ejecucion de los procesos:

Proceso 1

leer 02A7
leer 0554
leer 083A
leer 201E

V(B)
P(D)
leer 6057

Proceso 2
P(B)
leer 47FF
leer 4BF8
V(B)
V(A)
P(E)
leer 2057
V(D)

Proceso 3
P(A)
leer 27F8
leer 42FE
V(A)
V(E)

Semaforos: A, B, D, E = 0 y C = 1

Tengo varias dudas:
son 3 bits para el n° de segmento, 3 bits para el n° de p seagina y 10 bits para el desplazamiento?
siendo asi:
la primera instruccion a leer seria 0000001010100111, donde el segmento seria 0 y la pagina 1? En este caso no hay reemplazo de pagina? Es esto correcto?
Siguiente con la ejecucion, en el momento que toque 6057:
seria 0110000001010111 segmento 3 pagina 0? En este caso esto no esta en la tabla, deberia usar la funcion ya fuiste?
Si es asi da 10, que es 10? el n° de marco? como reemplazo? como lo pongo en la tabla??

Lo que vengo planteando tiene algun sentido o estoy errado completamente?
URLs de referencia