SO: organización de archivos

Post on 12-Apr-2017

99 views 0 download

Transcript of SO: organización de archivos

Sistemas Operativos I

Organización de archivos

Angel Vázquez-Patiñoangel.vazquezp@ucuenca.edu.ec

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

Ejemplo

Vea http://goo.gl/vLYPCZ

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.