solucion_tp4

Anuncio
Arquitectura de computadores I
Trabajo Práctico N° 4
3) Definir las funciones principales de un sistema operativo multitarea.
Un sistema operativo es un software básico que controla una computadora. El sistema operativo tiene tres
grandes funciones: coordina y manipula el hardware de la computadora, como la memoria, las impresoras,
las unidades de disco, el teclado o el mouse; organiza los archivos en diversos dispositivos de
almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnéticas, y gestiona los
errores de hardware y la pérdida de datos.
Funciones de los sistemas operativos:
1. Aceptar todos los trabajos y conservarlos hasta su finalización.
2. Interpretación de comandos: Interpreta los comandos que permiten al usuario comunicarse con el
ordenador.
3. Control de recursos: Coordina y manipula el hardware de la computadora, como la memoria, las
impresoras, las unidades de disco, el teclado o el Mouse.
4. Manejo de dispositivos de E/S: Organiza los archivos en diversos dispositivos de almacenamiento,
como discos flexibles, discos duros, discos compactos o cintas magnéticas.
5. Manejo de errores: Gestiona los errores de hardware y la pérdida de datos.
6. Secuencia de tareas: El sistema operativo debe administrar la manera en que se reparten los
procesos. Definir el orden. (Quien va primero y quien después).
7. Protección: Evitar que las acciones de un usuario afecten el trabajo que está realizando otro usuario.
8. Multi-acceso: Un usuario se puede conectar a otra máquina sin tener que estar cerca de ella.
9. Contabilidad de recursos: establece el costo que se le cobra a un usuario por utilizar determinados
recursos.
4) Considerar un sistema con particiones variables, en el que la memoria posee en un determinado
momento particiones libres de tamaños: 1000Kb, 400Kb, 1800Kb, 700Kb, 900Kb, 1200Kb y 1500Kb. Estos
huecos están dispuestos en el orden dado. Se tienen tres procesos de tamaños 1200Kb, 1000Kb y 900Kb.
Para los algoritmos:
•
•
•
Primero en ajustarse: Explora circularmente la lista de espacios libres y elije el espacio que es lo
bastante grande como para albergar el segmento. Esto obviamente requiere de menos tiempo que
examinar toda la lista hasta encontrar el mejor ajuste.
Mejor en ajustarse: Este algoritmo elije el espacio más pequeño en el que cabe el segmento
requerido. La idea es equiparar los segmentos con los espacios libres y así evitar utilizar un espacio
libre grande que luego pueda ser requerido.
Siguiente en ajustarse: Funciona de la misma manera que el primero en ajustarse, con la diferencia
de que mantiene un registro del lugar donde encuentra un espacio libre adecuado. La siguiente vez
que se le llama, comienza a buscar un espacio libre desde el punto donde se detuvo, en vez de
buscar desde el principio.
a) ¿Qué huecos serán asignados?
Primero en ajustarse Mejor en ajustarse Siguiente en ajustarse
Proceso 1: 1200 Kb Espacio de 1800 Kb Espacio de 1200 Kb
Espacio de 1800 Kb
Proceso 2: 1000 Kb Espacio de 1000 Kb Espacio de 1000 Kb
Espacio de 1200 Kb
Proceso 3: 900 Kb
Espacio de 900 Kb
Espacio de 900 Kb
Espacio de 1500 Kb
b) ¿Cómo queda la fragmentación en cada caso?
Primero en ajustarse Mejor en ajustarse Siguiente en ajustarse
Proceso 1: 1200 Kb
600 Kb libres
0 Kb libres
600 Kb libres
Proceso 2: 1000 Kb
0 Kb libres
0 Kb libres
200 Kb libres
Proceso 3: 900 Kb
0 Kb libres
0 Kb libres
600 Kb libres
2014
Página 1
Arquitectura de computadores I
Trabajo Práctico N° 4
5) Manejo de memoria
a) ¿Cuál es la necesidad de implementar una memoria virtual?
La memoria virtual es una técnica de gestión de la memoria que permite que el sistema operativo disponga,
tanto para el software de usuario como para sí mismo, de una mayor cantidad de memoria de la que esté
disponible físicamente.Muchas aplicaciones requieren acceso a más información (código y datos) que la que
se puede mantener en memoria física. Esto es así sobre todo cuando el sistema operativo permite múltiples
procesos y aplicaciones ejecutándose simultáneamente. Una solución al problema de necesitar mayor
cantidad de memoria de la que se posee consiste en que las aplicaciones mantengan parte de su
información en disco, moviéndola a la memoria principal cuando sea necesario.
b) Explicar los conceptos de swapping, paginado y segmentación y las ventajas de su utilización por sistemas
operativos.
Intercambio (swapping): Usando este método el sistema operativo puede buscar un proceso poco activo, y
moverlo al área de intercambio (en el disco rígido) y de esa forma liberar la memoria principal para cargar
otros procesos. Mientras no haga falta, el proceso extraído de memoria puede quedarse en el disco, ya que
ahí no utiliza la memoria física. Cuando sea necesario, el sistema vuelve a hacer un intercambio, pasándolo
del disco a memoria RAM. Es un proceso lento (comparado con usar sólo la memoria RAM), pero permite
dar la impresión de que hay más memoria disponible.
Paginación:los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas. Del
mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de
página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página,
lo que minimiza la fragmentación.
En un momento cualquiera, la memoria se encuentra ocupada con páginas de diferentes procesos, mientras
que algunos marcos están disponibles para su uso. El sistema operativo mantiene una lista de estos últimos
marcos, y una tabla por cada proceso, donde consta en qué marco se encuentra cada página del proceso. De
esta forma, las páginas de un proceso pueden no estar contiguamente ubicadas en memoria, y pueden
intercalarse con las páginas de otros procesos.
En la tabla de páginas de un proceso, se encuentra la ubicación del marco que contiene a cada una de sus
páginas. Las direcciones lógicas ahora se forman como un número de página y de un desplazamiento dentro
de esa página (conocido comúnmente como offset). El número de página es usado como un índice dentro de
la tabla de páginas, y una vez obtenida la dirección del marco de memoria, se utiliza el desplazamiento para
componer la dirección real o dirección física. De esta forma, cuando un proceso es cargado en memoria, se
cargan todas sus páginas en marcos libres y se completa su tabla de páginas.
Segmentación: es una técnica de gestión de memoria que pretende acercarse más al punto de vista del
usuario. Los programas se desarrollan, generalmente, en torno a un núcleo central (principal) desde el que
se bifurca a otras rutinas o se accede a zonas de datos.Desde este punto de vista, un programa es un
conjunto de componentes lógicos de tamaño variable o un conjunto de segmentos, es decir, el espacio
lógico de direcciones se considera como un conjunto de segmentos, cada uno definido por un identificador,
y consistente de un punto de inicio y el tamaño asignado. La segmentación de un programa la realiza el
compilador y en ella cada dirección lógica se expresará mediante dos valores: Número de segmento (s) y
desplazamiento dentro del segmento (d).
Una de las implementaciones más obvias y directas de un espacio de memoria segmentado es asignar un
segmento distinto a cada una de las secciones del espacio en memoria de un proceso.
2014
Página 2
Arquitectura de computadores I
Trabajo Práctico N° 4
c) Explicar la utilización de un buffer de traducción anticipada [Translation Lookaside Buffer (TLB)]
El TLB es una memoria caché administrada por la MMU, que contiene partes de la tabla de paginación, es
decir, relaciones entre direcciones lógicas y físicas. Posee un número fijo de entradas y se utiliza para
obtener la traducción rápida de direcciones. Si no existe una entrada buscada, se deberá revisar la tabla de
paginación y tardará varios ciclos más, sobre todo si la página que contiene la dirección buscada no está en
memoria primaria. Si en la tabla de paginación no se encuentra la dirección buscada, saltará una
interrupción conocida como fallo de página.
6) Dado un sistema con direcciones de memoria virtual de 32 bits con un campo de desplazamiento en
página de 12 bits y una memoria física de 1GB:
a) ¿Cuál es el tamaño de páginas?
ñ =2
= 4
b) ¿Cuántas páginas físicas (memoria principal) habrá en el sistema?
=
ñ =
2 2 = 256
c) ¿Cuál es el tamaño total de la memoria virtual?
ñ ."
#
=2
= 4$
7) Supongamos que tenemos una computadora con las siguientes características:
El sistema de memoria virtual utiliza páginas de tamaño 4K.
El buffer de traducción anticipada (TLB) tiene 16 conjuntos.
Tiene un primer nivel de caché de 32K, de tipo asociativa por conjuntos de 8 vías con líneas de 16 bytes.
Si se intenta acceder a la dirección 0xabcd1234:
a) ¿Cuál campo de esta dirección contiene el offset de página?
El campo de la dirección que con tiene el offset es el correspondiente a los últimos 12 bits (LSB), siendo su
valor 0x234.
b) ¿A qué conjunto del TLB señala esta dirección?
Como el campo Número de página está conformado por el valor 0xabcd1 (20 bits), el mismo se subdivide en
Etiqueta (16 bits) e Índice (4 bits), entonces esta dirección señala al conjunto 1.
c) ¿Qué número de etiqueta debe estar en el TLB para conseguir un acierto de página?
La etiqueta está compuesta por los 16 bits más significativos, siendo su valor 0xabcd. Para que se produzca
un acierto de página el bit MSB debe ser 1, como los últimos 4 bits MSB (0xa) en binario es 0b1010, en este
caso se producirá un acierto de página.
d) ¿Qué contiene el campo de offset de la dirección de la caché?
El campo de offset de la dirección de la cache contiene la Etiqueta (8 bits), el conjunto (3 bits) y la palabra (4
bits).
e) ¿A qué conjunto de la caché mapeará esta dirección?
Dirección física= 0x0234, siendo el conjunto el número 3.
2014
Página 3
Arquitectura de computadores I
Trabajo Práctico N° 4
f) ¿Es posible para el hardware resolver a) y c) en paralelo y b) y d) en paralelo?
Es posible realizar las dos operaciones en paralelo, ya que en el bus del sistema se pueden desviar los bits
correspondientes a cada campo para realizar las comparaciones por separado de cada campo.
9) Segmentación x86 (8086)
a) Siendo (CS) = 0213 e (IP) = 01FE, determinar la dirección física.
%& = 0(0213 +, = 0(01-.
/
ó í
= 0(02130 + 0(01-. = 0(232.
b) Explicar para cada segmento qué registros generan la dirección efectiva por defecto.
El segmento de código: Tiene como base el contenido del registro CS. En este segmento se encuentran las
instrucciones que forman el programa. Para acceder a los datos contenidos en él, se usa el registro IP como
desplazamiento.
El segmento de datos:Tiene como base el registro DS. Contiene los datos que utiliza el programa (variables,
etc.) Para acceder a los datos contenidos en él, se suele utilizar los registros SI y DI como desplazamiento.
El segmento de pila: Tiene al registro SS como base. En él se desarrolla la pila del programa, utilizada para
almacén temporal de datos, llamadas a funciones, etc.Se utiliza el registro SP para acceder a los datos de
este segmento.
El segmento extra:Con el registro ES como base. Su uso es opcional, y en él se encuentra un segmento
definido por el usuario y que, regularmente, contiene datos adicionales. Al igual que ocurre con el segmento
de datos, para acceder a los datos contenidos en él, se suelen utilizar los registros SI y DI.
c) Indique la estructura interna para efectuar la administración de memoria segmentada (cálculo de la
dirección física).
2014
Página 4
Arquitectura de computadores I
Trabajo Práctico N° 4
11) ¿Cómo cambia la estructura de segmentación de un Pentium II con respecto al 8086?
Segmentación en 8086:La segmentación está implementada desde los primeros procesadores de la familia
x86. No es opcional. La memoria se divide en páginas de tamaño fijo (4kB). En memoria principal sólo se
cargan aquellas páginas que van a ser utilizadas por el procesador. Los procesos se pueden llevar
parcialmente a memoria. Generalmente, el 90% del tiempo un proceso utiliza sólo el 10% de su memoria.
Segmentación en el Pentium II: Este microprocesador posee un sistema de memoria virtual avanzado que
maneja paginación por demanda, segmentación pura y segmentación con paginación, mecanismos se
pueden activar o desactivar con independencia. El corazón de la memoria virtual del Pentium II consiste de
dos tablas: la tabla de descriptores locales (LDT) y la tabla de descriptores locales (GDT). Cada programa
tiene su propia LDT, pero hay una sola GDT compartida por todos los programas.
Existencuatro formas de funcionamiento del sistema de memoria:
•
•
•
•
Memoria no segmentada no paginada: La dirección virtual coincide con la dirección física.Esta
alternativa resulta útil cuando el procesador se utiliza como controlador desistemas embebidos.
Memoria paginada no segmentada:La memoria constituye un espacio lineal de direcciones
paginado.La protección y la gestión de memoria se realiza a través de la paginación.
Memoria segmentada no paginada:
Lamemoriaconstituyeunconjuntodeespaciosdedireccionesvirtuales (lógicas). La ventaja frente a la
paginación es que proporciona protección a nivel de byte.
Memoria segmentada paginada:se utilizan simultáneamente los dos mecanismos, segmentación
para definirparticiones lógicas de memoria en el control de acceso y paginación para gestionar la
asignación de memoria dentro de las particiones.
12) Analizar el manejo de memoria del Pentium II y el ARM. Realizar un esquema de cada uno y sus
mecanismos de traducción de memoria virtual a memoria física.
Manejo de memoria en ARM:
2014
Página 5
Arquitectura de computadores I
Trabajo Práctico N° 4
Manejo de memoria en Pentium II:
2014
Página 6
Descargar