Documente Academic
Documente Profesional
Documente Cultură
Gestión de Disco
Bibliografía:
•Silberschatz, A. “Sistemas Operativos 7ª”. Wiley
•Stallings, W. “Sistemas Operativos 6ª”. Pearson
•Carretero, y otros. “Sistemas Operativos”. Mc Graw Hill.
Índice
• Introducción: niveles de abstracción.
• Hardware.
– Disco Duro.
– Sistemas Ópticos.
– Compact Flash.
– Formato.
– Swap.
• Planificación y control.
– Algoritmos de planificación.
– Errores.
• E/S Dispositivo y Organización Física.
– Traducción de direcciones.
– Cache de disco.
• Sistema de ficheros.
– Formateo lógico y Particiones.
– Asignación de Espacio y gestión de espacio libre.
– Tipo de acceso.
– Sistema de Ficheros Virtual. Estructuras del kernel.
– Tipos de ficheros. Protección de ficheros.
• Gestión de directorios.
– Información contenida y estructura de directorios.
1
Estructura lógica de la E/S
• La estructura de E/S para disco está estructurada en los
niveles de la derecha.
• Resumiendo de mayor a menor abstracción:
1. Gestión de directorios.
• En este nivel se tratan los nombres simbólicos para trabajar con
ficheros que se traducen a identificadores.
• También se realizan operaciones sobre directorios: añadir, borrar,
reorganizar.
2. Sistema de ficheros.
• Se trata la estructura lógica del fichero.
• Se realizan las operaciones que se pueden hacer con ficheros: abrir,
cerrar, leer, escribir, …
• Los derechos de acceso.
3. E/S de dispositivo y Organización física.
• Las operaciones se convierten en mandatos al controlador o al canal.
• Se traducen las referencias lógicas a los ficheros por referencias físicas:
pistas, sectores, …
• Se maneja los bufferes y caches que existan en memoria principal.
4. Planificación y Control. Se gestiona la cola de E/S y se controla la
operación por lo que se trabaja con las interrupciones y estado
del controlador de dispositivo.
5. Hardware.
Índice
• Introducción: niveles de abstracción.
• Hardware.
– Disco Duro.
– Sistemas Ópticos.
– Compact Flash.
– Formato.
– Swap.
• Planificación y control.
– Algoritmos de planificación.
– Errores.
• E/S Dispositivo y Organización Física.
– Traducción de direcciones.
– Cache de disco.
• Sistema de ficheros.
– Formateo lógico y Particiones.
– Asignación de Espacio y gestión de espacio libre.
– Tipo de acceso.
– Sistema de Ficheros Virtual. Estructuras del kernel.
– Tipos de ficheros. Protección de ficheros.
• Gestión de directorios.
– Información contenida y estructura de directorios.
2
1. Disco Duro: Formato Bajo Nivel
• Antes de usar el disco duro debemos dar el formato en sectores
para que la controladora los pueda leer y escribir.
• Por cada sector se escribe:
– Una cabecera.
– Un área de datos (típicamente 512 bytes).
– Una cola.
• La cabecera y la cola contienen información del número de sector
y el código corrector de errores ECC que se actualiza cada vez que
escribimos el sector.
– Cada vez que se lee se calcula el ECC y se compara con el
almacenado. Si es diferente el sector está corrompido.
– Con el ECC también podemos recuperar un error (blando).
• En el formateo a bajo nivel también se puede variar el tamaño del
área de datos (256, 512, 1024).
– Si aumenta debemos saber que el número de sectores por pista
disminuye y por tanto también que el número de cabeceras y colas a
gestionar es menor. Luego habrá más datos para el usuario.
– Pero también más fragmentación interna.
3
1. Disco Duro: Swap
• El disco duro se usa como soporte de la memoria secundaria, antes
para intercambiar procesos completos y actualmente para
intercambiar páginas.
• La cantidad necesaria va en función de la memoria física y virtual
disponible y del uso que hagamos de ella:
– Usualmente se sobreestima, ya que quedarse sin intercambio suele ser
desastroso.
– Solaris recomienda que se reserve hasta alcanzar con la memoria física
la virtual.
– Linux sugiere el doble de la memoria física.
• Ayuda bastante al rendimiento dividir el espacio de intercambio
entre los discos disponibles, ya que por tanto su acceso se puede
hacer en paralelo (estilo RAID).
• Puede ubicarse en dos sitios:
– Estilo Windows. Dentro del espacio de ficheros se dedica uno de gran
tamaño al intercambio (page.sys)
• Es fácil de implementar (es un fichero) pero poco eficiente.
– Estilo UNIX. Se dedica una partición completa a este fin.
• La partición no tiene formato y se utiliza un gestor de almacenamiento para
asignar y desasignar bloques primando la velocidad y sufriendo en parte
fragmentación interna.
1. Swap: Ejemplos
• Solaris 1:
– Se carga el texto del programa completo y después por paginación puede haber
páginas de este segmento que se desechen. Si se tienen que traer de nuevo se
hace desde el fichero ejecutable.
– El espacio de intercambio se reserva para los segmentos de datos que van
evolucionando y cambiando y que no se podrían traer del ejecutable.
• Linux:
– Permite elegir entre un fichero o una partición para el intercambio.
– El área de intercambio está formado por “ranuras” de 4KB que se utilizan para
cargar páginas.
– Cada área lleva asociado un mapa de intercambio que es un conjunto de
contadores correspondientes a cada ranura.
• Si el contador es cero la ranura está disponible.
• Si es mayor que cero está ocupada. El número indica los procesos a los que pertenece esa
página (memoria compartida).
4
Índice
• Introducción: niveles de abstracción.
• Hardware.
– Disco Duro.
– Sistemas Ópticos.
– Compact Flash.
– Formato.
– Swap.
• Planificación y control.
– Algoritmos de planificación.
– Errores.
• E/S Dispositivo y Organización Física.
– Traducción de direcciones.
– Cache de disco.
• Sistema de ficheros.
– Formateo lógico y Particiones.
– Asignación de Espacio y gestión de espacio libre.
– Tipo de acceso.
– Sistema de Ficheros Virtual. Estructuras del kernel.
– Tipos de ficheros. Protección de ficheros.
• Gestión de directorios.
– Información contenida y estructura de directorios.
5
2. Planificación y control
• Con este sencillo ejemplo hemos visto como es necesario
una planificación del disco, minimizando el tiempo de
búsqueda (movimiento de la cabeza).
• La primera familia hace referencia al que hace la petición:
– RSS: En orden aleatorio (random). No tiene ningún valor y se
utiliza simplemente como comparación con otros métodos. En
simulación de métodos.
– FIFO: El primero en entrar el primero en salir. Más justo.
– PRI (prioridades): Es independiente del sistema de E/S y se trata
de cumplir con otros objetivos del sistema.
• Por ejemplo que los trabajos cortos se hagan antes que los largos.
Incluso podría suceder que se usara poco eficientemente el disco.
– LIFO: Se basa en coger al último, ya que posiblemente la
petición sea consecutiva (secuencial) y haya menos tiempo de
búsqueda.
• Hay posibilidad de inanición.
2. Planificación y control
• Al igual que se hace con memoria, para unas referencias a
pistas de (empezando en la 100):
– 55 58 39 18 90 160 150 38 184
– Para un algoritmo FIFO tendremos el tiempo expresado en la
figura (en abscisas el tiempo -proporcional a la distancia de
recorrido del brazo- y en ordenadas el número de pista):
• Las distancias son: 45 3 19 21 72 70 10 112 146.
• La media es 55.3.
6
2. Planificación y control
• La segunda familia hace referencia al tipo de petición:
– SSTF (short service time first): El primero será el de tiempo más corto (el
que requiera menor desplazamiento de las cabezas). Hay que
tener presente dónde está la cabeza ahora.
– Se busca siempre el tiempo mínimo en el siguiente
desplazamiento pero no se garantiza el tiempo medio mínimo.
• Mismo string: 55 58 39 18 90 160 150 38 184
• Las distancias son: 10 32 3 16 1 20 132 10 24.
• La media es 27.5.
2. Planificación y control
• La segunda familia hace referencia al tipo de petición:
– SCAN (Ascensor): Al igual que en FIFO se trata de evitar la
inanición. El brazo va en una dirección satisfaciendo las
peticiones que encuentre a su paso hasta que no haya
ninguna, entonces la cabeza cambia de sentido
– Se parece al SSTF pero en este caso no se tienen en cuenta
localidades temporales (no se favorece lo que se ha atravesado).
• Mismo string: 55 58 39 18 90 160 150 38 184.
• Las distancias son: 50 10 24 94 32 3 16 1 20.
• La media es 27.8.
7
2. Planificación y control
• La segunda familia hace referencia al tipo de petición:
– C-SCAN (circular): Igual que SCAN pero para no favorecer a los
“bordes” cada vez que se llega al final se vuelve al principio, no
se cambia de sentido (reset).
– Si no va hasta el final sino hasta la última petición es LOOK (con
SSTF se suele usar en la práctica).
– El tiempo de peor caso para SCAN era de 2t en este caso es t +
reset (volver al principio) que es menor.
• Mismo string: 55 58 39 18 90 160 150 38 184.
• Las distancias son: 50 10 24 166 20 1 16 3 32.
• La media es: 35.8 .
LOOK
2. Planificación y control
• La segunda familia hace referencia al tipo de petición:
– SCAN N pasos: Puede ocurrir que en un momento dado haya
muchas peticiones hacia una misma pista. Esto haría con SSTF y
SCAN que el brazo no se moviera de esas pistas.
• Para evitar eso se hace que la cola se divida en N subcolas. En
cada momento sólo se procesa una subcola con SCAN, las
peticiones que lleguen se pasan a otra cola.
• Si se usan sólo dos colas estamos en una política FSCAN.
8
2. Planificación y control
• En Berkley (87) se demostró que un conjunto de discos
pequeños y baratos era igual de potente que uno más caro
y grande del mismo tamaño global.
• El problema es que al haber muchos discos, la probabilidad
de fallo (MTBDL) aumentaba proporcionalmente al número
de discos, por ello se combinaron de forma redundante
para evitar la pérdida de datos.
• Se definen varios niveles de redundancia (es difícil
encontrarles puros en la práctica):
– RAID 0: Sin redundancia, los datos Ai se reparten en paralelo
(stripping). Así una petición puede acceder a varios discos en
paralelo. En JBOD simplemente se concatenan.
– RAID 1: Se copian los datos en otro disco (mirror). Los datos se
pueden leer en paralelo. Ej. A1 y A2
– RAID 2: Se dividen los datos a nivel de bit y se usa Hamming
para corrección de errores. Se necesitarían 32+7 discos. No se usa.
2. Planificación y control
• Se definen varios niveles de
redundancia:
– En ambos casos se dedica un
disco completo a la redundancia
(cuello de botella).
• RAID 3: Se reparte la información
entre los discos a nivel de byte y
se dedica uno a la paridad para
corrección de errores. Se usa muy
poco ya que B debería esperar a
A.
• RAID 4: Lo mismo que 3 pero a
nivel de bloque. Se genera una
paridad por strip.
9
2. Planificación y control
• Se definen varios niveles de
redundancia:
– RAID 5: Se reparten los datos y
la paridad entre todos los
discos. La paridad se calcula
por hardware.
– Si falla un disco se puede
seguir funcionando, si fallan
dos discos el sistema falla.
• Se deduce de lo leído en
otros discos y la paridad.
– La paridad se actualiza en
cada escritura.
10
Índice
• Introducción: niveles de abstracción.
• Hardware.
– Disco Duro.
– Sistemas Ópticos.
– Compact Flash.
– Formato.
– Swap.
• Planificación y control.
– Algoritmos de planificación.
– Errores.
• E/S Dispositivo y Organización Física. NO
– Traducción de direcciones.
– Cache de disco.
• Sistema de ficheros.
– Formateo lógico y Particiones.
– Asignación de Espacio y gestión de espacio libre.
– Tipo de acceso.
– Sistema de Ficheros Virtual. Estructuras del kernel.
– Tipos de ficheros. Protección de ficheros.
• Gestión de directorios.
– Información contenida y estructura de directorios.
11
4. Sistema de ficheros: NTFS
• Trabaja con cluster que son conjuntos de sectores de disco.
• Cada cluster está numerado de forma lógica (como LBA).
• Los archivos son objetos sobre los que se pueden hacer
operaciones incluyendo la de leer o escribir sus datos.
• Existe una tabla maestra de archivos llamada MFT (tratada
como un fichero especial) que contiene una matriz donde
están los registros que definen a los ficheros.
• Si los ficheros son pequeños (pocos registros) puede caber en
la matriz (atributos residentes) en otro caso se almacenan a
continuación (no residentes).
• Cada archivo tiene un número de identificación único
llamado referencia.
• Utiliza una estructura de árbol-B+.
• Tiene implementado un mecanismo de journaling
(transacciones).
12
4. Sistema de ficheros: Asignación
• Una vez que tenemos el volumen creado, la siguiente cuestión a resolver es
como asignamos los bloques libres a los ficheros para que se usen de forma
eficiente.
• Esto estará relacionado con el método de gestión del espacio libre y la
estructura del fichero.
• Hay varios aspectos a tener en cuenta:
– Preasignación. Si usamos preasignación, el tamaño del fichero debe ser declarado
de antemano. Claras desventajas por eso se usa asignación dinámica.
– Tamaño de porción (conjunto de bloques dados). Puede ser grande o pequeño
(un bloque). Problemas similares al tamaño de página.
– Porción fija o variable. Interactúa con el anterior. Si son fijas suelen ser de tamaño
de bloque. Si son variables suelen ser de tamaño grande y además se aplican
técnicas de gestión de espacio libre (ajustes de particiones).
• Dependiendo de las opciones elegidas podremos tener definidos otros
parámetros:
– Frecuencia. Número de veces que pedimos asignación
– Tiempo. Tiempo que se tarda en esta asignación
– Tamaño de tabla. Resultante para mantener las asignación a ficheros.
• Hay tres métodos fundamentales: Asignación contigua, Asignación enlazada,
Asignación indexada.
13
4. Sistema de ficheros: Asignación
• En la asignación enlazada
cada fichero es una lista
enlazada de bloques.
– La porción es de tamaño
fijo y mínimo (bloque). El
tiempo de asignación es
alto (recorrer).
– La frecuencia es alta y el
espacio requerido en la
tabla es de una entrada.
– Para definir un fichero basta
con dar el bloque inicial y el
tamaño (o fin) del fichero.
– Es fácil encontrar sitio y no
hay fragmentación externa.
– Está orientado para el
acceso secuencial.
14
4. Sistema de ficheros: Asignación
• En la asignación indexada
todos los índices de un
fichero en vez de estar
dispersos en cada bloque
se agrupan en una especie
de FAT llamado bloque de
índices.
• Cada archivo tiene un
bloque de índices y
funciona como la tabla de
páginas.
• En este caso tenemos
fragmentación interna en el
bloque índice.
• ¿Qué ocurre si el fichero es
más grande que las
entradas que caben en un
bloque?
10 entradas directas 10 10 K
15
4. Asignación indexada combinada:
Ejemplo
• Como ejemplo de utilización supongamos que queremos
acceder al byte 9.125. Lo primero que tenemos que hacer es
dividir este número entre el tamaño del bloque, para saber
en que bloque accederemos a ese byte, en nuestro ejemplo
al 8, después sólo tenemos que utilizar el offset en ese bloque
(el resto de la división) para acceder al byte deseado, que
en este caso es el 933.
16