Sistemas Operativos I
Organización de archivos
Angel Vázquez-Patiñ[email protected]
Departamento de Ciencias de la ComputaciónUniversidad de Cuenca
11 de abril de 2016
Organización de archivos
● Se comprende rasgos de un directorio jerárquico
● Es necesario analizar la semántica● Abstracción de sistemas de archivos a
sobrevivido a todas las generaciones● Información cruda -> archivos -> directorios● Formato pertinente al tipo de información que
representa
Organización de archivos
Concepto de archivoOrganización de archivos
Control de accesoSistemas de archivos remotos
Concepto de archivoOrganización de archivos
Control de accesoSistemas de archivos remotos
Concepto de archivo
● Tipo de datos abstracto (como interfaz orientada a objetos)
● Para el usuario, unidad lógica mínima● Volumen
– Directorio● Archivo
● Identificados por una ruta (path)
Concepto de archivo
Operaciones con archivosTablas de archivos abiertos
Acceso concurrente: bloqueo de archivosTipos de archivo
Estructura de los archivos y métodos de accesoArchivos especiales
Transferencias orientadas a bloques
Concepto de archivo
Operaciones con archivosTablas de archivos abiertos
Acceso concurrente: bloqueo de archivosTipos de archivo
Estructura de los archivos y métodos de accesoArchivos especiales
Transferencias orientadas a bloques
Operaciones con archivos
● Borrar● Abrir: verificar si existe o puede ser creado
(fopen()).– Descriptor de archivo: ientifica la relación entre el proceo
y el archivo en cuetión
– Las operaciones se realizan sobre el descriptor de archivo, no con su nombre o ruta
● Cerrar: (fclose())
● Leer: Pedazo a pedazo (fread() readline())
Operaciones con archivos
● Escribir: (fwrite())
● Reposicionar: apuntador (fseek())
Operaciones no son únicas. Depende del SO.
Analogía
Concepto de archivo
Operaciones con archivosTablas de archivos abiertos
Acceso concurrente: bloqueo de archivosTipos de archivo
Estructura de los archivos y métodos de accesoArchivos especiales
Transferencias orientadas a bloques
Tablas de archivos abiertos
● SO y procesos mantienen tablas de archivos abiertos
● Presenta al proceso por medio del descriptor de archivo
● SO hace– Conteo de usuarios del archivo
– Modos de acceso: puede negar operaciones (inconsistencias)
Tablas de archivos abiertos
● SO y procesos mantienen tablas de archivos abiertos
● Presenta al proceso por medio del descriptor de archivo
● SO hace– Ubicación en disco: para evitar que cada proceso
tenga que consultar las tablas de disco
– Información de bloqueo: cuando los modos de acceso del archivo requieran protección mutua
Tablas de archivos abiertos
● SO y procesos mantienen tablas de archivos abiertos● Presenta al proceso por medio del descriptor de
archivo● Proceso necesita
– Descriptor de archivo: relación nombre de archivo abierto - identificador numérico que maneja el proceso. Un archivo abierto por varios procesos tendrá descriptores de archivo distintos en cada uno de ellos
– Permisos
Concepto de archivo
Operaciones con archivosTablas de archivos abiertos
Acceso concurrente: bloqueo de archivosTipos de archivo
Estructura de los archivos y métodos de accesoArchivos especiales
Transferencias orientadas a bloques
Acceso concurrente: bloqueo de archivos
● Nomenclatura– Compartido, shared lock: <=> bloqueo para lectura
– Exclusivo, exclusive lock: para un solo proceso
● Mecanismos de bloqueo– Mandatory locking: SO restringe acceso a todos los
demás procesos
– Advisory locking: manejado cooperativamente entre procesos
Acceso concurrente: bloqueo de archivos
● No todos los SO implementan las cuatro combinaciones (compartido mandatorio, o compartido consultivo, exclusivo mandatorio y exclusivo consultivo)
● Windows: bloqueo obligatorio● Unix: bloqueo consultivo● E.g., compilación archivo LaTeX mientras el
archivo PDF está abierto
Concepto de archivo
Operaciones con archivosTablas de archivos abiertos
Acceso concurrente: bloqueo de archivosTipos de archivo
Estructura de los archivos y métodos de accesoArchivos especiales
Transferencias orientadas a bloques
Tipos de archivo
● Tres estrategias para que el SO reconozca el tipo de un archivo
● Extensión Windows (e.g. problema troyanos)● Números mágicos: Unix, huellas digitales
– GIF, archivo inicia con GIF87a o GIF89a
– PostScript, %!
– PDF, %PDF
Tipos de archivo
● Tres estrategias para que el SO reconozca el tipo de un archivo
● Extensión Windows (e.g. problema troyanos)● Números mágicos: Unix, huellas digitales
– Caso especial, hashbang (#!), como ejecutable usando como intérprete al comando indicado inmediatamente después
SO invoca al programa/usr/bin/bash, y leespecifica como argumentoal archivo en cuestión
Tipos de archivo
● Tres estrategias para que el SO reconozca el tipo de un archivo
● Extensión Windows (e.g. problema troyanos)● Números mágicos: Unix, huellas digitales● Metadatos externos
– Apple separaba en dos forks (diferente en la actualidad)
– 1) data fork
– 2) resource fork, información del archivo
Concepto de archivo
Operaciones con archivosTablas de archivos abiertos
Acceso concurrente: bloqueo de archivosTipos de archivo
Estructura de los archivos y métodos de acceso
Archivos especialesTransferencias orientadas a bloques
Estructura de los archivos y métodos de acceso
● Acceso secuencial– Típicamente se emplea este mecanismo de lectura
para leer a memoria código (programas o bibliotecas) o documentos, sean enteros o fracciones de los mismos
Estructura de los archivos y métodos de acceso
● Acceso aleatorio– SQLite
– Seek()
– Eficiencia
Estructura de los archivos y métodos de acceso
● Acceso relativo a índice– Tamaño variable
Concepto de archivo
Operaciones con archivosTablas de archivos abiertos
Acceso concurrente: bloqueo de archivosTipos de archivo
Estructura de los archivos y métodos de accesoArchivos especiales
Transferencias orientadas a bloques
Archivos especiales
● Abstracción de archivo, fácil manejo y compresión● Se comenzó a usar para otras cosas● Unix, todo es un archivo
– Archivo estándar
– Objetos del sistema de archivos: información acerca del sistema de archivos
– Dispositivos
– Comunicación entre procesos: intercambio de información entre procesos
Concepto de archivo
Operaciones con archivosTablas de archivos abiertos
Acceso concurrente: bloqueo de archivosTipos de archivo
Estructura de los archivos y métodos de accesoArchivos especiales
Transferencias orientadas a bloques
Transferencias orientadas a bloques
● Un sistema de archivos es la representación que se da a un conjunto de archivos y directorios sobre un dispositivo de bloques (i.e. para cualquier transferencia desde o hacia él, responderá con un bloque de tamaño predefinido)
● Todas las transferencias de datos desde cualquiera de los discos serán de un múltiplo del tamaño de bloques, definido por el hardware (típicamente 512 bytes).
Transferencias orientadas a bloques
● Al leer solamente un registro de 75 bytes (e.g.), el SO lee el bloque completo y probablemente lo mantiene en un caché en la memoria principal
● Si en vez de una lectura, la operación fue una escritura, y el sector a modificar no ha sido leído aún a memoria (o fue leído hace mucho), el sistema tendrá que leerlo nuevamente, modificarlo en memoria, y volver a guardarlo a disco
Concepto de archivoOrganización de archivos
Control de accesoSistemas de archivos remotos
Organización de archivos
● Decenas de miles de archivos● Organización
Organización de archivos
Evolución del concepto de directorioOperaciones con directorios
Montaje de directorios
Organización de archivos
Evolución del concepto de directorioOperaciones con directorios
Montaje de directorios
Evolución del concepto de directorio
● Es común identificar directorios jerárquicos● No siempre fue así
Evolución del concepto de directorio
Convenciones de nomenclatura● Unix (MacOS, Android): /● Windows: \● MacOS (antes): :
Evolución del concepto de directorio
Sistema de archivos plano● Debido al limitado espacio de almacenamiento● Y no se tenían concepto de separación,
permisos y privilegios● Aún no ha desaparecido, Amazon S3: objetos y
cubetas.● Sistemas que simulaban “ramas” con etiquetas
Evolución del concepto de directorio
Directorios de profundidad fija● Un solo nivel● Raíz: MFD (master file directory)● Directorios derivados: UFD (user file directory)
Evolución del concepto de directorio
Directorios estructurados en árbol● Jerarquía ilimitada● Nacen las search path
Evolución del concepto de directorio
Directorio como grafo dirigido● En Unix se implementa por dos mecanismos
1)Enlaces duros
2)Enlaces simbólicos
Evolución del concepto de directorio
Evolución del concepto de directorio
● Dos entradas especiales en todo directorio para mantener navegabilidad
1) .2) ..
Evolución del concepto de directorio
Ubicación actual: usr2Referenciar a test.c../usr1/test.c
Organización de archivos
Evolución del concepto de directorioOperaciones con directorios
Montaje de directorios
Operaciones con directorios
● También tipos de datos abstractos con algunas operaciones definidas
● Abrir y cerrar: opendir(), closedir()● Listado de archivos: readdir()● Buscar un elemento● Crear, eliminar o renombrar un elemento: fopen(), remove() y rename()
Operaciones con directorios
Recorrido de directorios● Diferencias de referenciación, archivos planos,
estructura jerárquica● Pueden haber ciclos infinitos
Operaciones con directorios
Recorrido de directorios
Operaciones con directorios
Recorrido de directorios● Por ejemplo para respaldar /home/jose/proyecto
Operaciones con directorios
Recorrido de directorios● Solución
– Indexado basado en i-nodo (número único por volumen)– Identifica sin ambigüedad a cada archivo
si el i-nodo de jose fuera 105, al consultar a los miembros de miembros, el sistema encontrará que su primer entrada apunta al i-nodo 105, por lo cual la registraría sólo como un apuntador a datos ya archivados, y continuaría con la segunda entrada del directorio (pedro).
Organización de archivos
Evolución del concepto de directorioOperaciones con directorios
Montaje de directorios
Montaje de directorios
● Para usar un directorio● Montar: ubicarlo en algún punto del árbol de
archivos visible al sistema y usuario● Razones (distintos sistemas de archivos)
– Distintos medios físicos
– Diferentes usos esperados
– Abstracciones de sistemas no-físicos
– Razones administrativas
Montaje de directorios
● En sistemas Unix● Puntos de montaje
Montaje de directorios
● En sistemas Windows● Cada volumen identificado tiene su propio
identificador de volumen
Montaje de directorios
Concepto de archivoOrganización de archivos
Control de accesoSistemas de archivos remotos
Control de acceso
● Qué puede y que no puede hacerse● Usuarios y clases de usuarios (grupos)● Muchos esquemas, tres se analizarán
Control de acceso
Sistemas FATModelo tradicional Unix
Listas de control de acceso
Control de acceso
Sistemas FATModelo tradicional Unix
Listas de control de acceso
Sistemas FAT
● File Allocation Table● Uno de los más usados● Simple y para dispositivos limitados
– Volúmenes de 150 KB a 10s de GB
● En cada entrada de un directorio FAT el byte número 12 guarda información para el control de acceso
Sistemas FAT
● En cada entrada de un directorio FAT el byte número 12 guarda información para el control de acceso– Oculto
– Sólo lectura
– Sistema: fragmentación. Indica al SO que no debe mover ni fragmentar el archivo
– Archivado: MS-DOS. Cuando se modificaba el atributo se retiraba
Sistema FAT
● El byte fue extendido en algunos casos para más necesidades
● En MS-DOS no se hacía diferencia entre lectura y ejecución– MS-DOS basa su ejecución en la extensión
– Sistema concebido como monousuario (sin sentido condicionar a sólo lectura)
Control de acceso
Sistemas FATModelo tradicional Unix
Listas de control de acceso
Modelo tradicional Unix
● Unix: un usuario puede ser de uno o más grupos● Cada objeto describe sus permisos de acceso
por 9 bits, y con el identificador de su usuario y grupo propietarios
● Tres grupos (de tres bits cada uno):1)Usuario (rwx; lectura, escritura y ejecución)
2)Grupo
3)Otros
Modelo tradicional Unix
● El bit anterior a los 9 que controlan el acceso:● - archivo normal
● d directory
● l link
● s sockets
● p pipes
● b dispositivos de bloque
Modelo tradicional Unix
● Para directorios el mismo sistema de permisos– Escritura: quiénes pueden crear o eliminar archivos
dentro del directorio
– Lectura: quiénes pueden ver la lista de archivos
– Ejecución: quiénes pueden entrar al directorio
Vea los comandoschmod y chattr
Control de acceso
Sistemas FATModelo tradicional Unix
Listas de control de acceso
Listas de control de acceso
● Desventaja del modelo Unix– El administrador debe indicar los permisos
● Windows derivados de NT
Listas de control de acceso
Listas de control de acceso
Desventajas● Todos los permisos guardados junto con el i-nodo
(acceso ligeramente mayor)● Más difícil presentar listado compacto y completo de
permisos de archivos (complejo para administrador)● Ambigüedades: política de resolución a priori. E.g.,
usuario de dos grupos, para un grupo aprobación de escritura y para el otro grupo no, ¿qué hacer?
Concepto de archivoOrganización de archivos
Control de accesoSistemas de archivos remotos
Sistemas de archivos remotos
● Principal y primeros usos de red: transferencia de archivos (programas parecidos a ftp)
● Mediados 80s: implícito y automático, sistemas de archivos sobre red
● SO: presentar como si archivos fueran locales
Sistemas de archivos remotos
Network File System (NFS)Common Internet File System (CIFS)
Sistemas de archivos distribuidos: Andrew File System
Sistemas de archivos remotos
Network File System (NFS)
Common Internet File System (CIFS)
Sistemas de archivos remotos
Network File System (NFS)Common Internet File System (CIFS)
Sistemas de archivos distribuidos: Andrew File System
Network File System (NFS)
● Sun Microsystems● 1984, parte de su sistema operativo (SunOS,
luego Solaris)● Gracias al éxito, implementada en todo sistema
Unix
Network File System (NFS)
● Funciona sobre RPC (Remote Procedure Call)● Comparable con DCE/RPC, DCOM, SOAP y
XML-RCP● Permite al programador delegar un servicio el
manejo de las conexiones de red– Persistencia de sesiones
– Limitar su atención a una conexión virtual establecida
Network File System (NFS)
● Motivación para creación: aprovechar el HW ya común en dicha época, centralizar administración
● Ofrecer las facilidades para contar con redes donde hubiera un servidor de archivos, y donde las estaciones de trabajo tuvieran únicamente una instalación básica, y el entorno de usuario completo estuviera disponible en cualquiera de las estaciones
Network File System (NFS)
● Cumple una semántica Unix– Montar y usar como local
– Todo el resto se maneja como si fueran archivos locales
● Protocolo ligero: no implementa cifrado ni verificaciones adicionales
● Sun ofrecía NIS (Network Information System)– Autenticación y listas de usuarios
Network File System (NFS)
● Desventaja sin NIS– Permisos según identificador numérico de usuario
– El mismo usuario en diferentes sistemas tiene distintos identificadores
– Autenticación por IP, usurpación de identidad
Sistemas de archivos remotos
Network File System (NFS)Common Internet File System (CIFS)
Sistemas de archivos distribuidos: Andrew File System
Common Internet File System (CIFS)
● Equivalente NFS en Windows (primero como SMB)● Para tener acceso a un volumen
– NET USE W:\\servidor\directorio
– Aparecerá directorio en el equipo conocido como servidor en el árbol Mi PC
● Implementación en Unix, SAMBA– Ingeniería inversa
– Implementación de referencia
Sistemas de archivos remotos
Network File System (NFS)Common Internet File System (CIFS)
Sistemas de archivos distribuidos: Andrew File System
Sistemas de archivos distribuidos: Andrew File System
● Los dos sistemas anteriores están basados en Cliente-Servidor
● AFS pretende que todos los clientes se compartan información entre sí (robustez)
● Autenticación con tickets Kerberos– Pide archivo, copia local
– Guardar, aviso a los demás usuarios del archivo
● Cambios no visibles de inmediato
Términos importantes
● Enlaces duros y simbólicos● Operaciones con directorios● Montaje de directorios● Control de acceso en sistemas basados en
Unix
Revisar
● Wolf, G., Ruiz, E., Bergero, F., Meza, E., 2015. Fundamentos de Sistemas Operativos, 1st ed. Universidad Nacional Autónoma de México, México D.F., México. Ejercicios del capítulo 6.
● Enlaces duros y simbólicos en Unix● Control de acceso en GNU/Linux● Montaje de directorios
Trabajos de investigación
● Sistemas de archivos distribuidos
● Se entrega● Documento de máximo dos páginas● Presentación oral de máximo 20 minutos
Fuente
● Wolf, G., Ruiz, E., Bergero, F., Meza, E., 2015. Fundamentos de Sistemas Operativos, 1st ed. Universidad Nacional Autónoma de México, México D.F., México.