Documente Academic
Documente Profesional
Documente Cultură
Extensión – Guacara
Unidad 5:
Gestión de archivos
Ing. En sistemas
6 to Semestre
Sistema de archivos
Sus principales funciones son la asignación de espacio a los archivos, la administración del
espacio libre y del acceso a los datos resguardados. Estructuran la información guardada en
un dispositivo de almacenamiento de datos o unidad de almacenamiento (normalmente un
disco duro de una computadora), que luego será representada ya sea textual o
gráficamente utilizando un gestor de archivos.
Los sistemas de archivos proveen métodos para crear, mover, renombrar y eliminar tanto
archivos como directorios, pero carecen de métodos para crear, por ejemplo, enlaces
adicionales a un directorio o archivo (enlace duro en Unix) o renombrar enlaces padres (".."
en Unix).
El acceso seguro a sistemas de archivos básicos puede estar basado en los esquemas de
lista de control de acceso (access control list, ACL) o capacidades. Las ACL hace décadas
que demostraron ser inseguras, por lo que los sistemas operativos experimentales utilizan el
acceso por capacidades. Los sistemas operativos comerciales todavía funcionan con listas
de control de acceso.
La estructura de directorios suele ser jerárquica, ramificada o "en árbol", aunque en algún
caso podría ser plana. En algunos sistemas de archivos los nombres de archivos son
estructurados, con sintaxis especiales para extensiones de archivos y números de versión.
En otros, los nombres de archivos son simplemente cadenas de texto y los metadatos de
cada archivo son alojados separadamente.
En los sistemas de archivos jerárquicos, usualmente, se declara la ubicación precisa de un
archivo con una cadena de texto llamada ruta (path, en inglés). La nomenclatura para rutas
varía ligeramente de sistema en sistema, pero mantienen por lo general una misma
estructura. Una ruta viene dada por una sucesión de nombres de directorios y
subdirectorios, ordenados jerárquicamente de izquierda a derecha y separados por algún
carácter especial que suele ser una barra diagonal / o barra diagonal invertida \ (según el
sistema operativo) y puede terminar en el nombre de un archivo presente en la última rama
de directorios especificada.
En un sistema tipo Unix como GNU/Linux, la ruta para la canción llamada "La canción.ogg"
del usuario "Alvaro" sería algo como:
donde:
● C:\Users\Alvaro\Music\canción.mp3
donde:
● Tabla de asignación de archivos: comúnmente conocido como FAT (del inglés File
Allocation Table), es un sistema de archivos. Es un formato popular para disquetes
admitido prácticamente por todos los sistemas operativos existentes para
computadora personal. Se utiliza como mecanismo de intercambio de datos entre
sistemas operativos distintos que coexisten en la misma computadora, lo que se
conoce como entorno multiarranque.
● HPFS (High Performance File System).
● NTFS (New Technology File System).
Implementación de Archivos
Se emplean diversos métodos en los diferentes sistemas operativos. Algunos de ellos son:
Desventajas:
Asignación por Lista enlazada Empleando un Índice: Todo el bloque está disponible para
todos. Además, el acceso directo es mucho más fácil. Al igual que el método anterior, basta
con guardar un solo entero en la entrada del directorio para poder localizar todos los
bloques.
La desventaja principal de este método es que toda la tabla debe estar en la memoria todo
el tiempo para que funcione.
Nodos-i: Consiste en asociar a cada archivo una pequeña tabla llamada nodo-i
(nodo-índice), que lista los atributos y las direcciones en disco de los bloques del archivo.
Implementación de Directorios
Cuando se abre un archivo, el sistema operativo usa el nombre de la ruta proporcionado por
el usuario para localizar la entrada del directorio.
Directorios CP/M
Directorios en MS-DOS: Los directorios pueden tener otros directorios, dando lugar a un
sistema de archivos jerárquicos. En este sistema operativo es común que los diferentes
programas de aplicación comience por crear un directorio en el directorio raíz pongan ahí
todos sus archivos, con objeto que no haya conflictos entre las aplicaciones.
Es de interés primordial para los diseñadores de sistemas de archivos. Hay dos posibles
estrategias para almacenar un archivo de n bytes: asignar n bytes consecutivos de espacio
en disco, o dividir el archivo en varios bloques (no necesariamente) contiguos.
Tamaño de bloque: Una vez que se ha decidido almacenar archivos en bloques de tamaño
fijo, surge la pregunta de qué tamaño deben tener los bloques. Dada la forma como están
organizados los discos, el sector, la pista y el cilindro son candidatos obvios para utilizarse
como unidad de asignación. En un sistema con paginación, el tamaño de página también es
un contendiente importante.
Caché
La memoria caché (también memoria buffer) es una memoria rápida que permite reducir los
tiempos de espera de las distintas informaciones almacenada en la RAM (Random Access
Memory o Memoria de Acceso Aleatorio). En efecto, la memoria principal del ordenador es
más lenta que la del procesador. Existen, sin embargo, tipos de memoria que son mucho
más rápidos, pero que tienen un costo más elevado. La solución consiste entonces, en
incluir este tipo de memoria local próxima al procesador y en almacenar en forma temporal
la información principal que se procesará en él. Los últimos modelos de ordenadores
poseen muchos niveles distintos de memoria caché:
El tiempo de espera para acceder a las memorias caché nivel 1 es muy breve; es similar al
de los registros internos del procesador.
Manejador de dispositivo
Un controlador de dispositivo o manejador de dispositivo (en inglés: device driver, o
simplemente driver) es un programa informático que permite al sistema operativo
interaccionar con un periférico, haciendo una abstracción del hardware y proporcionando
una interfaz (posiblemente estandarizada) para utilizar el dispositivo.
Es una pieza esencial del software, sin la cual el hardware sería inutilizable.
Tipos de controladores
Existen tantos tipos de controladores como tipos de periféricos, y es común encontrar más
de un controlador posible para un mismo dispositivo, cada driver ofreciendo un nivel distinto
de funcionalidades.
Por ejemplo, aparte de los drivers oficiales (normalmente disponibles en el sitio web del
fabricante), se pueden encontrar también los proporcionados por los sistemas operativos, y
también versiones no oficiales realizadas por terceros.
Creación de controladores
Normalmente, los fabricantes de hardware son los encargados de desarrollar los
controladores de los dispositivos que manufacturan, porque conocen mejor el
funcionamiento interno de cada aparato.
También se encuentran los controladores libres, por ejemplo, en los “sistemas operativos
libres”. En este caso, los creadores o desarrolladores no pertenecen a la empresa
fabricante, aunque pueden cooperar entre ellos para facilitar el desarrollo. Si no hay
cooperación, pueden recurrir a procedimientos de ingeniería inversa y otros métodos
difíciles o con riesgos legales.
Fallos de controladores
Si alguno de los drivers falla, por ser una parte crítica del sistema operativo, puede ser más
grave que otros errores de software, pudiendo bloquear la computadora e incluso dañar el
hardware.
Debido a que el hardware es necesariamente indeterminista, encontrar y solucionar un fallo
en un controlador es una tarea complicada porque se debe monitorear el programa y
también el propio dispositivo.
Seguridad
Seguridad externa
Todos los mecanismos dirigidos a asegurar el sistema informático sin que el propio sistema
intervenga en el mismo se engloban en lo que podemos denominar seguridad externa.
La seguridad externa puede dividirse en dos grandes grupos:
● Seguridad física. Engloba aquellos mecanismos que impiden a los agentes físicos la
destrucción de la información existente en el sistema; entre ellos podemos citar el
fuego, humo, inundaciones, descargas eléctricas, campos magnéticos, acceso físico
de personas con no muy buena intención, etc.
● Seguridad de administración. Engloba los mecanismos más usuales para impedir el
acceso lógico de personas físicas al sistema.
Seguridad física
Como ya hemos mencionado, se trata de eliminar los posibles peligros que originan los
agentes físicos o la presencia física de personas no autorizadas. Para ello podemos
considerar los siguientes aspectos:
Seguridad de administración
Comprende aquellos mecanismos cuya misión es dar acceso lógico al sistema. Este acceso
puede realizarse a través de un terminal del sistema o bien desde otro sistema por medio de
una red de comunicación a la que estén conectados ambos sistemas.
Protección de acceso
El sistema operativo dota al administrador del sistema para que en cualquier momento se
pueda dar de alta o de baja a un usuario, asignándole en el primer caso, además de un
username, la correspondiente contraseña o password inicial. Mientras que el nombre de
usuario es público, la password no lo es, siendo recomendable su cambio cada cierto
tiempo, así como no tenerla escrita en ninguna otra parte que en la propia mente del
usuario.
La password cuando se escribe en un terminal, tanto para acceder al sistema como para su
cambio, no aparece en la pantalla como ocurre en el resto de datos que se teclean, para así
conservar el secreto de la misma. Además, esta palabra se graba en los archivos de
administración del sistema codificada o encriptada para que no sea fácilmente reconocible
por las personas.
Criptografia.
a. Compactación de datos. Consiste en comprimir los datos para que ocupen el menor
espacio posible y así conseguir en principio que la duración de la transmisión sea
menor, y que para entenderla haya que descompactarla; por tanto, la información va
relativamente cifrada. Existen muchos métodos de compactación de datos, de los
cuales los más utilizados son:
1. Reducción de espacios en blanco. Un archivo de información puede tener
muchos espacios en blanco que pueden ser sustituidos por un número que
indique cuántos de ellos están de forma consecutiva en un determinado
punto.
2. Codificación por diferencia. En ella se transmiten únicamente las diferencias
existentes entre la información que se quiere enviar y la misma información
ya enviada previamente, de tal forma que en el destino se puede reconstruir
la información sin grandes dificultades. Se trata de un caso similar a las
copias de seguridad (Backup) incrementales, donde cada nueva copia sólo
registra las diferencias que existan entre el estado actual de la información y
el original, con lo que se logra un importante ahorro de memoria.
Para evitar todo tipo de incidencias, se suele añadir a la información una pequeña parte que
nos permitirá saber si los datos recibidos coinciden con los enviados o no. Los métodos más
utilizados para dotar de fiabilidad a una transmisión de datos son mecanismos hardware o
software que permiten detectar errores ocurridos en una comunicación e incluso recuperar
algunos de ellos. Citaremos los siguientes métodos:
1. Bit de paridad. Consiste en añadir un bit a cada octeto o palabra que se transmita
para con él conseguir que la suma de unos sea par (paridad par) o impar (paridad
impar). Con este método se detectan errores al variar un bit o un número impar de
ellos sin que se detecten variaciones de un número par de bits. Se sabe que la
mayoría de errores que se producen en condiciones normales sólo afectan a un bit.
2. Códigos de Hamming. Añaden varios bits de control al octeto o palabra a transmitir,
de tal forma que detectan errores de uno o más bits y los corrigen.
3. Código de redundancia cíclica (CRC). Si se prevé que los daños esperados en una
transmisión no sean de un bit en un octeto o palabra, sino en una secuencia de
ellos, se puede utilizar un algoritmo que permita realizar una suma denominada
suma de chequeo (Checksum) y aplicar el método denominado de redundancia
cíclica durante la transmisión, de tal forma que al terminar ésta se repite en el
destino el mismo algoritmo de suma, comprobando si el valor final de la suma es el
mismo.
Seguridad interna
Todos los mecanismos dirigidos a asegurar el sistema informático, siendo el propio sistema
el que controla dichos mecanismos, se engloban en lo que podemos denominar seguridad
interna.
Los mecanismos de protección del procesador son varios ya estudiados y que pasamos a
enumerar:
Seguridad de la memoria
Se trata de mecanismos para evitar que un usuario acceda la información de otro sin
autorización. Entre ellos citaremos dos:
● Archivos LOG.
Cada usuario, al comenzar la sesión en un sistema tras su identificación, tiene asignado por
el sistema de protección un dominio compuesto de una serie de recursos y de operaciones
permitidas, por ejemplo, una serie de archivos a los que acceder, no teniendo permitido el
acceso al resto de archivos. En general, los sistemas operativos almacenan la información
relativa a los dominios en lo que se denomina matriz de dominios, cuyas filas indican los
dominios existentes y las columnas los recursos. Cada elemento de la matriz indica el
derecho a utilizar el recurso correspondiente en el dominio.
En todos estos casos, la gestión de las listas de control se realiza mediante comandos de
uso restringido, estando éstos únicamente disponibles para el administrador del sistema.
Mecanismo de protección
Dominios de protección
Matriz de acceso
Ahora bien, ¿cómo se las arregla el sistema para llevar la cuenta de quién puede acceder
qué objetos y con qué operaciones? Conceptualmente al menos, podemos ver este modelo
de protección como una gran matriz de acceso.
Los cambios de dominio que un proceso puede hacer también podemos integrarlos a la
matriz, tratando a los dominios como otros objetos, con una operación: entrar.
Una política de protección involucra decidir cómo se va a llenar esta matriz. Normalmente el
usuario que crea un objeto es quién decide cómo se va a llenar la columna de la matriz
correspondiente a ese objeto. La matriz de acceso es suficientemente general como para
apoyar diversas políticas. Por ejemplo:
Capacidad de un dominio para modificar los derechos en otros dominios (todos, o para un
recurso específico).
El problema es cómo almacenar esta matriz. Como es una matriz poco densa (muchos de
los elementos son vacíos), no resulta práctico representarla como matriz propiamente.
Podríamos usar una tabla con triples (dominio, objeto, derechos). Si un proceso dentro de
un dominio D intenta efectuar una operación M sobre un objeto O, se busca (D, O, C), y se
verifica si M pertenece a C. De todas maneras, la tabla es grande, y el esquema no es muy
eficiente. Además, si un objeto puede ser, por ejemplo, leído por todo el mundo, debe tener
entradas para cada dominio.
Listas de accesos
Alternativamente, podemos guardar la matriz por columnas (descartando, por cierto, las
entradas vacías). Es decir, a cada objeto se le asocia una lista de pares (dominio,
derechos). Es lo que se conoce como lista de acceso o ACL. Si pensamos en archivos de
Unix, podemos almacenar esta lista en el nodo-i de cada archivo, y sería algo así como
Windows NT usa listas de accesos con todo el nivel de detalle que uno quiera: para
cualquier usuario o grupo, se puede especificar cualquier subconjunto de derechos para un
archivo, de entre {RWXDPO}. .
AFS también usa ACL, pero la granularidad es a nivel de directorios, no de archivos. Los
permisos que se pueden asignar a un directorio son: Lookup, Insert, Delete, Administer,
Read, Write, Lock. Estos tres últimos son válidos para los archivos en el directorio.
Los derechos Unix sobre un directorio son totalmente ignorados por AFS. En el caso de
archivos, sólo los derechos Unix para el dueño son utilizados por AFS de manera especial:
se puede restringir el acceso a los usuarios a los que la ACL les da acceso. Por ejemplo, si
según la ACL de un directorio, un usuario puede escribir los archivos, en rigor sólo podrá
escribir aquellos con el bit W del dueño encendido.
Lista de capacidades
La otra posibilidad es almacenar la matriz por filas. En este caso, a cada proceso se le
asocia una lista de capacidades. Cada capacidad corresponde a un objeto más las
operaciones permitidas.
Cuando se usan capacidades, lo usual es que, para efectuar una operación M sobre un
objeto O, el proceso ejecute la operación especificando un puntero a la capacidad
correspondiente al objeto, en vez de un puntero al objeto. La sola posesión de la capacidad
por parte del proceso quiere decir que tiene los derechos que en ella se indican. Por lo
tanto, obviamente, se debe evitar que los procesos puedan "falsificar" capacidades.
Una posibilidad es mantener las listas de capacidades dentro del sistema operativo, y que
los procesos sólo manejen punteros a las capacidades, no las capacidades propiamente.
Otra posibilidad es cifrar las capacidades con una clave conocida por el sistema, pero no
por el usuario. Este enfoque es particularmente adecuado para sistemas distribuidos, y es
usado en Amoeba.
Un problema de las capacidades es que puede ser difícil revocar derechos ya otorgados. En
Amoeba, cada objeto tiene asociado un número al azar, grande, que también está presente
en la capacidad. Cuando se presenta una capacidad, ambos números deben coincidir. De
esta manera, para revocar los derechos ya otorgados, se cambia el número asociado al
objeto. Problema: no se puede revocar selectivamente. Las revocaciones con ACL son más
simples y más flexibles.