Adminstración de la Memoria y Sistema de Archivos Dr. Alonso Ramírez Manzanares 18-Nov-2009 El uso de la memoria crece muy rápido. Ley de Parkinson: “Los programas se expanden hasta llenar la memoria disponible para contenerlos”, aproximadamente se duplica el uso cada 18 meses. Sistema de Archivos No se puede tener toda la información de un proceso en memoria, ejemplo, bases de datos. La informacion se debe de almacenar a veces de manera indefinida (no importando que el proceso que la creó se termine) y se debe de compartir entre varios procesos de manera concurrente. Archivos desde el punto de vista de usuario Nombres de archivo: asignado al crearse. Se separan a veces en partes nombre y extensión. Tipos de Archivos El uso del archivo no es importante para el SO, los programas a nivel de usuario establecen el significado. Tenemos: Archivos regulares (de usuario) directorios (mantienen estructura) especiales por caracteres (de entrada salida) especiales por bloques (para modelar discos). Archivos Ejecutables, ASCII y Binarios Seguridad en tipos de archivo Windows selecciona la aplicación a lanzar en base a la extensión, esto ayuda puedes ser engorrosa para usuarios avanzados que hacen cosas poco comunes. Acceso a archivos Aceso secuencial: Bytes se deben leer en orden secuencial (asociados a la forma de trabajo de una cinta). También se pueden reenbobinar para empezar desde el principio. Aceso aleatorio: Bytes o registros se pueden leer en cualquier orden (asociados a la forma de trabajo de un disco duro). Se usa metodo seek de posicionamiento. Posibles atributos de Archivos Estructura de directorios Este esquema es por supuesto más versatil Nombres de Ruta /, \ o > denota la raíz del los directorios Ejemplo: /Users/alram/Documents Cuando se crea un directorio por default tenemos 2 entradas: “.” que es el directorio actual y “..” que es el directorio padre. Ejemplo cd ../../datos. Cada proceso tiene un directorio de trabajo, Operaciones con directorios create delete opendir closedir readdir rename link unlink Implementación de sistema de archivos. Hay que relacionar los bloques de disco con los archivos. Asignación por lista enlazada: Desventajas: - El acceso aleatorio es extremadamente lento. -Las lecturas ya nos son bloques completos (potencias de 2), porque el apuntador ocupa espacio. Implementación de sistema de archivos. Hay que relacionar los bloques de disco con los archivos. Asignación por lista enlazada empleando un índice - Esta tabla se guarda en memoria (acceso rápido). - Todo el bloque de disco está disponible para datos. - La desventaja primordial es que si el archivo es muy grande, hay que guardar mucha información en memoria. Implementación de sistema de archivos. Hay que relacionar los bloques de disco con los archivos. Asociar archivos a tabla llamada Nodo-i Los archivos pequeños solo usan los bloques de indireccion sencilla. El esquema crece hasta donde se necesita. Implementación de directorios. La función principal del sistema de directorios es transformar el nombre ASCII del archivo en la información necesaria para encontrar los datos. Los atributos de los archivos se pueden guardar en la entrada del directorio o bien en el nodo i. Para sistemas con un solo directorio, solo hay que buscar el archivo secuencialmente o de alguna manera dependiendo del ordenamiento. Directorios en MS-DOS Usa 32 bytes para guardar la información de archivo Directorios en UNIX Es muy sencilla, dado que tenemos la tabla nodo-i: Ejemplo de búsqueda del archivo /usr/ast/mbox La entrada “.” tiene el número del i-nodo actual y la entrada “..” tiene el i-node del directorio padre. Administración de espacio en disco. Por razones de rapidez, la mayoría de los SO dividen los archivos en bloques de tamaño fijo que no necesitan estar adyacentes (de esa manera cuando un archivo crece no necesita ser relocalizado en un “hueco” donde quepa). ¿Como seleccionar el tamaño de bloque? Si se escoje algo grande (como un cilindro), archivos pequeños de 1 byte ocuparan un todo el bloque y se desperdicia espacio. Si se escoje un tamaño pequeño hay que hacer muchas lecturas y se desperdicia tiempo ¿Como analizamos esto? Administración de espacio en disco, compromiso entre velocidad y aprovechamiento del espacio en del disco Se hace un analisis empírico donde se supone que los bloques son de 1 KByte. Nos muestra que es un problema multi-objetivo. Administración de bloques libres. 1) Usar una lista enlazada de bloques de disco. Administración de bloques libres. 1) Usar un mapa de bits Usa menos espacio que la lista ligada anterior, a menos que el disco duro esté casi lleno. Si se sube un bloque a memoria pueden ser que no se pueda localizar ni un solo bloque libre, en cambio con la lista tenemos seguros 255 bloques libres. Confiabilidad de los sitemas de archivos Es fundametal, los datos son mas valiosos que el hardware en muchos casos. ¡Algunos discos duros, se entregaban nuevos con una lista de bloques defectuosos detectados por el fabricante! El dispositivo mantiene dinámicamente una lista de bloques defectuosos. Es importante hacer respaldos, automáticos (SO, ejemplo OsX time Machine) o manuales. Se puede usar Control Version System (CVS). Se puden usar cintas de respaldo de alta capacidad o DVD, Blue-Ray. Se puede tener arreglos de discos duros “espejo” donde se guarda un respaldo de cada escritura. Consistencia del sistema de archivos Se utiliza una utilería de verificación al arranque del sistema, sobre todo si el sistema se cayó, posiblemente quedando en un estado inconsistente. Consistencia de bloques: Se construyen 2 tablas de contadores para cada bloque: 1) cuantas veces esta presente un bloque en un archivo y b) cuantas veces está presente un bloque en la lista de bloques libres. Si el sistema es consistente cada entrada por bloque tiene un 1 en una tabla o un 1 en la otra. Consistencia del sistema de archivos Para verificar la consistencia de directorios, ahora se usan contadores de archivos y se sigue la misma idea.