miércoles, 23 de mayo de 2012
UNIDAD 4
4.1
INTRODUCCION
Todas las aplicaciones
computarizadas necesitan almacenar y recuperar la información:
Superando las limitaciones del
almacenamiento real.
Trascendiendo a la duración de
los procesos que las utilizan o generan.
Independizando a la información
de los procesos permitiendo el acceso a la misma a través de varios procesos.
Las
condiciones esenciales para el almacenamiento de la información a largo plazo
son:
Debe ser posible almacenar una
cantidad muy grande de información.
La información debe sobrevivir a
la conclusión del proceso que la utiliza.
Debe ser posible que varios
procesos tengan acceso concurrente
a la información.
La
solución es el almacenamiento de la información en discos y otros medios
externos en unidades llamadas archivos:
Los archivos deben ser persistentes, es decir que no deben
verse afectados por la creación o terminación de un proceso.
Los archivos son una colección de
datos con nombre.
Pueden ser manipulados como una
unidad por operaciones como: open, close, create, destroy, copy, rename, list.
Los elementos de datos
individuales dentro del archivo pueden ser manipulados por operaciones como:
read, write, update, insert, delete.
El
“Sistema de Archivos” es la parte del sistema de administración del
almacenamiento responsable, principalmente, de la administración de los
archivos del almacenamiento secundario.
Es la parte del S. O. responsable
de permitir “compartir controladamente” la información de los archivos.
4.2
FUNCIONES DEL SISTEMA DE ARCHIVOS
Los usuarios deben poder crear, modificar y borrar
archivos.
Se deben poder compartir los archivos de una manera
cuidadosamente controlada .
El mecanismo encargado de compartir los archivos
debe proporcionar varios tipos de acceso controlado:
- Ej.:
“Acceso de Lectura”, “Acceso de Escritura”, “Acceso de
Ejecución”, varias combinaciones de estos, etc.
Se debe poder estructurar los archivos de la manera
más apropiada a cada aplicación.
Los usuarios deben poder ordenar la transferencia
de información entre archivos.
Se deben proporcionar posibilidades de “respaldo”
y “recuperación” para prevenirse contra:
- La
pérdida accidental de información.
- La
destrucción maliciosa de información.
Se debe poder referenciar a los archivos mediante “Nombres
Simbólicos”, brindando “Independencia de Dispositivos”.
En ambientes sensibles, el sistema de archivos debe
proporcionar posibilidades de “Cifrado” y “Descifrado”.
El sistema de archivos debe brindar una interfase
favorable al usuario:
- Debe
suministrar una “visión lógica” de los datos y de las funciones que
serán ejecutadas, en vez de una “visión física”.
- El
usuario no debe tener que preocuparse por:
- Los dispositivos particulares.
- Dónde serán almacenados los datos.
- El formato de los datos en los dispositivos.
- Los medios físicos de la transferencia de
datos hacia y desde los dispositivos.
4.3
EL SISTEMA DE ARCHIVOS
Un “Archivo” es un conjunto de registros
relacionados.
El “Sistema de Archivos” es un componente
importante de un S. O. y suele contener:
- “Métodos
de acceso” relacionados con la manera de acceder a los
datos almacenados en archivos.
- “Administración
de archivos” referida a la provisión de mecanismos para
que los archivos sean almacenados, referenciados, compartidos y
asegurados.
- “Administración
del almacenamiento auxiliar” para la asignación de espacio a los archivos
en los dispositivos de almacenamiento secundario.
- “Integridad
del archivo” para garantizar la integridad de la
información del archivo.
El sistema de archivos está relacionado
especialmente con la administración del espacio de almacenamiento secundario,
fundamentalmente con el almacenamiento de disco.
Una forma de organización de un sistema de archivos
puede ser la siguiente:
- Se
utiliza una “raíz ” para indicar en qué parte del disco comienza el
“directorio raíz ”.
- El “directorio
raíz ” apunta a los “directorios de usuarios”.
- Un “directorio
de usuario” contiene una entrada para cada uno de los archivos del
usuario.
- Cada
entrada de archivo apunta al lugar del disco donde está almacenado el
archivo referenciado.
Los nombres de archivos solo necesitan ser únicos
dentro de un directorio de usuario dado.
El nombre del sistema para un archivo dado debe ser
único para el sistema de archivos.
En sistemas de archivo “jerárquicos” el
nombre del sistema para un archivo suele estar formado como el “nombre de la
trayectoria” del directorio raíz al archivo.
4.4
ARCHIVOS
Las reglas exactas para los nombres de archivos
varían de sistema a sistema.
Algunos sistemas de archivos distinguen entre las
letras mayúsculas y minúsculas, mientras que otros no.
Muchos S. O. utilizan nombres de archivo con dos
partes, separadas por un punto:
- La
parte posterior al punto es la extensión de archivo y generalmente
indica algo relativo al archivo, aunque las extensiones suelen ser meras
convenciones.
Los archivos se pueden estructurar de varias
maneras, las más comunes son :
- “Secuencia
de bytes”:
- El archivo es una serie no estructurada de
bytes.
- Posee máxima flexibilidad.
- El S. O. no ayuda pero tampoco estorba.
- “Secuencia
de registros”:
- El archivo es una secuencia de registros de
longitud fija, cada uno con su propia estructura interna.
- “Árbol
”:
- El archivo consta de un árbol de registros,
no necesariamente de la misma longitud.
- Cada registro tiene un campo key (llave
o clave) en una posición fija del registro.
- El árbol se ordena mediante el campo de clave
para permitir una rápida búsqueda de una clave particular.
Muchos S. O. soportan varios tipos de archivos, por
ej.: archivos regulares, directorios, archivos especiales de caracteres,
archivos especiales de bloques, etc., donde:
- Los Archivos
Regulares son aquellos que contienen información del usuario.
- Los Directorios
son archivos de sistema para el mantenimiento de una estructura del
sistema de archivos.
- Los Archivos
Especiales de Caracteres:
- Tienen relación con la e / s.
- Se utilizan para modelar dispositivos
seriales de e / s (terminales, impresoras, redes, etc.).
- Los Archivos
Especiales de Bloques se utilizan para modelar discos.
Los tipos de acceso más conocidos son:
- Acceso
Secuencial: el proceso lee en orden todos los registros
del archivo comenzando por el principio, sin poder:
- Saltar registros.
- Leer en otro orden.
- Acceso
Aleatorio: el proceso puede leer los registros en
cualquier orden utilizando dos métodos para determinar el punto de inicio
de la lectura:
- Cada operación de lectura (read) da la posición
en el archivo con la cual iniciar.
- Una operación especial (seek) establece la
posición de trabajo pudiendo luego leerse el archivo secuencialmente.
Cada archivo tiene:
- Su
nombre y datos.
- Elementos
adicionales llamados atributos, que varían considerablemente de
sistema a sistema.
Algunos de los posibles atributos de archivo
son:
- “Protección”:
quién debe tener acceso y de qué forma.
- “Contraseña”:
contraseña necesaria para acceder al archivo.
- “Creador”:
identificador de la persona que creó el archivo.
- “Propietario”:
propietario actual.
- “Bandera
exclusivo - para - lectura”: 0 lectura / escritura, 1 para lectura
exclusivamente.
- “Bandera
de ocultamiento”: 0 normal, 1 para no exhibirse en listas.
- “Bandera
de sistema”: 0 archivo normal, 1 archivo de sistema.
- “Bandera
de biblioteca”: 0 ya se ha respaldado, 1 necesita respaldo.
- “Bandera
ascii / binario”: 0 archivo en ascii, 1 archivo en binario.
- “Bandera
de acceso aleatorio”: 0 solo acceso secuencial, 1 acceso aleatorio.
- “Bandera
temporal”: 0 normal, 1 eliminar al salir del proceso.
- “Banderas
de cerradura”: 0 no bloqueado, distinto de 0 bloqueado.
- “Longitud
del registro”: número de bytes en un registro.
- “Posición
de la llave”: ajuste de la llave dentro de cada registro.
- “Longitud
de la llave”: número de bytes en el campo llave.
- “Tiempo
de creación”: fecha y hora de creación del archivo.
- “Tiempo
del último acceso”: fecha y hora del último acceso al archivo.
- “Tiempo
de la última modificación”: fecha y hora de la última modificación al
archivo.
- “Tamaño
actual”: número de bytes en el archivo.
- “Tamaño
máximo”: tamaño máximo al que puede crecer el archivo.
Las llamadas más comunes al sistema relacionadas
con los archivos son:
- Create
(crear): el archivo se crea sin datos.
- Delete
(eliminar): si el archivo ya no es necesario debe
eliminarse para liberar espacio en disco. Ciertos S. O. eliminan
automáticamente un archivo no utilizado durante “n” días.
- Open
(abrir): antes de utilizar un archivo, un proceso debe
abrirlo. La finalidad es permitir que el sistema traslade los atributos y
la lista de direcciones en disco a la memoria principal para un rápido
acceso en llamadas posteriores.
- Close
(cerrar): cuando concluyen los accesos, los atributos y
direcciones del disco ya no son necesarios, por lo que el archivo debe
cerrarse y liberar la tabla de espacio interno.
- Read
(leer): los datos se leen del archivo; quien hace la
llamada debe especificar la cantidad de datos necesarios y proporcionar un
buffer para colocarlos.
- Write
(escribir): los datos se escriben en el archivo, en la
posición actual. El tamaño del archivo puede aumentar (agregado de
registros) o no (actualización de registros).
- Append
(añadir): es una forma restringida de “write”. Solo
puede añadir datos al final del archivo.
- Seek
(buscar): especifica el punto donde posicionarse.
Cambia la posición del apuntador a la posición activa en cierto lugar del
archivo.
- Get
attributes (obtener atributos): permite a los procesos
obtener los atributos del archivo.
- Set
attributes (establecer atributos): algunos atributos pueden
ser determinados por el usuario y modificados luego de la creación del
archivo. La información relativa al modo de protección y la mayoría de las
banderas son un ejemplo obvio.
- Rename
(cambiar de nombre): permite modificar el nombre de un archivo ya
existente.
Algunos S. O. permiten asociar los archivos con un
espacio de direcciones de un proceso en ejecución.
Se utilizan las llamadas al sistema “map” y “unmap”:
- “Map”:
utiliza un nombre de archivo y una dirección virtual y hace que el S. O.
asocie al archivo con la dirección virtual en el espacio de direcciones,
por lo cual las lecturas o escrituras de las áreas de memoria asociadas al
archivo se efectúan también sobre el archivo mapeado.
- “Unmap”:
elimina los archivos del espacio de direcciones y concluye la operación de
asociación.
El mapeo de archivos elimina la necesidad de
programar la e / s directamente, facilitando la programación.
Los principales problemas relacionados son:
- Imposibilidad
de conocer a priori la longitud del archivo de salida, el que podría
superar a la memoria.
- Dificultad para compartir los archivos mapeados evitando inconsistencias, ya que las modificaciones hechas en las páginas no se verán reflejadas en el disco hasta que dichas páginas sean eliminadas de la memoria
4.5
DIRECCTORIOS
En muchos sistemas son a su vez también archivos.
El directorio contiene un conjunto de datos por
cada archivo referenciado.
Una posibilidad es que el directorio contenga por
cada archivo referenciado:
- El
nombre.
- Sus
atributos.
- Las
direcciones en disco donde se almacenan los datos.
Otra posibilidad es que cada entrada del directorio
contenga:
- El
nombre del archivo.
- Un
apuntador a otra estructura de datos donde se encuentran los atributos y
las direcciones en disco.
Al abrir un archivo el S. O.:
- Busca
en su directorio el nombre del archivo.
- Extrae
los atributos y direcciones en disco.
- Graba
esta información en una tabla de memoria real.
- Todas
las referencias subsecuentes al archivo utilizarán la información de la
memoria principal.
El número y organización de directorios
varía de sistema en sistema:
- Directorio
único: el sistema tiene un solo directorio con todos
los archivos de todos los usuarios
- Un
directorio por usuario: el sistema habilita un solo directorio por
cada usuario
- Un
árbol de directorios por usuario: el sistema permite que cada
usuario tenga tantos directorios como necesite, respetando una jerarquía
general
Cuando el sistema de archivos está organizado como
un árbol de directorios se necesita una forma de determinar los nombres de los
archivos.
Los principales métodos para nombres de los
archivos son:
- Ruta
de Acceso Absoluta:
- Cada archivo tiene una ruta de acceso
absoluta.
- Consta de la ruta de acceso desde el
irectorio raíz hasta el archivo.
- Los componentes de la ruta de acceso se
separan mediante algún carácter llamado “separador”.
- Ruta
de Acceso Relativa:
- Se utiliza junto con el concepto de
directorio de trabajo o directorio activo.
- Todos los nombres que no comiencen en el
directorio raíz se toman en relación con el directorio de trabajo.
- El nombre absoluto de la ruta de acceso
siempre funciona, sin importar cual sea el directorio de trabajo.
Las llamadas al sistema permitidas para el manejo
de los directorios tienen variación de sistema a sistema, las más comunes son
las siguientes:
- Create
(crear): se crea un directorio vacío.
- Delete
(eliminar): se elimina un directorio, que debe estar
vacío.
- Opendir
(abrir directorio): se pueden leer los directorios:
- Antes de poder leer un directorio, éste debe
ser abierto.
- Closedir
(cerrar directorio): cuando se ha leído un directorio, éste debe
ser cerrado para liberar el espacio correspondiente de la tabla interna.
- Readdir
(leer directorio): regresa la siguiente entrada en un directorio
abierto, sin importar el tipo de estructura de directorios que se utilice.
- Rename
(cambiar de nombre): cambia el nombre de un directorio de manera
similar al cambio para archivos.
- Link
(ligar): es una técnica que permite que un archivo aparezca
en más de un directorio:
- Especifica un archivo existente y el nombre
de una ruta de acceso.
- Crea un enlace del archivo ya existente con
el nombre especificado en la ruta de acceso.
- Unlink
(desligar): se elimina una entrada del directorio:
- Si el archivo que se desea desligar aparece
solo en un directorio (el caso normal):
- Se elimina del sistema de archivos.
- Si el archivo que se desea desligar, está
presente en varios directorios:
- Solo se elimina la ruta de acceso
especificada.
- Las demás rutas permanecen.
4.6
IMPLANTACIÓN DEL SISTEMA DE ARCHIVOS Y SUS RELACIONES CON LA ASIGNACIÓN Y LIBERACIÓN DE ESPACIO
La forma de almacenamiento de
archivos y directorios.
La administración del espacio
en disco.
La forma de hacerlo de manera
eficiente y confiable.
Se deben
tener presentes problemas tales como la “fragmentación” creciente
del espacio en disco:
Ocasiona problemas de performance
al hacer que los archivos se desperdiguen a través de bloques muy dispersos.
Una técnica para aliviar el
problema de la “fragmentación” consiste en realizar periódicamente:
“Condensación”: se
pueden “reorganizar” los archivos expresamente o automáticamente según
algún criterio predefinido.
“Recolección de basura o
residuos”: se puede
hacer fuera de línea o en línea, con el sistema activo, según la
implementación.
El aspecto clave de la
implantación del almacenamiento de archivos es el registro de los bloques
asociados a cada archivo.
Algunos de los métodos utilizados
son los siguientes:
Asignación
contigua o adyacente:
Los archivos son asignados a
áreas contiguas de almacenamiento secundario.
Las principales ventajas
son:
Facilidad de implantación, ya que
solo se precisa el número del bloque de inicio para localizar un archivo.
Rendimiento excelente respecto de
la e / s.
Los principales defectos
son:
Se debe conocer el tamaño máximo
del archivo al crearlo.
Produce una gran fragmentación de
los discos.
Asignación
no contigua:
Son esquemas de almacenamiento
más dinámicos, destacándose los siguientes:
Asignación encadenada orientada
hacia el sector:
El disco se considera compuesto
de sectores individuales.
Los archivos constan de varios
sectores que pueden estar dispersos por todo el disco.
Los sectores que pertenecen a un
archivo común contienen apuntadores de uno a otro formando una “lista
encadenada”.
Una “lista de espacio libre”
contiene entradas para todos los sectores libres del disco.
Las ampliaciones o reducciones en
el tamaño de los archivos se resuelven actualizando la “lista de espacio
libre” y no hay necesidad de condensación.
Las principales desventajas
son:
Debido a la posible dispersión en
el disco, la recuperación de registros lógicamente contiguos puede significar
largas búsquedas.
El mantenimiento de la estructura
de “listas encadenadas” significa una sobrecarga en tiempo de ejecución.
Los apuntadores de la estructura
de lista consumen espacio en disco.
Asignación por bloques:
Es más eficiente y reduce la
sobrecarga en ejecución.
Es una mezcla de los métodos de
asignación contigua y no contigua.
Se asignan bloques de sectores
contiguos en vez de sectores individuales.
El sistema trata de asignar
nuevos bloques a un archivo eligiendo bloques libres lo más próximos posible a
los bloques del archivo existentes.
Las formas más comunes de
implementar la asignación por bloques son:
Encadenamiento de bloques.
Encadenamiento de bloques de
índice.
Transformación de archivos
orientada hacia bloques.
Encadenamiento de bloques o lista
ligada:
Las entradas en el directorio de
usuarios apuntan al primer bloque de cada archivo.
Cada uno de los bloques de
longitud fija que forman un archivo contiene dos partes:
Un bloque de datos.
Un apuntador al bloque siguiente.
Cada bloque contiene varios
sectores.
Frecuentemente el tamaño de un
bloque se corresponde con el de una pista completa del disco.
Localizar un registro determinado
requiere:
Buscar en la cadena de bloques
hasta encontrar el bloque apropiado.
Buscar en el bloque hasta
encontrar el registro.
El examen de la cadena desde el
principio puede ser lento ya que debe realizarse de bloque en bloque, y pueden
estar dispersos por todo el disco.
La inserción y el retiro son
inmediatos, dado que se deben modificar los apuntadores del bloque precedente.
Se pueden usar “listas de encadenamiento
doble”, hacia adelante y hacia atrás, con lo que se facilita la búsqueda
Encadenamiento de bloques de
índices:
Los apuntadores son colocados en
varios bloques de índices separados:
Cada bloque de índices contiene
un número fijo de elementos.
Cada entrada contiene un identificador
de registros y un apuntador a ese registro.
Si es necesario utilizar más de
un bloque de índices para describir un archivo, se encadena una serie de
bloques de índices.
La gran ventaja es que la
búsqueda puede realizarse en los propios bloques de índices.
Los bloques de índices pueden
mantenerse juntos en el almacenamiento secundario para acortar la búsqueda,
pero para mejor performance podrían mantenerse en el almacenamiento primario.
La principal desventaja es
que las inserciones pueden requerir la reconstrucción completa de los bloques
de índices:
Una posibilidad es dejar vacía
una parte de los bloques de índices para facilitar inserciones futuras y
retardar las reconstrucciones.
Es suficiente que el dato del directorio
contenga el número de bloque inicial para localizar todos los bloques
restantes, sin importar el tamaño del archivo
- Transformación
de archivos orientada hacia bloques:
- Se
utilizan números de bloques en vez de apuntadores.
- Los
números de bloques se convierten fácilmente a direcciones de bloques
gracias a la geometría del disco.
- Se
conserva un mapa del archivo, conteniendo una entrada para cada bloque
del disco.
- Las
entradas en el directorio del usuario apuntan a la primera entrada al mapa
del archivo para cada archivo.
- Cada
entrada al mapa del archivo contiene el número del bloque siguiente de
ese archivo.
- La
entrada al mapa del archivo correspondiente a la última entrada de un
archivo determinado se ajusta a algún valor “centinela” (“nil”)
para indicar que se alcanzó el último bloque de un archivo.
- El
sistema puede mantener una lista de bloques libres.
*Nodos-i
(nodos índices):
§ Se asocia
a cada archivo una pequeña tabla, llamada nodo-i (nodo índice):
§ Contiene
los atributos y direcciones en disco de los bloques del archivo.
§ Se
traslada del disco a la memoria principal al abrir el archivo.
§ En rigor,
almacena solo las primeras direcciones en disco:
·
Si el archivo es pequeño, toda la información está
en el nodo-i.
·
Si el archivo es grande, una de las direcciones en
el nodo-i es la dirección de un bloque en el disco llamado bloque
simplemente indirecto:
·
Contiene las direcciones en disco adicionales.
·
Si resulta insuficiente, otra dirección en el
nodo-i, el bloque doblemente indirecto, contiene la dirección de un
bloque que presenta una lista de los bloques simplemente indirectos:
·
Cada bloque simplemente indirecto apunta a un grupo
de bloques de datos.
De ser necesario se pueden utilizar bloques
triplemente indirectos (ver Figura 4.7).
Implantación de Directorios
Para
abrir un archivo el S. O. utiliza información del directorio:
- El
directorio contiene la información necesaria para encontrar los
bloques en el disco.
- El tipo
de información varía según el sistema.
La
principal función del sistema de directorios es asociar el nombre del
archivo con la información necesaria para localizar los datos.
Un
aspecto íntimamente ligado con esto es la posición de almacenamiento de los atributos:
- Una
posibilidad es almacenarlos en forma directa dentro del dato del
directorio.
- Otra
posibilidad es almacenar los atributos en el nodo-i en vez de
utilizar la entrada del directorio.
Frecuentemente
conviene que los archivos compartidos aparezcan simultáneamente en distintos
directorios de distintos usuarios.
El propio
sistema de archivos es una gráfica dirigida acíclica en vez de un árbol
.
La
conexión entre un directorio y un archivo de otro directorio al cual comparten
se denomina enlace.
Si los
directorios realmente contienen direcciones en disco:
- Se
debe tener una copia de las direcciones en disco en el directorio que
accede al archivo compartido al enlazar el archivo.
- Se
debe evitar que los cambios hechos por un usuario a través de un
directorio no sean visibles por los demás usuarios, para lo que se
consideraran dos soluciones posibles.
Primer
solución:
- Los
bloques del disco no se enlistan en los directorios, sino en una pequeña
estructura de datos asociada al propio archivo.
- Los
directorios apuntarían solo a esa pequeña estructura de datos, que podría
ser el nodo-i.
Segunda
solución:
- El
enlace se produce haciendo que el sistema cree un nuevo archivo de tipo “link”.
- El
archivo “link”:
- Ingresa
al directorio del usuario que accede a un archivo de otro directorio y
usuario.
- Solo
contiene el nombre de la ruta de acceso del archivo al cual se
enlaza.
- Este
criterio se denomina enlace simbólico.
Desventajas
de la primer solución:
- La
creación de un enlace:
- No
modifica la propiedad respecto de un archivo.
- Aumenta
el contador de enlaces del nodo-i:
- El
sistema sabe el número de entradas de directorio que apuntan en cierto
momento al archivo.
- Si
el propietario inicial del archivo intenta eliminarlo, surge un problema
para el sistema:
- Si
elimina el archivo y limpia el nodo-i, el directorio que enlazo al
archivo tendrá una entrada que apunta a un nodo-i no válido.
- Si
el nodo-i se reasigna a otro archivo el enlace apuntará al archivo
incorrecto.
- El
sistema:
- Puede
ver por medio del contador de enlaces en el nodo-i que el archivo sigue
utilizándose.
- No
puede localizar todas las entradas de directorio asociadas a ese archivo
para eliminarlas.
- La
solución podría ser:
- Eliminar
la entrada del directorio inicialmente propietario del archivo.
- Dejar
intacto el nodo-i:
- Se
daría el caso que el directorio que posee el enlace es el único que
posee una entrada de directorio para un archivo de otro directorio, para
el cual dicho archivo ya no existe.
- Esto
no ocurre con los enlaces simbólicos ya que solo el propietario
verdadero tiene un apuntador al nodo-i:
- Los
usuarios enlazados al archivo solo tienen nombres de rutas de acceso y
no apuntadores a nodo-i.
- Cuando
el propietario elimina un archivo, este se destruye.
Desventajas
de la segunda solución:
- El
principal problema es su costo excesivo, especialmente en accesos a disco,
puesto que se debe leer el archivo que contiene la ruta de acceso,
analizarla y seguirla componente a componente hasta alcanzar el nodo-i.
- Se
precisa un nodo-i adicional por cada enlace simbólico y un bloque
adicional en disco para almacenar la ruta de acceso.
- Los
archivos pueden tener dos o más rutas de acceso, debido a lo cual, en
búsquedas genéricas se podría encontrar el mismo archivo por distintas
rutas y tratárselo como si fueran archivos distintos.
Los
enlaces simbólicos tienen la ventaja de que se pueden utilizar para enlazar
archivos en otras máquinas, en cualquier parte del mundo; se debe proporcionar
solo la dirección de la red de la máquina donde reside el archivo y su ruta de
acceso en esa máquina.
Existen
dos estrategias generales para almacenar un archivo de “n” bytes
:
Asignar “n”
bytes consecutivos de espacio en el disco:
- Tiene
el problema de que si un archivo crece será muy probable que deba
desplazarse en el disco, lo que puede afectar seriamente al rendimiento.
Dividir
el archivo en cierto número de bloques (no necesariamente) adyacentes:
- Generalmente
los sistemas de archivos utilizan esta estrategia con bloques de tamaño
fijo.
Tamaño
del bloque:
Dada la
forma en que están organizados los bloques, el sector, la pista y el cilindro
son los candidatos obvios como unidades de asignación.
Si se
tiene una unidad de asignación grande, como un cilindro, esto significa
que cada archivo, inclusive uno pequeño, ocupará todo un cilindro; con esto se
desperdicia espacio de almacenamiento en disco.
Si se
utiliza una unidad de asignación pequeña, como un sector, implica que
cada archivo constará de muchos bloques; con esto su lectura generará muchas
operaciones de e / s afectando la performance.
Lo
anterior indica que la eficiencia en tiempo y espacio tienen un conflicto
inherente.
Generalmente
se utilizan como solución de compromiso bloques de 1/2 k, 1k, 2k o 4k. (ver
Figura 4.8).
Registro
de los bloques libres:
Se
utilizan por lo general dos métodos:
- La
lista de bloques libres como lista ligada.
- Un
mapa de bits.
Lista
ligada de bloques de disco:
- Cada
bloque contiene tantos números de bloques libres como pueda.
- Los
bloques libres se utilizan para contener a la lista de bloques libres.
Mapa de
bits:
- Un
disco con “n” bloques necesita un mapa de bits con “n” bits.
- Los
bloques libres se representa con “1” y los asignados con “0” (o
viceversa).
- Generalmente
este método es preferible cuando existe espacio suficiente en la memoria
principal para contener completo el mapa de bits.
Disk
quotas:
Para
evitar que los usuarios se apropien de un espacio excesivo en disco, los S. O.
multiusuario proporcionan generalmente un mecanismo para establecer las cuotas
en el disco.
La idea
es que:
- Un
administrador del sistema asigne a cada usuario una proporción máxima de
archivos y bloques.
- El
S. O. garantice que los usuarios no excedan sus cuotas.
Un
mecanismo utilizado es el siguiente:
- Cuando
un usuario abre un archivo:
- Se
localizan los atributos y direcciones en disco.
- Se
colocan en una tabla de archivos abiertos en la memoria principal.
- Uno
de los atributos indica el propietario del archivo; cualquier aumento del
tamaño del archivo se carga a la cuota del propietario.
- Una
segunda tabla contiene el registro de las cuotas para cada uno de los
usuarios que tengan un archivo abierto en ese momento, aún cuando el
archivo lo haya abierto otro usuario.
- Cuando
se escribe una nueva entrada en la tabla de archivos abiertos:
- Se
introduce un apuntador al registro de la cuota del propietario para
localizar los límites.
- Cuando
se añade un bloque a un archivo:
- Se
incrementa el total de bloques cargados al propietario.
- Se
verifica este valor contra los límites estricto y flexible (el primero no
se puede superar, el segundo sí).
- También
se verifica el número de archivos.
Es
necesario proteger la información alojada en el sistema de archivos, efectuando
los resguardos correspondientes.
De esta
manera se evitan las consecuencias generalmente catastróficas de la pérdida de
los sistemas de archivos.
Las
pérdidas se pueden deber a problemas de hardware, software, hechos externos,
etc.
Manejo de un bloque defectuoso:
Se
utilizan soluciones por hardware y por software.
La solución
en hardware:
- Consiste
en dedicar un sector del disco a la lista de bloques defectuosos.
- Al
inicializar el controlador por primera vez:
- Lee
la “lista de bloques defectuosos”.
- Elige
un bloque (o pista) de reserva para reemplazar los defectuosos.
- Registra
la asociación en la lista de bloques defectuosos.
- En
lo sucesivo, las solicitudes del bloque defectuoso utilizarán el de
repuesto.
La solución
en software:
- Requiere
que el usuario o el sistema de archivos construyan un archivo con todos
los bloques defectuosos.
- Se
los elimina de la “lista de bloques libres”.
- Se
crea un “archivo de bloques defectuosos”:
- Esta
constituido por los bloques defectuosos.
- No
debe ser leído ni escrito.
- No
se debe intentar obtener copias de respaldo de este archivo.
Respaldos
(copias de seguridad o de back-up):
Es muy
importante respaldar los archivos con frecuencia.
Los
respaldos pueden consistir en efectuar copias completas del contenido de los
discos (flexibles o rígidos).
Una
estrategia de respaldo consiste en dividir los discos en áreas de datos y
áreas de respaldo, utilizándolas de a pares:
- Se
desperdicia la mitad del almacenamiento de datos en disco para respaldo.
- Cada
noche (o en el momento que se establezca), la parte de datos de la unidad
0 se copia a la parte de respaldo de la unidad 1 y viceversa.
Otra
estrategia es el vaciado por incrementos o respaldo incremental :
- Se obtiene
una copia de respaldo periódicamente (por ej.: una vez por mes o por
semana), llamada copia total.
- Se
obtiene una copia diaria solo de aquellos archivos modificados desde la
última copia total; en estrategias mejoradas, se copian solo aquellos archivos
modificados desde la última vez que dichos archivos fueron copiados.
- Se
debe mantener en el disco información de control como una “lista de los
tiempos de copiado” de cada archivo, la que debe ser actualizada cada
vez que se obtienen copias de los archivos y cada vez que los archivos son
modificados.
- Puede
requerir una gran cantidad de cintas de respaldo dedicadas a los respaldos
diarios entre respaldos completos.
Consistencia
del sistema de archivos:
Muchos
sistemas de archivos leen bloques, los modifican y escriben en ellos después.
Si el
sistema falla antes de escribir en los bloques modificados, el sistema de
archivos puede quedar en un “estado inconsistente”.
La
inconsistencia es particularmente crítica si alguno de los bloques afectados
son:
- Bloques
de nodos-i.
- Bloques
de directorios.
- Bloques
de la lista de bloques libres.
La
mayoría de los sistemas dispone de un programa utilitario que verifica la consistencia
del sistema de archivos:
- Se
pueden ejecutar al arrancar el sistema o a pedido.
- Pueden
actuar sobre todos o algunos de los discos.
- Pueden
efectuar verificaciones a nivel de bloques y a nivel de archivos.
- La
consistencia del sistema de archivos no asegura la consistencia interna de
cada archivo, respecto de su contenido.
- Generalmente
pueden verificar también el sistema de directorios y / o de bibliotecas.
Generalmente
los utilitarios utilizan dos tablas:
- Tabla
de bloques en uso.
- Tabla
de bloques libres.
- Cada
bloque debe estar referenciado en una de ellas.
Si un
bloque no aparece en ninguna de las tablas se trata de una falla llamada bloque
faltante:
- No
produce daños pero desperdicia espacio en disco.
- Se
soluciona añadiendo el bloque a la tabla de bloques libres.
También
podría detectarse la situación de falla debida a un bloque referenciado dos
veces en la tabla de bloques libres:
- Esta
falla no se produce en los sistemas de archivos basados en mapas de bits,
sí en los basados en tablas o listas.
- La
solución consiste en depurar la tabla de bloques libres.
Una
falla muy grave es que el mismo bloque de datos aparezca referenciado
dos o más veces en la tabla de bloques en uso:
- Como
parte del mismo o de distintos archivos.
- Si
uno de los archivos se borra, el bloque aparecería en la tabla de bloques
libres y también en la de bloques en uso.
- Una
solución es que el verificador del sistema de archivos:
- Asigne
un bloque libre.
- Copie
en el bloque libre el contenido del bloque conflictivo.
- Actualice
las tablas afectando el bloque copia a alguno de los archivos.
- Agregue
el bloque conflictivo a la tabla de bloques libres.
- Informe
al usuario para que verifique el daño detectado y la solución dada.
Otro
error posible es que un bloque esté en la tabla de bloques en uso y en la
tabla de bloques libres:
- Se
soluciona eliminándolo de la tabla de bloques libres.
Las
verificaciones de directorios incluyen controles como:
- Número
de directorios que apuntan a un nodo-i con los contadores de enlaces
almacenados en los propios nodos-i; en un sistema consistente de archivos
deben coincidir.
Una
posible falla es que el contador de enlaces sea mayor que el número de
entradas del directorio:
- Aunque
se eliminaran todos los archivos de los directorios el contador sería
distinto de cero y no se podría eliminar el nodo-i.
- No
se trata de un error serio pero produce desperdicio de espacio en disco
con archivos que no se encuentran en ningún directorio.
- Se
soluciona haciendo que el contador de enlaces en el nodo-i tome el valor
correcto; si el valor correcto es 0, el archivo debe eliminarse.
Otro tipo
de error es potencialmente catastrófico:
- Si
dos entradas de un directorio se enlazan a un archivo, pero el nodo-i
indica que solo existe un enlace, entonces, al eliminar cualquiera de
estas entradas de directorio, el contador del nodo-i tomará el valor 0.
- Debido
al valor 0 el sistema de archivos lo señala como no utilizado y libera
todos sus bloques.
- Uno
de los directorios apunta hacia un nodo-i no utilizado, cuyos bloques se
podrían asignar entonces a otros archivos.
- La
solución es forzar que el contador de enlaces del nodo-i sea igual al
número de entradas del directorio.
También
se pueden hacer verificaciones heurísticas, por ej.:
- Cada
nodo-i tiene un modo, pero algunos modos son válidos aunque extraños:
- Ej.:
Se prohibe el acceso al propietario y todo su grupo, pero se permite a
los extraños leer, escribir y ejecutar el archivo.
- La
verificación debería detectar e informar de estas situaciones.
- Se
debería informar como sospechosos aquellos directorios con excesivas
entradas, por ej., más de mil.
4.7
DESCRIPTOR DE ARCHIVOS
El descriptor de archivos o bloque de control de
archivos es un bloque de control que contiene información que el sistema
necesita para administrar un archivo.
Es una
estructura muy dependiente del sistema.
Puede
incluir la siguiente información:
- Nombre
simbólico del archivo.
- Localización
del archivo en el almacenamiento secundario.
- Organización
del archivo (método de organización y acceso).
- Tipo
de dispositivo.
- Datos
de control de acceso.
- Tipo
(archivo de datos, programa objeto, programa fuente, etc.).
- Disposición
(permanente contra temporal).
- Fecha
y tiempo de creación.
- Fecha
de destrucción.
- Fecha
de la última modificación.
- Suma
de las actividades de acceso (número de lecturas, por ejemplo).
Los
descriptores de archivos suelen mantenerse en el almacenamiento secundario; se
pasan al almacenamiento primario al abrir el archivo.
El
descriptor de archivos es controlado por el sistema de archivos; el
usuario puede no hacer referencia directa a él.
4.8
SEGURIDAD
Los sistemas de archivos generalmente contienen
información muy valiosa para sus usuarios, razón por la que los sistemas de
archivos deben protegerla.
Se
entenderá por seguridad a los problemas generales relativos a la garantía de
que los archivos no sean leídos o modificados por personal no autorizado; esto
incluye aspectos técnicos, de administración, legales y políticos.
Se
consideraran mecanismos de protección a los mecanismos específicos del sistema
operativo utilizados para resguardar la información de la computadora.
La
frontera entre seguridad y mecanismos de protección no está bien
definida.
Dos de
las más importantes facetas de la seguridad son:
- La
pérdida de datos.
- Los
intrusos.
Algunas
de las causas más comunes de la pérdida de datosson:
- Actos
y hechos diversos, como incendios, inundaciones, terremotos, guerras,
revoluciones, roedores, etc.
- Errores
de hardware o de software, como fallas en la cpu, discos o cintas
ilegibles, errores de telecomunicación, errores en los programas, etc.
- Errores
humanos, por ej., entrada incorrecta de datos, mal montaje de cintas o
discos, ejecución incorrecta de programas, pérdida de cintas o discos,
etc.
La
mayoría de estas causas se pueden enfrentar con el mantenimiento de los respaldos
(back-ups) adecuados; debería haber copias en un lugar alejado de los datos
originales.
Respecto
del problema de los intrusos, se los puede clasificar como:
- Pasivos:
solo desean leer archivos que no están autorizados a leer.
- Activos:
desean hacer cambios no autorizados a los datos.
Para
diseñar un sistema seguro contra intrusos:
- Hay
que tener en cuenta el tipo de intrusos contra los que se desea tener
protección.
- Hay
que ser consciente de que la cantidad de esfuerzo que se pone en la
seguridad y la protección depende claramente de quién se piensa sea el
enemigo.
Algunos tipos
de intrusos son los siguientes:
- Curiosidad
casual de usuarios no técnicos.
- Conocidos
(técnicamente capacitados) husmeando.
- Intentos
deliberados por hacer dinero.
- Espionaje
comercial o militar.
Otro
aspecto del problema de la seguridad es la privacía:
- Protección
de las personas respecto del mal uso de la información en contra de uno
mismo.
- Implica
aspectos legales y morales.
También
debe señalarse la posibilidad del ataque del caballo de Troya:
- Modificar
un programa normal para que haga cosas adversas además de su función
usual.
- Arreglar
las cosas para que la víctima utilice la versión modificada.
Además
debe considerarse la posibilidad de ataques al estilo del gusano de
Internet:
- Fue
liberado por Robert Tappan Morris el 02/11/88 e hizo que se bloquearan la
mayoría de los sistemas Sun y Vax de Internet (fue descubierto y
condenado).
- Constaba
de un programa arrancador y del gusano propiamente dicho.
- Utilizaba
fallas se seguridad del Unix y de los programas Finger y Sendmail de
Internet.
Una forma
de probar la seguridad de un sistema es contratar un grupo de expertos en
seguridad, conocido como el equipo tigre o equipo de penetración,
cuyo objetivo es intentar penetrar el sistema de seguridad para descubrir sus
falencias y proponer soluciones.
Otro
aspecto importante de la seguridad consiste en no subestimar los problemas
que puede causar el personal.
Los virus
computacionales:
- Constituyen
una categoría especial de ataque.
- Son
un enorme problema para muchos usuarios.
- Son
fragmentos de programas que se añaden a programas legítimos con la
intención de infectar a otros.
- Un
virus difiere de un gusano en lo siguiente:
- Un
virus está a cuestas de un programa existente.
- Un
gusano es un programa completo en sí mismo.
- Los
virus y los gusanos intentan diseminarse y pueden crear un daño severo.
- Generalmente
se propagan a través de copias ilegítimas de programas.
- Comúnmente
los virus se ejecutan e intentan reproducirse cada vez que se ejecuta el
programa que los aloja.
- Frecuentemente
los problemas con los virus son más fáciles de evitar que de curar:
- Utilizar
software original adquirido en comercios respetables.
- No
utilizar copias “piratas”.
- Efectuar
controles rigurosos y frecuentes con programas antivirus actualizados.
- Trabajar
con metodología y disciplina rigurosa en el intercambio de discos y en
las copias a través de redes de comunicación de datos.
El diseño
del sistema debe ser público, ya que pensar que el intruso no conocerá la forma
de funcionamiento del sistema es un engaño.
El estado
predefinido debe ser el de no acceso, dado que los errores en donde
se niega el acceso válido se reportan más rápido que los errores en donde se
permite el acceso no autorizado.
Verificar
la autorización actual :
- El
sistema no debe:
- Verificar
el permiso.
- Determinar
que el acceso está permitido.
- Abandonar
esta información para su uso posterior.
- El
sistema tampoco debe:
- Verificar
el permiso al abrir un archivo y no después de abrirlo, pues un acceso
habilitado permanecería como válido aunque haya cambiado la protección
del archivo.
Dar a
cada proceso el mínimo privilegio posible, lo que implica un esquema de “protección
de grano fino”.
El mecanismo
de protección debe ser simple, uniforme e integrado hasta las capas más
bajas del sistema:
- Dotar
de seguridad a un sistema inseguro es casi imposible.
- La
seguridad no es una característica que se pueda añadir fácilmente.
El
esquema de seguridad debe ser sicológicamente aceptable:
- Los
usuarios no deben sentir que la protección de sus archivos les implica
demasiado trabajo:
- Podrían
dejar de proteger sus archivos.
- Se
quejarían en caso de problemas.
- No
aceptarían fácilmente su propia culpa.
Muchos
esquemas de protección se basan en la hipótesis de que el sistema conoce la
identidad de cada usuario.
La
identificación de los usuarios se conoce como la autentificación de los
usuarios.
Muchos
métodos de autentificación se basan en:
- La
identificación de algo conocido por el usuario.
- Algo
que posee el usuario.
- Algo
que es el usuario.
Son la
forma de autentificación más utilizada.
Son de
fácil comprensión e implementación.
Deben almacenarse
cifradas (encriptadas).
Se deben
prever intentos de penetración consistentes en pruebas de combinaciones
de nombres y contraseñas.
Si las
contraseñas fueran de 7 caracteres elegidos al azar de los 95 caracteres ASCII
que se pueden imprimir:
- El
espacio de búsqueda sería de 95 7 , alrededor de 7 x 10 13
.
- A
1.000 ciframientos por segundo tomaría 2.000 años construir la lista a
verificar contra el archivo de contraseñas.
Una mejora
al esquema de contraseñas consiste en:
- Asociar
un número aleatorio de “n” bits a cada contraseña.
- El
número aleatorio se modifica al cambiar la contraseña.
- El
número se guarda en el archivo de contraseñas en forma no cifrada.
- Se
concatenan la contraseña y el número aleatorio y se cifran juntos.
- El
resultado cifrado se almacena en el archivo de contraseñas.
- Se
aumenta por 2 n el espectro de búsqueda: a esto se llama salar
el archivo de contraseñas.
Una
protección adicional consiste en hacer ilegible el archivo de contraseñas
encriptadas.
Otra
protección adicional consiste en que el sistema sugiera a los usuarios
contraseñas generadas según ciertos criterios; con esto se evita que el
usuario elija contraseñas muy sencillas.
También
es conveniente que el sistema obligue al usuario a cambiar sus contraseñas
con regularidad; se puede llegar a la contraseña de una sola vez.
Una variante
de la idea de contraseña es solicitar al usuario respuestas sobre
información de contexto que debe conocer.
Otra
variante es la de reto-respuesta:
- Se
acuerdan con el usuario algoritmos (por ejemplo formulas
matemáticas) que se utilizarán según el día y / o la hora.
- Cuando
el usuario se conecta:
- El
sistema suministra un argumento.
- El
usuario debe responder con el resultado correspondiente al algoritmo
vigente ese día a esa hora.
Una
posibilidad es la verificación de si el usuario tiene cierto elemento
(generalmente una tarjeta plástica con una banda magnética), que generalmente
se combina con una contraseña.
Otro
aspecto consiste en la medición de características físicas difíciles de
reproducir:
- Huellas
digitales o vocales.
- Firmas.
- Longitud
de los dedos de las manos.
Limitar
los intentos de acceso fallidos y registrarlos.
Registrar
todos los accesos.
Tender trampas
para atrapar a los intrusos.
Suscribirse a:
Entradas (Atom)