ISI – Sistemas Operativos – Resumen Capitulo 9 9.Almacenamiento Secundario Estructura del Disco: La superficie del disco se divide lógicamente en pistas, donde la información es grabada o leída por medio de cabezas de lecto-escritura; el conjunto de pistas a las que se puede acceder sin mover las cabezas dentro de una unidad es denominado cilindro. Existen discos de cabeza fija (una por cada pista) y de cabeza móvil, que posee una sola cabeza que se desplaza hacia adentro y hacia afuera para acceder a las distintas pistas. El hard para un sistema de disco puede dividirse en: • La parte mecánica (motor, las cabezas y la lógica relacionada) • La parte controladora del disco, que determina la interacción lógica con la computadora. Para hacer referencia a la información en disco se emplea una dirección compuesta por varias partes: unidad, superficie, pista y sector. Un sector es la menor unidad de información que puede leerse o escribirse. El tamaño de los sectores, la cantidad de sectores por pista y la cantidad de pistas por superficie varía de acuerdo a la unidad de disco en cuestión. Para acceder a un sector, las cabezas deben moverse a la pista correcta (tiempo de posicionamiento) y esperar a que el sector solicitado pase por debajo de la cabeza (tiempo de latencia). Luego comienza el tiempo de transferencia. Si k: número del sector s: cantidad de sectores por pista j: numero de superficie i: numero de cilindro p: cantidad de pistas por cilindro Podemos convertir una dirección a un número de bloque unidimensional b, de la siguiente manera: b=k+s*(j+i*p) Directorio del dispositivo: En él se encuentra la información de los archivos que se encuentran en el disco (ubicación, longitud, tipo, propietario, fecha y hora de creación, fecha y hora del último acceso, protecciones, etc.). Administración del Espacio Libre: El sistema mantiene una lista de espacio libre, donde se registran los bloques que no están asignados a un archivo. • Vector de bits: Se puede implementar como un vector de bits, donde cada bloque se representa con un bit. Si el bloque está libre (0), y si está ocupado (1). No resulta eficiente si en la mayoría de los accesos el vector no esta en memoria principal. • Lista ligada: Consiste en enlazar todos los bloques libres del disco, manteniendo un puntero al primer bloque libre. No es eficiente, pues para recorrer la lista, tenemos que leer cada uno de los bloques, lo que representa un tiempo considerable de E/S. • Agrupamiento: Se almacena en el 1er bloque las direcciones de n bloques libres. Los primeros n-1 bloques están libres y el último contiene la dirección en disco de otro bloque que contiene las direcciones de otros n bloques libres. Con este método pueden encontrarse con rapidez las direcciones de una gran cantidad de bloques libres. • Recuento: Consiste en aprovechar que, en general, varios bloques contiguos se pueden asignar o liberar simultáneamente, especialmente en asignación contigua. Así podemos tener la dirección del primer bloque libre y los n bloques libres contiguos que le siguen. La lista sería más pequeña, siempre y cuando el recuento sea generalmente mayor que uno. Métodos de Asignación: Asignación contigua: Requiere que cada archivo ocupe un conjunto de direcciones contiguas en el disco. En el directorio se guarda la dirección del bloque inicial y el área del archivo. El inconveniente consiste en encontrar espacio contiguo disponible para un nuevo archivo a partir de una lista de huecos libres, generalmente se utilizan las estrategias del 1er ajuste, el mejor ajuste y el peor ajuste. Surge el problema de la fragmentación externa, ISI – Sistemas Operativos – Resumen Capitulo 9 cuando para atender una solicitud hay suficiente espacio libre en disco para satisfacerla, pero éste no es contiguo. Otro problema que se nos presenta es el poder determinar cuánto espacio se necesita para un archivo. Solo un acceso a disco. Asignación enlazada: consiste en una lista enlazada de bloques de archivo y estos pueden hallarse en cualquier parte del disco (se necesitan n accesos para llegar al bloque n). Con este tipo de asignación no tenemos fragmentación externa. El inconveniente con este tipo de asignación es que sólo puede aplicarse eficazmente al acceso secuencial. Cada acceso a un puntero implica una lectura al disco, por lo que es poco eficiente para el acceso directo para archivos. Otro inconveniente es el espacio requerido por el puntero, que nos quita espacio para los datos, requiriendo entonces c/archivo un poco más de espacio. El problema más serio es la confiabilidad. Un error en el software del SO o un problema en el hardware, puede provocar que se elija un puntero incorrecto, enlazando el archivo a la lista de espacio libre o a otro archivo (se necesita leer los índices y luego buscar los datos). Asignación indexada: Reúne todos los punteros en el bloque de índices. Cada archivo tiene su propio bloque de índices. Permite el acceso directo sin el problema de la fragmentación externa. El desperdicio de espacio puede ser mayor que en la asignación enlazada. • Esquema enlazado: se enlazan varios bloques de índices. • Esquema multinivel: se tiene un bloque de índices que apunta a los bloques de índices, que a su vez apuntan a los bloques de archivo. • Esquema combinado: se tiene en el directorio algunos punteros del bloque de índices. Los primeros apuntan a bloques directos y los otros hacen referencia a bloques indirectos.. Planificación del Disco: La unidad de disco tiene una cola de procesos pendientes. Cada vez que un proceso necesita E/S del disco, emite una llamada al SO, esta solicitud especifica la siguiente información necesaria: • Si se trata de una operación de E o de S. • Cuál es la dirección en disco (unidad, cilindro, superficie, bloque). • Cuál es la dirección en mem. • Cuánta información se transferirá (número de bytes o palabras). Existen diversas planificaciones: Planificación FCFS: el primero que entra es el primer atendido. No ofrece el mejor tiempo promedio de servicio. Planificación SSTF: Selecciona la solicitud con menor tiempo de posicionamiento a partir de la actual posición de la cabeza. El inconveniente con esta planificación es que se puede tener un bloqueo indefinido para algunas solicitudes. En un sistema real, permanentemente están llegando solicitudes, y en teoría, podría llegar una serie continua de solicitudes próximas entre sí, ocasionado que algunas solicitudes sean postergadas indefinidamente. Aunque mejora notablemente al FCFS, no es óptimo. Planificación SCAN: La cabeza barre el disco de un extremo al otro atendiendo las solicitudes al llegar a cada pista. Luego invierte la dirección del movimiento de la cabeza y continúa el servicio, rastreando continuamente el disco de un extremo al otro. Tiene el problema de hacer esperar a algunas solicitudes demasiado, ya que cuando invierte el recorrido pasa por pistas atendidas recientemente. Planificación C-SCAN: Barre el disco pero al llegar al final, regresa de inmediato al inicio sin servir ninguna solicitud en el camino. Planificación LOOK y C-LOOK: (comportamiento análogo al de SCAN) la cabeza se mueve hasta la última solicitud en cada dirección. Cuando no hay demandas invierte el movimiento y en el caso de C-LOOK se va hasta la otra punta. Mejoras en el rendimiento y la confiabilidad: La memoria caché y el controlador ayudan a mejorar el rendimiento, que aún depende de la velocidad y confiabilidad de los discos. Una mejora técnica es la idea de varios discos que trabajan cooperativamente y logran transferir sus subbloques en paralelo RAID (redundant arrays of inexpensive disks). ISI – Sistemas Operativos – Resumen Capitulo 9 Jerarquía de Almacenamiento: 1) Registros. 2) Memoria Caché. 3) Memoria Principal. 4) Almacenamiento Auxiliar. 5) Unidades de Disco. 6) Cinta Magnética.