Professional Documents
Culture Documents
DE ARCHIVOS
Un Enfoque Informtico
ESTRUCTURAS
DE ARCHIVOS
Un Enfoque Informtico
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:
Captulo 2:
Captulo 3:
Captulo 4:
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.
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
43
44
49
53
54
63
74
75
76
77
79
89
92
93
100
102
111
112
116
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).
CPU
CAPACIDAD
REGISTROS
MEMORIA
CACHE
MEMORIA
PRINCIPAL
MEMORIA
SECUNDARIA
COSTE
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.
15
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:
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.
17
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
21
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
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
5.25
HD
3.5
DD
3.5
HD
Nmero de pistas
40
80
80
80
15
18
720
2400
1440
2880
360 K
1.2 M
720 K
1.44 M
Total sectores
Total almacenamiento
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.
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
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.
DVD+R
DVD+RW
DVD-R DL
DVD+R DL
DVD-RW DL
DVD+RW DL
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
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).
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
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
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.
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.
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.
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.
40
Captulo 2
REGISTROS, TIPOS Y OPERACIONES
Objetivo
Identificar los lmites de campos y registros,
as como su acceso y organizacin.
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.
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
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
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:
52
Representacin con listas. El registro de longitud variable se representa mediante una lista de registros de longitud fija, enlazada mediante
punteros.
10
10
15
JIMNEZ
MANUEL
MADERO 123
OCOTLN
OK7210
MARTNEZ
LUIS
OCAMPO 84
LEN
OK7426
espacio en blanco
espacio en blanco
41JIMNEZ|MANUEL|MADERO 123|OCOTLN|OK7210|36MARTNEZ|LUIS|OCAM...
00 41
78
Archivo de ndice
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
55
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.
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.
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
65
InputStream
FileInputStream
SecuenceInputStream
ByteArrayInputStream
PipedInputStream
FilterInputStream
DataInputStream
PushbackInputStream
StringBufferInputStream
LineNumberInputStream
BufferedInputStream
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
68
OutputStream
FileOutputStream
PipedOutputStream
FilterOutputStream
DataOutputStream
PrintStream
ByteArrayOutputStream
BufferedOutputStream
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
70
}
fileDeSalida.close( );
71
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
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
Acceso secuencial
Registro 1
Registro 2
Registro 3
Registro 4
Registro n
Final de Archivo
Registro 2
Posicin 1
Posicin 2
Registro 1
Registro 5
Posicin 3
Posicin 4
Posicin 5
76
Direccin
15
24
36
54
.
.
.
240
78
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
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
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:
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
(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
cima
(a)
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.
cima
8
31
6
27
2
4
Cola (final)
(a)
85
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.
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
90
91
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
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)
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
Jazmn
Hurtado Crdenas
005
13956
AD145
Comportamiento Organizacional
Ernesto
Burgos Herrera
006
14260
CC200
Jorge
Sandoval Prez
007
14100
CJ111
Derecho Laboral
Juan Manuel
Sandoval Moreno
008
13936
CO104
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)
13936
CO104
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)
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
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
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.
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
101
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,
F1: 2, 8,
F2: 7, 14,
6, 18
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
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
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
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.
directorio
Informacin de un
archivo:
nombre
tipo
tamao
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
Usuario 1
Usuario 2
Usuario 3
Directorios de
usuarios
114
Raz
Directorios de
usuarios
Subdirectorios
Subdirectorios
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
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:
Otro enfoque que permite proteger los archivos sugiere adoptar medidas de
seguridad y proteccin en varios niveles:
118
120
Captulo 6
Dispersin (HASH)
Objetivo
Examinar la eleccin de un buen algoritmo de dispersin
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
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
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:
125
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
+
+
+
+
+
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.
c) Pocos sinnimos
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-
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.
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