TP Lab. - Memoria Virtual

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

TP LABORATORIO

MEMORIA VIRTUAL
1. Para entender mejor el desarrollo de este laboratorio, es conveniente aclarar algunos conceptos:
a. ¿Qué es el principio de localidad de referencias?
El principio de localidad de referencias es cuando los programas tienden a reutilizar los datos e
instrucciones que utilizaron recientemente.
b. ¿Qué es el conjunto de trabajo y el conjunto residente de un proceso?
El conjunto de trabajo es el conjunto de páginas de referencias más recientes. Es una aproximación de la
localidad del programa.
Por ejemplo, dada la secuencia de referencias de memoria que se muestra en la Figura 10.22, si Δ = 10
referencias de memoria, entonces el conjunto de trabajo en el tiempo t1 es {1, 2, 5, 6, 7}. Para el tiempo t2,
el conjunto de trabajo ha cambiado a {3, 4}.
El conjunto residente es la parte de un proceso que está en la memoria principal en un momento dado.
c. ¿Qué sucede cuando el conjunto residente es menor que el conjunto de trabajo?
Cuanta menos memoria necesite cada proceso, mayor cantidad de procesos en memoria
Mayor probabilidad de procesos listos en memoria.
Si hay pocas páginas de un proceso en memoria, aumenta la probabilidad de FdP. Por encima de un
determinado tamaño, más memoria no tendrá un efecto notable (por principio de cercanía).
d. ¿Qué relación hay entre el principio de localidad de referencias y el tamaño del conjunto de trabajo?
La precisión del conjunto de trabajo depende de la selección de Δ. Si Δ es demasiado pequeño, no
abarcará toda la localidad; si Δ es demasiado grande, puede superponer varias localidades. En el extremo,
si Δ es infinito, el conjunto de trabajo es el conjunto de páginas tocadas durante la ejecución del proceso.
2. Descargue el código para este punto ejecutando el comando:
wget --no-check-certificate http://soutn.ernet.com.ar/descargas/programas/virus_gallego.c
a. Analice el código, haga un listado de las funciones que no conozca y utilice man para aprender sobre
ellas. ¿Qué puede apreciar respecto del principio de la localidad de referencias y este programa?
- malloc ()

- getpagesize ()
- getpid ()

- rand ()

La función rand () devuelve un entero pseudoaleatorio en el rango de 0 a RAND_MAX inclusive (es decir, el rango
matemático [0, RAND_MAX]).
- getchar ()

b. Ubique la línea donde se hace el acceso aleatorio a memoria. ¿Qué operación se realiza en esas
posiciones elegidas? ¿Qué posición de cada página se elige, comienzo, medio, fin, o indeterminado?

rand () = El comando rand genera números pseudo-bytes aleatorios después de inicializar el generador de
números aleatorios una vez.

c. Compile y ejecute. En las pausas generadas por getchar (), tanto al comienzo como al final, desde otra
consola utilice el comando cat/ proc/ PID/status
Reemplazando PID por el valor numérico correspondiente al identificador de proceso acusado por el
programa para así observar su utilización de memoria (los valores que comienzan con Vm).

d. Cambie el valor de CANTIDAD_PAGINAS a 10000 (diez mil). ¿Cómo cambia la utilización de


memoria?

e. Averigüe la cantidad de memoria instalada en el sistema, y el tamaño del área de intercambio


(swap), usando el comando

free -m
La opción -m es para que muestre el resultado en megabytes. Con -k presenta en kilobytes.

f. ¿Cuántas páginas debería solicitar para ocupar la memoria RAM instalada, pero sin ocupar intercambio?
Calcule aproximadamente, y luego modifique el código fuente de acuerdo con éste valor. Al ejecutar,
¿qué observa en la utilización de memoria? Si el valor VmSwap es 0 kB, significa que el proceso no ha
utilizado intercambio.

g. Y si quisiera ocupar la RAM y el área de intercambio también, ¿cuántas páginas necesitaría? Calcule,
modifique y ejecute. Busque nuevamente cambios en la utilización de memoria, con respecto al punto
anterior.
Mientras ejecuta el programa, en otra consola observe con el comando top (no htop) la utilización de
memoria, CPU, y el estado predominante (es decir, el estado en el que más tiempo se encuentra) del
proceso iniciado por el virus gallego.
En este caso lo que tendremos que hacer es sumar la memoria libre del buffer con la del swap y a esto
dividirlo en 4 y nos dará la cantidad de páginas necesarias.
Antes:

Después:

h. ¿Cuántos accesos aproximadamente se realizan para llenar la memoria solicitada? ¿Cuántos accesos
son de lectura, al final del programa?

i. Compare la diferencia en tiempos de ejecución entre los dos puntos anteriores. Para ello, comente
todas las líneas que contengan getchar (), y luego de compilar, ejecute con el comando time ./a.out.
La diferencia de tiempo se da porque las páginas que están en los marcos tienen un tiempo de respuesta
diferente a las páginas que se llevan y traen en el intercambio. Dando lugar a que cuando se produce un
intercambio el tiempo sea mayor a cuando no se da.
 Comando Time con la cantidad de Paginas del enunciado F
 Comando Time con la cantidad de Paginas del enunciado G
Sistemas Operativos – Laboratorio de Memoria Virtual en Linux

Referencias:

Para obtener la información necesaria para completar el trabajo, se recomienda:


 Sistemas Operativos Modernos 2a ed. (Tanenbaum)
 Notas de Sistemas Operativos (Saade)
 Conceptos de Sistemas Operativos 7ma u 8a edición (Silberschatz - Gavin)

También podría gustarte