Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Gestion de Ficheros

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 9

Desde el punto de vista del usuario, una de las partes más importantes de un

sistema operativo es el sistema de ficheros. El sistema de ficheros proporciona las


abstracciones de recursos típicamente asociadas con el almacenamiento secundario.
Para poder proporcionar una adecuada gestión de ficheros, este debe cumplir con las
siguientes tres características:

• Existencia a largo plazo. Los ficheros se almacenan en disco u otro


almacenamiento secun- dario y no desaparece cuando un usuario se
desconecta.

• Compartible entre procesos. Los ficheros tienen nombres y pueden


tener permisos de acceso asociados que permitan controlar la
compartición.

• Estructura. Dependiendo del sistema de ficheros, un fichero puede tener


una estructura in- terna que es conveniente para aplicaciones
particulares. Adicionalmente, los ficheros se pue- den organizar en
estructuras jerárquicas o más complejas para reflejar las relaciones entre
los mismos.

Cualquier sistema de ficheros proporciona no sólo una manera de almacenar los


datos organizados como ficheros, sino una colección de funciones que se pueden llevar
a cabo sobre ficheros. Estas se pueden dividir como funciones primarias o secundarias.
Las primarias son aquellas indispensables para que el usuario pueda manejar sus
archivos, las secundarias son aquellas que complementan y facilitan la utilización del
sistema.

Las primarias son:

• Crear. Se define un nuevo fichero y se posiciona dentro de la estructura de


ficheros.

• Borrar. Se elimina un fichero de la estructura de ficheros, pero no


desaparece de la memoria, el mismo se puede recuperar luego a través de
la papelera de reciclaje.
• Destruir. Se elimina el fichero del espacio de memoria asignado. No se
puede recuperar.

• Abrir. Un fichero existente se declara «abierto» por un proceso,


permitiendo al proceso realizar funciones sobre dicho fichero.

• Cerrar. Un determinado proceso cierra un fichero, de forma que no puede


volver a realizar determinadas funciones sobre el mismo, a no ser que
vuelva a abrirlo.

• Leer. Un proceso lee de un fichero todos los datos o una porción de ellos.

• Escribir. Un proceso actualiza un fichero, bien añadiendo nuevos datos


que expanden el tamaño del fichero, bien cambiando los valores de
elementos de datos existentes en el fichero.

Dentro de las secundarias, se tienen las siguientes funciones, que generalmente


comprenden mezclas de las principales:

• Copiar. Se abre, se lee y se toma el contenido de un fichero

• Pegar. Se crea un espacio nuevo en la memoria donde se define el


contenido del fichero

• Mover. Se abre, se lee y se le asigna un nuevo espacio en memoria.

ESTRUCTURA DE UN FICHERO

Cuatro términos aparecen normalmente cuando se habla sobre ficheros:

• Campo.

• Registro.

• Fichero.

• Base de datos.
ARQUITECTURA DE UN SISTEMA DE GESTIÓN DE FICHEROS

Programa de
usuario

Secuencial
Fichero Secuencial Indexado Hashed
indexado

E/S lógica

Supervisor básico E/S

Sistema de ficheros básico

Manejador de disco Manejador de cinta

ORGANIZACIÓN Y ACCESO A LOS FICHEROS


Se utiliza el término organización de fichero para referirse a la estructura lógica de
los registros determinados por la forma en la que se acceden. Para escoger una
organización de ficheros, son importantes varios criterios:

• Tiempo de acceso corto.

• Facilidad de actualización.

• Economía de almacenamiento.

• Mantenimiento sencillo.

• Fiabilidad.

Los cinco tipos principales de organización son los siguientes:

• La pila.

• El fichero secuencial.

• El fichero secuencial indexado.

• El fichero indexado.

• El fichero de acceso directo o hash.

LA PILA

La forma menos complicada de organización de ficheros se puede denominar


pila. Los datos se almacenan en el orden en el que llegan. Cada registro está formado
por un conjunto de datos. El propósito de la pila es simplemente acumular la masa de
datos y guardarlos. Los registros podrían tener diferentes campos o similares campos
en diferentes órdenes. Por tanto, cada campo debe ser autodescriptivo, incluyendo el
nombre del campo y el valor. La longitud de cada campo debe ser implícitamente
indicada por delimitadores, explícitamente incluida como un subcampo o conocida por
defecto para cada tipo de campo.
Dado que no hay estructura en este tipo de fichero, el acceso a los registros se
hace mediante búsqueda exhaustiva. Es decir, si se desea encontrar un registro que
contiene un campo particular con un valor particular, es necesario examinar cada
registro en la pila hasta encontrar el registro deseado o terminar de recorrer todo el
fichero. Si se desea encontrar todos los registros que contienen un campo particular o
contienen dicho campo con un valor particular, entonces se debe recorrer el fichero
entero.
Los ficheros de pila se utilizan cuando los datos se recogen y almacenan antes
del procesamiento o cuando los datos no son fáciles de organizar. Este tipo de ficheros
utiliza el espacio adecuadamente cuando los datos varían en tamaño y estructura, es
perfectamente adecuado para búsquedas exhaustivas y es fácil de actualizar. Sin
embargo, más allá de estos usos limitados, este tipo de fichero es inadecuado para la
mayoría de las aplicaciones.

EL FICHERO SECUENCIAL

La forma más común de estructura de fichero es el fichero secuencial. En este


tipo de ficheros, se utiliza un formato fijo para los registros. Todos los registros son de
igual tamaño y están compuestos por el mismo número de campos de longitud fija en un
orden específico. Debido a que la longitud y la posición de cada campo son conocidas,
sólo se necesita almacenar los valores de los campos; el nombre y longitud de cada
campo son atributos de la estructura del fichero.

Un campo particular, normalmente el primer campo de cada registro, se


denomina campo clave. El campo clave identifica de forma única el registro; por tanto,
los valores de la clave de diferentes registros son siempre diferentes. Más aún, los
registros se almacenan en secuencia según la clave: orden alfabético para una clave
de texto y orden numérico para una clave numérica.

Los ficheros secuenciales se utilizan normalmente en aplicaciones en lotes y son


generalmente óptimos para dichas aplicaciones cuando implican el procesamiento de
todos los registros (por ejemplo, una aplicación bancaria o de nóminas). La organización
de fichero secuencial es el único que se almacena fácilmente en cinta y en disco.

Para aplicaciones interactivas que suponen consultas y/o actualizaciones de


registros individuales, el fichero secuencial proporciona un pobre rendimiento. Los
accesos requieren una búsqueda en el fichero para encontrar una clave. Si el fichero
entero, o una porción grande del fichero, se pueden llevar a memoria principal
simultáneamente, se pueden utilizar técnicas de búsqueda más eficientes.

No obstante, acceder a un registro en un fichero secuencial grande implica un


procesamiento y retrasos considerables. Las adiciones a los ficheros también presentan
problemas. Típicamente, un fichero secuencial se almacena en orden secuencial simple
de los registros dentro de los bloques. Es decir, la organización física del fichero en
cinta o discos encaja directamente con la organización lógica del fichero. En este caso,
el procedimiento normal es colocar nuevos registros en un fichero de pila separado,
denominado fichero registro o fichero de transacciones. Periódicamente, un sistema de
actualización lleva a cabo la mezcla entre el registro y el fichero maestro para producir
un nuevo fichero en la secuencia de claves correcta.

EL FICHERO SECUENCIAL INDEXADO

Una técnica popular para eliminar las desventajas del fichero secuencial es
utilizar los ficheros secuenciales indexados. El fichero secuencial indexado mantiene
las características clave del fichero secuencial: los registros se organizan en secuencia,
basándose en un campo clave. Dos características se añaden: un índice al fichero que
da soporte al acceso aleatorio y un fichero de desbordamiento. El índice proporciona
una capacidad de búsqueda para alcanzar rápidamente la vecindad de un registro
deseado. El fichero de desbordamiento es similar al fichero registro, utilizado con un
fichero secuencial, pero se integra de tal forma que un registro en el fichero de
desbordamiento se localiza mediante un puntero desde su registro predecesor.

En la estructura secuencial indexada más sencilla, se utiliza un único nivel de


indexación. El índice en este caso es un fichero secuencial simple. Cada registro del
fichero índice está formado por dos campos: un campo clave, que es el mismo que el
campo clave del fichero principal y un puntero al fichero principal. Para encontrar un
campo específico, se busca el índice que contenga el mayor valor clave que sea igual
o preceda al valor de clave deseado. La búsqueda continúa en el fichero principal en la
ubicación indicada por el puntero.

Para comprobar la efectividad de esta técnica, considere un fichero secuencial


con 1 millón de registros. Buscar un valor clave particular requerirá medio millón de
accesos a los registros de media. Supóngase que se construye un índice que contiene
1000 entradas, con las claves del índice más o menos distribuidas uniformemente en el
fichero principal. Encontrar un registro llevará una media de 500 accesos al fichero
índice seguido por 500 accesos al fichero principal. La longitud de búsqueda media se
reduce de 500.000 a 1000.

Las adiciones al fichero se gestionan de la siguiente forma: cada registro del


fichero principal contiene un campo adicional no visible a la aplicación, que es un
puntero al fichero de desbordamiento. Cuando se inserta un nuevo registro en el fichero,
se añade al fichero de desbordamiento. Se actualiza el registro del fichero principal que
inmediatamente precede al nuevo registro en secuencia lógica para contener un puntero
al nuevo registro del fichero de desbordamiento. Si el registro inmediatamente
precedente está a su vez en el fichero de desbordamiento, entonces se actualiza el
puntero de dicho registro. Al igual que el fichero secuencial, el fichero secuencial
indexado es ocasionalmente mezclado con el fichero de desbordamiento en modo
batch.

El fichero secuencial indexado reduce enormemente el tiempo requerido para


acceder a un único registro, sin sacrificar la naturaleza secuencial del fichero. Para
procesar el fichero entero secuencialmente los registros del fichero principal se
procesan en secuencia hasta que se encuentra un puntero al fichero de
desbordamiento; a continuación, se accede de forma continua en el fichero de
desborda- miento hasta que se encuentra un puntero nulo, momento en el cual se
continúa accediendo al fichero principal desde el lugar en que se dejó.

EL FICHERO INDEXADO
El fichero secuencial indexado elimina una de las limitaciones del fichero
secuencial: el procesamiento efectivo se limita a las búsquedas que se basan en un
único campo del fichero. Cuando es necesario buscar por algún otro atributo que no
sea el campo clave, ambas formas de ficheros secuenciales son inadecuadas. En
algunas aplicaciones, esta flexibilidad es deseable.

Para lograr esta flexibilidad, se necesita una estructura que emplea múltiples
índices, uno por cada tipo de campo que puede estar sujeto a una búsqueda. En el
fichero indexado general, se abandonan los conceptos de secuencialidad y clave única.
Los registros se acceden sólo a través de sus índices. El resultado es que no hay
restricción en la colocación de los registros siempre que al menos un puntero en un
índice se refiera a dicho registro. Además, se pueden emplear registros de longitud
variable.

Se utilizan dos tipos de índice. Un índice exhaustivo contiene una entrada por
cada registro del fichero principal. Para facilitar la búsqueda, el índice a su vez está
organizado como un fichero secuencial. Un índice parcial contiene entradas a registros
donde el campo de interés existe. Con registros de longitud variable, algunos registros
no contendrán todos los campos. Cuando se añade un nuevo registro al fichero
principal, todos los ficheros índices deben actualizarse.

Los ficheros índices se utilizan frecuentemente en aplicaciones donde la


temporización de la información es crítica y donde los datos casi nunca se procesan
exhaustivamente. Ejemplos de este tipo de aplicación son los sistemas de reservas de
aerolíneas y los sistemas de control de inventario.

EL FICHERO DE ACCESO DIRECTO O HASH

El fichero de acceso directo, o hash, explota la capacidad encontrada en los


discos para acceder directamente a cualquier bloque de una dirección conocida. Al igual
que los ficheros secuenciales y secuenciales indexados, se requiere una clave para
cada registro. Sin embargo, en este tipo de ficheros no existe el concepto de ordenación
secuencial. El fichero directo hace uso de una función hash sobre un valor clave.

Los ficheros directos se utilizan frecuentemente cuando se requiere un acceso


muy rápido, los registros son de tamaño fijo y los registros se acceden de uno en uno.
Ejemplos de este tipo de estructura son los directorios, las tablas de precios, los
inventarios y las listas de nombres.

En el siguiente cuadro se mostrará una comparación entre la eficiencia de estos


cinco tipos de organización:

También podría gustarte