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