You are on page 1of 138

ESTRUCTURAS

DE ARCHIVOS
Un Enfoque Informtico

ESTRUCTURAS
DE ARCHIVOS
Un Enfoque Informtico

M. en I. P. Eduardo Ren Carrillo Iiguez


Profesor de T. C. del Centro Universitario de la Cinega, UdG, Mxico
M. en A. Norma Alicia Gmez Torres
Profesor de T. C. del Centro Universitario de la Cinega, UdG, Mxico
M. en Cs. Karime Pulido Hernndez
Profesor de T. C. del Centro Universitario de la Cinega, UdG, Mxico
M. S. I. Jos Sandoval Chvez
Profesor de T. C. del Centro Universitario de la Cinega, UdG, Mxico
M. en Cs. Jos Avila Paz
Profesor de T. C. del Centro Universitario de la Cinega, UdG, Mxico
Diseo
Lic. Fidel Antonio Romero lvarez
MovenDesign
www.movendesign.com

INTRODUCCIN

Este libro nace de la inquietud de un grupo de profesores que imparten la asignatura de Estructura de Archivos en el Centro Universitario de la Cinega en los
campus de Ocotln y Atotonilco, al coincidir en que exista material escaso para
exponer su ctedra es que deciden reunir material que haban acumulado durante
algunos semestres, y lo que inicialmente eran slo notas para los profesores a fin
de homogeneizar su ctedra, hoy tras largas horas de trabajo, se convierte en este
texto, dirigido tambin a sus alumnos, y que basa su enfoque en el libro Estructuras de Archivos, un conjunto de herramientas contextuales, de Folk Michael
J. y Zoellick Bill. Este material est encaminado especialmente a alumnos de las
carreras de Licenciatura en Informtica, Ingeniera en Computacin o carreras
afines que aborden en sus asignaturas conceptos de estructuras de archivos y su
organizacin.
A continuacin se muestra un resumen que comprende la secuencia de los
temas que se analizan en el texto organizados en 6 captulos:
Captulo 1:

Dispositivos de almacenamiento secundario


Dado que uno de los componentes fundamentales de las computadoras
es el espacio de almacenamiento, es sta habilidad para almacenar las
instrucciones y/o informacin lo que hace verstiles a las computadoras. Este captulo aborda temas como los propsitos de almacenamiento, la clasificacin de los dispositivos de almacenamiento y la forma
en que se organizan. Especialmente se hace hincapi en el almacenamiento secundario.

Captulo 2:

Registros, tipos y operaciones


Este apartado comprende los conceptos fundamentales de archivos tales como campos, registros, y campos llave. La forma en que se estructuran los archivos internamente, bien sea en registros de longitud fija o
variable y su clasificacin, uso y operaciones bsicas.

Captulo 3:

Organizacin y manejo de archivos.


El capitulo 3 describe brevemente la jerarqua de clases para el manejo
de archivos en lenguaje java, tanto para archivos de lectura (InputStream) como para la escritura de datos (OutputStream), la forma de
organizacin dependiendo del tipo de soporte de almacenamiento (secuencial, directa e indexada) y la organizacin basada en listas.

Captulo 4:

Bsqueda y clasificacin externa


Este captulo aborda el tema de la bsqueda de informacin en los
archivos as como algunos mtodos para su clasificacin u ordenamiento, dada que es una de las operaciones ms importantes es el procesamiento de la informacin pues permite la recuperacin de datos
previamente almacenados.

Captulo 5:

Sistemas de Archivos
El presente captulo describe la forma en que se organiza el sistema
de archivos y como se estructuran los directorios con la finalidad que
posteriormente puedan ser representados de forma textual o grfica
mediante un administrador de archivos, y que tan importante es esto
para mantener la integridad y seguridad en los datos de los archivos.

Captulo 6:

Dispersin (hash)
Este captulo menciona conceptos sobre la tcnica de dispersin (hash),
algunas funciones de dispersin y problemas que se pueden generar
(colisiones) as como posibles aproximaciones para resolverlas.

Particularmente en el Centro Universitario de la Cinega, de la Universidad


de Guadalajara, este material ser empleado como libro de texto y referencia para
la asignatura antes mencionada y permitir a los estudiantes y profesores tener
un primer acercamiento con estos conceptos tan indispensables en el contexto
de la forma de estructurar la informacin mediante archivos. Los autores tienen
el deseo particular que este material sea de utilidad para todos aquellos que lo
referencien.

NDICE GENERAL
Captulo 1: Dispositivos de almacenamiento secundario
1.1 Fundamento de las estructuras de archivos
1.2 Almacenamiento primario y secundario
1.3 Dispositivos de almacenamiento secundario
1.3.1 Discos magnticos y pticos
1.3.2 Cintas, casetes y raid de discos
1.3.3 Flash memory (Memoria Flash)

11
12
14
15
31
38

Captulo 2: Registros, tipos y operaciones


2.1 Definiciones
2.2 Registros fsicos y lgicos
2.3 Registros de longitud fija y variable
2.4 Estructura interna de un registro
2.5 Operaciones bsicas sobre archivos y registros

43
44
49
53
54

Captulo 3: Organizacin y manejo de archivos


3.1 Definicin de clases para manejo de archivos
3.2 Organizacin de archivos
3.2.1 Secuencial, estructura y operaciones
3.2.2 Directa, estructura y operaciones
3.2.3 Indexada, estructura y operaciones
3.3 Organizacin basada en listas

63
74
75
76
77
79

Captulo 4: Bsqueda y clasificacin externa


4.1 Bsqueda secuencial
4.2 Bsqueda binaria.
4.3 Bsqueda indizada
4.4 Ordenamiento por insercin binaria
4.5 Ordenamiento por mezcla (merge sort)

89
92
93
100
102

Captulo 5: Sistemas de Archivos


5.1 El sistema de archivos y sus principales funciones
5.2 Organizacin de estructuras de directorios
5.3 Seguridad y proteccin de archivos

111
112
116

Captulo 6: Dispersin (hash)


6.1 Funciones de dispersin (hash)
6.2 Colisiones y la forma de resolverlas
6.3 Algoritmo de dispersin simple
6.4 Funciones de dispersin y distribuciones de registros.
6.5 Otros mtodos de dispersin
6.6 Resolucin de colisiones mediante saturacin progresiva

123
124
126
129
130
131

Bibliografa
136

Captulo 1
ADITIVOS DE ALMACENAMIENTO SECUNDARIO

Objetivo
Identificar y analizar los dispositivos de almacenamiento secundario; as como las
unidades bsicas de organizacin (sectores, bloques, pistas y cilindros).

Plan general del captulo


1.1 Fundamento de las estructuras de archivos
1.2 Almacenamiento primario y secundario
1.3 Dispositivos de almacenamiento secundario
1.3.1 Discos magnticos y pticos
1.3.2 Cintas, casetes, raid de discos
1.3.3 Otros tipos (zip drive, flash memory)

1.1 Fundamento de estructuras de archivos


Conceptos bsicos
La informacin es aquella que se obtiene a partir de datos conocidos o por
conocer. En el rea de las ciencias de la computacin, los datos estn compuestos
de caracteres y stos a su vez de bits, entonces el bit es conocido como el elemento mnimo de informacin. Inicialmente los bits se agruparon en conjuntos de
ocho para formar el concepto de byte y as pudiera representar 256 valores diferentes. Cuando hubo la necesidad de representar estos valores en una pantalla se
tom como acuerdo plasmar 256 smbolos en una tabla, la cual es llamada tabla
de cdigos ASCII (Cdigo Americano Estndar para el Intercambio de Informacin) y corresponde a caracteres visibles y no visibles en una pantalla.
Un dato tal como pudiera ser 1, uno, blanco, viernes, m, de manera separada
no representa nada, pero cuando se renen varios de stos relacionados entre s,
como Juan, Garca, Hidalgo 35, juangarcia@gmail.com, estos pudiera suponerse
que se trata de datos de una persona que se llama Juan Garca, que vive en Hidalgo 35 y cuyo correo electrnico es juangarcia@gmail.com, de esta manera estos
datos relacionados entre s, y que aportan significado o sentido, se convierten en
informacin. Se podra entonces crear un archivo con los datos personales de los
trabajadores de una empresa almacenando para cada uno: el nombre, apellido,
domicilio y correo electrnico, pero se habr de dar una estructura a estos datos
para que sean fciles de comprender e interpretar. Por lo tanto, una estructura
debe ser interpretada como el soporte de la informacin. As, las ideas deben ser
llevadas a estructuras que permitan organizar de una mejor manera los datos y
que puedan ser almacenadas para facilitar su acceso posteriormente.
11

1.2 Almacenamiento primario y secundario


Propsitos del almacenamiento
Los componentes fundamentales de las computadoras de propsito general
son la unidad aritmtico-lgica, la unidad de control, el espacio de almacenamiento y los dispositivos de entrada/salida; si se elimina el almacenamiento, el
aparato sera una simple calculadora en lugar de una computadora. Es sta habilidad para almacenar las instrucciones que forman un programa y la informacin
que manipulan las instrucciones lo que hace verstiles.
Las computadoras representan toda la informacin haciendo uso del sistema
binario donde el texto, los nmeros, las imgenes, el sonido y casi cualquier otra
forma de informacin, pueden ser transformadas en una sucesin de bits o dgitos
binarios; donde cada uno tiene un valor de 0 1, aun cuando la unidad de almacenamiento ms comn es el byte, que equivale a 8 bits.
Almacenamiento primario
El almacenamiento primario est directamente conectado a la Unidad Central de Proceso (CPU) de la computadora, este tipo de almacenamiento se clasifica en tres tipos:
Los registros del procesador (AX,BX,CX, etc) son internos de la CPU y
contienen informacin que las unidades aritmtico-lgicas necesitan llevar a la
instruccin en ejecucin. Tcnicamente, son los almacenamientos ms rpidos
de la computadora, siendo transistores de conmutacin integrados en el chip de
silicio de la CPU que funcionan como flip-flop electrnicos.
La memoria cach es un tipo especial de memoria interna usada en muchas
unidades centrales de proceso para mejorar su eficiencia o rendimiento, donde
parte de la informacin de la memoria principal se duplica en la memoria cach,
para que el acceso desde el procesador sea ms rpido. Comparada con los registros, la cach es ligeramente ms lenta pero de mayor capacidad, sin embargo, es
ms rpida pero de mucha menor capacidad que la memoria principal.
La memoria principal contiene los programas en ejecucin y los datos con
que operan. La unidad aritmtico-lgica puede transferir informacin muy rpidamente entre un registro del procesador y localizaciones del almacenamiento
principal, tambin conocidas como direcciones de memoria. Las computadoras
12

modernas utilizan memorias de acceso aleatorio basadas en electrnica de estado


slido, las cuales estn directamente conectadas a la CPU a travs de un bus de
memoria y de un bus de datos.
TIEMPO DE
ACCESO

CPU

CAPACIDAD

REGISTROS

Los programas y datos pueden


ser utilizados directamente por el
procesador

MEMORIA
CACHE

MEMORIA
PRINCIPAL

Los programas y datos deben ser


transferidos a la memoria
principal antes de ser tratados
por el procesador

MEMORIA
SECUNDARIA

COSTE

Figura 1.1 Jerarqua de Almacenamiento

La figura 1.1 ilustra la jerarqua de almacenamiento y algunas caractersticas importantes (tiempo de acceso, costo y capacidad) de los distintos medios de
almacenamiento.
El almacenamiento primario tiene dos funciones: la primera es guardar todo
o una parte del programa que se est ejecutando y la segunda es que en la memoria
se guardan los programas del sistema operativo que controlan el funcionamiento
de la computadora. El rea de almacenamiento primario contiene la informacin
que el programa est usando; y es aqu donde los datos y programas se colocan
antes de ser procesados para posteriormente devolverlos al almacenamiento secundario o enviarlos a un dispositivo de salida.
Al almacenamiento primario interno se le conoce como RAM (Memoria
de Acceso Aleatorio), porque se puede acceder a ella directamente desde
13

cualquier posicin elegida aleatoriamente. Se divide en posiciones de almacenamiento que alcanza para almacenar una letra, digito o smbolo especial, cada una
tiene una direccin nica que indica dnde se encuentra dentro de la RAM.
Almacenamiento secundario
Los sistemas de los usuarios necesitan almacenar informacin de manera
permanente fuera de la computadora, en un estado que no requiera alimentacin elctrica, y guardar volmenes de datos tan grandes que no es posible
almacenar en la memoria principal. Por tanto, al lugar de almacenamiento de
datos, fuera de la CPU y del almacenamiento primario, se le denomina almacenamiento secundario que es un conjunto de dispositivos perifricos para el
almacenamiento masivo de datos con mayor capacidad que la memoria principal pero ms lenta. El acceso a la informacin almacenada en la memoria
primaria es electrnico y se efecta casi a la velocidad de la luz, en cambio el
almacenamiento secundario no es voltil y conserva los datos an cuando se
apague la computadora.
Existen muchos tipos de almacenamiento secundario, los cuales pueden
transferir grandes cantidades de datos rpidamente a la CPU, la mayora de
ellos requieren movimiento mecnico para acceder a los datos lo cual ocasiona
que sea relativamente lento en comparacin con el almacenamiento primario.
El disquete, el disco duro, las unidades pticas, las unidades de memoria
flash y los discos zip, pertenecen a esta categora; y son dispositivos perifricos que quedan vinculados a la memoria principal o memoria interna, conformando el subsistema de memoria de la computadora.

1.3 Dispositivos de almacenamiento secundario


Aunado con la evolucin del hardware, tambin han evolucionado los programas de software que demandan cada vez mayores cantidades de almacenamiento. Dado que estos datos seran imposible almacenarlos en la memoria
principal (tanto por el tamao como por la volatilidad que la caracteriza), se
hace necesario otro tipo de almacenamiento que guarde grandes cantidades de
informacin de manera relativamente permanente y a un ms bajo costo.
Existen diversas tecnologas que utilizan los dispositivos de almacenamiento secundario, cada una de stas presenta caractersticas particulares, for14

mas de acceso bien diferenciadas y maneras de almacenamiento y recuperacin


de informacin que se describen a continuacin.

1.3.1. Discos magnticos y pticos


Los discos magnticos y pticos tienen la misma finalidad, no obstante,
se distinguen en muchos aspectos tales como su tecnologa, capacidad de
almacenamiento, tiempo de acceso, transferencia de bytes, seguridad, mantenimiento de los datos e inclusive el coste de fabricacin.
Desde el punto de vista de almacenamiento de la informacin, en los
discos magnticos el medio de grabacin consiste en un soporte rgido, en el
caso de discos duros (aluminio o cristal cermico), o blando, en el caso de
discos flexibles o cintas, etc., sobre el que se deposita una fina pelcula de
un material magnetizable para su grabacin. Esta pelcula est compuesta de
diferentes materiales magnticos como pueden ser xido de hierro, de cromo,
de hierro-cobalto, de cobalto-nquel, entre otros.
El principio bsico tanto para la lectura de la informacin previamente almacenada como para la escritura consiste en que las partculas ferromagnticas conserven su magnetismo aunque desaparezca el campo que las
magnetiz, de esta forma, los datos se almacenan cambiando el sentido del
campo magntico de dicha sustancia. Este tipo de dispositivos disponen de
una cabeza de lectura y escritura que graba la superficie del disco, ste componente se mueve radialmente mientras que el disco gira en un sentido y est
conformada por un electroimn capaz de inducir campo magntico o detectar
el sentido del mismo.

Figura 1.2 Disco Magntico

15

La informacin es almacenada en pistas concntricas, que a su vez se dividen


en sectores y stos en bloques. Estas pistas son creadas durante el formateo, el
cual consiste en escribir magnticamente los sucesivos sectores que componen
cada una de las pistas, quedando as ellas magnetizadas. En el llamado formateo
fsico o de bajo nivel, realizado por el fabricante, se determinan el nmero de
pistas y sectores de cada cara del disco.
El formateo lgico o de alto nivel implica escribir en el campo de datos de
ciertos sectores informacin exclusiva para el uso del sistema operativo. Se crean
entonces en el disco el rea de sistema que comprende:



Tabla de particiones
Sector de arranque boot que se encuentra en el primer sector de cada
disco
La FAT (Tabla de asignacin de archivos)
Directorio raz

Los discos magnticos presentan diferentes caractersticas que los hacen de gran
utilidad, como son:

a) Un disco magntico (rgido o flexible) es un soporte de almacenamiento


secundario, complemento auxiliar de la memoria principal o memoria
RAM (memoria electrnica interna de capacidad limitada, mucho ms
rpida, pero voltil).
b) Capacidad para almacenar grandes cantidades de informacin en espacios reducidos y a un bajo costo por byte almacenado.
c) Es memoria no voltil, es decir, guarda la informacin aunque se retire el suministro de energa elctrica.
d) Acceso directo a la informacin, es decir, accede ms rpidamente al
lugar donde se encuentran los datos a leer o escribir, sin necesidad de
buscar los bloques de datos que le preceden (como ocurra antiguamente
con las cintas magnticas). Los datos se guardan en archivos, a los que
se acceden mediante su nombre.
e) Gran parte de los procesos de E/S tienen como origen los discos magnticos, debido a que:
La mayora de los programas se almacenan en discos, construyendo ejecutables.
16

Para ejecutarlos, se pasa del disco a la memoria una copia de los archivos
que necesitar el programa. Los resultados van en sentido contrario (memoria a disco), formando parte del mismo archivo o de otro distinto.
Sirven para simular memoria virtual, lo que permite una memoria mayor que la principal y por tanto ejecutar ms procesos e incluso mayores
a la capacidad de la memoria principal.
f) Los disquetes son utilizados como copias de seguridad de archivos importantes o para el transporte de programas y datos.
g) Dentro de los discos duros distinguimos entre los fijos (PACK), que se
instalan por medio de una controladora de discos magnticos; y los removibles (Disk Pack), que pueden ser desmontados para su transporte.
h) Mantenimiento de discos magnticos:
Los discos magnticos son medios de almacenamiento delicados, pues
si sufren un pequeo golpe pueden ocasionar daos en la informacin o
una cada en el sistema.
El cabezal debe estar lubricado para evitar daos al entrar en contacto
con la superficie del disco.


Se debe evitar que el equipo se coloque en zonas donde se acumule calor, para
no provocar la dilatacin de piezas.
A pesar de estar cerrado hermticamente, hay que evitar las partculas de polvo
alrededor de sus circuitos.
No mover el equipo estando encendido, para evitar daos en los discos, por el
movimiento inadecuado de sus cabezas.

A continuacin se describen diferentes dispositivos que utilizan estas tecnologas.


Disco duro (HD)
Los discos duros (hard disc) pertenecen a la llamada memoria secundaria o
almacenamiento secundario, se le conoce con gran cantidad de denominaciones
como disco duro, rgido (frente a los discos flexibles o por su fabricacin a base
de una capa rgida de aluminio), fijo (por su situacin en el ordenador de manera
permanente). Estas denominaciones aunque son las habituales no son exactas ya
que existen discos de iguales prestaciones pero son flexibles, o bien removibles o
transportables, u otras marcas de diferentes fabricantes de cabezas.

17

Figura 1.3 Disco duro

Las capacidades de los discos duros varan desde 10 Mb hasta varios Gb en


minis y grandes computadoras. Para conectar un disco duro a un ordenador es necesario disponer de una tarjeta controladora. La velocidad de acceso depende en gran
parte de la tecnologa del propio disco duro y de la tarjeta controladora asociada al
disco duro.
stas unidades de disco estn compuestos por varios platos, es decir, diversos
discos de material magntico montados en un eje central sobre el que se mueven.
Para leer y escribir datos en estos platos se usan las cabezas de lectura/escritura
que mediante un proceso electromagntico codifican / decodifican la informacin
que han de leer o escribir. La cabeza de lectura/escritura en un disco duro est muy
cerca de la superficie, de forma que casi vuela o se desliza sobre el colchn de aire,
formado por su propio movimiento. Debido a esto, estn cerrados hermticamente,
porque cualquier partcula de polvo puede daarlos.
Los discos duros estn recubiertos de una capa magntica delgada, habitualmente
de xido de hierro, y se dividen en crculos concntricos llamados cilindros (coincidentes con las pistas de los disquetes), que empiezan en la parte exterior del disco (primer cilindro) y terminan en la parte interior (ltimo). De igual manera estos cilindros
se dividen en sectores, cuyo nmero est determinado por el tipo de disco y su formato,
siendo todos ellos de un tamao fijo en cualquier disco. Los cilindros como sectores
se identifican con una serie de nmeros que se les asignan, empezando por el 1, pues
el nmero 0 de cada cilindro se reserva para propsitos de identificacin ms que para
18

almacenamiento de datos. stos, escritos/ledos en el disco, deben ajustarse al tamao


fijado del almacenamiento de los sectores. Habitualmente, los sistemas de disco duro
contienen ms de una unidad en su interior, por lo que el nmero de caras puede ser
ms de 2; stas se identifican con un nmero, siendo el 0 para la primera. La capacidad
del disco resulta de multiplicar el nmero de caras por el de pistas por cara y por el de
sectores por pista, al total por el nmero de bytes por sector.
Para escribir, la cabeza se sita sobre la celda a grabar y se hace pasar por
ella un pulso de corriente, lo cual crea un campo magntico en la superficie. Dependiendo del sentido de la corriente, as ser la polaridad de la celda. Para leer,
se mide la corriente inducida por el campo magntico de la celda, es decir, que
al pasar sobre una zona detectar un campo magntico que segn se encuentre
magnetizada en un sentido u otro, indicar si en esa posicin hay almacenado
un 0 o un 1. En el caso de la escritura el proceso es el inverso, la cabeza recibe
una corriente que provoca un campo magntico, el cual pone la posicin sobre
la que se encuentre la cabeza en 0 o en 1 dependiendo del valor del campo magntico provocado por dicha corriente.

Figura 1.4 Estructura interna de un disco duro

Los componentes fsicos de una unidad de disco duro son:


Los discos estn elaborados de compuestos de vidrio, cermica o aluminio pulidos y revestidos por ambos lados con una capa muy delgada de una
aleacin metlica; stos se encuentran unidos a un eje y un motor que los
19

hace guiar a una velocidad constante entre las 3600 y 7200 RPM (Revoluciones Por Minuto). Convencionalmente los discos duros estn compuestos
por varios platos, es decir, varios discos de material magntico montados
sobre un eje central y normalmente tienen dos caras que pueden usarse para
el almacenamiento de datos, reservando una para almacenar informacin de
control.
Las cabezas estn ensambladas en pila y son las responsables de la lectura y la escritura de los datos en los discos. La mayora de los discos duros
incluyen una cabeza lectura/escritura a cada lado del disco, sin embargo algunos discos de alto desempeo tienen dos o ms cabezas sobre cada superficie, de manera que cada cabeza atiende la mitad del disco reduciendo la distancia del desplazamiento radial. Las cabezas de lectura/escritura no tocan el
disco cuando ste girando a toda velocidad; por el contrario, flotan sobre una
capa de aire extremadamente delgada (10 millonsimas de pulgada). Esto
reduce el desgaste en la superficie del disco durante la operacin normal,
ya que cualquier polvo o impureza en el aire puede daar suavemente las
cabezas o el medio. Su funcionamiento consiste en una bobina de hilo que se
acciona segn el campo magntico que detecte sobre el soporte magntico,
produciendo una pequea corriente que es detectada y amplificada por la
electrnica de la unidad de disco.
El eje es la parte del disco duro que acta como soporte, sobre el cual
estn montados y giran los platos del disco.
El actuador es un motor que mueve la estructura que contiene las cabezas de lectura entre el centro y el borde externo de los discos. Un actuador
usa la fuerza de un electromagneto empujado contra magnetos fijos para
mover las cabezas a travs del disco. La controladora manda ms corriente a
travs del electromagneto para mover las cabezas cerca del borde del disco
y en caso de una prdida de poder, un resorte mueve la cabeza nuevamente
hacia el centro del disco sobre una zona donde no se guardan datos. Dado
que todas las cabezas estn unidas al mismo rotor ellas se mueven simultneamente, mientras que lgicamente la capacidad de un disco duro puede
ser medida segn los siguientes parmetros:

20

Figura 1.5 Componentes de un disco duro

Los cilindros son el par de pistas en lados opuestos del disco. Si el HD


contiene mltiples discos (sean n), un cilindro incluye todos los pares de pistas directamente uno encima de otra (2n pistas). Los HD normalmente tienen
una cabeza a cada lado del disco. Dado que las cabezas de lectura/escritura
estn alineadas unas con otras, la controladora puede escribir en todas las
pistas del cilindro sin mover el rotor. Como resultado los HD de mltiples
discos se desempean levemente ms rpido que los HD de un solo disco.
Las pistas son delgados crculos concntricos. Las cabezas se mueven
entre la pista ms externa pista cero a la mas interna. Es la trayectoria
circular trazada a travs de la superficie circular del plato de un disco por la
cabeza de lectura/escritura. Cada pista est formada por uno o ms cluster.
Los HD almacenan los datos en pedazos gruesos llamados sectores. La
mayora de estos dispositivos usan sectores de 512 bytes y la controladora
del disco duro determina el tamao de un sector en el momento en que el disco es formateado, aunque algunos modelos permiten especificar el tamao
de un sector. Cada pista del disco est dividida en 1 2 sectores dado que las
pistas exteriores son ms grandes que las interiores.

21

Tabla 1.6 Distribucin del disco duro en sectores

Los cluster son una agrupacin de sectores y su tamao depende de la capacidad del disco. La figura 1.9 muestra esta relacin.
Tamao
del drive MB

Tipo de
FAT bits

Sectores
por cluster

Tamao
del cluster Kb

0 15

12

16-127

16

128-255

16

256-511

16

16

512-1023

16

32

16

1024-2048

16

64

32

Figura 1.7 Relacin de capacidades de disco, agrupacin de sectores y tamao.

Disco flexible
Es un medio de almacenamiento magntico que puede ser grabado y borrado muchas veces. Consta de un plstico flexible circular que tiene una capa de
xido ferroso capaz de sostener puntos magnticos. Antes de usarlo ste debe ser
formateado para dividirlo en pistas y cada pista dividirla en sectores.Cada sector
almacena 512 bytes.
22

Figura 1.8 Disco Flexible


5.25
DD

5.25
HD

3.5
DD

3.5
HD

Nmero de pistas

40

80

80

80

Sectores por pistas

15

18

720

2400

1440

2880

360 K

1.2 M

720 K

1.44 M

Total sectores
Total almacenamiento

Figura 1.9 Capacidad de almacenamiento de discos flexibles

Discos pticos
En los discos pticos la grabacin se realiza por efecto de un rayo lser, es
decir, el sistema de escritura ptica consiste en usar un rayo de luz que calienta
la superficie a escribir, cambiando sus propiedades de reflexin. En estos tipos de
almacenamiento se usa la propiedad de reflexin para poder leer datos mediante
un fotodetector (mide la intensidad de luz que es reflejada por el disco), donde la
intensidad del rayo de luz al leer debe ser muy inferior a la de escribir para as no
daar al disco. Los lsers ms usados son los rojos, que son ms baratos que los
azules pero permiten menor densidad de grabacin.
Los discos pticos aparecieron a fines de la dcada de los 80, siendo utilizados como un medio de almacenamiento de informacin para la televisin. Su alta
23

capacidad y su fcil transportabilidad, hicieron que este dispositivo se popularizara y comercializara en 1988, utilizndose en las computadoras.

Figura 1.10 Disco ptico


Este tipo de discos utilizan dos tecnologas para el almacenamiento de datos:
1. Tecnologa WORM (Una Escritura y Mltiples Lecturas).

La tecnologa WORM, es un sistema de almacenamiento de datos, no-editables, que no pueden ser borrados, ni modificados, no sobrescritos, ni corrompidos. Permite ajustarse a los requerimientos legales de retencin de datos de
contenido fijo y a los requerimientos de no modificacin de la informacin. Es
decir, esta tecnologa se basa en la idea de que la informacin se graba una nica
vez y se conservar para siempre en su estado original, sin poder ser modificada
ni borrada pero pudindose acceder para su lectura infinita cantidad de veces.
Esto sucede porque una vez que el drive ha grabado un sector individual del
disco, no puede borrarlo o escribir encima del mismo. No obstante los archivos
pueden ser editados y/o grabados con modificaciones o agregados en sectores
nuevos adicionales. As, un archivo puede ser llamado nuevamente cambiado y
salvado en la versin ms reciente, pero cada versin del archivo permanecer
en el disco.
En la actualidad la tecnologa WORM la podemos encontrar las siguientes
categoras:
24

Discos pticos (UDO, DVD y magneto-pticos)


Cintas
Discos magnticos
Hasta ahora la tecnologa WORM ms extendida es la relacionada con
los discos pticos, aunque tiene algunas limitaciones con el almacenamiento
que son:
La capacidad
Los costes
Los avances que se han producido en el campo de las cintas y de los discos
magnticos, permiten soluciones efectivas desde el punto de vista de costes, para
dar soluciones a las empresas con crecientes necesidades de capacidad y de retencin de datos.
UDO (Ultra Densidad ptica)
Es la tecnologa de almacenamiento ptico profesional en 5.25, ofrece la
ms alta fiabilidad de conservacin de la informacin en el tiempo de aproximadamente 50 aos de vida, eliminando la necesidad de migracin a otro tipo de
almacenamiento una vez transcurridos X aos de vida de la informacin.
La primera generacin de productos UDO tuvieron una capacidad de 30GB
y actualmente se han incrementado a 60GB y 120GB, las cuales proveen una
total compatibilidad de lectura hacia medias de anterior generacin. Utiliza lser
blue-violet y la tecnologa de grabacin cambio de fase como los productos DVD
de consumo para dar un enorme salto en las densidades de almacenamiento de
datos.
El uso del laser blue-violet y un alto nivel ptico, incrementa drsticamente
las densidades de almacenamiento de datos por lo que necesita un nuevo tipo de
construccin de discos con una superficie de cobertura de 0.1mm para proteger la
superficie de datos. Como con la existente tecnologa magneto - ptico, UDO utiliza una grabacin sin contacto para brindar robustez y performance confiables.
DVD
Anteriormente al DVD se le conoca como Dispositivo de Video Digital o
Disco Digital Verstil, pero ahora se entiende directamente por DVD la siguiente
generacin de tecnologa de almacenamiento en disco ptico. Es esencialmente
25

un CD ms rpido y con ms capacidad que puede almacenar tanto video de calidad de cine y audio de mayor calidad que un CD, as como datos de computadora.
El DVD intenta abarcar entretenimiento domstico, computadoras e informacin
de negocios en un nico formato digital, reemplazando eventualmente al CD de
audio, a la cinta de video, el laser-disc, CD-ROM, los cartuchos de video juegos,
entre otros. El DVD se ha extendido ampliamente gracias al soporte de todos los
grandes fabricantes de electrnica, hardware de computadora y todos los grandes
estudios de cine y msica.

Figura 1.11 DVD

Es importante entender la diferencia entre formatos fsicos (tales como


DVD-Video, DVD-ROM) y formatos de aplicacin (tales como DVD-Video o
DVD-Audio). DVD-ROM es el formato bsico que almacena datos. DVD-Video
(a menudo llamado DVD) define cmo estn los programas de video y las pelculas almacenados en un disco y cmo son ledos en un lector DVD-Video o una
computadora con DVD. La diferencia es similar entre la que hay entre CD audio
y CD-ROM. El DVD-ROM incluso incluye variaciones grabables (DVD-R/RW,
DVD-RAM, DVD+R/RW) y los formatos de aplicacin incluyen DVD-Video,
grabacin DVD-Video, DVD-Audio, grabacin DVD-Audio Grabacin chorros
DVD, y SACD. Hay incluso formatos de aplicaciones especiales para consolas de
videojuegos tales como la Sony PlayStation 2.
Un ejemplo de DVD es el de capa simple, el cual puede guardar hasta 4.7
gigabytes (se le conoce como DVD-5), alrededor de siete veces ms que un CD
estndar. Emplea un lser de lectura con una longitud de onda de 650 nm (en el
caso de los CD, es de 780 nanometros) y una apertura numrica de 06 (frente
a los 045 del CD), la resolucin de lectura se incrementa en un factor de 165.
26

Esto es aplicable en dos dimensiones, as que la densidad de datos fsica real se


incrementa en un factor de 33.
Un DVD puede contener:
DVD-Video: Pelculas (video y audio)
DVD-Audio: Audio de alta definicin
DVD-Data: Datos cualesquiera
El tipo de disco puede ser:
DVD-ROM
DVD-R
DVD-RW
DVD-RAM

DVD+R
DVD+RW
DVD-R DL
DVD+R DL
DVD-RW DL
DVD+RW DL

Slo lectura, manufacturado con prensa


Grabable una sola vez
Regrabable
Regrabable de acceso aleatorio. Lleva a cabo una comprobacin de la integridad de los datos siempre activa tras
completar la escritura
Grabable una sola vez
Regrabable
Grabable una sola vez de doble capa
Grabable una sola vez de doble capa
Regrabable de doble capa
Regrabable de doble capa

El disco puede tener una o dos caras, y una o dos capas de datos por cada
cara; el nmero de caras y capas determina la capacidad del disco. Los formatos
de dos caras apenas se utilizan.


DVD-5: Una cara, capa simple. 4.7 GB o 4.38 gibibytes (GiB) - Discos
DVDR/RW.
DVD-9: Una cara, capa doble. 8.5 GB o 7.92 GiB - Discos DVDR
DL.
DVD-10: Dos caras, capa simple en ambas. 9.4 GB o 8.75 GiB - Discos
DVDR/RW.
27

DVD-14: Dos caras, capa doble en una, capa simple en la otra. 133 GB
o 123 GiB - Raramente utilizado.
DVD-18: Dos caras, capa doble en ambas. 17.1 GB o 15.9 GiB - Discos
DVD+R.
Tambin existen DVD de 8 cm (no confundir con mini-DVD, que son
CD conteniendo informacin de tipo DVD video) que tienen una capacidad
de 1.5 GB.
La capacidad de un DVD-ROM puede ser determinada visualmente observando el nmero de caras de datos, y observando cada una de ellas. Las capas
dobles normalmente son de color dorado, mientras que las capas simples son
plateadas, como la de un CD. Otra manera de saber si un DVD contiene una o
dos capas es observar el anillo central del disco, el cual contendr un cdigo de
barras por cada capa que tenga.
La velocidad de transferencia de datos de una unidad DVD est dada en
mltiplos de 1.350 KB/s, lo que significa que una unidad lectora de 16x permite
una transferencia de datos de 16 x 1350 = 21600 KB/s (2109 MB/s). Como las
velocidades de las unidades de CD se dan en mltiplos de 150 KB/s, cada mltiplo de velocidad en DVD equivale a nueve mltiplos de velocidad en CD. En
trminos de rotacin fsica (revoluciones por minuto), un mltiplo de velocidad
en DVD equivale a tres mltiplos de velocidad en CD, as que la cantidad de
datos leda durante una rotacin es tres veces mayor para el DVD que para el
CD, y la unidad de DVD 8x tiene la misma velocidad rotacional que la unidad
de CD 24x.
Magneto- pticos
Las tecnologas Magneto-pticos (MO) utilizan un laser ptico, un campo
magntico y un fotodetector para registrar los datos sobre medias MO protegidas en cartuchos plsticos. Este mtodo tiene una cantidad de beneficios para el
usuario entre los que se destaca su alta confiabilidad y durabilidad.
Los discos Magneto-pticos estn cubiertos con un material especial que
puede ser magnetizado, pero slo a una alta temperatura (150C aproximadamente).
Esto hace que la carga magntica no se vea afectada por la exposicin
campos magnticos a temperaturas normales. Los datos grabados bajo tecno28

loga magntica normal -como la de los discos rgidos, diskettes y drives de


cinta- pueden ser fcilmente afectados por campos magnticos imprevistos a
temperaturas normales, provocando la prdida de los datos.
La superficie de grabacin de las medias MO consiste en una fina capa
metlica con propiedades magnticas y altamente reflectiva, recubierta por una
capa protectora de material plstico. Cuando el laser ptico calienta la superficie del disco a ms de 150C, un imn se mueve debajo de la superficie metlica
generando un campo magntico positivo o negativo en donde est enfocado el
lser. Al alejarse el lser, el disco conserva las reas polarizadas como cdigos
binarios.
La informacin grabada es leda utilizando un lser ptico de menor intensidad, que se aplica sobre la superficie grabada altamente reflectiva y con
una carga magntica. La luz es reflejada fuera del disco y tiene un ngulo de
rotacin diferente dependiendo de la carga positiva o negativa que contenga,
dicho ngulo de rotacin de esa luz reflejada corresponde a un 1 o 0 binarios, y
es registrada por un foto-detector.
Las medias (o discos) MO sobre los que se graban los datos, pueden ser
WORM CCW o regrabables. Si bien los drives MO utilizan la misma tecnologa de lser asistido magnticamente para la grabacin de los datos en discos
WORM CCW y regrabables, difieren en cuanto a la posibilidad de modificar o
no los datos all grabados.
2. Tecnologa CD-ROM (Disco Compacto Memoria de Solo Lectura).
El CD-ROM constituye una innovacin radical dentro de la tecnologa del
almacenamiento de informacin. Es un nuevo medio de edicin, el centro de una
nueva generacin de aplicaciones para la computadora y un instrumento educativo de potencia hasta ahora inimaginable. Es el primer dispositivo prctico que
permite a casi cualquier empresa confeccionar y vender, y a cualquier usuario
comprar y usar directamente bases de datos digitales de gran volumen.
Estos discos se basan en la misma tecnologa que se utiliza en los CDs de
audio, son un medio ideal para distribuir software, se producen en masa, a muy
bajo costo y con una maquinaria totalmente automatizada. Sin embargo tiene la
desventaja de que no es posible reescribir en ellos.
29

Figura 1.12 CD-ROM

Los CD-ROMs se elaboran utilizando un lser de alto poder para formar


agujeros en un disco maestro, luego se hace un molde que se usa para imprimir copias en discos plsticos. Posteriormente se aplica en la superficie
una delgada capa de aluminio, seguida de otra de plstico transparente para
proteccin.
Los CD-ROMs se leen mediante un detector que mide la energa reflejada de la superficie al apuntar a sta un lser de bajo poder. Los agujeros,
que se denominan huecos (pits), y las reas sin laserizar entre estos, que se
denominan zonas planas (lands), producen una diferente reflectividad del
haz de lser, lo que hace posible distinguir entre ambos y recibir dos estados
posibles: 0 y 1. Pero no se indica un 0 o un 1 con un land o un pit, sino que
un pit indica el cambio de estado, o sea de 0 a 1 o de 1 a 0, y segn la cantidad de lands que haya, el estado se mantiene estable, es decir, mientras no se
cambie de estado se mantiene una zona de lands. De esta manera, se trata de
realizar la mnima cantidad de huecos(pits) posibles en el disco, y as poder
escribir ms rpidamente.
Puede estimarse entre 10 y 15 aos la permanencia de la informacin
en un CD ROM comn, dado que la superficie de aluminio que contiene la
informacin se oxida muy lentamente en ese lapso, salvo que sea sometida a
una proteccin anti-xido especial, o sea de oro.
Los CD-ROMs estn constituidos por una pista en espiral que presenta
el mismo nmero de bits por centmetro en todos sus tramos(densidad lineal
constante),para aprovechar mejor el medio de almacenamiento, y no desperdiciar espacio como sucede en los discos magnticos. Es por esto que en la
30

lectura y grabacin de un CD, a medida que el haz lser se aleja del centro
del disco, la velocidad debe disminuir, ya que en el centro el espiral es de
menos longitud que en los bordes. Alternando las velocidades se logra que la
cantidad de bits ledos por segundo sea constante en cualquier tramo, sea en
el centro o en los bordes. Si esta velocidad fuera constante, se leeran menos
bits por segundo en caso de que la zona est ms cerca del centro, y ms si
est ms cerca de los bordes. Todo esto significa que un CD gira a una velocidad angular variable.
Hoy en da existen CDs de distintas capacidades, siendo lo normal una
capacidad de 650 Mb. Los hay de slo lectura (vienen ya grabados de fbrica), CD-R (Se pueden grabar una vez pero leer cuantas veces haga falta), y
CD-RW (se pueden leer y grabar mltiples veces).

1.3.2 Cintas, casetes y raid de discos


Cinta magntica
Las cintas magnticas se han utilizado para el almacenamiento de datos durante los ltimos 20 aos, aunque con el paso del tiempo se les han hecho varios
cambios en su composicin, envoltura y densidad de los datos. Son un medio o
soporte de almacenamiento de informacin de acceso secuencial que se graba en
pistas sobre una banda plstica con un material magnetizado, generalmente xido
de hierro o algn cromato. El tipo de informacin que se puede almacenar es
variado, como vdeo, audio o datos; y frecuentemente es utilizada para respaldar
el contenido de las unidades de disco duro, adems, es muchas ocasiones es el
medio elegido para almacenar archivos grandes que se leen y procesan de manera
secuencial.

Figura 1.13 Cinta magntica

31

Para acceder a algn registro se debe pasar inicialmente por los primeros
registros hasta llegar al deseado, esto debido a que accede secuencialmente; y es
muy difcil leer o escribir en una misma cinta.

4
Movimiento de la cinta

Marca de fin de carrete


Separacin entre registros

Figura 1.14 Acceso a los registros en cinta magntica

Los datos se almacenan en forma de pequeas marcas en el material magnetizable que cubre una cara de la cinta de plstico. La superficie recubierta de la
cinta se divide en columnas verticales (o cuadros) e hileras horizontales llamadas
canales o pistas.
Dado que cualquier cinta magntica es un medio continuo, para identificar
registros individuales en cada cinta se pueden separar los registros mediante espacios en blanco llamados separacin entre registros. Esta separacin se crea
automticamente al grabar la informacin en la cinta.Cuando se leen los datos
desde un registro de una cinta en movimiento al procesador, la cinta se detiene
al llegar a una sedacin. La cinta permanece inmvil hasta que se termine de
procesar el registro y a continuacin se mueve otra vez para pasar el siguiente
registro a la computadora. El procedimiento se repite hasta que se procesa todo el
archivo, los archivos pueden ser de longitudes variables. Si la cinta contiene un
gran nmero de registros muy cortos y si cada uno de los registros est separado
por medio de una separacin entre registros es posible que ms de la mitad de
la cinta este en blanco y que se interrumpa constantemente el movimiento de la
cinta. Para evitar esta situacin ineficiente, es posible unir varios registros cortos
para formar un bloque de cinta.
Si en el casete hay registros cortos y largos mezclados, la lectura y escritura
en el mismo casete se vuelve desesperante. Si se almacena cada registro lgico en
la cinta como un solo registro fsico no pueden escribirse registros con longitudes
diferentes en el mismo espacio. El registro ms largo borrar parte del registro
siguiente, mientras que el registro ms corto dejara parte del registro ms antiguo
lo que producir un error.
32

Esto se puede solucionar con dos alternativas, en la primera se necesitan


hacer los siguientes pasos:
a)
b)
c)
d)

Encontrar el registro lgico anterior al deseado.


Encontrar el comienzo del registro lgico deseado.
Avanzar el casete para encontrar el resto del registro lgico deseado.
Rebobinar para encontrar el registro lgico siguiente.

En la segunda alternativa se desperdicia mucho espacio del casete, si los


registros estaban ordenados alfabticamente o de otra forma pronto estarn
completamente desordenados porque, en el registro que se va a leer hay una
merca o etiqueta que indica en que nmero de registro lgico se encuentra la
informacin. Se recomienda tener dos unidades de cinta, una para leer y otra
para escribir.
Cabe mencionar que las cintas magnticas han sido durante aos (y siguen
siendo en la actualidad) el dispositivo de respaldo por excelencia. Las ms antiguas, las cintas de nueve pistas, son las que mucha gente imagina al hablar de
este medio: un elemento circular con la cinta enrollada en l; este tipo de dispositivos se utiliz durante mucho tiempo, pero en la actualidad est en desuso, ya
que a pesar de su alta fiabilidad y su relativa velocidad de trabajo, la capacidad
de este medio era muy limitada.
En la actualidad, la gran mayora de las cintas magnticas estn encapsuladas en cartuchos y casetes, y son utilizadas principalmente como medios de
almacenamiento de alta capacidad usados para copias de seguridad. El cartucho
de mayor almacenamiento es actualmente el Digital Linear Tape, DLT-S4;
ste puede almacenar 800GB de datos sin compresin.
Sin embargo las cintas magnticas tienen las siguientes limitaciones:

Falta de acceso directo a los registros. La cinta es un medio de acceso


secuencial que se utiliza para el procesamiento por lotes. Es necesario
leer y procesar toda la cinta para actualizar todos los registros de un archivo organizados en forma secuencial. Si se requiere acceso frecuente
a los registros del archivo en forma rpida y aleatoria, el archivo no deber almacenarse en cinta magntica; se requerira demasiado tiempo
de operador para montar y desmontar cintas, se desperdiciara mucho
tiempo de mquina en la lectura de registros que no necesitan.
33

Problemas ambientales. Las partculas de polvo y la falta de control de


los niveles de la temperatura o humedad pueden causar errores en la
lectura, las cintas y sus envases deben etiquetarse y controlarse cuidadosamente para no borrar por error un archivo importante.

Raid de discos (Arreglo Redundante de Discos Independientes)


RAID es la sigla para Redundant Array of Independent Disks. Su definicin
en espaol sera Matriz Redundante de Discos Independientes. Se trata de una
tecnologa que combina varios discos rgidos (HD) para formar una nica unidad
lgica, donde los mismos datos son almacenados en todos los discos (redundancia). En otras palabras, es un conjunto de discos rgidos que funcionan como si
fueran uno solo. Eso permite tener una tolerancia alta contra fallas, pues si un
disco tiene problemas, los dems continan funcionando, teniendo el usuario los
datos a su disposicin como si nada pasara. El RAID es una tecnologa consolidada, que surgi de la Universidad de Berkesley, en California (EUA) a finales
de la dcada de 1980.
Para conformar el RAID, es preciso utilizar por lo menos 2 discos rgidos.
El sistema operativo, en este caso, mezclar los discos como una nica unidad
lgica. Cuando se graban datos, los mismos se reparten entre los discos del RAID
(dependiendo del nivel). Con eso, adems de garantizar la disponibilidad de los
datos en caso de fallo de un disco, es posible tambin equilibrar el acceso a la
informacin, de forma que no haya cuellos de botella.

Figura 1.15 Raid de discos

Ventajas de la tecnologa RAID:



34

Tolerancia a fallos: RAID protege contra la prdida de datos

Mejora del Rendimiento/ Velocidad: RAID permite a varias unidades


trabajar en paralelo, lo que aumenta el rendimiento del sistema.
Mayor Fiabilidad: RAID emplea dos tcnicas para aumentar la fiabilidad:
La redundancia de los datos implica el almacenamiento de los mismos datos en ms de una unidad. Es muy eficaz pero tambin es
muy costoso.
La paridad de datos se realiza mediante un algoritmo matemtico.
Es menos costoso que la redundancia, ya que no requiere el uso de
un conjunto redundante de unidades de disco.
Alta Disponibilidad: Se divide en dos aspectos:
La integridad de los datos, capacidad de obtener los datos adecuados en cualquier momento. Reparacin dinmica de sectores (debidos a errores de software)
La tolerancia a fallos capacidad para mantener los datos disponibles
en caso de que se produzcan uno o varios fallos en el sistema.

Los niveles RAID


La tecnologa RAID funciona de varias maneras. stas son conocidas como
niveles de RAID. En total, existen 6 niveles bsicos, los cuales son citados a
continuacin:
RAID nivel 0: Este nivel tambin es conocido como Striping o Fraccionamiento. En l, los datos son divididos en pequeos segmentos y distribuidos
entre los discos. Este nivel no ofrece tolerancia a fallos, pues no existe redundancia. Eso significa que un fallo en cualquiera de los discos rgidos puede ocasionar
prdida de informacin. Por esta razn, el RAID 0 es usado para mejorar la performance de la computadora, ya que la distribucin de los datos entre los discos
proporciona gran velocidad en la grabacin y lectura de informacin. Mientras
ms discos existan, ms velocidad es lograda. Esto porque, si los datos fueran
grabados en un nico disco, este proceso sera realizado en forma secuencial. Con
el RAID, los datos que se guardan en cada disco son grabados al mismo tiempo.
El RAID 0, por tener estas caractersticas, es muy usado en aplicaciones CAD
(Diseo Asistido por Computadora) y tratamiento de imgenes y vdeos.
RAID nivel 1: Tambin conocido como Mirroring o Espejado, el RAID
1 funciona aadiendo discos rgidos paralelos a los discos rgidos principales
35

existentes en la computadora. As, si por ejemplo, una computadora posee


2 discos, se puede anexar un disco rgido para cada uno, totalizando 4. Los
discos que fueron aadidos, trabajan como una copia del primero. As, si el
disco principal recibe datos, el disco anexado tambin los recibe. De ah el
nombre de espejado, pues un disco rgido pasa a ser una copia prcticamente idntica del otro. De esa forma, si uno de los discos rgidos presenta una falla, el otro inmediatamente puede asumir la operacin y continuar
disponibilizando la informacin. La consecuencia en este caso, es que la
grabacin de datos es ms lenta, pues es realizada dos veces. Sin embargo,
la lectura de esa informacin es ms rpida, pues puede ser accedida de dos
fuentes. Por esta razn, una aplicacin muy comn del RAID 1 es su uso en
servidores de archivos.
RAID nivel 2: Este tipo de RAID, adapta el mecanismo de deteccin de
fallas en discos rgidos para funcionar en memoria. As, todos los discos de
la matriz estn siendo monitorizados por el mecanismo. Actualmente, el
RAID 2 es poco usado, ya que prcticamente todos los discos rgidos nuevos
salen de fbrica con mecanismos de deteccin de fallas implantados.
RAID nivel 3: En este nivel, los datos son divididos entre los discos de
la matriz, excepto uno, que almacena informacin de paridad. As, todos los
bytes de los datos tienen su paridad (aumento de 1 bit, que permite identificar errores) almacenada en un disco especfico. A travs de la verificacin
de esta informacin, es posible asegurar la integridad de los datos, en casos
de recuperacin. Por eso y por permitir el uso de datos divididos entre varios
discos, el RAID 3 logra ofrecer altas tasas de transferencia y confianza en la
informacin. Para usar el RAID 3, por lo menos 3 discos son necesarios.
RAID nivel 4: Este tipo de RAID, bsicamente, divide los datos entre los
discos, siendo uno de esos discos exclusivo para paridad. La diferencia entre
el nivel 4 y el nivel 3, es que en caso de falla de uno de los discos, los datos
pueden ser reconstruidos en tiempo real a travs de la utilizacin de la paridad calculada a partir de los otros discos, siendo que cada uno puede ser accedido de forma independiente. El RAID 4 es el indicado para el almacenamiento de archivos grandes, donde es necesario asegurar la integridad de la
informacin. Eso porque, en este nivel, cada operacin de grabacin requiere
un nuevo clculo de paridad, dando mayor confianza al almacenamiento (a
pesar de que esa operacin torna las grabaciones de datos ms lentas).
36

RAID nivel 5: Este es muy semejante al nivel 4, excepto por el hecho de que
la paridad no est destinada a un nico disco, sino a toda la matriz. Eso hace que
la grabacin de datos sea ms rpida, pues no es necesario acceder a un disco de
paridad en cada grabacin. A pesar de eso, como la paridad es distribuida entre los
discos, el nivel 5 tiene un poco menos de performance que el RAID 4. El RAID
5 es el nivel ms utilizado y que ofrece resultados satisfactorios en aplicaciones
no muy pesadas. Este nivel necesita de por lo menos 3 discos para funcionar.
RAID 0 + 1: El RAID 0 + 1 es una combinacin de los niveles 0 (Striping) y 1
(Mirroring), donde los datos son divididos entre los discos para mejorar el ingreso, pero tambin utilizan otros discos para duplicar la informacin. As, es posible
utilizar el buen ingreso del nivel 0 con la redundancia del nivel 1. Sin embargo,
es necesario por lo menos 4 discos para montar un RAID de este tipo. Estas caractersticas hacen del RAID 0 + 1 el ms rpido y seguro, sin embargo es el ms
caro de ser implementado.

Figuras 1.16 RAID 0

Tipos de RAID
Existen 2 tipos de RAID, uno basado enhardware y el otro basado en software. Cada uno posee ventajas y desventajas. El primer tipo es el ms utilizado,
pues no depende de un sistema operativo (pues estos ven al RAID como un nico
disco grande) y son bastante rpidos, lo que posibilita explorar ntegramente sus
recursos. Su principal desventaja es ser caro.
37

El RAID basado en hardware, utiliza dispositivos denominados controladores RAID, que pueden ser conectados en slots PCI (Interconexin de Componentes Perifricos) de la placa madre de la computadora. El RAID basado en software no es muy utilizado, pues a pesar de ser menos costoso, es ms lento, posee
ms dificultades de configuracin y depende del sistema operativo para tener una
performance satisfactoria. Este tipo es dependiente del poder de procesamiento
de la computadora en que es utilizado.
Por lo tanto, la tecnologa RAID es uno de los principales conceptos cuando
el tema en cuestin es el almacenamiento de datos seguro. Su eficiencia es comprobada por tratarse de una tecnologa en uso hace varios aos y que an est vigente. Grandes empresas, como lntel, ofrecen soluciones RAID, y esa tecnologa
es posible encontrarla incluso en computadoras domsticas. Es muy probable que
el RAID an vaya a presentar nuevas funcionalidades, ampliando su uso para los
ms diversos tipos de necesidades de almacenamiento y acceso a datos.

1.3.3 Flash memory (Memoria Flash)


La memoria flash es una forma evolucionada de la memoria EEPROM (Memoria de Solo Lectura Programable y Borrable Elctricamente). Permite que mltiples posiciones de memoria sean escritas o borradas en una misma operacin
de programacin mediante impulsos elctricos, en comparacin con otras que
slo permiten escribir o borrar una nica celda cada vez. Por ello, flash permite
funcionar a velocidades muy superiores cuando los sistemas emplean lectura y
escritura en diferentes puntos de esta memoria al mismo tiempo.

Figura 1.17 Memoria flash

Caractersticas generales
Las memorias flash son de tipo no voltil, esto es, la informacin que almacenan no se pierde cuando se desconecta la corriente, es una caracterstica muy
38

valorada por la multitud de usos en los que se emplea este tipo de memoria. Los
principales usos de este tipo de memorias son pequeos dispositivos basados en
el uso de bateras como telfonos mviles, PDA (Asistente Digital Personal),
pequeos electrodomsticos, cmaras de fotos digitales, reproductores porttiles
de audio, etc.
Las capacidades de almacenamiento de estas tarjetas que integran memorias
flash comenzaron en 128 MB pero actualmente se pueden encontrar en el mercado tarjetas de hasta 16 GB.
La velocidad de transferencia de estas tarjetas, al igual que la capacidad de
las mismas, se ha incrementado progresivamente. La nueva generacin de tarjetas permitir velocidades de hasta 30 MB/s.
El costo de estas memorias es muy bajo respecto a otro tipo de memorias similares como EEPROM y ofrece rendimientos y caractersticas muy superiores.
No obstante, el costo por MB en los discos duros son muy inferiores a los que
ofrece la memoria flash y, adems los discos duros tienen una capacidad muy
superior a la de las memorias flash. Ofrecen, adems, caractersticas como gran
resistencia a los golpes, bajo consumo y es muy silencioso, ya que no contiene
ni actuadores mecnicos ni partes mviles. Su pequeo tamao tambin es un
factor determinante a la hora de escoger para un dispositivo porttil, as como su
ligereza y versatilidad para todos los usos hacia los que est orientado.
Sin embargo, todos los tipos de memoria flash slo permiten un nmero
limitado de escrituras y borrados, generalmente entre 10,000 y un milln, dependiendo de la celda, de la precisin del proceso de fabricacin y del voltaje
necesario para su borrado.
Los sistemas de archivos para estas memorias estn en pleno desarrollo
aunque ya en funcionamiento, sin embargo, en la prctica se emplea un sistema
de archivos FAT (Tabla de Asignacin de Archivos) por compatibilidad, sobre
todo en las tarjetas de memoria extrable.
Otra caracterstica de reciente aparicin ha sido la resistencia trmica de
algunos encapsulados de tarjetas de memoria orientadas a las cmaras digitales
de gama alta. Esto permite funcionar en condiciones extremas de temperatura
como desiertos o glaciares, ya que el rango de temperaturas soportado abarca
desde los 25C hasta los 85C.

Las aplicaciones ms habituales son:


El llavero USB, adems del almacenamiento, suele incluir otros servicios como radio FM (Frecuencia Modulada), grabacin de voz y, sobre
todo como reproductor porttil de MP3 y otros formatos de audio.
Las computadoras personales card
Las tarjetas de memoria flash que son el sustituto del carrete en la fotografa digital, ya que en las mismas se almacenan las fotos.

Existen varios estndares de encapsulados promocionados y fabricados por


la mayora de las multinacionales dedicadas a la produccin de hardware.
Funcionamiento
Flash, como tipo de EEPROM, contiene un arreglo de celdas con un transistor evolucionado con dos puertas en cada interseccin. Tradicionalmente
slo almacenan un bit de informacin. Las nuevas memorias flash, llamadas
tambin dispositivos de celdas multinivel, pueden almacenar ms de un bit por
celda variando el nmero de electrones que almacenan.
Estas memorias estn basadas en el transistor FAMOS (Floating Gate Avalanche-Injection Metal Oxide Semiconductor) que es, esencialmente, un transistor NMOS (Canal Negativo de Semiconductores de xido Metlico) con
un conductor (basado en un xido metlico) adicional entre la CG (Puerta de
Control) y los terminales fuente/drenador contenidos en la FG (Puerta Flotante) o bien que rodea a FG y es quien contiene los electrones que almacenan la
informacin.

40

Captulo 2
REGISTROS, TIPOS Y OPERACIONES

Objetivo
Identificar los lmites de campos y registros,
as como su acceso y organizacin.

Plan general del captulo


2.1 Definiciones
2.2 Registros fsicos y lgicos
2.3 Registros de longitud fija y variable
2.4 Estructura interna de un registro, campos y llaves
2.5 Operaciones bsicas sobre archivos y registros

2.1 Definiciones
A continuacin se enlistan algunas definiciones bsicas para una mejor
comprensin de este captulo.
Estructuras de Archivos: Organizacin impuesta a un archivo para facilitar su procesamiento. Estas estructuras de archivos incluyen campos,
registros, bloques, rboles, ndices, secuencias y otras instrucciones conceptuales.
Registro: Es un tipo de dato estructurado que consta de un conjunto de
elementos que pueden ser del mismo tipo o tipos diferentes. A cada elemento
se le denomina campo.
Registro Lgico: Unidad completa de informacin que describe una coleccin o asociacin de elementos de datos, basndose en su contenido ms
que en su localizacin fsica. Es opuesto al registro fsico. Ejemplo: un objeto que se maneja en el lenguaje Java.
Registro Fsico: Corresponde a la cantidad de informacin que se transfiere en cada operacin de lectura y escritura sobre un archivo. Es la unidad
de informacin que se encuentra soportada fsicamente por algn medio de
almacenamiento.
Archivo: Es una coleccin de bytes que representa informacin almacenada en algn dispositivo de almacenamiento secundario, generalmente en
discos o cintas magnticas.

43

Archivo Fsico: Archivo que en realidad existe en el almacenamiento secundario. Es el archivo tal como lo conoce el sistema operativo y aparece en su
directorio de archivos.
Archivo Lgico: Es el archivo visto por el programa. El uso de los archivos
lgicos permite a un programa describir las operaciones que van a efectuarse en
un archivo sin saber cual archivo fsico se usar.
Campo: Es la unidad lgicamente significativa de un archivo.
Llave: Expresin derivada de uno o ms campos dentro de un registro, que
pueden usarse para ubicar el registro. A los campos usados para construir una
llave se les denomina campos llave.
Administrador de archivos: Es la parte del sistema operativo responsable
de la administracin de archivos, que incluye un conjunto de programas cuyas
responsabilidades van desde seguirle la pista a los archivos hasta llamar a los procesos de E/S que transmiten la informacin entre los almacenamientos primario
y secundario.

2.2 Registros fsicos y lgicos


En la actualidad, para poder cumplir con los objetivos, cualquier empresa
u organizacin necesita almacenar y manejar grandes cantidades de datos. Por
ejemplo, se necesitan los datos de los empleados, de los clientes, proveedores,
productos almacenados, etc.
Anteriormente, la gestin de los datos se realizaba manualmente, es decir,
se organizaban en forma de fichas, informes o expedientes, colocndolos en carpetas y almacenndolos en archiveros. Por ejemplo, un archivo de clientes en el
que cada ficha contena todos los datos correspondientes a ste o un archivo de
alumnos dnde cada ficha contendr todos los datos de cada estudiante.
Es por ello, que la utilizacin de las computadoras en la administracin de
las empresas ha cambiado el concepto de almacenamiento y gestin de sus datos,
dando lugar al uso de los denominados archivos informticos y bases de datos.
En el contexto informtico, un archivo es cualquier informacin permanente
que se almacena en algn dispositivo de almacenamiento secundario y que es
tratado como una unidad por el sistema operativo, el cual incluye rdenes tales
44

como crear, copiar y borrar archivos. Normalmente a cada archivo se le asocia un


nombre y una extensin que lo identifica y diferencia del resto. Otros datos importantes asociados al archivo son su fecha, hora de creacin y de actualizacin,
el tamao, permisos de acceso, etc. Ejemplo: en la figura 2.1 se muestran distintos
tipos de archivos y los valores de sus atributos, tales como, tamao, tipo, fecha y
hora de modificacin.

Figura 2.1 Tipos de archivos y valores de sus atributos

Los archivos pueden contener distintos tipos de informacin: datos, instrucciones de programas, imgenes, sonido, informacin de control, entre otros.
Cabe mencionar que los datos no se guardan en una computadora al azar, sino
que se estructuran y planifican de forma adecuada, segn un determinado formato. Esta tarea es realizada habitualmente por analistas y programadores.
Archivos de datos
Desde el punto de vista fsico, un archivo se almacena en un conjunto de
clsters que ocupan un determinado nmero de sectores. En consecuencia, el
tamao real que ocupa un archivo en disco es relativo, por ejemplo un archivo
de 200 bytes ocupar en disco el tamao completo de un clster. Si existen 2
sectores por clster = 512 x 2 = 1.024 bytes = 1 KB, ste ser el tamao real
del archivo.
45

Desde el punto de vista lgico, los archivos de datos suelen dividirse en unidades lgicas llamadas registros, que a su vez se dividen en campos. Es decir, un
archivo es una estructura de datos que reside en memoria secundaria, consistente
en un conjunto de informacin del mismo tipo y se agrupa en unidades de acceso
denominadas registros.
Un registro lgico o simplemente registro es cada uno de las componentes
del archivo, que contiene el conjunto de informacin correspondiente a cada elemento individual el cual se accede y se trata de manera unitaria. Est constituido
por uno o ms elementos denominados campos que pueden ser de diferentes tipos
y que a su vez pueden estar compuestos por subcampos.
El campo es un conjunto de caracteres que constituye un dato del objeto o
entidad cuya informacin se almacena y en el cual se deben establecer tres caractersticas:
Nombre del campo: permite rotular el mismo.
Tipo de campo: Establece que tipo de dato contiene el campo (alfabtico, numrico, alfanumrico, entre otros)
Tamao del campo: cantidad de caracteres que pueden almacenarse.
En la figura 2.2 se ilustran los conceptos de registros, campos y nombres de
campos

Figura 2.2 Registros, campos y nombres de campos

Un registro puede tener un campo clave, cuyo valor sirve para identificar
de forma nica el registro, y, por tanto, dicho valor no puede aparecer repetido
46

en otro registro diferente. Sin embargo, puede suceder que un archivo no tenga
campo clave en sus registros o, por el contrario, que tenga varios, denominndose
a la principal clave primaria y a las dems secundarias.
Las claves simples estn formadas por el valor de un solo campo, ejemplo,
nmero del empleado. En cambio, las claves compuestas, por el valor de ms de
un campo, por ejemplo, cdigo de localidad y nmero del empleado.
Si un archivo contiene la informacin de un conjunto de individuos u objetos, sus registros contienen la informacin de cada uno de ellos y los campos de
los diferentes datos que la componen. Por ejemplo, en el archivo de personal de
una empresa, cada registro contiene la informacin de un empleado y los campos
contienen los datos asociados a ese empleado, tales como: cdigo, nombre, direccin, fecha de ingreso, etc. El campo direccin puede dividirse en subcampos
tales como, calle y nmero. El campo clave puede ser el cdigo.
Cdigo 8654834
Nombre Juan Manuel Gonzlez Hernndez
Direccin Av. Independencia 834
Localidad Guanajuato
Departamento Finanzas
Categora laboral Contador
Fecha de ingreso 20 04 2009
Un registro fsico o bloque corresponde a la cantidad de informacin que se
transfiere fsicamente en cada operacin de acceso (lectura o escritura) sobre el
exterior. Cuanto mayor sea el tamao del bloque, menor ser el nmero de accesos al dispositivo necesarios para procesar el archivo, lo que se traduce en una
mayor velocidad de proceso.
Conviene separar claramente los conceptos de registro lgico y registro fsico, diferencindose en que el tamao y formato del registro lgico los define
el programador mientras que el tamao del registro fsico viene dado por las caractersticas fsicas del soporte fsico utilizado (disco, disquete, unidad de cinta,
entre otros).
En general, un bloque tendr capacidad para contener uno o ms registros,
pero tambin puede ocurrir que un registro ocupe ms de un bloque.
47

Caractersticas de los archivos


Residencia en soportes de informacin externos, tambin denominados


memorias secundarias, masivas o auxiliares, como son las cintas y discos.
Independencia respecto de los programas. Significa que la vida del archivo no est limitada por la vida del programa que lo cre, y tambin
que el archivo puede ser utilizado por diferentes programas.
Permanencia de la informacin almacenada. Es decir, toda la informacin almacenada en la memoria central desaparece cuando se termina
la ejecucin del programa que la maneja, pero para hacer desaparecer un archivo ser necesario realizar explcitamente una operacin
de borrado.
Gran capacidad de almacenamiento. Tericamente esta capacidad es
ilimitada, est en funcin del soporte de almacenamiento. Por el contrario, las estructuras de datos que residen en la memoria central tienen
limitado su tamao por la capacidad de sta.

Clasificacin de los archivos segn su uso

A. Archivos permanentes: Contienen informacin que vara poco a lo largo del


tiempo:
Archivos constantes: Contiene datos fijos para la aplicacin. Su informacin permanece prcticamente inamovible, utilizndose principalmente como archivos de consulta. Un ejemplo puede ser el de la red del
metro de una ciudad, que contiene la descripcin, nmero de estaciones,
nmero de trenes, etc., de cada lnea.
Archivos de situacin: Tambin denominados archivos maestros, contienen la informacin que refleja el estado o situacin de una empresa o
entidad, o algn aspecto de ella en un determinado momento. Estos archivos se actualizan peridicamente para adaptarlos a cada nueva situacin. Un ejemplo es el archivo de personal en una empresa, o tambin
el archivo de existencias en almacn.
Archivos histricos: Se obtienen de los anteriores cuando se dejan fuera
de uso para futuros estudios estadsticos o consultas. Ser un archivo
histrico el que contiene la informacin de libros adquiridos por una
biblioteca en la dcada de los ochenta o un archivo con los pagos reali48

zados en los ltimos 5 aos el detalle de comprobantes considerados


en un ejercicio contable ya cerrado.
B. Archivos de movimientos. En ellos se almacena la informacin que se utilizar para actualizar los archivos maestros. Sus registros, denominados
movimientos o transacciones, pueden ser de tres tipos: altas, bajas y modificaciones.
Una vez realizado el proceso de actualizacin de un archivo maestro
por medio de un archivo de movimientos, ste pierde su validez y no se
necesita conservarlo.
Un archivo de este tipo para actualizar el antes mencionado archivo de
personal, es el que refleja las nuevas incorporaciones, finalizaciones de
la relacin laboral y modificaciones de los mismos producidas en la empresa durante el mes actual.
C. Archivos de trabajo. Tienen una vida limitada, normalmente igual a la duracin de la ejecucin de un programa, y se utilizan como auxiliar de los
anteriores. Por ejemplo, si se desea una lista alfabtica del personal contratado, se har por medio de un archivo de trabajo en el que se almacene
esta informacin a partir del archivo de personal. Este archivo es temporal,
desaparecer una vez que se tenga la lista impresa.

2.3 Registros de longitud fija y variable


Los archivos se encuentran organizados lgicamente como una secuencia de
registros de varias longitudes diferentes y se clasifican en:
Registros de longitud fija
Es la organizacin de archivos en la que todos los registros tienen la misma
longitud. Los registros se completan con espacios nulos u otros caracteres de tal
forma que extiende la longitud fijada. Puesto que todos los registros tienen la
misma longitud es posible calcular la posicin de inicio de cada registro haciendo
posible el acceso directo.
Un enfoque sencillo consiste en ir colocando los registros fijos dentro del
bloque de manera secuencial. Sin embargo, se presentan dos problemas:
1. Resulta difcil borrar un registro de esta estructura. Se debe rellenar el
espacio ocupado por el registro que hay que borrar con algn otro regis49

tro del archivo o tener algn medio de marcar los registros borrados para
que puedan pasarse por alto.
2. A menos que el tamao de los bloques sea un mltiplo exacto del tamao del bloque (lo que resulta improbable), algunos de los registros se
saltarn los lmites de los bloques. Es decir, parte del registro se guardar en un bloque y parte en otro. Harn falta, por tanto, dos accesos a
bloques para leer o escribir ese tipo de registros.
No resulta deseable desplazar los registros para ocupar el espacio liberado por los registros borrados, por la sobrecarga que supondra. Como las
inserciones tienden a ser ms frecuentes que los borrados, s resulta en general
aceptable dejar libre el espacio ocupado por los registros borrados y esperar a
una insercin posterior para volver a utilizar ese espacio. Sin embargo, no basta
con una simple marca en el registro borrado, dado que resulta difcil encontrar
el espacio disponible mientras se realiza una insercin; es necesario introducir
una estructura adicional.
Al comienzo del archivo se asigna cierto nmero de bytes como cabecera
del archivo, los cuales contendrn gran variedad de informacin sobre el archivo. Para guardar ah la direccin del primer registro cuyo contenido ha sido
borrado, se utiliza este primer registro para guardar la direccin del segundo
registro disponible, y as sucesivamente. De manera intuitiva se pueden considerar estas direcciones guardadas como punteros, dado que indican la posicin
de un registro. Los registros borrados, por tanto, forman una lista enlazada a la
que se suele denominar lista libre.
Al insertar un registro nuevo se utiliza el registro indicado por la cabecera. Se cambia el puntero de la cabecera para que apunte al siguiente registro
disponible. Si no hay espacio disponible, se aade el nuevo registro al final del
archivo.
Registro de longitud variable
Es una organizacin de archivo en donde los registros no tienen una longitud predeterminada; son tan largos como sea necesario y, por lo tanto, permiten
un mejor uso del espacio que los de longitud fija. El nico inconveniente es que
no es posible calcular la distancia en bytes de un registro de este tipo puesto que
no se sabe el tamao que tienen sus campos.
50

Aunque los bloques sean de un tamao fijo determinado por las propiedades
fsicas del disco y por el sistema operativo, los tamaos de los registros varan.
En las bases de datos relacionales las tuplas de las diferentes relaciones suelen
ser de tamaos distintos.
Existen diferentes tcnicas para implementar los registros de longitud
variable.
A. Representacin en cadenas de bytes: Un mtodo sencillo de implementar
los registros de longitud variable es adjuntar un smbolo especial de fin de
registro ( | ) al final de cada registro. As se puede guardar cada registro como
una cadena de bytes consecutivos. Otra alternativa de la representacin en
cadenas de bytes es guardar la longitud del registro al comienzo de cada registro.
Por lo tanto, la representacin en cadenas de bytes presenta varios inconvenientes:

No resulta sencillo volver a utilizar el espacio ocupado anteriormente


por un registro borrado. Aunque existen tcnicas para gestionar la insercin y el borrado de registros, generan una gran fragmentacin de
disco.
Por lo general, no queda espacio para el aumento del tamao de los registros. Si un registro de longitud variable aumenta de tamao hay que
desplazarlo (el movimiento puede resultar muy costoso).
Tambin se puede utilizar una forma modificada de la representacin en cadenas de bytes, denominada estructura de pginas con ranuras,
para organizar los registros de longitud variable dentro de cada bloque.
En dicha estructura hay una cabecera al principio de cada bloque que
contiene la informacin del nmero de elementos del registro de la cabecera, el final del espacio vaco del bloque y un array cuyas entradas
contienen la ubicacin y el tamao de cada registro.
Los registros reales se ubican de manera contigua en el bloque, empezando desde el final del mismo. El espacio libre dentro del bloque es
contiguo, entre la ltima entrada del array de la cabecera y el primer
registro. Si se inserta un registro se le asigna espacio al final del espacio
libre y se aade a la cabecera una entrada que contiene su tamao y su
ubicacin.
51

Al borrar un registro se libera el espacio que ocupa y se asigna el


valor de borrado a su entrada (por ejemplo, se le asigna a su tamao
el valor de 1). Adems, se desplazan los registros de bloque situados
antes del registro borrado, de modo que se ocupe el espacio libre creado
por el borrado y todo el espacio libre vuelve a hallarse entre la ltima
entrada del arreglo de la cabecera y el primer registro. Tambin se actualiza de manera adecuada el puntero del final del espacio libre de la
cabecera. Se puede aumentar o disminuir el tamao de los registros utilizando tcnicas parecidas, siempre y cuando quede espacio en el bloque.
El coste de trasladar los registros no es demasiado elevado, dado que el
tamao del bloque es limitado: un valor tpico es cuatro kilobytes.
B. Representacin de longitud fija: otra manera de implementar eficientemente
los registros de longitud variable en un sistema de archivos es utilizar uno
o varios registros de longitud fija para representar cada registro de longitud
variable.
Hay dos tcnicas para hacer esto:

52

Espacio reservado. Si hay una longitud de registro mxima que no se


supera nunca, se pueden utilizar registros de longitud fija de esa longitud. El espacio no utilizado por los registros ms cortos se rellena con un
smbolo especial de valor nulo o de final de registro.

Representacin con listas. El registro de longitud variable se representa mediante una lista de registros de longitud fija, enlazada mediante
punteros.

El mtodo del espacio reservado resulta til cuando la mayor parte de


los registros son de una longitud cercana a la mxima. En caso contrario,
se puede desperdiciar mucho espacio.

Un inconveniente de la representacin con listas es que se desperdicia


espacio en todos los registros excepto en el primero de la serie. Para
resolver este problema se permiten en el archivo dos tipos de bloques:

Bloque ancla, que contiene el primer registro de cada cadena.

Bloque de desbordamiento, que contiene los registros que no son


los primeros de sus cadenas.

2.4 Estructura interna de un registro


Es otro nivel de organizacin que se impone sobre los datos para preservar
su significado. Los registros no necesariamente existen en el archivo en sentido
fsico; sin embargo, se constituye una nocin lgica importante incluida en la
estructura de archivos.
Mtodos que se usan para organizar un archivo en registros:
1. Hacer los registros de una longitud predecible: Esta longitud puede medirse
en trminos de bytes o en trminos del nmero de campos.
Es el mtodo ms utilizado.
Los registros contienen el mismo nmero de bytes.
Los registros son de longitud fija pero los campos pueden ser de longitud variable.
Existen 3 formas de volver constantes y predecibles las longitudes de los
registros.
a) Conteo de bytes: Registros de longitud fija con campos de longitud fija

10

10

15

JIMNEZ

MANUEL

MADERO 123

OCOTLN

OK7210

MARTNEZ

LUIS

OCAMPO 84

LEN

OK7426

b) Conteo de bytes: Registros de longitud fija con campos de longitud variable


JIMNEZ|MANUEL|MADERO 123|OCOTLN|OK7210|
MARTNEZ|LUIS|OCAMPO 84|LEN|OK7426|

espacio en blanco

espacio en blanco

c) Conteo de campos: 5 campos por registro


JIMNEZ|MANUEL|MADERO123|OCOTLN|OK7210|MARTNEZ|LUIS|OCAMPO 84|LEO

2. Comenzar cada registro con un indicador de longitud: Se puede transmitir


la longitud de los registros y hacerlos predecibles, comenzado cada registro
con un campo que contenga un nmero entero que indique cuntos bytes hay
en el resto del registro. Este mtodo es muy utilizado en registros de longitud
variable.
53

41JIMNEZ|MANUEL|MADERO 123|OCOTLN|OK7210|36MARTNEZ|LUIS|OCAM...

3. Usar un segundo archivo para mantener informacin sobre las direcciones


de los registros: Se puede emplear un segundo archivo de ndice para mantener la informacin sobre la distancia en bytes de cada registro en el archivo
original. La distancia en bytes permite encontrar el comienzo de cada registro sucesivo y calcular su longitud. Se busca la posicin de un registro en el
ndice y despus se alcanza el registro dentro del archivo de datos.
Archivo de Datos
JIMNEZ|MANUEL|MADERO 123|OCOTLN|OK|7210|MARTNEZ|LUIS|OCAMPO 84|LEON|OK |7426|SOL...

00 41

78

Archivo de ndice

4. Colocar un delimitador al final de cada registro: Se coloca un delimitador


# al final de cada registro. La marca de fin de lnea se usa frecuentemente
como delimitador de registro.
JIMNEZ|MANUEL|MADERO 123|OCOTLN|OK|7210|#MARTNEZ|LUIS|OCAM...

2.5 Operaciones bsicas sobre los archivos y registros


Operaciones bsicas sobre los archivos
son:

Las distintas operaciones que se pueden realizar a los registros de un archivo

A. Creacin de un archivo

Es la primera operacin que sufrir el archivo de datos. Implica la eleccin de un entorno descriptivo que permita un gil, rpido y eficaz tratamiento del archivo.

Para utilizar un archivo, ste tiene que existir, es decir, la informacin de
este archivo tiene que haber sido almacenada sobre un soporte y ser utilizable. La creacin exige organizacin, estructura, localizar, observar el
espacio en el soporte de almacenamiento y la transferencia del archivo
de soporte antiguo al nuevo.

54

Un archivo puede ser creado por primera vez en un soporte, proceder


de otro previamente existente en el mismo o diferente soporte, o ser el
resultado de un clculo o ambas cosas a la vez.
B. Consulta de un Archivo

Es la operacin que permite al usuario acceder al archivo de datos para
conocer el contenido de uno, varios o todos los registros.
C. Actualizacin de un archivo

Es la operacin que permite tener actualizado (puesto al da) el archivo, de tal modo que sea posible realizar las siguientes operaciones con sus registros:
Consulta del contenido de un registro.
Insercin de un registro nuevo en el archivo.
Supresin de un registro existente
Modificacin de un registro
D. Clasificacin de un Archivo
Una operacin muy importante en un archivo es la clasificacin u ordenacin. Esta clasificacin se realizar de acuerdo con el valor de un campo especfico, pudiendo ser ascendente (creciente) o descendente (decreciente): alfabtica
o numrica.
E. Reorganizacin de un archivo

Las operaciones sobre archivos modifican la estructura inicial o la ptima de un archivo. Lo ndices, enlaces (punteros), zonas de sinnimos, zonas de desbordamiento, entre otros, se modifican con el paso
del tiempo, lo que hace a la operacin de acceso al registro cada vez
ms lenta.

La reorganizacin suele consistir en la copia de un nuevo archivo a
partir del archivo modificado, a fin de obtener una nueva estructura lo
ms ptima posible.
F. Destruccin de un archivo

Es la operacin inversa a la creacin de un archivo. Cuando se destruye
(anula o borra) un archivo, ste ya no se puede utilizar y por consiguiente no se podr acceder a ninguno de sus registros.

55

G. Reunin, fusin de un archivo



Reunin: Esta operacin permite obtener un archivo a partir de otros
varios.

Fusin: Se realiza una fusin cuando se renen varios archivos en
uno solo, intercalndose unos en otros, siguiendo unos criterios determinados.
H. Rotura/ estallido de un archivo

Es la operacin de obtener varios archivos a partir de un mismo archivo
inicial.
I. Abrir un archivo

La accin de abrir un archivo es permitir al usuario localizar y acceder a
los archivos que fueron creados anteriormente.

La diferencia esencial entre una instruccin de abrir un archivo y crear
un archivo reside en que el archivo no existe antes de utilizar crear y se
supone que debe existir antes de utilizar abrir.
J. Cerrar archivo

El propsito de la operacin de cerrar un archivo es permitir al usuario
cortar el acceso o detener el uso del archivo, permitiendo a otros usuarios acceder al archivo. Para ejecutar esta funcin, el sistema de tratamiento de archivos slo necesita conocer el nombre del archivo que se
debe cerrar, y que previamente deba estar abierto.
Mantenimiento de archivo
La operacin de mantenimiento de un archivo incluye todas las operaciones
que sufre un archivo durante su vida y desde su creacin hasta su eliminacin o
borrado.
El mantenimiento de un archivo consta de dos operaciones diferentes: actualizacin y consulta.
La actualizacin es la operacin de eliminar o modificar los datos ya existentes, o bien introducir nuevos datos. En esencia, es la puesta al da de los datos del
archivo. Las operaciones de la actualizacin son: altas, bajas y modificaciones.
En cambio, las operaciones de consulta tienen como finalidad obtener informacin total o parcial de los datos almacenados en un archivo y presentarlos
56

en dispositivos de salida: pantalla o impresora, bien como resultados o como


listados.
Por lo tanto, todas las operaciones de mantenimiento de archivos suelen
construir mdulos independientes del programa principal y su diseo se realiza
con subprogramas (subrutinas o procedimientos especficos).
Altas: consiste en la adicin de un nuevo registro. En un archivo de empleados, un alta consistira en introducir los datos de un nuevo empleado. Para situar
correctamente un alta se deber conocer la posicin donde se desea almacenar el
registro correspondiente: al principio, en el interior o al final de un archivo.
Bajas: es la accin de eliminar un registro de un archivo. La baja de un registro se puede presentar de dos formas distintas: indicacin del registro especfico
que se desea bajar o bien visualizar los registros del archivo para que el usuario
elija el registro a borrar. En esta operacin la baja de un registro puede ser lgica
o fsica. Una baja lgica supone el no borrado del registro en el archivo, la cual
se manifiesta en un determinado campo del registro con una bandera, indicador o
flag- carcter *, $, entre otros, o bien con la escritura o rellenado de espacios en
blanco en el registro especfico.
En cambio, una baja fsica implica el borrado y desaparicin del registro de
modo que se crea un nuevo archivo que no incluye al registro dado de baja.
Modificaciones: consiste en la operacin de cambiar total o parcialmente el
contenido de uno de sus registros. Esta fase es tpica cuando cambia el contenido
de un determinado campo de un archivo; por ejemplo, la direccin o la edad de
un empleado.
La forma prctica de modificar un registro es la visualizacin del contenido de sus campos; para ello se debe elegir el registro o registros a modificar. El
proceso consistente en la lectura del registro, modificacin de su contenido y
escritura, total o parcial del nmero.
Consulta: tiene como finalidad visualizar la informacin contenida en el archivo, de un modo completo o bien, de modo parcial. Estas operaciones deben
contemplar diversos aspectos que faciliten la posibilidad de conservacin de datos. Los aspectos ms interesantes a tener en cuenta son:
Opcin de visualizacin en pantalla o listado en impresora
57

Detencin de la consulta a la voluntad del usuario.


Listado por registros o campos individuales o bien listado total del
archivo (en este caso deber existir la posibilidad de impresin de
listados, con opciones de saltos de pgina correctos).
Operaciones sobre registros
Un registro es un conjunto organizado de datos del mismo o diferente tipo,
que estn relacionados entre s por contener informacin relativa a una entidad
particular y superior, de la que forman parte y los unifica.
Los registros estn compuestos por campos. Un campo es una unidad mnima de informacin, dentro del registro, independiente de las dems. Representa
un concepto global en la finalidad unitaria del registro y se caracteriza por el tipo
de datos asociados y el tamao de memoria que necesita para su almacenamiento.
El campo se puede dividir en subcampos.
Para distinguir algunos registros que contienen los mismos campos se recurre
a un campo que contiene informacin nica o diferente que se le llama clave.
Tipos de Registros
Registro Lgico. Cada uno de los componentes de un archivo que posee una
estructura para almacenar informacin referente a un tema general del archivo.
Diseado por el programador.
Registro Fsico. Informacin que el sistema puede transferir como una unidad, en una sola operacin de entrada o salida. Registros segn la longitud de sus
campos:

58

Registros de Longitud Fija. Su tamao no vara. En cuanto a su estructura interna, el registro puede tener el mismo nmero de campos
de igual longitud cada uno, o diverso nmero de campos de diferentes longitudes. En ambos casos la suma de las longitudes de los
campos es la misma para cada registro.
Registros de Longitud Variable. Su tamao vara de un registro a
otro. Su longitud variable puede estar determinada por un valor
mximo o tambin sin ninguna limitacin. Entre las agrupaciones
estructuradas de registros se tienen los archivos de datos y las bases
de datos.

Operaciones sobre Registros


Aqu se analizan las operaciones que solo afectan a algunos registros. Todas
estas operaciones necesitan la operacin de bsqueda como preliminar para localizar los registros deseados.
Recuperacin (Consultas y Listados). Consiste en acceder a los registros de
un archivo para obtener una informacin determinada, almacenada en el.

Consultas: Se accede a uno o varios registros determinados de un archivo y se visualiza el contenido de sus campos, por impresora o pantalla.
Listados: La visualizacin de la informacin es una lista ordenada.
Actualizacin o Mantenimiento. Consiste en introducir nuevos datos en el
archivo o en eliminar o modificar los ya existentes.


Inserciones: Se introducen uno o varios registros en un archivo, ya creado, al final o en cualquier lugar del mismo.
Borrados: Se eliminan uno o varios registros del archivo, borrando su
contenido definitivamente o prohibiendo su acceso.
Modificaciones: Consiste en cambiar los datos de uno o varios campos
de cualquier registro de archivo.

59

Captulo 3
Organizacin y manejo de archivos

Objetivo
Examinar las limitaciones y ventajas de los mtodos de clasificacin
y recuperacin de informacin en los archivos.

Plan general del captulo


3.1 Definicin de clases para manejo de archivos
3.2 Organizacin de archivos
3.2.1 Secuencial, estructura y operaciones
3.2.2 Directa, estructura y operaciones
3.2.3 Indexada, estructura y operaciones
3.3 Organizacin basada en listas

3.1 Definicin de clases para el manejo de archivos


Todos los lenguajes de programacin tienen alguna forma de interactuar con
los sistemas de archivos locales y Java no es una excepcin. El procesamiento de archivos es una de las herramientas ms importantes que debe tener un
lenguaje para soportar las aplicaciones comerciales, que generalmente procesan
cantidades masivas de datos persistentes. Java tiene poderosas caractersticas de
procesamiento de archivos y flujos de entrada/salida, las cuales permiten a un
programa leer y escribir bytes en memoria, en archivos y a travs de conexiones
de red.
Archivos
Java considera a cada archivo como un flujo secuencial de bytes. Cada sistema operativo proporciona un mecanismo para determinar el fin de un archivo,
bien sea con un marcador de fin de archivo o la cuenta de bytes totales. Antes
de realizar acciones sobre un archivo, se requiere un poco de informacin sobre
ste. La clase File proporciona muchas utilidades, y la obtencin de informacin
bsica relacionadas con archivos.
Creacin de un objeto File
Para crear un objeto File nuevo, se puede utilizar cualquiera de los tres constructores
siguientes:

File miArchivo;
miArchivo = new File( c:\directorio\archivo );
o
miArchivo = new File( c:\directorio,archivo );

63

o
File miDirectorio = new File( c:\directorio );
miArchivo = new File( miDirectorio,archivo );
El constructor utilizado depende a menudo de otros objetos File necesarios
para el acceso. Por ejemplo, si slo se utiliza un archivo en la aplicacin, el primer constructor es el mejor. Si en cambio, se utilizan muchos archivos desde un
mismo directorio, el segundo o tercer constructor sern ms cmodos. Y si el
directorio o el archivo es una variable, el segundo constructor ser el ms til.
Comprobaciones y utilidades
Una vez creado un objeto File, se puede utilizar uno de los siguientes mtodos para reunir informacin sobre el archivo:
- Nombres de archivo
String getName( )
String getPath( )
String getAbsolutePath( )
String getParent( )
boolean renameTo( File nuevoNombre )
- Comprobaciones
boolean exists( )
boolean canWrite( )
boolean canRead( )
boolean isFile( )
boolean isDirectory( )
boolean isAbsolute( )
- Informacin general del archivo
long lastModified( )
long length( )
- Utilidades de directorio
boolean mkdir( )
String [ ] list( )
El siguiente cdigo es una pequea aplicacin que muestra informacin sobre archivos en lenguaje java.

64

import java.io.*;
class InfoArchivo{
public static void main( String args[] ) throws IOException {
File f = new File( C:\\Users\\Ejemplo\\Documents\\Archivos\\nuevo.txt );
System.out.println( Nombre: +f.getName( ) );
System.out.println( Camino: +f.getPath( ) );
if( f.exists( ) ) {
System.out.print( Archivo existente );
System.out.print( (f.canRead( ) ? y se puede Leer : y no se puede
leer ) );

System.out.print( (f.canWrite( ) ? y se puede Escribir : y no
se puede escribir ) );
System.out.println( . );
System.out.println( La longitud del archivo son + f.length( )+
bytes )
}
else
System.out.println( El archivo no existe. );
}
}

Figura 3.1 Programa que muestra informacin sobre un archivo hecho en java

Cuya salida ser:


Nombre: nuevo.txt
Camino: C:\Users\Ejemplo\Documents\Archivos\nuevo.txt
Archivo existente y se puede Leer y se puede Escribir.
La longitud del archivo son 105 bytes
Streams de entrada
Hay muchas clases dedicadas a la lectura de datos desde un archivo, a
continuacin se presenta el esquema de la jerarqua de clases de entrada por
archivo:

65

InputStream
FileInputStream

SecuenceInputStream

ByteArrayInputStream
PipedInputStream
FilterInputStream
DataInputStream
PushbackInputStream

StringBufferInputStream
LineNumberInputStream
BufferedInputStream

Figura 3.2 Jerarqua de clases de entrada por archivo


Objetos FileInputStream

Los objetos FileInputStream tpicamente representan archivos de texto accedidos en orden secuencial, byte a byte. A travs de esta clase se puede elegir
acceder a un byte, varios bytes o al archivo completo.
Apertura de un FileInputStream

Para abrir un FileInputStream sobre un archivo, se le enva al constructor un


String:
FileInputStream miArchivoSt;
miArchivoSt = new FileInputStream( c:\\directorio\\archivo );
o un objeto File:
File miArchivo;
FileInputStream miArchivoSt;
miArchivo = new File( todos.txt );
miArchivoSt = new FileInputStream (miArchivo );
Lectura de un FileInputStream
Una vez abierto el FileInputStream, se puede leer de l mediante el mtodo
read( ) el cual tiene muchas opciones:
int read( )
Lee un byte y devuelve -1 al final del stream.
66

int read( byte b[] )


Intenta leer hasta b.length bytes situndolos en b y devuelve el nmero real
de bytes que se leyeron con xito -1 si se alcanz el final del stream.
int read( byte b[],int offset,int longitud)
Intenta leer el numero de bytes que se indicaron en el parmetro longitud
dentro de b, comenzando por b[offset] y devuelve el nmero de bytes que se
leyeron con xito -1 si se alcanz el final del stream.
Cierre de FileInputStream
Cuando se termina con un archivo, existen dos opciones para cerrarlo: explcitamente, o implcitamente cuando se recicla el objeto.
Para cerrarlo explcitamente, se utiliza el mtodo close( ):
miArchivoSt.close( );
Objetos DataInputStream
Los objetos DataInputStream se comportan como los FileInputStream. Los
streams de datos pueden leer cualquier tipo de datos primitivo de java, como float,
int o char. Generalmente se utilizan DataInputStream con archivos binarios.
Apertura y cierre de DataInputStream
Para abrir y cerrar un objeto DataInputStream, se utilizan los mismos mtodos que para FileInputStream:
DataInputStream miDStream;
FileInputStream miFStream;
// Obtiene un controlador de archivo
miFStream = new FileInputStream ( c:\\directorio\\archivo.dat );
//Relaciona o encadena un archivo de entrada de datos
miDStream = new DataInputStream( miFStream );
// Ahora se pueden utilizar los dos streams de entrada para acceder al archivo
(vea los siguientes ejemplos:)
miFStream.read();
int i = miDStream.readInt( );
67

// Cierra el archivo de datos explcitamente, siempre se cierra primero el


archivo stream de mayor nivel
miDStream.close( );
miFStream.close( );
Lectura de un DataInputStream
Al acceder a un archivo como DataInputStream, se pueden utilizar los mismos mtodos read( ) de los objetos FileInputStream. No obstante, tambin se
tiene acceso a otros mtodos diseados para leer cada uno de los tipos de datos:
byte readByte( )
int readUnsignedByte( )
short readShort( )
int readUnsignedShort( )
char readChar( )
int readInt( )
long readLong( )
float readFloat( )
double readDouble( )
String readLine( )
Cada mtodo leer un objeto del tipo pedido, y en el caso del mtodo String
readLine( ), se marca el final de la cadena con \n, \r, \r\n o con EOF (end of file).
Ejemplo:
Para leer un int:
int numeroSerie;
...
numeroSerie = miDStream.readInt( );
Streams de salida
Lo opuesto a la lectura de datos es la escritura de datos, y de la misma manera que con los streams de entrada, las clases de salida estn ordenadas jerrquicamente de la siguiente manera:

68

OutputStream
FileOutputStream
PipedOutputStream

FilterOutputStream

DataOutputStream
PrintStream

ByteArrayOutputStream

BufferedOutputStream

Figura 3.3 Jerarqua de clases de salida por archivo

A continuacin se examinarn las clases FileOutputStream y DataOutputStream para complementar los streams de entrada que se han visto.
Objetos FileOutputStream
Los objetos FileOutputStream son tiles para la escritura de archivos de texto, para ello se requiere abrir el archivo primeramente para luego escribir en el.
Apertura de un FileOutputStream
Para abrir un objeto FileOutputStream, de la misma manera que con los
stream de entrada, se envan al constructor un String o un objeto File.
Para abrir un FileOutputStream sobre un archivo, se le enva al constructor
un String:
FileOutputStream miArchivoSt;
miArchivoSt = new FileOutputStream( c:\\directorio\\archivo );
o un objeto File:
File miArchivo;
FileOutputStream miArchivoSt;
miArchivo = new File( todos.txt );
miArchivoSt = new FileOutputStream (miArchivo );
Escritura en un FileOutputStream
Una vez abierto el archivo, se pueden escribir bytes de datos utilizando el
mtodo write( ). Como con el mtodo read( ) de los streams de entrada, tenemos
tres posibilidades:
69

void write( int b );


Escribe un byte.
void write( byte b[] );
Escribe todo el array, si es posible.
void write( byte b[],int offset,int longitud );
Escribe longitud bytes en b comenzando por b[offset].
Cierre de FileOutputStream
Para cerrar un stream de salida se puede utilizar el mtodo explcito:
miArchivoSt.close( );
O se puede dejar que el sistema de forma automtica cierre el archivo cuando
se recicle miArchivoSt.
Ejemplo: Almacenamiento de Informacin
El siguiente programa, solicita al usuario una lista de nombres y nmeros
de telfono. Cada nombre y nmero se aade a un archivo situado en una localizacin fija. Para indicar que se ha introducido toda la lista, el usuario especifica
Fin ante la solicitud de entrada del nombre.
El cdigo fuente del programa es el siguiente:
import java.io.*;
class Telefonos {
static FileOutputStream fileDeSalida;
public static final int longLinea = 40; //nmero mximo de caracteres aceptados en cada lnea
private static void leeLinea( byte linea[] ) throws IOException {
int b = 0;
int i = 0;
while( (i < ( longLinea-1) ) && ( ( b = System.in.read( ) ) != \n ) )
linea[i++] = (byte) b;
linea[i] = (byte)0;
}
public static void main( String args[] ) throws IOException {

byte tel[] = new byte[longLinea];
byte nombre[] = new byte[longLinea];
fileDeSalida = new FileOutputStream( telefono.dat );
while( true ) {
System.err.println( Teclee un nombre (Fin termina) );
leeLinea( nombre );
// el ciclo terminar si el nombre capturado es fin
if( fin.equalsIgnoreCase( new String( nombre,0,0,3 ) ) )
break;
// si el nombre capturado es diferente a fin, soliciar el nmero de telefono
System.err.println( Teclee el nmero de telfono );
leeLinea( tel );

70

//escribe en el archivo el telefono


for( int i=0; tel[i] != 0; i++ )
fileDeSalida.write( tel[i] );
fileDeSalida.write( , );
//escribe en el archivo el nombre
for( int i=0; nombre[i] != 0; i++ )
fileDeSalida.write( nombre[i] );
fileDeSalida.write( \r );
fileDeSalida.write( \n );

}
fileDeSalida.close( );

Figura 3.4 Programa que permite cerrar un stream de salida

En la ejecucin del programa se puede observar lo siguiente:

Figura 3.5 Captura de datos para almacenamiento de informacin

Una vez que el usuario ha terminado de teclear la lista, el programa crear un


archivo de salida que contiene los datos antes capturados:

Figura 3.6 Creacin de archivo de salida para almacenamiento de informacin

71

Streams de salida con buffer


Si se trabaja con gran cantidad de datos, o se escriben muchos elementos
pequeos, ser una buena idea utilizar un stream de salida con buffer. Los streams
con buffer ofrecen los mismos mtodos de la clase FileOutputStream, pero toda
salida se almacena en un buffer. Cuando se llena el buffer, se enva a disco con
una nica operacin de escritura; o, en caso necesario, se puede enviar el buffer
a disco en cualquier momento.
Creacin de Streams de salida con buffer
Para crear un stream BufferedOutput, primero se necesita un stream FileOutput normal y posteriormente se aade un buffer al stream:
FileOutputStream miFileStream;
BufferedOutputStream miBufferStream;

// Obtiene un controlador de archivo
miFileStream = new FileOutputStream( c:\\directorio\\archivo );

// Encadena o relaciona un stream de salida con buffer
miBufferStream = new BufferedOutputStream( miFileStream );
Volcado y Cierre de Streams de salida con buffer

Al contrario que los streams FileOutput, cada escritura al buffer no se corresponde con una escritura en disco. A menos que se llene el buffer antes de que
termine el programa, cuando se quiera volcar el buffer explcitamente se debe
hacer mediante una llamada a flush( ):
// Se fuerza para realizar el volcado del buffer a disco
miBufferStream.flush( );

// Cerrar el archivo de datos
miBufferStream.close( );
miFileStream.close( );

Streams DataOutput
Java tambin implementa una clase de salida complementaria a la clase DataInputStream. Con la clase DataOutputStream se pueden escribir datos binarios
en un archivo.
Apertura y cierre de objetos DataOutputStream

72

Para abrir y cerrar objetos DataOutputStream, se utilizan los mismos mtodos que para los objetos FileOutputStream:
import java.io.*;
class InfoArchivo{
public static void main(String args[]) {
try{



String cadena=escribe esta cadena en el archivo dataStream.txt;
DataOutputStream miDataStream;

FileOutputStream miFileStream;
BufferedOutputStream miBufferStream;


// Obtiene un controlador de archivo

miFileStream = new FileOutputStream( C:\\Users\\Ejemplo\\Documents\\Archivos\\dataStream.txt );


// Encadena un stream de salida con buffer (por eficiencia)

miBufferStream = new BufferedOutputStream( miFileStream );


// Encadena un archivo de salida de datos

miDataStream = new DataOutputStream( miBufferStream );


miDataStream.writeBytes(cadena); //escribe en el archivo el contenido de la variable cadena


// Cierra el archivo de datos explcitamente

miDataStream.close( );

miBufferStream.close( );

miFileStream.close( );
}
catch(IOException e){


System.out.println(error en el archivo);
}

}
}

Figura 3.7 Programa para abrir y cerrar objetos con las instrucciones DataOutputStream y FileOutputStream
Escritura en un objeto DataOutputStream
Cada uno de los mtodos write( ) accesibles por los FileOutputStream tambin lo son a travs de los DataOutputStream adems de los mtodos complementarios:
73

void writeBoolean( boolean b );


void writeByte( int i );
void writeShort( int i );
void writeChar( int i );
void writeInt( int i );
void writeFloat( float f );
void writeDouble( double d );
void writeBytes( String s );
void writeChars( string s );
Para las cadenas, se tienen dos posibilidades: bytes y caracteres, la diferencia
radica en que los bytes son objetos de 8 bits y los caracteres lo son de 16. Si las
cadenas que se estn utilizando son caracteres Unicode, se deben escribir con el
mtodo writeChars( ).
Contabilidad de la salida
Otra funcin muy til durante la escritura (salida) es el mtodo size( ), el cual
devuelve el nmero total de bytes escritos en el archivo. Por ejemplo si se anexara
la siguiente lnea System.out.println(miDataStream.size( )); despus de escribir
la cadena en miDataStream, sta visualizara en el nmero de caracteres escritos
con el mtodo write.

3.2 Organizacin de archivos


El soporte es el medio fsico donde se almacenan los datos, existen 2 tipos de
soporte utilizados en la gestin de archivos son:
Soportes secuenciales
Soportes direccionables
Los soportes secuenciales son aquellos en los que los registros de informacin estn escritos unos a continuacin de otros y para acceder a un determinado
registro n, se necesita pasar por los n-1 registros anteriores. La secuencia puede
corresponder al orden fsico de los registros en el archivo (organizacin secuencial) o bien al orden de claves (ascendente o descendente) de los registros (organizacin indexada).
Los soportes direccionables se estructuran de modo que la informacin almacenada se puede localizar directamente por su direccin y no se requiere pasar
74

por los registros precedentes. En estos soportes los registros deben poseer un
campo clave los diferencie del resto de los registros del archivo. Una direccin
en un soporte direccionable puede ser un nmero de pista y un nmero de sector
en un disco.
Un ejemplo tpico de los soportes direccionables son los discos magnticos,
aunque tambin pueden actuar como soporte secuencial.
Segn las caractersticas del soporte empleado y el modo en que se han organizado los registros, se consideran dos tipos de acceso a los registros de un
archivo:
Acceso secuencial
Acceso directo
El acceso secuencial implica el acceso a un archivo segn el orden de almacenamiento de sus registros, uno tras otro, este modo tiene que ver con la manera
en que son accedidos los datos sin importar el tipo de almacenamiento que se
haya utilizado (secuencial o direccionable). En cambio, el acceso directo implica
el acceso a un registro determinado, y por tanto omite la consulta de los registros
precedentes. Este tipo de acceso slo es posible si la informacin se encuentra
almacenada en soportes direccionables.
La organizacin de un archivo define la forma en la que los registros se
disponen o se colocan en el soporte de almacenamiento, o tambin se define la
organizacin como la forma en que se estructuran los datos en un archivo. En
general, se consideran tres organizaciones fundamentales:
Organizacin secuencial
Organizacin directa o aleatoria
Organizacin secuencial indexada

3.2.1 Secuencial, estructura y operaciones


Un archivo con organizacin secuencial es una sucesin de registros almacenados consecutivamente en el soporte externo, de tal modo que para acceder a un
registro i dado, es obligatorio pasar por todos los i-1 elementos que le preceden.
Los registros se graban consecutivamente cuando el archivo se crea y se debe
acceder consecutivamente cuando se leen dichos registros.
75

Acceso secuencial
Registro 1

Registro 2

Registro 3

Registro 4

Registro n
Final de Archivo

Inicio del Archivo

Figura 3.8 Archivo con organizacin secuencial

Para este tipo de organizacin


El orden fsico en que fueron grabados (escritos) los registros es el
orden de lectura de los mismos.
Todos los tipos de dispositivos de memoria auxiliar soportan la organizacin secuencial.
Los archivos organizados secuencialmente contienen un registro
particular (el ltimo) que contiene una marca de fin de archivo
(EOF o bien FF).

3.2.2 Directa, estructura y operaciones


En un archivo con esta organizacin, tambin denominada relativa, las informaciones se colocan y se acceden aleatoriamente mediante su posicin, es
decir, indicando el lugar relativo que ocupan dentro del conjunto de posiciones
posibles. Un archivo est organizado en modo directo cuando el orden fsico no
se corresponde con el orden lgico.
Se utiliza esta forma de organizacin cuando existe la necesidad de acceder
a registros individuales directamente. Esta organizacin tiene la ventaja de que
se pueden leer y escribir registros en cualquier orden y posicin, adems de ser
rpidos de acceso a la informacin que contienen. Es importante comprender que
el ordenamiento lgico de los registros no necesita tener ninguna relacin con su
secuencia fsica. Los registros no necesariamente aparecen fsicamente ordenados de acuerdo al valor de sus llaves.
Acceso Directo

Registro 2
Posicin 1

Posicin 2

Registro 1

Registro 5

Posicin 3

Posicin 4

Posicin 5

Figura 3.9 Archivo con organizacin directa

76

Tiene el inconveniente de que se necesita programar mediante una


funcin de mapeo, la relacin existente entre el contenido de un registro
y la posicin fsica que ocupa y su desventaja radica (dependiendo de la
funcin) en que diferentes valores de llaves pueden presentar una misma
direccin, es decir, se presentan colisiones. Otra desventaja puede ser el
desperdicio de espacio debido a la distribucin al azar de los registros por
la posible existencia de huecos libres dentro del soporte.
Las condiciones para que un archivo sea de organizacin directa son:
Almacenado en un soporte direccionable
Los registros deben contener un campo especfico denominado clave que identifica cada registro de modo nico; es decir, dos registros
distintos no pueden tener un mismo valor de clave.
Existencia de una correspondencia entre los posibles valores de la
clave y las direcciones disponibles sobre el soporte.
El principal soporte direccionable normalmente es un disco, donde cada posicin se localiza por su direccin absoluta, que en el caso del disco suele venir
definida por dos parmetros, nmero de pista y nmero de sector o bien por tres
parmetros pista, sector y nmero de cilindro; un cilindro i es el conjunto de pistas de nmero i de cada superficie de almacenamiento de la pila.
En la prctica el programador no gestiona directamente direcciones absolutas, sino direcciones relativas respecto al principio del archivo (este es un proceso
transparente), por tanto, la manipulacin de direcciones relativas permite disear
el programa con independencia de la posicin absoluta del archivo en el soporte,
lo que el programador hace, es crear una relacin perfectamente definida entre
la clave indicativa de cada registro y su posicin fsica dentro del dispositivo de
almacenamiento.

3.2.3 Indexada, estructura y operaciones


Esta organizacin tiene como objetivo fundamental organizar de manera
efectiva una coleccin de registros para facilitar y agilizar su acceso. La informacin almacenada y basada en esta organizacin consta de dos archivos, un
archivo ndice y un archivo de datos.
77

En los archivos indexados pueden verse como un conjunto de registros, los


que pueden accesarse mediante una clave.
Este tipo de archivos consta de 2 partes:
rea principal
rea de ndices
En el rea principal se almacenan los registros, con los datos, al momento
de crear el archivo. El archivo es creado secuencialmente, es decir, se escriben los
registros en el archivo primario en una secuencia indicado por el ordenamiento
previo de las claves. Esta rea incluye a todos los campos de cada registro.
Mientras tanto, el rea de ndices es creada por el sistema, y contiene tantos
registros como registros existan en el rea principal. Cada registro del rea de
ndices consta de 2 campos: clave de los registros y un puntero al registro en el
rea principal.
Archivo de ndices
Clave

Direccin

15

24

36

54

.
.
.
240

Figura 3.10 Archivos con organizacin indexada


Un archivo est organizado en esta forma si:
Cada registro contiene un campo clave
Los registros estn almacenados en un soporte direccionable
El ndice contienen la clave del registro y la direccin de acceso al registro

78

Entre las principales ventajas se encuentran un rpido acceso y el sistema de


gestin de archivos se encarga de relacionar la posicin de cada registro con su
contenido mediante la tabla de ndices. Mientras que sus desventajas principales
estn el desaprovechamiento del espacio por quedar huecos intermedios cada vez
que actualiza el archivo y que se requiere espacio adicional para el rea de ndices.
Los soportes que se utilizan para esta organizacin son los que permiten el
acceso directo. Los soportes de acceso secuencial no pueden utilizarse, ya que no
dispone de direcciones para sus posiciones de almacenamiento.
Listas

3.3 Organizacin basada en listas

Las listas son una sucesin de cero o ms elementos, las cuales se clasifican
en varios tipos: enlazadas, no enlazadas, ordenadas y no ordenadas.
La diferencia que existe entre las listas enlazadas y las no enlazadas es que
las enlazadas utilizan punteros, es decir, asignacin dinmica de memoria, lo que
optimiza la gestin de la misma. Una lista no enlazada es un simple array, y por
lo tanto es un bloque contiguo de memoria, mientras que una lista enlazada es un
conjunto de nodos que no necesariamente tienen porque ocupar posiciones contiguas de memoria, as mismo, la diferencia entre listas ordenadas y no ordenadas
es obvia, las ordenadas mantienen cierto orden entre sus elementos.
Una lista enlazada es una sucesin de nodos en la que a partir de un nodo se
puede acceder al que ocupa la siguiente posicin en la lista. Esta caracterstica
nos indica que el acceso a las listas es secuencial y no indexado, por lo que para
acceder al ltimo elemento de la lista hay que recorrer los n-1 elementos previos
(n es el tamao de la lista).
Para que un nodo pueda acceder al siguiente y la lista no se rompa en varias
listas, cada nodo tiene que tener un puntero que guarde la direccin de memoria
que ocupa el siguiente elemento. De esta forma un nodo se podra representar
esquemticamente as:
informacin

puntero

Figura 3.11 Representacin grfica de un nodo

79

En el campo informacin se almacena el objeto a guardar y el puntero mantendr la conexin con el nodo siguiente. De esta forma al ir aadiendo nodos se
ira formando una sucesin de nodos encadenados mediante punteros.

informacin

puntero

informacin

puntero

informacin

puntero

Figura 3.12 Almacenamiento de datos en un nodo

Operaciones bsicas de las listas


En toda estructura de datos hay dos operaciones que sobresalen por encima
del resto: insertar y borrar. Estas dos operaciones aparecern en toda estructura
de datos, y aunque el nombre puede variar o con una funcionalidad ligeramente
diferente, en esencia la filosofa es la misma: proporcionar unas operaciones para
la construccin de la estructura de datos.
Insertar. La operacin insertar consiste en la introduccin de un nuevo elemento en la lista.
En una lista no ordenada no es necesario mantener ningn orden, por lo tanto
la insercin de elementos se puede realizar en cualquier lugar de la lista, al principio, al final o en una posicin aleatoria. Generalmente se realiza la insercin de
tal forma que la complejidad temporal sea mnima, es decir, que sea una operacin sencilla para que se realice en el menor tiempo posible. La operacin ms
sencilla depende de la implementacin de la estructura de datos, en unos casos
puede ser la insercin al inicio, en otros la insercin al final.
Borrar. La operacin borrar consiste en la eliminacin de la lista de un elemento concreto.
El elemento a borrar ser escogido por el programador. La eliminacin en
una lista no conlleva ningn trabajo adicional ms que el propio de la eliminacin del elemento en s. Para borrar un elemento cualquiera habra que realizar
un recorrido secuencial de la lista hasta encontrar el nodo buscado y una vez
localizado reestructurar los punteros para saltarse el nodo a borrar y as poder
eliminarlo.
80

Otras operaciones
A partir de estas dos operaciones bsicas cada lista puede presentar muchas
operaciones diferentes, algunas de ellas son las siguientes adems de las dos bsicas anteriores.


Tamao: Esta operacin suele informar sobre el nmero de elementos que tiene
en ese instante la lista.
Buscar: Comprueba si existe un determinado elemento en la lista.
Recorrer lista: Recorre toda la lista, realizando una operacin en cada nodo. Por
ejemplo, mostrar el contenido por pantalla.

Listas ordenadas
Las listas ordenadas con exactamente lo mismo que las listas no ordenadas
excepto en una caracterstica adicional, sus elementos mantienen un orden. El
orden que mantienen los elementos de una lista ordenada depende de la implementacin de la lista. Segn las necesidades del programador la lista puede estar
ordenada alfabticamente, ordenada por nmeros, o por cualquier clave ordinal,
es decir, que mantenga cierto orden.
Operaciones bsicas de las listas ordenadas
Como en el caso de las listas no ordenadas hay dos operaciones fundamentales, insertar y borrar. El borrado de un elemento es idntico en el caso de una
lista ordenada que en una lista no ordenada, la diferencia consiste en la operacin
de insercin.
Insertar
El procedimiento de aadir un nuevo elemento a una lista ordenada es ligeramente ms complejo que en una lista desordenada. Cuando una lista es ordenada
hay que mantener el orden siempre, para ello hay que tener especial cuidado al
modificar la estructura de datos.
El procedimiento para insertar un elemento es:

Buscar el lugar adecuado en la lista para el elemento a insertar.


Efectuar la insercin en el lugar buscado.

El proceso de bsqueda se suele realizar generalmente mediante una bsqueda secuencial. De esta forma se recorrer la lista empezando por el inicio hasta
encontrar el lugar adecuado para llevar a cabo la insercin.
81

Supngase se tiene la siguiente lista:

(a)
Y se desea insertar el elemento 7, la lista sufrir los siguientes cambios:
Paso 1: Bsqueda secuencial de la posicin adecuada para insertar el elemento nuevo en la lista. La bsqueda es para llegar al elemento 9, ya que es
mayor que el elemento a insertar, y por lo tanto, el elemento 9, debe estar en una
posicin posterior al nuevo elemento.

Anterior

Actual

(b)

Seguidamente, para poder realizar la insercin hay que recorrer la lista manteniendo dos referencias, una al nodo actual y otra al nodo anterior.
Paso 2: Insercin del elemento 7 en la posicin entre los elementos 5 y 9.
Para realizar esta operacin se reestructuran los punteros del nodo que contiene
al elemento 5 y del nuevo nodo. El nuevo nodo pasa a contener una referencia
al nodo actual (elemento 9), mientras que el nodo anterior (elemento 5), pasa a
apuntar al nuevo nodo.

(c)

Figura 3.13 Insercin de un elemento nuevo en una lista ordenada (a) Lista desordenada (b) Bsqueda secuencial de la posicin adecuada para insertar el elemento
nuevo en la lista (c) Insercin del nuevo elemento

82

Borrar
La operacin borrar en listas ordenadas es igual que la operacin borrar en
listas no ordenadas, ya que la eliminacin de un elemento nunca violar la condicin de orden de esa lista, siempre y cuando la lista estuviese realmente ordenada
antes de la eliminacin.
Otras operaciones
Como en el caso de listas no ordenadas las operaciones adicionales que pueden incorporar las listas ordenadas es muy variado, pero tambin como en el caso
anterior las dos operaciones principales son las descritas anteriormente. Sin embargo hay una diferencia en la operacin de bsqueda en las listas ordenadas, ya
que en estas estructuras se puede aplicar un algoritmo ms rpido que la bsqueda
secuencial aplicada en las listas no ordenadas.
Este tratamiento es la bsqueda binaria, que consiste en dividir la lista en dos
partes, comprobando en cul de ellas debera estar el elemento (si existiese). Una
vez localizada la mitad en la que se encuentra el objeto buscado se realizara la
misma operacin recursivamente sobre esa mitad hasta que se encuentre el elemento en el caso de que efectivamente exista, o hasta que el nmero de elementos
de la mitad resultante sea 0 para el caso de que el elemento no exista.
Pilas
Las pilas son un tipo especial de listas con una poltica de insercin y borrado de elementos particular. Las pilas tienen una forma especial para insertar y
de eliminar los elementos por ser una estructura de datos LIFO, Last In First Out
(ltimo en entrar, primero en salir), lo cual quiere decir que en una pila siempre
se extrae el elemento que menos tiempo lleva en la estructura.
Un ejemplo de pilas ms tpico, es una pila (altero) de platos, donde para
aadir un nuevo plato se coloca en la cima (parte superior) y para quitar uno de la
pila, se toma el de la parte de arriba tambin.
Operaciones bsicas de las pilas
Insertar
Esta operacin es comnmente denominada push, la insercin en una pila
se realiza en su cima, considerando la cima como el ltimo elemento insertado.
83

Esta es una de las particularidades de las pilas, mientras el resto de estructuras de


datos lineales se representan grficamente en horizontal, las pilas se representan
de forma tpica verticalmente, por esta razn es por lo que se le denomina cima
de la pila al ltimo elemento de la estructura de datos.
Las operaciones a realizar para la insercin en la pila son muy simples: hacer
que el nuevo nodo apunte a la cima anterior y definir el nuevo nodo como cima
de la pila.
Obsrvese el siguiente ejemplo:
31
6
27
2
4

cima

(a)

Al insertar un nuevo elemento, la pila resultante sera:


cima

8
31
6
27
2
4

(b)
Figura 3.14 Insercin de un elemento nuevo en una pila (a) Pila con 5 elementos
almacenados (b) Insercin del nuevo elemento en la pila
Borrar
Esta operacin es normalmente conocida como pop. Cuando se elimina un elemento
de la pila, el elemento que se borra es el elemento situado en la cima de la pila, es decir,
el que menos tiempo lleva en la estructura.

Las operaciones a realizar son muy simples: borrar el elemento de la cima y


modificar el puntero de la cima.
84

cima

8
31
6
27
2
4

Figura 3.15 Eliminacin de un elemento de la pila

Utilizacin de las pilas


Las pilas son muy usadas en procedimientos recursivos tales como algoritmos de backtracking, evaluacin de expresiones algebraicas y recorridos por
niveles de rboles.
Colas
Las colas son una forma especial de lista. En esta estructura, los nodos de
las colas tambin estn enlazados entre s como las listas y se caracterizan por la
forma de aadir y de eliminar elementos.
Una cola es una estructura de datos FIFO, acrnimo de First In First Out, o
lo que es lo mismo, el primer elemento en entrar es el primero en salir, lo cual implica que en las colas siempre se insertan elementos por el final (cola) y siempre
se extraen elementos por el principio (cabeza).
Los ejemplos tpicos de colas son las filas de personas en un banco o para
la compra de boletos para el cine. En esta cola humana el primero en llegar es el
primero en marcharse, y de forma similar se comportan las colas informticas.
Insertar

La insercin en las colas se realiza al final de la estructura. Para llevar a cabo


esta operacin nicamente hay que reestructurar un par de punteros: el ltimo
nodo debe pasar a apuntar al nuevo nodo (que en ese momento ser el ltimo) y
el nuevo nodo pasa a ser la nueva cola de la cola.
Cabeza
(inicio)

Cola (final)

(a)
85

Observe el ejemplo siguiente:


Si se aadiera un elemento nuevo, la cola resultante sera:
Cabeza
(inicio)

Cola
(final)

(b)
Figura 3.16 Insercin de un elemento nuevo en una cola (a) Cola con 3 elementos
almacenados (b) Insercin del nuevo elemento en una cola
Borrar

El borrado es una operacin muy simple en las colas, sta operacin debe
extraer la cabeza de la cola, ya que es el elemento que ms tiempo lleva en la
estructura. Para llevar a cabo esta operacin nicamente hay que extraer el elemento situado en la cabeza de la cola y avanzar el puntero cabeza una posicin,
para que de esta forma la nueva cabeza sea el segundo elemento que ms tiempo
lleva en la cola, como se visualiza en la siguiente grfica
Cabeza
(inicio)

Cola
(final)

(c)
Figura 3.17 Eliminacin de un elemento de una cola

Una diferencia importante entre las colas y las listas, es que en las colas no
se puede borrar un elemento cualquiera, se borra siempre el que est en la cabeza
de la cola.
Utilizacin de las colas
El mbito de utilizacin de las colas es muy amplio, pero para citar algunos,
se tiene el control del proceso de tareas en un sistema operativo o simulaciones
del sistema de control areo de un aeropuerto. Esta estructura asegura un tratamiento justo de los objetos que contienen, ya que siempre se extraer el elemento
que ms tiempo lleva en la misma.
86

Captulo 4
Bsqueda y clasificacin externa

Objetivo
Examinar los mtodos principales para la clasificacin y acceso en archivos
grandes.

Plan general del captulo


4.1 Bsqueda secuencial
4.2 Bsqueda binaria
4.3 Bsqueda indizada
4.4 0rdenamiento por insercin binaria
4.5 0rdenamiento por mezcla (merge sort)
La bsqueda es una de las operaciones ms importantes en el procesamiento
de la informacin, y permite la recuperacin de datos previamente almacenados.
Cuando el almacenamiento se encuentra en memoria principal la bsqueda se
califica de interna, y si se encuentra en dispositivos externos se califica como
externa.

4.1 Bsqueda secuencial


La bsqueda secuencial consiste en recorrer y examinar cada uno de los elementos hasta alcanzar el final de la lista de datos. Si en algn lugar de la lista se
encontrara el elemento buscado, el algoritmo deber informar sobre la o las posiciones donde ha sido localizado. Este algoritmo es posible optimizarlo cuando:

nicamente se desea obtener la posicin donde se localiza el primer elemento buscado. Esto se logra, mediante el empleo de una variable lgica
que evite seguir buscando una vez que el dato ha sido encontrado.
La lista se encuentra ordenada por ejemplo de manera ascendente -,
la bsqueda se detendr cuando el elemento examinado en la lista sea
mayor al que se busca, a diferencia, en las listas desordenadas, en las
cuales bsicamente se debe recorrer la lista de izquierda a derecha hasta
que se encuentre el elemento buscado o bien se haya llegado al final (lo
que ocurra primero).
Normalmente cuando una funcin de bsqueda concluye con xito, interesa
conocer en qu posicin fue encontrado el elemento como lo puede ver en los
prximos algoritmos.
El algoritmo de bsqueda secuencial en un arreglo (una lista) desordenado es
el que se explica a continuacin:
89

SECUENCIAL DESORDENADO (v, n, x)


{Este algoritmo busca secuencialmente el elemento x en el arreglo desordenado v,
de n elementos}
// i es una variable de tipo entero y bandera es una variable de tipo booleano}
ib1
bandera b falso
repetir mientras ( (i n) y ( bandera = falso) )
si ( v [ i ] = x ) entonces
bandera b verdadero
si no
i b i+1
fin_repetir
si ( bandera = verdadero ) entonces

escribir el elemento est en la posicin i
si no

escribir el elemento no est en el arreglo
Figura 4.1 Programa que busca secuencialmente un elemento x en un arreglo
desordenado

Son dos posibles resultados a obtener por este algoritmo: la posicin en la


que encontr al elemento, o un mensaje que indica que el elemento no existe en
el arreglo. Si hubiera dos o ms ocurrencias del mismo valor, se encuentra la primera de ellas, pero pudiera realizarse un ajuste al algoritmo si se desea obtener
todas las posiciones donde se encuentra el dato buscado.
El algoritmo anterior tambin recibe el nombre de secuencial con bandera
debido a que utiliza una variable auxiliar boolena en la condicin para detener
el ciclo. El empleo de esta variable evita seguir buscando una vez que el dato ha
sido encontrado, con la ventaja de que disminuye el nmero de comparaciones a
realizar y por lo tanto aumenta la eficiencia del algoritmo.
La bsqueda secuencial en arreglos ordenados es similar al caso anterior, sin
embargo, el orden que existe entre los elementos del arreglo permite incluir una
nueva condicin que hace ms eficiente el algoritmo.

90

SECUENCIAL ORDENADO (v, n, x)


{Este algoritmo busca secuencialmente al elemento x en el arreglo ordenado v con
n componentes. El arreglo v est ordenado ascendentemente, es decir: v[ 1 ] v[ 2 ]
v[ n ]}
{i es una variable de tipo entero y bandera es una variable de tipo booleano}
ib1
bandera b falso
repetir mientras ( (i n) y (bandera = falso) y (x v[ i ] ) )
si ( v[ i ] = x ) entonces
bandera b verdadero
si no
i b i+1
fin_repetir
si ( bandera = verdadero ) entonces

escribir el elemento est en la posicin i
si no

escribir el elemento no est en el arreglo
Figura 4.2 Programa que busca secuencialmente un elemento x en un arreglo
ordenado

Esta nueva condicin permite controlar la bsqueda: el elemento buscado


debe ser mayor o igual que el elemento en curso para proseguir con la bsqueda.
Cuando el valor buscado no est en el arreglo, se detendr la bsqueda al dejar
de cumplirse la condicin x v[ i ], debido a que si x no se encontr hasta el momento, tampoco se encontrar entre los restantes elementos.
El mtodo de bsqueda secuencial tambin puede aplicarse a listas ligadas y
consiste en recorrer la lista, nodo por nodo, detenindose cuando haya encontrado el valor buscado, o cuando haya revisado todos los nodos de la lista. El orden
en el cual puede recorrerse la lista depende de las caractersticas de la misma. Es
decir, si es simple o doblemente ligada, y adems si es circular.
A continuacin se muestra un algoritmo de bsqueda secuencial en listas
ligadas.

91

SECUENCIAL CON LISTAS (p, x)


{Este algoritmo busca secuencialmente al elemento x en la lista cuyo nodo inicial
est apuntado por p}
{q es una variable de tipo puntero y bandera es una variable de tipo booleano}
qbp
bandera b falso
repetir mientras ( (q nil) y (bandera = falso) )
si ( q^.info = x ) entonces
bandera b verdadero
si no
qb q^.liga
fin_repetir
si ( bandera = verdadero ) entonces

escribir El elemento est en la lista
si no

escribir El elemento no est en la lista
Figura 4.3 Programa que busca secuencialmente un elemento x haciendo uso
de punteros

4.2 Bsqueda binaria


La bsqueda binaria consiste en dividir el intervalo de bsqueda (la lista) en
dos partes, comparando el elemento buscado con el elemento central. En caso de
no ser iguales se redefinen los extremos del intervalo (segn el elemento central
sea mayor o menor que el buscado) disminuyendo el espacio de bsqueda a la
mitad. Este proceso es repetitivo y concluye cuando el elemento es encontrado,
o bien cuando el intervalo de bsqueda se anula. Esta bsqueda funciona nicamente para arreglos ordenados y como con cada iteracin el espacio de bsqueda
se reduce a la mitad, tambin el nmero de comparaciones a realizar disminuye
notablemente. Esta disminucin resulta significativa cuanto ms grande sea el
tamao del arreglo.
A continuacin se presenta el algoritmo de bsqueda binaria.

92

BINARIA (v, n, x)
{Este algoritmo busca al elemento x en el arreglo ordenado v de n elementos}
no}

{izq, cen y der son variables de tipo entero y bandera es una variable de tipo boolea-

izq b 1
der b n
bandera b falso
repetir mientras ( (izq der) y ( bandera = falso ) )
cen b parte entera (( izq + der ) / 2)
si ( v[ cen ] = x ) entonces
bandera b verdadero
si no //{se debe redefinir intervalo de bsqueda}
if ( x > v[ cen ] ) entonces
izq b cen +1
si no
der b cen-1
fin_repetir
si ( bandera = verdadero )
entonces
escribir el elemento est en la posicin cen
si no
escribir el elemento no est en el arreglo

Figura 4.4 Programa de una bsqueda binaria

4.3 Bsqueda Indizada


Mantener grandes archivos de datos ordenados es muy costoso, ya que requiere mucho tiempo de procesador, afortunadamente, existe una alternativa ms
eficiente que consiste en indexarlos (indicarlos), y para ello normalmente se suele
generar un archivo auxiliar de ndices. Existen varios mtodos, y a continuacin
se examinarn algunos. El ms sencillo es crear un archivo plano que slo contenga registros con dos campos: el campo o la expresin por la que se desea ordenar el archivo, y un campo con un index que almacene la posicin del registro
en el archivo de datos.
93

Por ejemplo, supngase que se tiene un archivo de datos con la siguiente


estructura de registro:
Archivo de datos:
crn

clave

materia

nombre

apellido

(a)
Donde los campos anteriores almacenan:
crn, el campo llave para cada registro
clave, la clave que distingue a una materia o asignatura (puede existir una
misma asignatura misma clave y nombre de materia - pero el crn debe ser nico
para cada registro)
materia, nombre de la materia
nombre, nombre del profesor asignado a dicho crn
apellido, apellido del profesor asignado a dicho crn

Si en este archivo se desea buscar un registro a partir del crn y no se encuentra ordenado por ese campo, obligatoriamente se deben leer todos los registros
del archivo hasta encontrar el que se busca, y en el peor de los casos, si el crn no
est almacenado, infructuosamente se deber leer todos los registros que existan
en el archivo.
Sin embargo, si se tiene el archivo ordenado por ese campo permitir aplicar
un algoritmo de bsqueda, haciendo que la localizacin del registro sea de una
manera ms eficiente.
La bsqueda indizada propone como solucin crear un archivo de ndices,
cada registro de este archivo tendr la siguiente estructura:
Archivo de ndice:

crn

indice
(b)

El archivo de ndices se crear a partir del archivo de datos, asignando a


cada registro el campo crn y el nmero de registro correspondiente (por citar
un ejemplo).
94

Suponga la siguiente informacin para el archivo de datos:


Crn

clave

materia

Nombre

apellido

001

13925

AD117

Administracin Estratgica

Ramn

Mares Sanchez

002

14020

AD120

Administracin II

Alejandra

Manzo Castaeda

003

13937

AD120

Administracin II

Lucio

Guzman Partida

004

13816

AD133

Poltica y Gestin Publica

Jazmn

Hurtado Crdenas

005

13956

AD145

Comportamiento Organizacional

Ernesto

Burgos Herrera

006

14260

CC200

Programacin Orientada a Objetos

Jorge

Sandoval Prez

007

14100

CJ111

Derecho Laboral

Juan Manuel

Sandoval Moreno

008

13936

CO104

Bases de Datos Distribuidas

Jose

Chvez Nez

009

14195

CT147

Software Especializado II

Guadalupe

Montes Gomez

010

13972

DP106

Derecho

Vladimir

Ortega Gomez

011

13920

CT147

Software Especializado II

Virginia

Medina Torres

(c)

A partir del archivo de datos anterior, se crear el siguiente archivo de ndices, asignando por cada registro del archivo de datos un registro en el archivo de
ndices con el campo crn y el nmero de registro correspondiente:
crn
13925
14020
13937
13816
13956
14260
14100
13936
14195
13972
13920

indice
001
002
003
004
005
006
007
008
009
010
011
(d)

95

Para aplicar una bsqueda ms eficiente ser recomendable ordenar los elementos del archivo de ndices por crn obteniendo entonces:
crn

indice

13816

004

13920

011

13925

001

13936

008

13937

003

13956

005

13972

010

14020

002

14100

007

14195

009

14260

006
(e)

De esta manera, si se desea buscar un crn, se realizar en el archivo de ndices,


por ejemplo el crn 13936 que es el registro 4 en el archivo de ndices, corresponde
el ndice 008. Con ese ndice podemos acceder directamente al archivo de datos,
que corresponde a:
008

13936

CO104

Bases de Datos Distribuidas

Jose

Chvez Nez

(f)
Figura 4.5 Bsqueda indizada (a) Estructura del archivo de datos (b) Estructura del archivo ndice (c) Almacenamiento de informacin en el archivo de datos
(d) Creacin del archivo ndice (e) Ordenacin de los registros del archivo ndice
(f) Inicio de la bsqueda en el archivo ndice

Por supuesto, nada impide tener ms archivos de ndices para otros campos,
el principal problema radica en mantener los archivos de ndices ordenados a
medida que se aaden, eliminan o se modifican registros. Pero al ser los registros
96

de ndices ms pequeos (por tener solo 2 campos), los archivos son ms manejables, pudiendo incluso almacenarse en memoria en muchos casos. Para evitar
tener que reconstruir el archivo de ndices cada vez que se actualiza el archivo de
datos existen varios mtodos, uno de ellos es a travs de rboles binarios que se
caracteriza por tener una raz en el que cada nodo tiene como mximo dos hijos,
por el lado izquierdo estarn elementos menores a la raz y por la derecha los
mayores.
La idea principal se centrar en que cada nodo del rbol adems del campo
de la informacin contiene dos campos extras que apuntan a los nodos izquierdo
y derecho respectivamente:

informacin
Puntero
puntero
(al hijo izq)
(al hijo der)

Figura 4.6 Estructura interna del un nodo de un rbol

Para el ejemplo anterior se tendr la siguiente estructura de rbol para crear


el archivo de ndices, asignando a cada nodo (registro) el campo crn y el nmero de registro correspondiente y aadiendo los enlaces correspondientes a otros
nodos.
A continuacin se ver como se actualiza el archivo de ndices a medida que
se insertan los registros en el archivo de datos:

97

Paso uno:
13925

Paso dos:
001

---

---

13925
14020

001
002

-----

002
--13925
001

13925
001

002

14020
002

Paso tres:
13925
14020
13937

001
002
003

--003
---

Paso cuatro:
13925 001
14020 002
13937 003
13816 004

002
-----

004
003
-----

002
-------

13925
001

13925
001
002

004

14020
002
003

13937
003

98

002

13816
004

14020
002
003

13937
003

Paso cinco:
13925
14020
13937
13816
13956

001
002
003
004
005

Paso 6:
004
003
-------

13925
14020
13937
13816
13956
14260

002
--005
-----

001
002
003
004
005
006

004
003
--------13925
001

13925
001
004

002
006
005
-------

004

002

002

13816
004

13816
004

14020
002

14020
002
003

006

003
14260
006

13937
003

13937
003

005
005
13956
005

13956
005

Y as sucesivamente hasta obtener el siguiente rbol


13925

13925

001

004

002

14020

002

003

006

13937

003

008

005

13816

004

---

011

13956

005

---

010

14260

006

007

---

14100

007

---

009

13936

008

---

---

14195

009

---

---

13972

010

---

---

13920

011

---

---

004

002

13816

14020
011

003

13920

006

13937
008

13936

14260
005

007

13956

14100
010

13972

009

14195

Figura 4.8 Estructura del rbol despus de actualizar el archivo de ndices

99

Como se puede observar, cada vez que se inserta un registro de datos, tan slo hay
que insertar un nuevo nodo (registro) en el archivo de ndice y modificar otro.
Eliminar registros
Si se desea eliminar un registro, en el archivo de datos simplemente se marca
como borrado, en teora, mientras el registro no se elimine fsicamente, no ser
necesario eliminar el registro de ndice asociado. Simplemente estar apuntando
a un registro marcado como borrado. Posteriormente, cuando se purgue el archivo de datos ser necesario reconstruir el archivo de ndices.
Duplicacin de claves
No hay inconveniente en almacenar registros con claves duplicadas, tan slo
habr que tener en cuenta que se debe almacenar un nodo para cada uno de ellos,
y el criterio para la construccin del rbol es que la rama menor, y pasar a ser
la rama menor o igual.

4.4 Ordenamiento por insercin binaria


El mtodo de ordenacin por insercin binaria puede mejorarse fcilmente
recurriendo a una bsqueda binaria en lugar de una bsqueda secuencial para
insertar un elemento en la parte izquierda del arreglo, que ya se encuentra ordenado. El proceso, se repite desde el segundo hasta el n-simo elemento.
El algoritmo de ordenacin por el mtodo de insercin binaria es el siguiente:
INSERCINBINARIA (a, n)
{El algoritmo ordena los elementos del arreglo utilizando el mtodo de insercin
binaria. a es un arreglo de n elementos}
{aux, izq, der, m y j son variables de tipo entero}
repetir con i desde 2 hasta n
aux b a[ i ] //colocar en aux el elemento que se desea ordenar
izq b 1 // lmite inferior ordenado
der b i-1 // lmite superior ordenado
repetir mientras ( izq der )

m b parte entera (( izq + der) entre 2)

si ( aux a[ m ] ) entonces

der b m-1

100


si no

izq b m+1
fin_repetir
j b i-1
repetir mientras ( j izq ) //recorrer los elementos mayores hacia la derecha

a [ j+1 ] b a[ j ]
jbj1
fin_repetir
a[ izq ] b aux //en la posicin izquierda coloca el elemento que se desea ordenar
fin_repetir
Figura 4.9 Algoritmo de ordenacin por el mtodo de insercin binaria

Supngase que se desea ordenar los siguientes elementos del arreglo a utilizando el mtodo de insercin binaria.
a: 15 67 08 16 44 27 12 35
Tras las comparaciones necesarias en cada vuelta del ciclo, el arreglo a deber ir ordenndose de izquierda a derecha como se observa a continuacin en los
elementos cuadriculados:
Primera pasada
a: 15 67 08

16

44

27

12

35

Segunda pasada
a: 08 15 67 16

44

27

12

35

Tercera pasada
a: 08 15 16

67

44

27

12

35

Cuarta pasada
a: 08 15 16

44

67

27

12

35

Quinta pasada
a: 08 15 16

27

44

67

12

35

Sexta pasada
a: 08 12 15

16

27

44

67

35

Sptima pasada
a: 08 12 15

16

27 35

44

67

Figura 4.10 Ordenacin de un arreglo por el mtodo de insercin binaria

101

4.5 Ordenamiento por mezcla (merge sort)


La ordenacin de archivos externa se lleva a cabo cuando el volumen de los
datos a tratar es demasiado grande y los mismos no caben en la memoria principal
de la computadora. Al ocurrir esta situacin no pueden aplicarse los mtodos de
ordenacin interna, de modo que debe pensarse en otro tipo de algoritmos para
ordenar datos almacenados en archivos.
Por la ordenacin de archivos se entiende, entonces, la ordenacin o clasificacin de stos, ascendente o descendentemente, de acuerdo con un campo
determinado al que se denominar campo clave. La principal desventaja de esta
ordenacin es el tiempo de ejecucin, debido a las sucesivas operaciones de entrada y salida.
Los dos mtodos de ordenacin externa ms importantes son los basados en
la mezcla directa y en la mezcla equilibrada.
Ordenacin por mezcla directa

El mtodo de ordenacin por mezcla directa es probablemente el ms utilizado por su fcil compresin.
La idea central de este algoritmo consiste en la realizacin sucesiva de una
particin (dividir el archivo) y una fusin (reunin de dos o ms archivos en un
solo) que produce secuencias ordenadas de longitud cada vez mayor.
En la primera pasada la particin es de longitud 1, es decir, se baja de uno
en uno los elementos a las dos listas y al realizar la fusin o mezcla se producen
secuencias ordenadas de longitud 2.
Lista original:
F: 8, 2, 7, 14, 18, 6
Primera pasada
Particin en secuencias de longitud 1
F1: 8,
7,
18
F2: 2,
14, 6
Fusin en secuencias de longitud 2
F: 2, 8, 7, 14, 6, 18,
102

Nota: Para realizar la fusin, se deber tomar en grupos de 2 elementos (uno de cada
lista) y ordene estos dos elementos, as ira obteniendo secuencias ordenadas de 2 en 2

F1: 8,
F2: 2,

7,
14,

18,
6,

En la segunda pasada la particin es de longitud 2 (puesto que hay elementos


de 2 en 2 elementos ordenados, y la fusin o mezcla produce secuencias ordenadas de longitud 4.
Segunda pasada
Particin en secuencias de longitud 2
F: 2, 8, 7, 14, 6, 18,
F1: 2, 8, 6, 18
F2: 7, 14,
Fusin en secuencias de longitud 4
F: 2, 7, 8, 14, 6, 18,
Nota: Para realizar la fusin, tome en grupos de 4 elementos (dos de cada
lista) y ordene estos cuatro elementos, as ira obteniendo secuencias ordenadas
de 4 en 4

F1: 2, 8,
F2: 7, 14,

6, 18

Este proceso se repite (divide de 4 en 4 elementos y fusiona 8, divide de 8


en 8 elementos y fusiona 16, divide de 16 en 16 y fusiona 32.) hasta que la
longitud de la secuencia para la particin sea mayor o igual que el nmero de
elementos del archivo original.
Vea el siguiente ejemplo:
Particin en secuencias de longitud 1.
Fusin en secuencias de longitud 2.
Ejemplo 1. Supngase que se desean ordenar las claves del archivo F. Para
103

realizar tal actividad se utilizan dos archivos auxiliares a los que se les denominar F1 y F2.
F: 2, 9, 7, 14, 4, 20, 15, 1, 3, 8, 5, 22, 11, 13, 16
Primera Pasada
Particin en secuencias de longitud 1
F1: 2, 7, 4, 15, 3, 5, 11, 16
F2: 9, 14, 20, 1, 8, 22, 13
Fusin en secuencias de longitud 2
F: 2, 9, 7, 14, 4, 20, 1, 15, 3, 8, 5, 22, 11, 13, 16
Segunda Pasada
Particin en secuencias de longitud 2
F1: 2, 9, 4, 20, 3, 8, 11, 13
F2: 7, 14, 1, 15, 5, 22, 16
Fusin en secuencias de longitud 4
F: 2, 7, 9, 14, 1, 4, 15, 20, 3, 5, 8, 22, 11, 13, 16
Tercera Pasada
Particin en secuencias de longitud 4
F1: 2, 7, 9, 14, 3, 5, 8, 22
F2: 1, 4, 15, 20, 11, 13, 16
Fusin en secuencias de longitud 8
F: 1, 2, 4, 7, 9, 14, 15, 20, 3, 5, 8, 11, 13, 16, 22
Cuarta Pasada
Particin en secuencias de longitud 8
F1: 1, 2, 4, 7, 9, 14, 15, 20
F2: 3, 5, 8, 11, 13, 16, 22
Fusin en secuencias de longitud 16
F: 1, 2, 3, 4, 5, 7, 8, 9, 11, 13, 14, 15, 16, 20, 22
Tras esta pasada, observe que F ya esta ordenado
Ejemplo 2. Supngase que se desean ordenar las siguientes claves
F: 4, 8, 7, 6, 3, 2, 11, 33, 54, 23, 88, 44, 21, 99
Primera Pasada
104

Particin en secuencias de longitud 1


F1: 4,
7,
3,
11,
54,
88,
F2: 8,
6,
2,
33,
23,
44,
Fusin en secuencias de longitud 2
F: 4, 8, 6, 7, 2, 3, 11, 33, 23, 54, 44, 88, 21, 99

21
99

Segunda Pasada
Particin en secuencias de longitud 2
F1: 4, 8, 2, 3, 23, 54, 21, 99
F2: 6, 7, 11, 33, 44, 88
Fusin en secuencias de longitud 4
F: 4, 6, 7, 8, 2, 3, 11, 33, 23, 44, 54, 88, 21, 99
Tercera Pasada
Particin en secuencias de longitud 4
F1: 4, 6, 7, 8, 23, 44, 54, 88
F2: 2, 3, 11, 33, 21, 99
Fusin en secuencias de longitud 8
F: 2, 3, 4, 6, 7, 8, 11, 33, 21, 23, 44, 54, 88, 99
Cuarta Pasada
Particin en secuencias de longitud 8
F1: 2, 3, 4, 6, 7, 8, 11, 33
F2: 21, 23, 44, 54, 88, 99
Fusin en secuencias de longitud 16
F: 2, 3, 4, 6, 7, 8, 11, 21, 23, 33 ,44, 54, 88, 99
Tras esta pasada, observe que F ya esta ordenado
Ordenacin por mezcla equilibrada

El mtodo de ordenacin por mezcla equilibrada, conocido tambin con el


nombre de mezcla natural, es una optimizacin del mtodo de mezcla directa.
Para la realizacin de este proceso de ordenacin se necesitarn cuatro archivos: el archivo original F y tres archivos auxiliares a los que se denominarn
F1, F2 y F3. La idea central de este algoritmo consiste en realizar particiones en
F2 y F3 tomando secuencias ordenadas de la mxima longitud posible en lugar
de secuencias de tamao fijo. Posteriormente se realiza una fusin (denominada
fusin-particin) de las secuencias ordenadas alternativamente sobre dos archi105

vos, colocando en el primer archivo (F) la fusin hasta donde la secuencia este
ordenada tomando elementos de ambas listas (F2 y F3), si en determinado momento es imposible seguir tomando elementos debido a que no estn ordenados,
se colocar en el segundo archivo (F1) la siguiente secuencia ordenada. Aplicando estas acciones en forma repetida se lograr que el archivo original quede
ordenado. El proceso termina cuando en la realizacin de una fusin-particin el
segundo archivo (F1) quede vaco.
Ejemplo 1. Supngase que se desea ordenar las claves del archivo F utilizando el mtodo de mezcla equilibrada.
F: 2, 9, 7, 14, 4, 20, 15, 1, 3, 8, 5, 22, 11, 13, 16
Particin inicial
F2: 2, 9, 4, 20, 1, 3, 8, 11, 13, 16
F3: 7, 14, 15, 5, 22
Primera fusin-particin
F: 2, 7, 9, 14, 15, 1, 3, 8, 11, 13, 16
F1: 4, 5, 20, 22
Segunda fusin-particin
F2: 2, 4, 5, 7, 9, 14, 15, 20, 22
F3: 1, 3, 8, 11, 13, 16
Tercera fusin-particin
F: 1, 2, 3, 4, 5, 7, 8, 9, 11, 13, 14, 15, 16, 20, 22
F1: --------Observe que en esta ltima fusin-particin F1 est vaco, lo cual indica que
F contiene los elementos ordenados
Ejemplo 2. Supngase que se desea ordenar las claves del archivo F utilizando el mtodo de mezcla equilibrada.
F: 4, 8, 7, 6, 3, 2, 11, 33, 54, 23, 88, 44, 21, 99
Particin inicial
F2: 4, 8, 6, 2, 11, 33, 54, 44
F3: 7, 3, 23, 88, 21, 99

106

Primera fusin-particin
F: 4, 7, 8, 2, 11, 21, 33, 54, 99
F1: 3, 6, 23, 88, 44
Segunda fusin-particin
F2: 3, 4, 6, 7, 8, 23, 88
F3: 2, 11, 21, 33, 44, 54, 99
Tercera fusin-particin
F: 2, 3, 4, 6, 7, 8, 11, 21, 23, 33 ,44, 54, 88, 99
F1: --------Observe que al realizar la tercera fusin-particin el segundo archivo queda
vaco, por lo que puede afirmarse que el archivo ya se encuentra ordenado.

107

Captulo 5
sistemas de archivos

Objetivo

Considerar los diferentes enfoques que lleva la estructura


interna de los archivos

Plan general del captulo


5.1 El sistema de archivos y sus principales funciones
5.2 Organizacin de estructuras de directorios
5.3 Seguridad y proteccin de archivos

5.1 El sistema de archivos y sus principales funciones

Como se ha visto a lo largo del libro existen diversas maneras en que se organiza la informacin, pero una vez que se ha procesado, los usuarios desean almacenar dicha informacin durante semanas, meses, o inclusive aos y entonces se
ha de concluir que dejar la informacin en el propio espacio de direcciones de la
computadora (memoria principal) resulta inaceptable dado que sus caractersticas
limitan al almacenamiento a un tiempo determinado sujeto a la alimentacin de
corriente.
As pues, los dispositivos para el almacenamiento de la informacin a largo
plazo deben proporcionar principalmente:
1. La posibilidad almacenar una cantidad muy grande de informacin
2. La informacin deber persistir (existir) aun cuando la computadora sea
apagada
Para que esto pueda ser posible se debe almacenar la informacin de manera
organizada a travs de archivos, as pues, un usuario podr acceder a dicha informacin todas las veces que sean necesarias, la cual no deber verse afectada
a menos que el usuario de manera explcita prevea algn cambio e incluso la
eliminacin de la misma.
Desde el punto de vista de los usuarios, los archivos son grupos de informacin relacionada, sobre los que se pueden realizar diversas operaciones tales
como lectura, escritura, modificacin, eliminacin, etc. Todas estas acciones que
los usuarios hacen normalmente con la informacin de los archivos las realiza
una parte muy concreta del sistema operativo denominado Sistema de Archivos.
Es esta parte del sistema operativo la responsable de que los usuarios puedan conocer ms detalles sobre los archivos almacenados tales como: ubicacin, nombre, propiedades, proteccin, operaciones permitidas, realizar las operaciones
antes mencionadas adecundolas a las caractersticas de los dispositivos fsicos
utilizados, etc. y aun cuando es de menor inters para los usuarios, es tambin
111

encargado de los detalles del uso de listas ligadas, o mapas de bits para el registro
del espacio libre de almacenamiento en los dispositivos, etc..
Como puede verse, el sistema de archivos realiza mltiples tareas que se
pueden agrupar de la siguiente manera:
1. Administracin del almacenamiento. Decide como y donde almacenar la
informacin en los dispositivos de almacenamiento.
2. Formas de acceso. Define las formas que tienen los usuarios para acceder
y recuperar la informacin almacenada (acceso secuencial, accedo directo y acceso indexado visto con anterioridad).
3. Administracin de archivos. Supervisar la informacin almacenada permitiendo la creacin, modificacin, cambio de nombre, eliminacin y copiado entre
otras de los archivos en los dispositivos de almacenamiento.
4. Proteccin e integridad de los archivos. Resguarda y garantiza la informacin contenida, su integridad y privacidad.

5.2 Organizacin de estructuras de directorios


Como se ha visto, el sistema de archivos es el responsable de administrar los
mismos dentro de los dispositivos de almacenamiento masivo y en captulos anteriores se ha explicado a detalle los diversos mtodos de acceso que de acuerdo
a las caractersticas propias de los dispositivos pueden ser utilizados. Es el turno
de explicar cmo ser posible que se organicen los archivos existentes en la computadora bien sean archivos del usuario o del propio sistema.
Para que esto pueda ser posible, los sistemas operativos requieren de directorios, haciendo que cada archivo se represente por una entrada en directorio o tabla
de contenido del volumen. El directorio en la mayora de los sistemas es un tipo
especial de archivo en realidad, slo que este guarda informacin tal como nombre, ubicacin, tamao y tipo de todos los archivos almacenados. As mediante
los directorios, el sistema de archivos podr encontrar rpidamente un archivo
solicitado y conocer sus caractersticas. De una manera sencilla, un directorio se
puede considerar como una tabla de smbolos que refleja los archivos existentes,
y la complejidad de la misma est relacionada directamente con cada uno de los
sistemas operativos, pero primordialmente deber permitir buscar, crear, borrar o
listar los archivos existentes.
112

directorio

Informacin de un
archivo:
nombre
tipo
tamao

Figura 5.1 Esquema de un directorio

Directorios de un nivel
Para sistemas pequeos (principalmente monousuarios) podra ser suficiente
contar con solo un directorio que contenga la descripcin de todos los archivos
contenidos, pero esto hace obligado el uso nombres nicos.
Directorio

nombre

nombre

nombre

nombre

nombre

tipo

tipo

tipo

tipo

tipo

Archivos

Figura 5.2 Estructura de directorio de un nivel

Sin embargo, al aumentar la cantidad de almacenamiento y el nmero de


usuarios, cada vez es ms difcil que los usuarios organicen y controlen todos
los archivos, por tanto se requiere de estructuras de directorios ms complejas y
potentes.
Directorios de dos niveles
Para resolver los problemas de directorio de un nivel tales como no poder
organizar adecuadamente los archivos, la imposibilidad de almacenar archivos
con el mismo nombre y la confusin de archivos para usuarios diferentes, se hace
necesario definir un directorio para cada usuario (similar a la anterior), pero que
solo presenta los archivos de un usuario, los cuales sern controlados mediante un
directorio maestro del sistema. As cuando un usuario solicita un archivo, el siste113

ma operativo limita la bsqueda solamente al directorio de ese usuario, dando as


la posibilidad que existan archivos con el mismo nombre para usuarios distintos,
cada uno en su propio directorio. As pues, con la estructura de dos niveles para
localizar un archivo ser necesario conocer obviamente el nombre del archivo y
tambin el nombre del directorio del usuario donde est almacenado y juntos forman lo que se denomina nombre de ruta (path name) nico para cada archivo.
Directorio
maestro

Usuario 1

Usuario 2

Usuario 3

Directorios de
usuarios

Figura 5.3 Estructura de directorio de dos niveles

Este esquema da solucin a la problemtica del directorio de un nivel, pero


sugiere otro: aislar a un usuario de los dems, sobre todo si los usuarios desean
trabajar en equipo, cooperar o simplemente acceder a los archivos de otro usuario,
aun cuando existen sistemas que simplemente no permiten este tipo de acceso.
Directorios con estructura de rbol. Estructuras multinivel

El esquema anterior se puede considerar como una organizacin de rbol


de dos niveles, as pues, se puede generalizar esta estructura, aadiendo tantos
subdirectorios como niveles se desea que el rbol tenga, posibilitando entonces
a que cada usuario no solo almacene archivos, sino que pueda crear sus propios
subdirectorios y organizar ms adecuadamente sus archivos. Con ello, el directorio maestro ahora es denominado Raz. Esta estructura es muy utilizada por los
sistemas operativos actuales y su estructura puede observarse en la figura 5.4.

114

Raz

Directorios de
usuarios

Subdirectorios

Subdirectorios

Figura 5.4 Estructura de directorio multinivel

Esta estructura al igual que la anterior requiere entonces no slo del nombre
del archivo, sino del camino de directorios que habr que recorrer para poder localizarlo (path name). Adems incorpora el concepto de directorio de trabajo para
aquel directorio en el que se encuentre trabajando actualmente un usuario y claro
existiendo la posibilidad de cambiar a voluntad a otro si lo desea.
Nombre de las rutas de acceso
Cuando el sistema de archivos est organizado como un rbol de directorios,
se requiere una forma de determinar los nombres de los archivos. Tpicamente se
utilizan dos mtodos:

Ruta de acceso absoluta, la cual est formada por una ruta de acceso
desde el directorio raz hasta el archivo.
Ruta de acceso relativa, esta se utiliza junto con el concepto de directorio de trabajo o directorio activo antes mencionado. As pues todos los
path name que no inicie con raz sern considerados para buscar a partir
del directorio de trabajo.
115

5.3 Seguridad y proteccin de archivos


Una de las caractersticas ms importantes de las computadoras y que la
diferencia de una calculadora convencional es la capacidad de poder almacenar
informacin para recuperarla posteriormente, por tanto es substancial evitar la
prdida o modificacin de la informacin bien sea de manera accidental o mal
intencionada.
Supngase que en un equipo de cmputo se tiene almacenada informacin
referente a las cuentas bancarias, estados de cuenta, fechas de transacciones,
clientes, etc., en fin informacin importante y valiosa para el banco, pero si por
alguna razn se altera o se pierde, la consecuencias se traducen a primera vista en
una prdida invaluable de un activo si no se tomaron las medidas adecuadas para
su preservacin. El usuario desea en todo momento tener un alto ndice de confiabilidad en la informacin que manipula y almacena, por ello se hace necesario
aplicar mecanismos que permitan asegurarse que la informacin que se presenta
es consistente y se encuentra disponible cuando se requiera y slo para aquellos
usuarios que posean los privilegios o permisos para hacerlo, es decir, tener un
mejor control del acceso a los datos almacenados.
La seguridad entonces se centrar en todas aquellas medidas que los usuarios toman para resguardar la integridad, consistencia y disponibilidad de los archivos, entendiendo por esto recuperar informacin vlida y veraz cada vez que
es requerida. Sin embargo, los sistemas de archivos tambin pueden ser daados
por alguna descarga elctrica, por problemas de hardware, por la temperatura, el
polvo, porque fueron destruidos de manera accidental, o bien, porque algn error
de software haya provocado la prdida del contenido de los archivos.
Por tanto, para garantizar en mayor medida la consistencia de la informacin
los desarrolladores de software pueden emplear varias tcnicas. Una de las ms
usuales es realizar regularmente copias de seguridad (backup) en dispositivos adecuados, de tal manera que en caso de que se haya detectado un fallo, o borrado
la informacin de manera accidental o premeditada, se pueda hacer uso de estas
copias para restaurar la informacin y est de nueva cuenta disponible y consistente. Otra puede ser que los programadores agreguen instrucciones atmicas
utilizadas en la programacin concurrente, que encapsulan en una sola orden varias sentencias, de tal manera que si ocurre un fallo en alguna de ellas (en alguna
instruccin), entonces la instruccin atmica completa no se realiza, es decir, su
116

objetivo es realizar operaciones completas y no a medias, para que cuando reinicie el sistema, la informacin est consistente. Este tipo de tcnica podra ser
til en aplicaciones donde varios usuarios comparten los mismos archivos, por
ejemplo, algunas agencias de viaje pueden compartir un archivo con informacin
referente a los espacios libres en un determinado vuelo. Ese archivo es compartido
por varios usuarios y si una agencia hace una reservacin pero la operacin no es
completada adecuadamente, es probable que cuando se restaure el sistema existan
inconsistencias; en tales casos, sera posible evitar estas anomalas.
Tambin pueden existir aplicaciones que implican el procesamiento e intercambio de archivos con informacin confidencial, los cuales se deben disear con
altos niveles de proteccin, por tanto, adems de la disponibilidad y fiabilidad
que se desea exista en la informacin contenida en los archivos, tambin es imprescindible controlar el acceso slo para usuarios autorizados.
La proteccin se define como el conjunto de medidas que se toman para
resguardar la informacin contra robos, ataques, espionaje o sabotaje. Dichas
medidas evitan la exposicin de la informacin ante situaciones de peligro y la
protegen ante contingencias adversas tales como accesos malintencionados, accesos no autorizados, destruccin, alteracin con fines indebidos, entre otros.
La privacidad de los archivos o proteccin se encarga de controlar la informacin contenida en los archivos a fin de que no pueda ser accedida por usuarios
no autorizados. La forma ms comn de lograr esto es mediante identificacin
del usuario a travs de un nombre de usuario, y la autenticacin a travs de una
palabra clave llamada contrasea o password. Con esta informacin el sistema se
encarga de validar si los datos introducidos son correctos para conceder o denegar
el acceso al sistema y por tanto a los archivos. La tendencia actual es que la tabla
que contiene todas las claves, las almacenen de manera encriptada para evitar su
descubrimiento y por tanto evitando as accesos indeseados a los archivos. Sin
embargo, un problema muy frecuente que cometen los usuarios es utilizar tanto
nombres de usuario como claves triviales, que hacen sencilla su adivinacin. Para
evitar este riesgo y conseguir una proteccin adecuada, puede solicitrsele que
cambie su contrasea peridicamente, que por supuesto no sea igual a la anterior,
que incluya tanto letras como dgitos de manera intercalada, o bien, aadir al sistema la capacidad de restringir temporalmente el acceso a algn usuario despus
de realizar varios intentos con una contrasea incorrecta en un mismo intento de
conexin.
117

Una vez que el usuario logra accesar al sistema podr utilizar los diferentes
recursos que se tienen tales como archivos, directorios, programas, dispositivos,
entre otros. En sistemas monousuario la proteccin es relativamente sencilla, ya
que solo es necesario guardar en un lugar seguro, o identificar perfectamente los
directorios con informacin importante, tener bajo llave los discos de respaldo
que se hayan realizado, o bien con una identificacin simple como la que se expuso con anterioridad. Sin embargo, en un sistema multiusuario surge la necesidad
de acceder a los archivos utilizando diferentes mecanismos, que permitan un acceso controlado y limitando los tipos de acceso a los distintos archivos del sistema. Si fuera este el caso, es posible pensar en un segundo nivel de control basado
en privilegios, para que el usuario identificado y validado pueda tener acceso slo
a un segmento de los recursos disponibles, por ejemplo un vendedor previamente
identificado podr acceder nicamente a ciertos archivos como pueden ser los
referentes a los stock de productos, caractersticas generales y precios al pblico,
ms no tendr acceso al precio de compra o a archivos con informacin de los
proveedores o asistencia de los empleados.
Otra manera de proteger la informacin puede lograrse a travs del sistema
de archivos, de forma que el acceso a los mismos puede ser negado o autorizado
dependiendo del tipo que se haya solicitado, ya que es posible controlar varios
tipos de operaciones tales como:







Lectura de los archivos.


Escritura o actualizacin de los archivos.
Cargar el archivo en memoria y ejecutarlo.
Agregar informacin nueva al final del archivo.
Eliminar los archivos para liberar el espacio que se haba utilizado.
Renombrar un archivo para cambiarle el nombre.
Copiar un archivo.
Editar un archivo existente.

Otro enfoque que permite proteger los archivos sugiere adoptar medidas de
seguridad y proteccin en varios niveles:

118

Sistemas de bases de datos: los usuarios pueden estar autorizados solo


para accesar a una porcin limitada de los archivos. O bien, solo se les

puede permitir realizar consultas sin realizar alguna modificacin a los


archivos. El sistema de archivos tiene la responsabilidad de volver a
garantizar que no se violen estas restricciones.
Dado que casi todos los sistemas de archivos permiten acceso remoto a
travs de terminales o redes, la seguridad a nivel de software dentro del
sistema operativo es tan importante como la seguridad fsica.
Sistema operativo: si no se protege de forma adecuada, ste puede servir
para obtener acceso a los archivos
Humano: tener cuidado con las autorizaciones de nuevos usuarios para
accesar al sistema de archivos, ya que se debe reducir la posibilidad de
que un usuario autorizado permita el acceso a un intruso a cambio de
sobornos u otros favores.
Fsico: las computadoras deben protegerse fsicamente contra la penetracin ingeniosa o clandestina de intrusos.

La seguridad en todos los niveles anteriores debe mantenerse para asegurar


la proteccin de los archivos. Un punto dbil en uno de los niveles ms bajos
como lo son el fsico o el humano permitirn que se burlen medidas estrictas de
seguridad en niveles ms altos.
En muchas aplicaciones vale la pena dedicar un esfuerzo considerable a la
conservacin de la seguridad e integridad de los archivos, ya que los sistemas de
archivos grandes que contienen informacin privilegiada, importante y confidencial que podran ser un blanco tentador de hackers.
Por ltimo, se presentan algunos ejemplos de las diferentes formas por las
cuales se puede intentar accesar a un sistema informtico:

Terminal con sesin abierta. Cuando la terminal queda desatendida por


el usuario, por lo que los intrusos que estn al asecho aprovechan la
oportunidad para accesar completamente a todos los datos disponibles
en ese momento para el usuario legtimo cuya identidad asume.
Contrasea. Las contraseas que permiten la autorizacin a los usuarios pueden ser obtenidas por intrusos con el propsito de accesar de
manera ilegal mediante la adivinacin, el robo, la prueba y error o el
conocimiento de contraseas suministradas por algunos usuarios para
generacin y mantenimiento de sistemas.
119

120

Inspeccin. Los usuarios que desean descubrir informacin a la que


no tienen acceso, lo hacen mediante la inspeccin de los archivos del
sistema.
Escucha electrnica. Esta puede conseguirse mediante conexiones de
intercepcin pasiva o activa o mediante captura electromagntica de la
radiacin de pantalla.
Mutua confianza. Ocurre cuando la programacin es demasiado confiada o poco cuidadosa, por lo que deja de comprobar la validez de los parmetros transferidos y esto es aprovechado por el intruso para obtener
acceso no autorizado a informacin protegida.

Captulo 6
Dispersin (HASH)

Objetivo
Examinar la eleccin de un buen algoritmo de dispersin

Plan general del captulo


6.1 La funcin de dispersin (hash)
6.2 Colisiones y la forma de resolverlas
6.3 Algoritmo de dispersin simple
6.4 Funciones de dispersin y distribuciones de registros
6.5 Otros mtodos de dispersin
6.6 Resolucin de colisiones mediante saturacin progresiva

6.1 La funcin de Dispersin hash


Esta funcin, llamada funcin de dispersin h(K), se basa en tomar una
llave K y mediante un algoritmo convertirla en una direccin. La direccin resultante es utilizada como base para la bsqueda y el almacenamiento de registros.
Se puede asimilar como una caja negra a la que se le ingresa una llave y de la
cual se extrae una direccin. En la figura 6.1 se muestra la llave k=LORENZO ingresando a la caja, el resultado obtenido es la direccin 04, as h(LORENZO)=04,
donde 04 es la direccin base para la llave LORENZO.

Figura 6.1 Funcin de dispersin bsica

El proceso de dispersin se asimila mucho a la indizacin debido a que relaciona una llave con una direccin, solo que se diferencia en dos aspectos:

123

Las direcciones producidas aparentan ser aleatorias, no existe una relacin lgica obvia entre la llave y la direccin que se obtiene, por esta
razn a la dispersin tambin se le llama aleatorizacin.
La funcin de dispersin puede permitir que dos llaves diferentes se
transformen en la misma direccin, de forma que los dos registros pudieran enviarse a la misma direccin en el archivo, si esto ocurre se le
denomina colisin y se debe trabajar en encontrar alguna manera de
resolverla.
En un ejemplo sencillo, considrese que se desea almacenar 75 registros en
un archivo, y se toma el nombre de la persona de cada registro como llave. Supngase tambin que el archivo puede almacenar hasta 1000 registros. Como
proceso de dispersin se tomarn los cdigos ASCII de los primeros dos caracteres de nombre en su formato numrico y multiplicarlos, del resultado, tome los
3 ltimos dgitos de la derecha como direccin resultante. La tabla muestra las
direcciones producidas para algunos registros y se observa que aun cuando los
nombres de la lista estn ordenados las direcciones no muestran esta caracterstica y parecen ser aleatorias.

Nombre

Cdigo ASCII de las


primeras dos letras

Producto

BARBARA

66

65

66 X 65 = 4290

LORENZO

76

79

76 X 79 = 6004

TRINO

84 82

84 X 82 = 6888

Direccin
Base
290
004
888

Figura 6.2 Esquema simple de dispersin

6.2 Colisiones y la forma de resolverlas


Retomando el ejemplo anterior, supngase que existe una llave con el nombre OLIVIA, como las dos letras OL son las mismas que las de LORENZO (debido a que la multiplicacin es conmutativa) la direccin que se produce es la
misma (004). Se genera entonces una colisin entre el registro de OLIVIA y el
de LORENZO. Estas llaves que por dispersin producen colisin se les llama
sinnimos.
124

Obviamente que dos registros no pueden ser colocados en la misma direccin, lo que genera un problema que debe ser resuelto. Existen dos maneras de
solucionar este conflicto, 1. Eligiendo un algoritmo de dispersin que produzca
el menor nmero de colisiones y 2. Otra alternativa es hacer algunos trucos en la
forma de almacenar los registros.
De pronto se piensa que podra generarse un algoritmo de dispersin que no
genere colisiones, el cual es llamado algoritmo de dispersin perfecta, pero es
ms difcil de lo que parece. En un estudio de demostracin que se realiz (Hanson, 1982) con 4000 registros a almacenarse entre 5000 direcciones se concluy
que slo un algoritmo entre 10120 000 evitara todas las colisiones, por lo que prcticamente por la dificultad y demora que esto representa, sera importante que los
programadores reflexionen si realmente vale la pena intentarlo.
La otra alternativa, por cierto ms prctica a efectos de programacin, es
minimizar la cantidad de colisiones a un nmero razonable, para ello se plantean
diferentes maneras de reducir este nmero:

Esparcir los registros: Las colisiones se generan en el momento que


dos o ms registros persiguen la misma direccin. Se trata entonces de
encontrar un algoritmo de dispersin que genere localidades los ms
aleatorio posible entre el nmero de direcciones disponibles, y de esta
manera se evitara que grandes nmeros de registros se acumulen alrededor de alguna zona en particular.
Usar memoria adicional: Lgicamente es viable y posible encontrar un
algoritmo que evite lo ms posible las colisiones sobre todo si se cuenta
con pocos registros y muchas direcciones disponibles. Imaginemos almacenar 75 registros entre 1000 direcciones, se utilizara solo el 7.5 por
ciento del espacio de almacenamiento, por lo que quedara el 92.5 por
ciento para lograr una mejor dispersin.
Colocar ms de un registro por direccin: No se ha planteado la posibilidad de que las direcciones soporten ms de un registro por direccin,
pero se puede generar una estructura de archivo que soporte ms de uno,
as cada direccin podr almacenar ms de un sinnimo. A esta forma de
organizar se le denomina uso de compartimientos.

125

6.3 Algoritmo de dispersin simple


El propsito fundamental de cualquier algoritmo de dispersin es esparcir
los registros que manejar de manera tan pareja como sea posible entre el intervalo de direcciones disponibles. La definicin tomada del diccionario del trmino
dispersar significa separar aquello que estaba reunido. El mtodo de dispersin
que se ha utilizado en este texto toma las dos primeras letras del nombre en formato entero (en base al cdigo ASCII) y multiplica ambos valores (lo cual no
es muy bueno ya que muchos nombres comienzan con las mismas dos letras),
tan solo basta con imaginar con alguna letra en particular y busque entonces que
nombres generaran colisin.
Ciertamente este algoritmo no genera buena dispersin, por lo que se plantea
un nuevo algoritmo que tiene un buen nivel de aleatoriedad y genera buenos resultados sin importar las llaves que se utilicen, es sencillo de alterar en caso que
no de buen rendimiento.
El algoritmo es de tres pasos:
1.- Representar la llave en forma numrica
2.- Desglosar y sumar
3.- Dividir entre un nmero primo y usar el residuo como direccin.
Paso 1. Representar la llave en forma numrica. Cuando la llave ya es un nmero
pues este paso se omite, pero si es una cadena de caracteres entonces se usa el Cdigo
ASCII de cada carcter para formar un nmero. Observe el siguiente ejemplo:

76 79 82 69 78 90 79
LORENZO =

L O

32 32 32 32 32

O <

ESPACIOS

>

Este algoritmo toma una llave de 12 caracteres y es para ello que se agregan
los espacios al final para completar esta longitud, al considerar mas caracteres se
incrementa a posibilidad de que se generen diferentes direcciones.
Paso 2. Desglosar y sumar. Esto consiste en tomar trozos del nmero y sumarlos, para este caso se toman pares de nmeros ASCII.
7679

8269

7890

7932 3232

3232

Se consideran entonces estas parejas de nmeros como valores enteros para


poder realizar operaciones aritmticas, en este caso para sumarse. Antes de con126

tinuar debe tomarse en cuenta que en algunos lenguajes la representacin de un


nmero entero requiere dos bytes (16 bits) y esto puede generar problemas de
desbordamiento, por tanto realice algunas pruebas de escritorio para ver si es
conveniente utilizar algn otro tipo de dato acorde al lenguaje de programacin.
Por el momento se continuar con el ejemplo de sumar las parejas:
7679 + 8269 + 7679 + 7932 = 31 559
Si se suma el siguiente 3232 el resultado sera mayor a 32767, lo cual provocara desbordamiento. Esto se puede resolver identificando el mayor resultado
posible que generara una suma de dos de estas parejas y asegurarse del que el
resultado sea menor a 32 767. Si se observa, las llaves consisten en caracteres en
mayscula y espacios de modo que la mayor pareja que se puede localizar en la
cadena es ZZ que corresponde a 9090. Al sumarse dos de estas parejas se obtiene
18180 que es cercano a 20 000 que ser el resultado intermedio ms grande a obtener. Para ello utilizaremos el operador mdulo que devuelve el residuo de una
divisin y que est disponible en la mayora de los lenguajes de programacin.
As este segundo paso se resume de la siguiente forma:
7679
15948
3627
11559
14791

+
+
+
+
+

8269
7679
7932
3232
3232

=
=
=
=
=

15948
23627
11559
14791
18023

15948
23627
11559
14791
18023

Mod
Mod
Mod
Mod
Mod

20000
20000
20000
20000
20000

=
=
=
=
=

15948
3627
11559
14791
18023

Se tiene entonces que el nmero 18 023 ser el resultado de este segundo paso.

Paso 3. Dividir entre el tamao de espacio de direcciones. Ahora el objetivo


es hacer un poco ms corto el nmero 18 023 para colocarlo dentro del intervalo
de direcciones que hay disponibles y esto se puede lograr dividiendo el valor entre
el nmero de direcciones y tomar el residuo como direccin base del registro.
El 18 023 va a representar a un valor obtenido del paso dos y se denota como
s, el valor n corresponder con el nmero de direcciones disponibles del archivo y a contendr la direccin generada. As la frmula:
a= s mod n
Indica que las n direcciones estarn en el rango de 0 a (n-1) debido a que ese
es el posible residuo de la divisin.
127

Supngase que se utilizar un archivo con 100 direcciones (de la direccin 0


a la 99), al aplicar la frmula se obtiene lo siguiente:
a =18 023 mod 100
= 23
Debido a que no existen reglas que limiten el nmero de direcciones disponibles del archivo, mientras sean suficientes para almacenar todos los registros se
tiene la libertad de elegir un nmero n. Y esto es interesante ya que la eleccin
de n afecta de manera directa la forma en que se distribuyen los registros.
Se observa que es comn utilizar un nmero primo n como divisor debido a
que este tipo de nmeros tienden a distribuir de mejor manera que los pares o impares.
Se recomienda utilizar un nmero primo lo ms cercano al mximo de direcciones por
la parte derecha de la recta numrica. Para este caso se tienen 100 direcciones y los
nmeros primos ms cercanos son 97 a la izquierda y 101 a la derecha.
Si se toma en cuenta un archivo con 101 direcciones que va a ser llenado con
75 registros se puede decir que el archivo se llenara en un 74.3 % ya que 74/101
= 0.743.
Siendo 101 el espacio de direcciones la direccin base a que se obtiene con
la formula es:
a = 18 023 mod 101 = 45
De esta manera se tiene que el registro que tiene la llave LORENZO debe ser
colocado en la direccin 45 del archivo.
Al llevar stos pasos a su representacin en una funcin llamada dispersion(), la cual ser descrita en el siguiente prrafo, est funcin toma como entrada la LLAVE de 12 caracteres ASCII y N que representa la mxima direccin del
archivo. Al ejecutarse esta funcin se obtiene como resultado una direccin.
FUNCION dispersin (LLAVE, N)
suma b 0
Jb0
mientras (J<12)
suma b ( suma +( (100*LLAVE [J] )+(llave [J+1] ) ) ) mod 20000
incrementa J en 2
fin mientras
128

regresa (suma mod N)


fin FUNCION
Como puede verse esta funcin realiza el desgloce y la divisin entre un
nmero primo N para calcular la direccin de dispersin.

6.4 Funciones de dispersin y distribuciones de registros


Analizando los dos mtodos de generar dispersin, puede notarse claramente
que el primero no dispersa de manera adecuada mientras que el segundo hace
una mucho mejor dispersin de los registros, es momento de revisar algunas formas de cmo distribuir los registros en un archivo lo que permite tener una mejor
comprensin de cmo generar otros mtodos de dispersin.
Se pueden observar tres formas de distribucin de 5 registros en 7 direcciones. La forma ideal en que una funcin de dispersin disperse los registros es
que no exista ninguna colisin (Figura 6.2a), a esta es una forma de distribucin
uniforme. Y como se coment antes lograr este tipo de distribucin es difcil y
generalmente no vale la pena intentarlo.
La segunda manera (Figura 6.2b) seala la distribucin en que todos los
registros son asignados a la misma direccin, por lo que se genera el mximo de
colisiones, y por supuesto es un gran problema.
Y finalmente la tercera (Figura 6.2c) en la que los registros se esparcen de
manera apropiada entre si y existen pocas colisiones, y es este el comportamiento
de una distribucin aleatoria normal. Las funciones de dispersin deben presentar
comportamientos aleatorios y responden a las leyes de la probabilidad. Si una
direccin es elegida una vez esto no disminuye la probabilidad de ser elegida por
alguna otra llave.
Al utilizar funciones de dispersin aleatorias que distribuyen grandes cantidades de direcciones a partir de un nmero grande de llaves se ve que la casualidad provoca que grupos de llaves se aglomeren sobre ciertas direcciones.
Suponga que 100 llaves sern dispersadas en 100 direcciones (0..99) es normal
que algunas direcciones queden vacas y otras sean elegidas ms de una vez.
El uso de funciones de distribucin aleatorias no es siempre la ideal y pueden
analizarse formas de distribuir lo ms uniforme posible los registros, generando
un nmero aceptable de sinnimos.
129

a) Sin sinnimos (uniforme)

b) Todos son sinnimos (peor caso)

c) Pocos sinnimos

Figura 6.3 Ejemplos de distribuciones

6.5 Otros mtodos de dispersin


Se puede esperar encontrar en algn momento una funcin de dispersin
que sea mejor que la aleatoria para todos los casos que se requieren distribuir
registros, lamentablemente no la hay. Las direcciones a las que las llaves envan
a los registros dependen de las llaves mismas, por lo que deben analizarse estas
llaves y realizar algunos experimentos con ellas. Folk[1992] nos presenta algunos
mtodos que son algo mejor que los aleatorios.

130

Examinar las llaves para buscar un patrn. Si se revisa con atencin las
llaves es posible encontrar que algunas de ellas se dispersan de manera
natural, y sucede con mayor probabilidad en llaves numricas que en las
alfabticas, por ejemplo en un nmero de empleado que se le asigna un
consecutivo y la fecha de ingreso a la organizacin, lo que de hecho no
genera llaves duplicadas, por tanto, si la llave de los registros presenta
esta caracterstica entonces contiene un patrn til y debe tomarse en
cuenta esta parte de la llave.
Desglosar partes de la llave. En el ejemplo de algoritmo bsico que se
presento en este texto, puede observarse que el segundo paso de des-

glose implica extraer trozos de la llave y sumar estos fragmentos. La


llave original por tanto es destrozada y es posible que alguno de estos
fragmentos se esparza de forma natural, por lo que vale la pena tomarlos
en cuenta.
Dividir la llave entre un nmero. En la ltima parte del algoritmo se
toma el residuo de una divisin y que se acerca a la direccin que se
desea obtener. Al dividir entre un nmero que tiene muchos factores
pequeos da como resultado muchas colisiones. Investigaciones sobre
el tema mencionan que los nmeros con pocos divisores evitan este
problema por tanto adoptar el uso de nmeros primos genera menos
colisiones que otros como los pares o impares.
Estas formas de tratar a las llaves para obtener las direcciones a las que irn
a parar los registros aprovechan el orden natural de las llaves, pero existen otros
mtodos que pueden aprovecharse cuando los aleatorios no funcionan, y que tambin buscan como objetivo esta aleatoriedad.
Elevar al cuadrado la llave y tomar la mitad. Tambin conocido como
medio cuadrado y consiste en utilizar la llave como un solo nmero
grande, se eleva al cuadrado y se obtiene el nmero de dgitos necesarios segn el rango de direcciones. Como ejemplo, suponga que se
desea generar una direccin entre 0 y 99 y la llave que se tiene es 453,
su cuadrado es 205 209 y al extraer los dos dgitos del medio se obtiene
un nmero entre 0 y 99, en este caso, 52.
Transformacin de la base. Este mtodo consiste en convertir la llave
a alguna otra base numrica que sea diferente a la que se est usando y
tomar despus el resultado del mdulo con la mxima direccin como
la direccin de la dispersin. Como ejemplo, supngase que quieren generarse direcciones entre 0 y 99. Si la llave es el nmero decimal 453,
su equivalente en base 11 es 382; 382 mod 99 = 85, de modo que 85 es
la direccin de dispersin. Este mtodo es ms confiable que el medio
cuadrado.

6.6 Resolucin de colisiones mediante saturacin progresiva


Cualquier algoritmo de dispersin que se disee por bueno que sea generar
colisiones, entonces es comn que se integren lneas de programacin que traten
a los registros que no sea posible integrar en la direccin base. Hay un conjunto
131

de formas que manejan estos registros en saturacin y los programadores siguen


analizando y diseando nuevas formas, a continuacin se muestra un mtodo
sencillo, que de manera general funciona bien, llamado saturacin progresiva.
En el ejemplo que se ilustra se muestra como los registros con llaves YOLANDA y OLIVIA colisionan, el registro de YOLANDA llega despus por lo
que no puede ingresar a la direccin y se convierte en un registro en saturacin.
La saturacin progresiva busca en las siguientes direcciones hacia adelante hasta
encontrar una direccin vaca que se convierte en la direccin del registro. Para
este caso la direccin base de YOLANDA es 6, pero como est ocupada por el
registro de OLIVIA pues inicia la bsqueda del siguiente bloque vaco, y para
este caso el registro es colocado finalmente en la direccin 9.

Figura 6.4 Colisiones

Esto ocurre al momento del almacenamiento, pero cuando en algn momento


sea necesario buscar el registro cuya llave es YOLANDA, la bsqueda comenzar en la direccin base 6, al no encontrarse ah iniciar la bsqueda hacia adelante
y terminar con la localizacin del registro en la direccin 9.
Surge un problema obvio cuando se analiza a detalle este algoritmo, al llegar al final de las direcciones tanto en la bsqueda como del almacenamiento, y
este problema consiste en que se llegue al final del espacio de direcciones bien
sea en la bsqueda de un espacio vaco o en la bsqueda de algn registro. La
solucin a esto es que para un rango de direcciones de 0 a 99 debe de unirse del
132

extremo inferior al comienzo dando as una secuencia cclica que permitir que
siempre exista una siguiente direccin, de esta manera, si se desea almacenar el
registro de la llave BLANCA el cual por dispersin se le asigna la direccin 99,
al revisarse se observa que ya est ocupada la direccin por el registro cuya llave
es JOAQUIN, por lo que se le da la vuelta al especio de direcciones y se continua
buscando, pasando de la direccin 99 a 0, luego a 1 y as hasta encontrar una
direccin disponible.

Figura 6.5 Secuencia cclica

Cabe mencionar que existen casos excepcionales, como por ejemplo: Qu


ocurre si se desea localizar un registro que nunca se coloc en el archivo? El
proceso de bsqueda comienza por la direccin base y se continuar tratando de
localizar el registro que coincida con la llave que se trata de encontrar analizando
cada una de las llaves que se va localizando hacia adelante, este proceso continuar hasta que suceda una de dos cosas:

Al localizar una direccin vaca se supone que el registro no est en el


archivo o
Cuando el archivo este lleno la bsqueda volver al comienzo desde
donde se parti, si esto ocurre y el archivo es muy grande la bsqueda se
tornar bastante lenta y de cualquier manera fallar.
Sin embargo, una gran ventaja de este mtodo de saturacin progresiva es
que es bastante simple y en muchas ocasiones es el preferido para tratar a los
registros en saturacin.
133

Por ltimo, se analizar qu ocurre con este mtodo al realizar eliminaciones


de registros, puesto que agregar uno nuevo es tarea relativamente simple, bastar
con localizar el siguiente bloque vaco, pero la eliminacin es un proceso que
debe revisarse con atencin por dos razones:

El espacio liberado por la eliminacin no debe generar problemas en las


bsquedas o inserciones posteriores.
Debe permitir la reutilizacin del espacio liberado para inserciones posteriores.
Al utilizar la saturacin progresiva, la bsqueda termina al encontrar un registro vaco y por ello no conviene al eliminar vaciar simplemente el registro.
Para ello se plantea el siguiente ejemplo: ADRIANA, JUAN, MARTIN y SOLEDAD se almacenan en un archivo en el cual cada direccin solo almacena un
registro, por lo que ADRIANA y SOLEDAD se asignan a la direccin 3 y JUAN
y MARTIN a la direccin 4, al almacenarse con el mtodo de saturacin progresiva se obtiene el siguiente esquema:

Figura 6.6 Esquema de registros antes de la eliminacin

Si se desea eliminar el registro MARTIN, el proceso comienza tratando de


localizarlo en su direccin base 4, luego al no encontrarlo se buscar hacia adelante hasta llegar a la direccin 5 y all se encuentra, si simplemente se vaca
como se observa en el esquema, se podra provocar errores en futuras consultas.
134

Figura 6.7 Esquema de registros antes de la eliminacin


Para esquematizar dichos errores, suponga que ahora se intentar localizar el
registro cuya llave es SOLEDAD, el proceso comienza en la direccin 3 y al estar
ocupado por otra llave se pasa al siguiente, que tambin est ocupado, y as se llega al que est VACIO por lo que el algoritmo considera que el registro no existe
en el archivo, y esto es un error ya que la eliminacin anterior dejo un problema
que debe resolverse para evitar este tipo de inconsistencias.

135

Bibliografa
Alcalde E. / Morera J. y Prez J.A. Campanero, Introduccin a los sistemas
operativos MS/DOS,UNIX, MVS, VMS, OS/400, Mc Graw Hill, 1992
Cair / Guardati, Estructuras de Datos 1 Ed., McGraw Hill, 1993
E. Martinez, J.A Montn, J. Mega, J. Del Verbo, J.A. Lpez, Tecnologa de la
informacin y la comunicacin, McGraw Hill, ISBN: 84-481-4690-5
Folk Michael J., Zoellick Bill, Estructuras de Archivos, un conjunto de herramientas contextuales, Addison Wesley Iberoamericana. Versin en espaol de
Luis F. Castro Careaga, ISBN: 0-201-62923-2, 1992
Joyanes Aguilar Luis, Rodrguez Baena Luis, Fernndez Azuela Matilde,
Fundamentos de Programacin 1 Ed., McGraw Hill, 1997
Joyanes Aguilar Luis, Zahonero Martnez Ignacio, Algoritmos y Estructuras
de Datos, Una Perspectiva en C 1 Ed., McGraw Hill, 2004
Joyanes Aguilar Luis, Estructura de datos en C.Shaum, McGraw Hill, ISBN:
84-481-4512-7
Joyanes Aguilar Luis, Programacin en Pascal, 4 Ed., McGraw Hill, ISBN:
84-481-5041-4
Joyanes Aguilar Luis, Programacin en C++. Algoritmos, estructuras de datos y objetos 2 Ed., McGraw Hill, ISBN: 84-481-4645-X
Milenkovic, Milan, Sistemas Operativos. Conceptos y Diseo 2 Ed., McGraw Hill
Prieto A., Lloris A., Torres J.C., Introduccin a la informtica 4 Ed., McGraw Hill, ISBN: 84-481-4624-7
Silberschatz A., Korth H. F., Sudarshan S., Fundamentos de base de datos. 5
Ed., McGraw Hill, ISBN: 84-481-4644-1
Silberschatz A., Peterson J. y Galvin P., Sistemas Operativos. Conceptos Fundamentales., 3 Ed., Adisson Wesley, 1994
Tanenbaum Andrew S., Sistemas Operativos Modernos, Prentice Hall, 1993.

136

Estructuras de Archivos.
Un enfoque informtico
se termin de imprimir
en febrero de 2011
en los talleres grficos
de Amateditorial, S.A. de C. V.
E. Zapata nm. 15, El Mante
Zapopan, Jalisco
Tel-fax: 36120751
36120068
amate_editorial@yahoo.com.mx
www.amateditorial.net

You might also like