Anda di halaman 1dari 170

ADMINISTRACIÓN DE

ARCHIVOS.

Ejemplos prácticos de utilización de archivos: Secuenciales, Indexados


y directos, utilizando el lenguaje C++.

Autores : José Luis Hernández Hernández


René Edmundo Cuevas Valencia
Angelino Feliciano Morales.
Responsable de la publicación digital: M. en C. Félix Molina Ángel.

Gestión del ISBN: M. en C. José Luis Hernández Hernández.

Revisó : M. en C. Mario Hernández Hernández.

Diseño de portada : Luis Ángel Hernández Villanueva.

Responsable de la reproducción en discos compactos: M. en C.


René Edmundo Cuevas Valencia y M. en C. Juan Carlos Medina
Martínez, director de la UA de Ingeniería.

Sitio WEB: http://ingenieria.uagro.mx/catics

ISBN: 978-607-00-3901-0

El contenido de este E-Book, es con fines educativos, que


impacte en el programa de Ingeniero en Computación de la UAI
de la UAGro.

Se permite la reproducción total o parcial del mismo por cualquier


medio, siempre y cuando se cite a los autores.

Chilpancingo de los Bravo Guerrero, México. Diciembre de 2010.


INDICE

CONTENIDO. Página

Indice ii

Introducción iv

Indice de Figuras vi

Capítulo I.- Dispositivos de almacenamiento externo. 1


I.1 Cintas magneticas, tambor magnetico, discos magneticos.
I.2 Diskettes, Disco duro.
I.3 Dispositivos de memoria intermedia.

Capítulo II.- Definiciones y conceptos. 22


II.1 Campo, campo secuencial, registro, llave, archivo, base de datos,
transacción.
II.2 Organización de registros y archivos.

Capítulo III.- Archivos Secuenciales. 38


III.1 Estructura de un archivo secuencial.
III.2 Operaciones a efectuar.
III.3 Mantenimiento.
III.4 Ejemplo de aplicación.

Capítulo IV- Archivos Secuencial-Indexado. 57


IV.1 Estructura de un archivo secuencial-Indexado.
IV.2 Operaciones a efectuar.
IV.3 Mantenimiento.
IV.4 Ejemplo de aplicación.

Capítulo V.- Archivos Directos. 72


V.1 Estructura de un archivo directo.
V.2 Operaciones de inserción, supresión y manejo de colisiones.
V.3 Estructura de arbol para multiniveles de indices.
V.4 Mantenimiento.
V.5 Ejemplo de aplicación.

ii
Capítulo VI.- Correspondencia entre la llave y la dirección física. 89

VI.1 Direccionamiento directo e indirecto.


VI.2 Clasificación de los tipos de correspondencia.
VI.2.1 Directa.
VI.2.2 Asociación.
VI.2.3 Por circulo (Técnicas aleatorias tipicas, truncamiento,
selección, analisis de frecuencias, división por número
primo, cambio de base, multiplicación y cuadrado).
VI.2.4 Soluciones con claves no numéricas

Capítulo VII.- Otros métodos de organización de archivos y 109


busquedas de economías.
VII.1 Memoria Virtual.
VII.2 Sistema de paginación.
VII.3 Concepto de segmentación y sistema.
VII.4 Archivos Vsam (virtual storage access method).
VII.5 Compactación de datos.

Capítulo VIII- Acceso Multi-llaves. 128


VIII.1 Organización multilista.
VIII.2 Lista Invertida.
VIII.3 Multilista restringida y estructurada.
VIII.4 Particionada celular.
VIII.5 Mantenimiento (De cada una de las anteriores).

Capítulo IX.- Evaluación general del sistema de Archivos. 143


IX.1 Estimación del uso del sistema.
IX.2 Análisis de los beneficos del sistema.
IX.3 Necesidades de almacenamiento.
IX.4 Comparación entre costo y beneficio.

Bibliografía. 155

Glosario de términos 157

iii
INTRODUCCION

La utilización de memoria para almacenar información tiene ciertos


inconvenientes. En primer lugar, la información que se almacena en la memoria no
persiste en el tiempo, pues cuando la computadora es apagada la información se
pierde. Por otro lado, si se desea almacenar una gran cantidad de información no
es posible hacerlo en memoria, pues por lo general las computadores no contienen
grandes cantidades de memoria, aparte de que es un recurso de alto costo.

El sistema de archivos es una de las partes más visibles del sistema operativo.
Los usuarios utilizan los archivos para almacenar sus datos o programas en forma
persistente, esto quiere decir que la información no se pierde una vez que la
computadora es apagada. Para almacenar dicha información se utilizan dispositivos
de memoria secundaria, como discos, cintas, cd-rom, etc.

El sistema de archivos como parte del sistema operativo proporciona hacia el


usuario una interfaz sencilla, amigable y organizada, que le permite al usuario
almacenar y organizar su información. Dicha interfaz es proporcionada
principalmente mediante archivos, directorios y operaciones sobre ellos. Una parte
de las operaciones que el sistema otorga a los usuarios tiene relación con los
mecanismos de protección que les permite a los usuarios proteger su información.
Los mecanismos de protección son especialmente importantes para sistemas
multiusuarios.

Por otro lado, el sistema de archivos debe representar la información a


almacenar de alguna manera en el sistema de tal forma que pueda interactuar
fácilmente con otra parte del sistema, que corresponde a la Unidad de
Entrada/Salida, pues debe almacenar realmente la información de archivos y
directorios en los dispositivos de almacenamiento secundario.

En el capítulo I trata sobre el uso de los medios magnéticos para grabar y


almacenar información numérica, textual, sonido y video ha brindado a las
organizaciones una forma de conservar la información para ser utilizada
posteriormente.

En el capítulo II se habla sobre procesamiento de la información y se abordan


todas las definiciones y conceptos que están ligados con la Administración de los
archivos.

En el capítulo III se tratan a fondo los archivos de datos con organización


secuencial, en la cual los registros de datos se graban en el archivo uno detrás de

iv
otro, sin dejar huecos. La grabación de dichos registros se lleva a cabo
exactamente en el mismo orden en que fueron introducidos por el capturista.

En el capítulo IV nos adentramos a la organización de archivos secuencial-


indexados y se tratan en forma general las ventajas que tiene ésta organización de
archivos con respecto a la organización de archivos secuencial del capítulo II.

En el capítulo V, se llega a una organización de archivos donde el acceso casi


a cualquier registro es inmediato, me estoy refiriendo a la organización de archivos
directa y todas sus bondades.

En el capítulo VI se hace un análisis minucioso sobre todas las operaciones


que pueden hacerse con el fin de registrar adecuadamente la correspondencia
entre la llave de búsqueda de un registro y su ubicación física dentro de algún
medio de almacenamiento.

En el capítulo VII se buscan nuevas alternativas de organización de los


archivos de datos, con el fin de buscar economía en el tiempo máquina de acceso y
buscar optimización en los procesos.

En el capítulo VIII se maneja una variante de los archivos secuencial-


indexados, la cual consiste en tener varías áreas de índice de un solo archivo de
datos, de tal forma que el acceso a un registro en particular pueda darse por varias
vías. Dicha organización de archivo de datos se le llama de acceso multi-llaves y
se manejan cuatro variantes, cada una de ellas con sus limitantes y sus ventajas.

En el capítulo IX que es el último capítulo del presente documento, se tratan


en forma general todo lo que debe considerarse para evaluar en forma general un
sistema de archivos y sobre todo obtener en forma general el costo/beneficio.

En forma general, se investigó en forma general todo el contenido de la


materia de administración de archivos, que es una materia que se imparte en la
carrera de Ingeniería en Sistemas Computacionales del Instituto Tecnológico de
Chilpancingo.

v
Indice de Figuras, Programas y Tablas.

FIGURAS.

Figura No. 1.1 Características técnicas de las cintas magnéticas. 2


Figura No. 1.2 Proceso de grabación / reproducción de una cinta magnética. 3
Figura No. 1.3 Cabeza de lectura / escritura. 3
Figura No. 1.4 polvo ambiental que afecta a la cinta. 4
Figura No. 1.5 Tambor Magnético. 6
Figura No. 1.6 Disco Magnético. 6
Figura No. 1.7 Lector de Discos Compactos 7
Figura No. 1.8 Partes de un Diskette. 8
Figura No. 1.9 Disco Duro de varios platos. 10
Figura No. 1.10 Estructura física de un Disco Duro. 11
Figura No. 1.11 Unidad Zip de almacenamiento 17
Figura No. 1.12 Unidad SuperdDisk y Disco para grabar. 18
Figura No. 1.13 Unidad lectora/grabadora de Magneto-ópticos. 19
Figura No. 1.14 Unidad lectora/grabadora de JAZZ. 20
Figura No. 2.1 Ejemplo de campo secuencial. 23
Figura No. 2.2 Ejemplo de campo llave, campo, registro y archivo. 24
Figura No. 2.3 Ejemplo de una base de datos trivial. 25
Figura No. 2.4 Separadores entre registros y fin de archivo de una
corriente de texto. 26
Figura No. 2.5 Conversiones Caracteres a Binario y viceversa. 26
Figura No. 2.6 No existen separadores entre registros en la Corriente
Binaria. 27
Figura No. 2.7 Conversiones Caracteres a Binario. 27
Figura No. 2.8 Jerarquía de clases de Entrada / salida de C++. 28
Figura No. 2.9 Funciones miembro de la clase ifstream. 29
Figura No. 2.10 Funciones miembro de la clase ofstream. 29

vi
Figura No. 2.11 Funciones miembro de la clase fstream. 30
Figura No. 2.12 Elementos a considerar para ubicar un archivo. 31
Figura No. 2.13 Ejemplo de archivo de trabajo o temporal. 33
Figura No. 3.1 Registros grabados en forma secuencial (Uno detrás de otro). 38
Figura No. 3.2 Estructura del registro de datos. 40
Figura No. 3.3 Representación gráfica de una clase. 40
Figura No. 3.4 Encadenar varios archivos de clases para crear una aplicación. 43
Figura No. 3.5 Alta un registro a un archivo secuencial. 45
Figura No. 3.6 Eliminación de un registro en un archivo secuencial. 46
Figura No. 3.7 Modificación de algunos datos de un registro. 48
Figura No. 3.8 Estructura genérica del programa práctico. 50
Figura No. 4.1 Área de datos de un archivo secuencial-indexado. 57
Figura No. 4.2 Estructura del registro del área de datos. 58
Figura No. 4.3 El área de datos y el área de índice permiten la
Organización Secuencial-indexado. 58
Figura No. 4.3 El área de datos y el área de índice permiten la organización. 58
Figura No. 4.5 Una área de datos y dos áreas de índice. 60
Figura No. 4.6 Se incluye el archivo .hpp con sus clases para crear
el ejecutable. 62
Figura No. 5.1 Estructura de un archivo directo. 72
Figura No. 5.2 Archivo directo donde debe transformarse la llave. 73
Figura No. 6.1 Direccionamiento Directo. 90
Figura No. 6.2 Estructura de los índices. 91
Figura No. 6.3 Estructura de un cilindro. 94
Figura No. 6.4 Ejemplo de direccionamiento por sector. 94
Figura No. 6.5 Formación de número de control de un alumno del Tecnológico 96
Figura No. 6.6 Área de datos y área de índice de un archivo secuencial-
Indexado. 97
Figura No. 6.7 Asociación cuando existen 2 áreas de índices y un área
de datos. 98

vii
Figura No. 6.8 Esqueleto de un archivo relativo que considera un área para
colisiones. 99
Figura No. 6.9 Dirección relativa seleccionando la fecha de nacimiento. 101
Figura No. 6.10 Ubicación física de un registro con la división por número
primo. 103
Figura No. 6.11 Direcciones físicas utilizando el cambio de base 10 a base 8. 103
Figura No. 6.12 Cálculo de la dirección relativa por medio de multiplicación. 104
Figura No. 6.13 Uso del cuadrado para obtener la dirección física. 105
Figura No. 6.14 Llaves tipo cadenas convertidas a direcciones relativas. 107
Figura No. 7.1 Memoria virtual de una computadora. 110
Figura No. 7.2 Correspondencia entre la dirección física y lógica de la memoria. 110
Figura No. 7.3 Páginas de memoria compartidas por uno o más procesos. 112
Figura No. 7.4. Traducción de página virtual a página real. 113
Figura No. 7.5 Eliminación de la memoria principal de una página que no
está en uso y se reemplaza por otra página que se requiere. 115
Figura No. 7.6 Segmentos que puede tener la memoria. 117
Figura No. 7.7 Archivo VSAM luego de la carga inicial. 121
Figura No. 7.8 Archivo VSAM luego de una inserción en un intervalo no lleno. 121
Figura No. 7.9 Inserción en intervalo lleno con intervalo vacío en el área. 122
Figura No. 7.10 Inserción con fisión de intervalo y de área. 122
Figura No. 8.1 Ejemplo de un registro de una sucursal bancaria. 129
Figura No. 8.2 Organización multilista por profesión y categoría. 131
Figura No. 8.3 Organización de datos de lista invertida (dos índices). 133
Figura No. 8.4 Organización multilista restringida por grupo y categoría. 135
Figura No. 8.5 Estructura de un archivo organizado en forma particionada
celular. 136
Figura No. 8.6 Adición de un registro en las listas ligadas de profesión y
categoría. 140

viii
PROGRAMAS.

Programa No. 3.1 Codificación de la clase registro_empleado. 42


Programa No. 3.2 Ejemplo de manipulación de un archivo secuencial. 55
Programa No. 4.1 Codificación de la clase empleado y la clase índice. 61
Programa No. 4.2 Programa para la creación del área de índices.
65
Programa No. 4.3 Programa dar de alta un registro en el área de
datos y en el área de índice. 68
Programa No. 4.4 Modificaciones a un registro en el área de datos
sin modificar el área de índice. 70
Programa no. 5.1 Codificación de la clase empleado para usarla
en Archivos Directos. 78
Programa No. 5.2 que ejemplifica la creación de un archivo directo. 83
Programa No. 5.3 Ejemplo de alta de un registro a un archivo Directo. 84
Programa No. 5.4 Ejemplo de eliminación de un registro
a un archivo Directo. 86
Programa No. 5.5 Ejemplo de modificación de un registro en un
archivo Directo. 87

ix
TABLAS.

Tabla No. 1.1 Tabla de capacidades de los dos tipos de diskettes.


9
Tabla No. 8.1 Datos para crear un archivo multilista. 130
Tabla No. 8.2 Registros que se almacenan en una multilista restringida. 134
Tabla No. 8.3 Insertar un registro a un archivo multilista. 139
Tabla No. 9.1 Concentrado para conocer la cantidad de espacio de
almacenamiento secundario requerido. 150
Tabla No. 9.2 Cantidad en bytes para los índices. 150
Tabla No. 9.3 Estimación general para el sistema de archivos. 151
Tabla No. 9.4 Incremento global mensual. 151

x
CAPITULO 1

Dispositivos de
almacenamiento
externo.
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

Capitulo 1.- Dispositivos de almacenamiento externo.

El uso de los medios magnéticos para grabar y almacenar información


numérica, textual, sonido y video ha brindado a las organizaciones una forma de
conservar la información para ser utilizada posteriormente. Por un lado, los medios
magnéticos incrementan los tipos de objetos y eventos que se pueden captar y
almacenar. Por el otro, sus necesidades especiales de almacenamiento a largo
plazo son diferentes a las de los materiales tradicionales.

Las organizaciones donde se maneja información en cualquiera de sus


múltiples formas necesitan de un cuidado y manejo especifico para asegurar que la
información grabada sea preservada. Es posible que se necesite de ambientes de
almacenamiento especiales si la información registrada ha de preservarse por
muchos años. Para la información que debe preservarse indefinidamente, la
transcripción periódica de los viejos medios a otros nuevos medios se hace
necesaria, no sólo debido a que el medio es inestable, sino también porque la
tecnología de grabación se hace obsoleta y los avances tecnológicos crean mejores
medios de almacenamiento.

A continuación se explica en forma detallada los principales dispositivos de


almacenamiento externos que se han utilizando para preservar los datos que serán
utilizados por una computadora para generar la información requerida.

Tema I.1 Cintas magnéticas, Tambor magnético y Discos


Magnéticos.

1.- CINTAS MAGNETICAS.

Las cintas magnéticas son de un material plástico recubierto de óxido férrico,


de un ancho de menos de dos centímetros, sobre la cual la información es registrada
en forma de puntos magnetizados o no magnetizados a lo largo de varias pistas
paralelas para representar los símbolos binarios 1 y 0. Así como en una grabadora
común de sonido los datos son grabados o leídos por medio de una cabeza
magnética, en el caso de los procesadores hay tantas cabezas como pistas
paralelas.

Varias unidades de cinta pueden ser interconectadas al mismo procesador,


permitiendo de esta manera almacenar millones de datos, registrándolos o
leyéndolos a la velocidad de aproximadamente 15,000 números y letras por segundo.

Página : 1
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

En las cintas magnéticas para la grabación de datos se pueden distinguir


varias capas :
A) Revestimiento posterior. Su misión es reducir la carga estática de la cinta para
eliminar la suciedad, la cual si se acumula en un punto de la cinta provoca
fallos en la señal, que son conocidos como “dropouts” . Su espesor varía de 1
a 2 micras.

B) Material base de la cinta. Esta capa le proporciona a la cinta sus propiedades


mecánicas y suele ser de poliéster. Su espesor varía entre 0.005 y 0.0038
milímetros.

C) Revestimiento magnético. Esta capa le da a la cinta sus características


magnéticas y en la actualidad se fabrica en cuatro tipos diferentes:

1. Óxido férrico. Es la más utilizada hasta el momento. Posee una


coercitividad entre 300 y 360 Oersteds.
2. Óxido de hierro dopado. Dopado de cobalto presenta una
coercitividad entre 500 y 1200 Oersteds , pero tiene una
gran dependencia con la temperatura.
3. Dióxido de cromo. Es el material usado para la duplicación por
contacto térmico. Este material y el anterior presentan
una relación señal / ruido 6 dB superior al óxido férrico.
4. Partículas metálicas. Con una coercitividad de 1000 a 1500 Oersteds
poseen una relación señal / ruido de 12 dB superior a la
del óxido férrico. Su ciclo de histéresis es casi
rectangular lo que permite grabaciones de frecuencias
más altas, y la cinta puede desplazarse a más baja
velocidad sin sacrificar el rango dinámico. Este tipo es
el que está siendo utilizado en los nuevos formatos que
aparecen en el mercado.

En la Figura No. 1.1, se pueden apreciar las características técnicas de las


cintas magnéticas.

Figura No. 1.1 Características técnicas de las cintas magnéticas

Página : 2
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

Para la grabación sobre la cinta es necesario una cabeza de grabación. En la


figura 1.2 se puede apreciar el proceso. Durante la grabación una corriente aplicada
produce la magnetización de la cinta (los pequeños imanes que la forman son
orientados por el campo magnético producido). En la reproducción estos pequeños
imanes producen en la cabeza una pequeña corriente inducida.

Figura No. 1.2 Proceso de grabación / reproducción de una cinta magnética.

La cabeza es un electroimán con su núcleo interrumpido en un punto. Esta


interrupción es en el entrehierro, donde el campo magnético que existe en el núcleo
por la corriente que se ha aplicado se dispersa un poco hacia el exterior. De ésta
manera si la cinta se “pega” al entrehierro es posible su magnetización.

En la figura No. 1.3 se aprecia un esquema de una cabeza. Los parámetros


más importantes son dos :
• Por un lado la longitud del entrehierro, la cual nos limita la máxima
frecuencia a grabar.
• Y por otro lado el ancho de la pista que como su nombre indica nos da
la anchura de la pista que el cabezal graba sobre la cinta.

Figura No. 1.3 Cabeza de lectura / escritura.

Página : 3
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

Esta anchura nos da la cantidad de señal que podemos obtener, a mayor


anchura más señal (mejor relación señal / ruido), y además la cantidad de
información o pistas que podemos grabar en un ancho de cinta determinado
(cantidad de información

Ventajas de las cintas :

1.- Alta densidad de datos: Un carrete común de cinta de 10½ plg. de diámetro.
Tiene una longitud de 2400 pies. Y puede grabar 800,1600, 2400, 3200,
4000, 4800, 5600 y hasta 6400 bytes en cada pulgada dependiendo de la
unidad de cinta que utilice, por lo tanto, si se graban 6400 caracteres en
una pulgada de cinta y si la cinta tiene una longitud de 28800 pulgadas
entonces la capacidad máxima de la cinta será de 184,320,00 bytes.
2.- Bajo costo y facilidad de manejo.- Un carrete de 10½ pulgada cuesta menos
de 20 dólares. Y dado que el carrete es compacto y pesa menos de 1 kg. y
medio, ocupa muy poco espacio de almacenamiento y es fácil de manejar.

Limitaciones de las cintas:

1.- 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 rápida y aleatoria, el archivo no deberá
almacenarse en cinta magnética; se requiere demasiado tiempo de operador
para montar y desmontar cintas, se desperdiciaría mucho tiempo máquina en
la lectura de registros que no necesitan.
2.- Problemas ambientales.- Las partículas de polvo como puede apreciarse en la
Figura No. 1.4 y la falta de control de los niveles de la temperatura o
humedad pueden causar errores en la lectura de cintas. Las cintas y sus
envases deben etiquetarse y controlarse cuidadosamente para no borrar por
error un archivo importante. [i-2]

Figura No. 1.4 polvo ambiental que afecta a la cinta.

Página : 4
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

Recomendaciones Generales.

1. Se debe mantener las cintas lejos de campos magnéticos; campos magnéticos


muy débiles pueden causar errores. Motores de inducción como aquellos usados
en aires acondicionados, refrigeradoras y compresores pueden generar fuertes
campos magnéticos. Un televisor puede generar campos magnéticos cuando es
conectado o debido al desmagetizador automático que es el responsable de
eliminar el magnetismo que el tubo genera.
2. Nunca se deben archivar las cintas magnéticas sobre equipos electrónicos aunque
sea temporalmente. Casi todos los equipos electrónicos generan campos
magnéticos y calor.
3. Descartar las cintas físicamente dañadas, ellas pueden transportar impurezas y
desperdicios a las cabezas lectoras y en esta forma contaminar otras cintas.
4. Para mejor protección, mantenga las cintas magnéticas en su estuche original
cuando no están en uso.
5. Siempre mantenga las cintas en posición vertical, nunca horizontal, esto reduce la
posibilidad que las cintas se dañen por el peso excesivo.

Ambiente de uso
1. Nunca tocar la superficie o los bordes de las cintas magnéticas.

2. El ambiente de operación y almacenamiento de las cintas debe estar libre de:


polvo, humo y comida.

3. Mantenga un ambiente de humedad y temperatura adecuado todo el tiempo.

4. En la medida de lo posible cuando se transporta cintas magnéticas en ambientes


extremos se debe permitir la climatización de las mismas por lo menos 24 horas.

2.- TAMBOR MAGNETICO

“Un tambor magnético era como una pila de CD (pero claro de material
ferromagnético) con una fila de lectores a su lado, estas pequeñas agujas se
encontraban a la pequeñísima distancia de 0.001 pulgadas por lo cual si se movían
de una forma no debida o por el simple hecho de la expansión de los materiales por
el calor esta separación ya no era la misma por lo que este dispositivo era inservible.

La figura 1.5 muestra esquemáticamente la forma del tambor magnético.

Página : 5
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

Figura No.- 1.5 Tambor Magnético.

La forma como se hacia una lectura o escritura era con los componentes del
tambor, por ejemplo, en el sector 8, pista 3; su tiempo de acceso era tomado en
revoluciones por minuto (se alcanzo hasta 8000 rpm) y el número de bits que era
capaz de almacenar se medía según sus características físicas como lo son el
diámetro del tambor, su altura, etc. técnicamente se usó máximo a 1200 bps”. [i-1].

3.- DISCOS MAGNETICOS

Para grabar datos en un soporte físico más o menos perdurable se usan dos
tecnologías en los discos. La magnética se basa en la propiedad magnética de
algunos materiales y otros fenómenos magnéticos, mientras que la óptica utiliza las
propiedades del láser y su alta precisión para leer o escribir los datos.

La tecnología magnética para almacenamiento de datos se lleva usando


desde hace decenas de años, tanto en el campo digital como en el analógico.
Consiste en la aplicación de campos magnéticos a ciertos materiales cuyas
partículas reaccionan a esa influencia, generalmente orientándose en unas
determinadas posiciones que conservan tras dejar de aplicarse el campo magnético.
Esas posiciones representan los datos, bien sean una canción de los Beatles o bien
los bits que forman una imagen o el último balance de la empresa. Un ejemplo de
los discos magnéticos se puede apreciar en la Figura No. 1.6.

Figura No. 1.6 Disco Magnético.

Página : 6
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

Una de las características relevantes de la ultima década en el ámbito de las


tecnologías de la información, lo constituye sin duda alguna, el cambio de los
medios magnéticos a los medios ópticos. Esta transición, provocada por el auge
de los formatos digitales, se inicia en el comienzo de los años 80, con el uso
intensivo del disco compacto o CD, el cual revoluciona la música y da origen a la era
digital.

“Los discos ópticos, además de ser medios removibles con capacidad para
almacenar masivamente datos en pequeños espacios -por lo menos diez veces más
que un disco rígido de igual tamaño- son portables y seguros en la conservación de
los datos (que también permanecen si se corta la energía eléctrica). El hecho de ser
portables deviene del hecho de que son removibles de la unidad”. [i-3]

Los discos ópticos presentan una capa interna protegida, donde se guardan
los bits mediante distintas tecnologías, siendo que en todas ellas dichos bits se leen
por un rayo láser incidente. Este, al ser reflejado, permite detectar variaciones
microscópicas de propiedades óptico-reflectivas ocurridas como consecuencia de la
grabación realizada en la escritura. Un sistema óptico con lentes encamina el haz
luminoso, y lo enfoca como un punto en la capa del disco que almacena los datos.
La Figura No. 1.7 muestra el mecanismo de lectura / escritura de un disco compacto.

Figura No. 1.7 Lector de Discos Compactos

El CD ROM logró un éxito semejante al de las grabaciones sonoras digitales,


con más de 130 millones de lectores vendidos y decenas de miles de títulos
disponibles. De hecho se configuró en el estándar para cualquiera de las PC que se
venden actualmente en el mercado actual y ahora constituye la segunda revolución
industrial; es decir, las de los datos de un CD. Básicamente este formato es la
derivación natural del CD de audio con la diferencia que en vez de grabar la
información de forma que puedan interpretarlo las lectoras de audio, la misma esta
organizada de forma similar a un disco rígido, pero de 640 Mb.

Su evolución paralela produjo el CD-R y CD R-W, tecnología que nos


permite grabar y borrar nuestros discos compactos para usarlos como respaldo de
datos, música o multimedia.

Página : 7
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

Tema 1.2 Diskettes, Disco duro.

DISKETTES

Hoy en día , el medio de almacenamiento secundario más usado en las


microcomputadoras es el llamado disquete, o también disco flexible, diskette, o
floppy disk. En contraste con las unidades de cinta magnética, las unidades de
diskette permiten a la computadora localizar los archivos rápidamente ubicando de
modo directo a cualquier pista en el disco, de igual forma en que se localizan
grabaciones en un disco compacto.

Un diskette es simplemente una hoja circular de plástico Mylan recubierta con


una capa de óxido de hierro que puede almacenar impulsos magnéticos. Los
diskettes vienen en distintos tamaños (identificados por su diámetro). Los más
comunes son los de 3.5 y 5.25 pulgadas.

El Disco de 5.25 pulgadas tuvo originalmente una capacidad de 160 kb y se


escribian los datos a doble densidad y en una cara, en seguida se originó un avance
y el mismo diskette tuvo una capacidad de 360 Kb a doble densidad y en las dos
caras. Finalmente y algunos avances tecnológicos, se logró almacenar 1.2 Mb a
alta densidad y en las dos caras.

El disco de 3.5 pulgadas se manejó en su primera versión a 720 Kb a doble


densidad, doble cara; y la última modificación, se graba a 1.44 Mb a alta densidad y
en las dos caras tal como se muestra en la Figura No. 1.8.

Figura No. 1.8 Partes de un Diskette.

Página : 8
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

Estos discos fueron popularizados por la Macintosh de Apple, y hoy en día son
estándares en la industria de la computación.

Las unidades de diskettes son compatibles "hacia atrás"; es decir, que en una
unidad de 3,5" de alta densidad que almacena 1.44 MB, puede usar discos de 720
Kb o de 1,44 MB, pero en una de doble densidad, más antigua, sólo se pueden usar
diskettes de 720 Kb.

Para ver más claramente las diferencias entre los dos tipos de diskettes y sus
capacidades, se muestra la Tabla No. 1.1.

Tamaño Tipo de Capacidad Explicación


disco

5,25" SS/DD 180 Kb Una cara, doble densidad. Desfasado

5,25" DS/DD 360 Kb Dos caras, doble densidad. Desfasado

5,25" DS/HD 1,2 MB Dos caras, alta densidad. Desfasado pero útil

3,5" DS/DD 720 Kb Dos caras, doble densidad. Desfasado pero muy común

3,5" DS/HD 1,44 MB Dos caras, alta densidad. El estándar actual

Tabla No. 1.1 Tabla de capacidades de los dos tipos de dikettes.

Los diskettes tienen fama de ser unos dispositivos muy poco fiables en
cuanto al almacenaje a largo plazo de la información; y en efecto, lo son. Les afecta
todo lo imaginable: campos magnéticos, calor, frío, humedad, golpes o polvo.

Hace unos días verifiqué unos 20 diskettes de diferentes marcas que fueron
grabados por una computadora 486 los cuales estaban almacenados en una caja.
Casi la mitad no funcionaba, porque no se cuidaron como es debido.

Si se tienen programas o información en diskettes, se recomienda hacer


copias inmediatamente y guardar los originales en lugar seguro. Si se tienen datos
importantes almacenados en diskette, se sugiere hacer copias nuevas y pensar en
otro método mejor de almacenamiento más actual. Y ante todo, se sugiere
comprar siempre diskettes de marca.

DISCO DURO

Los sistemas de discos duros son muy importantes como medio de


almacenamiento en los sistemas computacionales, porque pueden almacenar más
datos y se puede recuperar éstos más rápidamente que en los diskettes. Los discos
duros contienen una o más superficies rígidas para grabar datos, cada una cubierta

Página : 9
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

con un óxido metálico que registra cargas magnéticas. La cabeza de escritura /


lectura se encuentra típicamente a unos catorce millonésimos de pulgada por encima
de la superficie del disco. Los platos giran sobre un eje aproximadamente a 3600
rpm, 12 veces más rápido que los disquetes (cuanto más rápido gire un disco, más
pronto la cabeza de lectura / escritura puede encontrar datos).

En la actualidad existen discos duros de tecnologías que le permiten un


tiempo de acceso muy corto; entre los líderes de este tipo de tecnologías se cuenta
con empresas como Quantum, Seagate y Maxtor, quienes fabrican discos duros con
superficies aprovechables (libres de errores) en casi un 100%. Y con capacidades
de almacenar hasta unos 120 Gb en formatos de 3½ y hasta de tamaños más
pequeños para computadoras portátiles (notebook). La Figura No. 1.9 muestra la
composición de un disco duro de varios platos.

Figura No. 1.9 Disco Duro de varios platos.

La estructura física de un disco es la siguiente: un disco duro se organiza en


platos, y en la superficie de cada una de sus dos caras existen pistas concéntricas,
como surcos de un disco de vinilo, y las pistas se dividen en sectores. El disco duro
tiene una cabeza en cada lado de cada plato, y esta cabeza es movida por un motor
cuando busca los datos almacenados en una pista y un sector concreto.

Para poder utilizar el disco duro, tiene que pasar por una etapa de
configuración, la cual es dada por el formateo del disco duro, en el cual se hacen las
siguientes tares: se le marcan las pistas y sectores al disco, se le define la zona de
directorio, se crean la FAT (File Allocation Table) y el registro de arranque y,
eventualmente, se le graban los archivos del sistema operativo para el arranque del
sistema. Existen dos tipos de formateo: el de bajo nivel y el lógico.

El formateo de bajo nivel es un proceso físico que divide las pistas circulares
en un número específico de sectores con capacidad para 528 bytes cada uno, de los
cuales 512 son para datos y 16 para control del sistema. El inicio de cada sector se
indica mediante un código magnético de dirección, a continuación, sigue un código
para encabezamiento del sector (Id), que contiene los números del cilindro, la cabeza
y el sector respectivo. Los datos de información se graban en la porción central de

Página : 10
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

cada sector. En la actualidad, teóricamente sólo es necesario el formateo de bajo


nivel una sola vez, y se debe dejar como último recurso para arreglar un disco.

El formateo lógico se hace para dotar al disco de un sistema de direcciones


que permita leer y escribir datos en sectores definidos. El formateo lógico permite la
recuperación de la información en caso de un formateo accidental, en cambio, el
formateo de bajo nivel no.

Se manejan varios conceptos para identificar sus partes físicas, los cuales se
describen a continuación :

CILINDRO: Es una pila tridimensional de pistas verticales de los múltiples platos.


El número de cilindros de un disco corresponde al número de
posiciones diferentes en las cuales las cabezas de lectura / escritura
pueden moverse.

CLUSTER: Es un grupo de sectores que es la unidad más pequeña de


almacenamiento reconocida por el sistema operativo Ms-Dos.
Normalmente 4 sectores de 512 bytes constituyen un Cluster (racimo),
y uno o más Cluster forman una pista.

PISTA: Es la trayectoria circular trazada a través de la superficie circular del


plato de un disco por la cabeza de lectura / escritura. Cada pista está
formada por uno o más Cluster.

SECTOR: Es la unidad básica de almacenamiento de datos sobre discos duros.


En la mayoría de los discos duros los sectores son de 512 Bytes cada
uno, cuatro sectores constituyen un Cluster.

En la figura No. 1.10 se puede apreciar cual es la cabeza lectora / grabadora,


una pista y un sector.

Figura No. 1.10 Estructura física de un Disco Duro.

Página : 11
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

Estructura Lógica de los Disco Duros.

En primer lugar, internamente los discos duros se pueden dividir en varios


volúmenes homogéneos. Dentro de cada volumen se encuentran una estructura
que bajo el sistema operativo del Ms-Dos, sería la siguiente:

El Sector de Arranque : Al formatear un volumen, el sector de arranque se crea


siempre como primer sector del volumen, para que sea fácil de
localizar por el Ms-Dos. En él se encuentra información
acerca del tamaño, de la estructura del volumen y sobre todo
del BOOTSTRAP-LOADER, mediante el cual se puede
arrancar la microcomputadora desde el Ms-Dos. A ésta parte
se le llama sector de arranque (BOOT).

La Tabla de Asignación de Ficheros (File Allocation Table) (FAT) : Si el Ms-Dos


quiere crear nuevos archivos, o ampliar archivos existentes, ha
de saber qué sectores del volumen correspondiente quedan
libres. Esta información las toma la llamada FAT. Cada
entrada a esta tabla se corresponde con un número
determinado de sectores, que son adyacentes lógicamente en
el volumen. Cada uno de estos grupos de sectores se llama
Cluster. El tamaño de las diferentes entradas de esta tabla en
las primeras versiones del Ms-Dos era de 12 bits con lo que se
podían gestionar hasta 4096 Clusters, correspondiente a una
capacidad aproximada de 8 Mbytes. En vista del problema
que surgió al aparecer discos duros de capacidades más
elevadas, se amplió el tamaño a 16 bits, permitiendo el
direccionamiento de un máximo de 65535 Clusters.
Actualmente se está manejando FAT’s de hasta 32 bits, para
discos duros capaces de almacenar varios Gigas de
información.

Una o más copias de la FAT : El Ms-Dos permite a un programa de formateo crear


no sólo una, sino varias copias idénticas de la FAT. Si el Ms-
Dos encuentra uno de estos medios, cuida todas las copias de
la FAT simultáneamente, así que guarda allí los nuevos
clusters ocupados o liberados al crear o borrar archivos. Esto
ofrece la ventaja de que se puede sustituir la FAT primaria en
caso de defecto por una de sus copias, para evitar la pérdida
de datos.

El directorio Raíz : La cantidad máxima de entradas en el directorio raíz se limita


por su tamaño, que se fija en el sector de arranque. Ya que el
directorio raíz representa una estructura de datos estática, que
no crece si se guardan más y más archivos o subdirectorios.

Página : 12
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

De ahí que, dependiendo del tamaño, bien un disco duro o bien


de volumen, se selecciona el tamaño del directorio raíz en
relación al volumen.

La Zona de Datos : Es la parte del disco duro en la que se almacena los datos de un
archivo. Esta zona depende en casi su totalidad de las
interrelaciones entre las estructuras de datos que forman el
sistema de archivos del Ms-Dos, y del camino que se lleva
desde la FAT hacia los diferentes sectores de un archivo.

Procesos de grabación

GCR (Group Coding Recording - Codificación de grupo de grabación) Es un proceso


de almacenamiento en el que los bits se empaquetan como grupos y son
almacenados bajo un determinado código. Es utilizado por los discos que
utilizan codificación RLL.

ZBR (ZoneBit Recording) Es un proceso de almacenamiento que coloca más


sectores sobre las pistas exteriores del disco que son más largas, pero
mantienen un valor constante de rotación. Esta diseñado para colocar más
datos sobre el disco, sólo puede usarse con interfaces inteligentes.

Proceso de Codificación

• FM: Es la codificación más sencilla, consiste en la grabación de un cambio de


flujo para cada uno, y el omitir el cambio de flujo para cada cero. Este
procedimiento se puede realizar con una electrónica de control relativamente
simple, pero tiene el inconveniente de que cada bit de datos consume dos
cambios de flujo, limitando mucho la capacidad del disco.

• MFM (Modified Frequency Modulation - Modulación de frecuencia modificada)


Método de codificación magnética de la información que crea una
correspondencia 1 a 1 entre los bits de datos y transiciones de flujo (cambios
magnéticos) sobre un disco. Emplea una menor densidad de
almacenamiento y presenta una velocidad más baja de transferencia que el
RLL.

Esta tecnología es usada en los discos flexibles y en los primeros discos


duros. Cada bit de datos es almacenado sobre una región física lo
suficientemente grande para contener 2 posibles posiciones 00, 01 ó 10.
Entre cada 2 bits de datos hay un bit que se llama de "reloj" y que se usa para
validar las lecturas, así como para sincronizarlas. Este bit hace que sea uno
cuando está situado entre 2 bits de datos a cero y se hace cero cuando está

Página : 13
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

situado entre cualquier otra combinación de bits de datos. Así se hace


imposible que se puedan leer más de 3 bits consecutivos con un valor de cero,
o más de un bit seguido a uno. Esto es cierto para todas las informaciones
almacenadas en el disco excepto para las áreas de control del mismo cuyas
marcas de comienzo de pista, sector y datos tienen 4 bits consecutivos a cero
en su "adress mark". Evidentemente, estos sistemas, aunque fiables, son
unos grandes consumidores de espacio ya que emplean prácticamente la
mitad del espacio en bits de reloj.

• RLL: (Run Length Limited - Longitud recorrido limitado) Método de codificar la


información magnéticamente que usa GCR para almacenar bloques en vez de
bits individuales de datos. Permite densidades mayores de almacenamiento
y velocidades mas altas de transferencia que MFM. En la práctica, permite
incrementar en un 50% la capacidad de un disco respecto al sistema de
grabación MFM. Los métodos de grabación RLL utilizan un conjunto
complejo de reglas para determinar el patrón de pulsos para cada bit basado
en los valores de los bits precedentes. Este sistema se puede clasificar
dependiendo de la distancia máxima y mínima de silencios entre dos pulsos,
por ejemplo; el RLL 2,7 tiene una distancia mínima entre pulsos de 2 silencios
y una máxima de 7.

COMO MANTENER UN DISCO DURO EN BUEN ESTADO.

Existen varias cosas que usted puede realizar para prevenir que la computadora
le devuelve mensajes de error molestos. A continuación se muestra una lista de
programas diferentes disponibles para asegurarse de que la unidad de disco duro se
mantenga saludable y funcionando a plena capacidad.

1.-Utilidad de Desfragmentación de Disco

Al transcurrir el tiempo, es posible que los archivos se vuelvan fragmentados


porque se almacenan en posiciones diferentes en el disco. Los archivos
estarán completos cuando los abra, pero la computadora lleva más tiempo al
leer y escribir en el disco. Desde Windows 98 y hasta el Windows Xp al
instalar el sistema Operativo, se instala un programa de desfragmentación que
corrige esto. Para obtener acceso al programa de desfragmentación de disco
bajo Windows Millenium, haga doble click en el ícono de Mi Pc., en la caja de
diálogo que aparece se ubica en el ícono de disco duro y haga clic derecho y
baje la barra iluminada hasta la opción Propiedades; ahí dar clic izquierdo,
luego aparece otra caja de dialogo, y ahí te colocas en la pestaña llamada
herramientas y dar clic a la opción de Utilidad de desfragmentación de
disco.

Página : 14
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

2.- Compresión de Datos

Usted puede obtener espacio libre en la unidad de disco duro o en disquetes


al comprimir los datos que están almacenados en éstos. En Windows 95,
haga clic en Inicio. Ilumine Programas, Accesorios, luego en Herramientas
de Sistema. Hacer clic izquierdo en DriveSpace.

3.- Detección de Daños

Si experimenta problemas con los archivos, tal vez quiera averiguar si existen
daños en el disco. ScanDisk de Windows Millenium verifica los archivos y las
carpetas para encontrar errores de datos y también puede verificar la
superficie física del disco. Para ejecutar ScanDisk, haga doble click en el
ícono de Mi Pc., en la caja de diálogo que aparece se ubica en el ícono de
disco duro y haga clic derecho y baje la barra iluminada hasta la opción
Propiedades; ahí dar clic izquierdo, luego aparece otra caja de dialogo, y ahí
te colocas en la pestaña llamada herramientas y dar clic a la opción de
Utilidad de ScanDisk. Existen varios programas de detección y limpieza de
virus que están disponibles para usted. Simplemente hay que pedirlos del
distribuidor local de software para computadoras.

4.- Respaldos

Si la unidad de disco duro se descompone o si los archivos se dañan o se


sobrescriben accidentalmente, es una buena idea contar con una copia de
respaldo de los datos de la unidad de disco duro. Están disponibles varios
programas de respaldo de uso con cintas, diskettes y aun con los medios
desmontables. A menudo, la computadora tendrá una utilidad de respaldo ya
instalada.

Ventajas y limitaciones de los Discos Duros.

VENTAJAS.

• Los registros en disco pueden almacenarse en forma secuencial y procesarse


como los registros en cinta magnética o, pueden almacenarse para
procesarlos en forma directa.
• Puede tenerse acceso a cualquier registro de disco en línea y pueden
actualizarse en unos cuantos milisegundos. No es necesario clasificar las
transacciones.
• Puede utilizarse una sola transacción de entrada de datos para actualizar los
registros de disco en línea de varios archivos relacionados entre sí.

Página : 15
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

DESVENTAJAS.

• Cuando se actualiza un archivo en cinta magnética, la cinta maestra anterior


no suele sufrir alteraciones y sigue disponible durante cierto tiempo, en caso
de que se presentaran fallas en el sistema. En cambio, cuando se actualizan
los registros de un archivo en disco, es posible que se borren los registros
anteriores cuando los registros nuevos se graban en el disco, quizá la
información almacenada en un disco duro fijo quede inaccesible o se pierda si
hay una falla de disco.
• Ha habido gente que elude las medidas de seguridad y logra tener acceso a
archivos importantes de disco en línea desde terminales remotas. Estos
archivos han sido manipulados y hasta destruidos. Es más fácil mantener
esta seguridad en cinta magnética.

Tema 1.3 Dispositivos de memoria intermedia.

UNIDADES ZIP.

Las unidades ZIP, por las capacidades de los diskette, por su fiabilidad, y por
su velocidad de transferencia están a mitad de camino entre las unidades de diskette
y las de disco duro, aunque más próximas a esta última. Así, su velocidad de giro
es del orden de 3000 r.p.m, lo cual redunda en una mayor velocidad de transferencia.

La unidad ZIP es externa al gabinete de la computadora. La conexión del ZIP


generalmente se hace en el puerto paralelo que usa la impresora, debiéndose
desconectar ésta de dicho puerto, y volverla a conectar a la unidad ZIP en un
conector preparado. Los diskettes para ZIP son flexibles, y pueden almacenar en
sus dos caras magnetizables 100/200 Mb, empleándose comúnmente para hacer
copias de seguridad del disco duro. Las cabezas de escritura / lectura están en
contacto con las superficies de ambas caras, siendo más pequeñas en tamaño que
las usadas en las unidades de diskette, lo que permite grabar con densidades de
grabación mayores. La Figura No. 1.11 muestra una unidad zip, así como el diskette
que utiliza.

Actualmente existen en el mercado unidades ZIP de hasta 250 MB de


capacidad de almacenamiento. Normalmente, se conectan al puerto paralelo,
aunque la empresa Iomega ya tiene en el mercado la nueva unidad que se conecta
al puerto USB de la computadora personal.

Página : 16
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

Figura No. 1.11 Unidad Zip de almacenamiento

UNIDADES SUPERDISK LS-120-120 MB (Imation/Panasonic).

• Pros: reducido formato, precio global, compatibilidad con diskettes 3.5"


• Contras: capacidad algo reducida, menor aceptación que el Zip.

Estos discos son la respuesta a la cada vez más común desesperación del
usuario que va a grabar su trabajo en un diskette y se encuentra con que supera los
temidos 1.44 Mb. No importa, meta un SuperDisk, que aparenta ser un disquete de
3.5" algo más grueso, y ya tiene 120 MB a su disposición.

Aparentemente, esta compatibilidad con los diskettes clásicos


tradicionales de 3.5 pulgadas, puede traer consecuencias desastrosas. El problema
está en que la velocidad de este dispositivo, unos 400 Kb/s, si bien es suficiente y
supera con creces la de una unidad de diskettes de 3.5", es algo menos de la mitad
de la de una unidad Zip..

La unidad se vende con conexión IDE para la versión interna o bien puerto
paralelo (el de impresora) para la externa, que, aunque parece menos pensada para
viajes accidentados que el Zip, permite conectarla a cualquier computadora sin
mayores problemas. Además, acaba de ser presentada una versión USB que hace
la instalación aún más sencilla. Si la BIOS de la tarjeta madre lo permite (lo cual
sólo ocurre con todas las tarjetas madre desde Pentium III) puede configurar la
versión IDE incluso como unidad de arranque, con lo que no necesitará para nada la
unidad de diskette de 3.5 pulgadas.

Su mayor "handicap" reside en haber dejado al Zip como única opción durante
demasiado tiempo, pero la compatibilidad con los disquetes de 3,5" y sus 20 Mb
extra parece que están cambiando esta situación. Si va a comprar una computadora
nueva, le compensará pedir que le instalen un SuperDisk en vez de la unidad de
diskette de 3,5". La decisión entre Zip y SuperDisk es muy difícil, incluso cuestan
prácticamente lo mismo. La figura No. 1.12 muestra la unidad SuperdDisk y su
disco para almacenar información.

Página : 17
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

Figura No. 1.12 Unidad SuperdDisk y Disco para grabar.

Magneto-ópticos de 3,5" - 128 MB a 1,3 GB

• Pros: alta seguridad de los datos, portabilidad, bajo precio de los discos, fácil
manejo
• Contras: inversión inicial, poca implantación.

Se trata de dispositivos que reúne lo mejor de ambas tecnologías para ofrecer un


producto con un bajo coste por Mb almacenado, bastante rápido, con un soporte
absolutamente transportable y sobre todo perdurable: almacenan sus datos
prácticamente para siempre, sin afectarles lo más mínimo los campos magnéticos
(ni el polvo, calor, humedad, etc, hasta un límite razonable), a la vez que le permite
rescribir sus datos tantas veces como quiera.

Son capaces de almacenar hasta 1,3 GB en discos muy similares a los


disquetes de 3,5" que tienen una cubierta de plástico para protegerlos de los golpes
y el polvo, no como los CDs con su superficie expuesta a involuntarias huellas de
dedos que los inutilicen.

Una vez instalada la unidad, se maneja como si fuera un disco duro más
(sin necesidad de ningún programa o accesorio). Existen discos y lectores-
grabadores de 128, 230, 540, 640 MB y 1,3 Gb, pero en la actualidad sólo son
recomendables los de 640 Mb y 1,3 Gb, que además permiten leer y escribir en los
discos de menor capacidad.

No son compatibles con los diskettes de 1.44 Mb, su velocidad es muy


elevada, comparable a la de los discos duros de hace pocos años, pero tiene el
problema de que el proceso utilizado obliga a que la escritura se realice a la mitad de
la velocidad de la lectura. Así, mientras que se pueden alcanzar casi los 2,5 MB/s
en lectura, la escritura se queda en alrededor de 1 MB/s, con un tiempo de acceso
cercano al de un disco duro (menos de 40 ms). Para subsanar este problema,
Fujitsu (una de las empresas que más potencian este mercado) a sacado unos

Página : 18
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

nuevos modelos con tecnología LIMDOW (también conocida simplemente como OW,
por OverWrite) en los que se puede alcanzar más de 1,5 MB/s en escritura.

Lo malo de la tecnología OW es que además de una unidad lectora-grabadora


reciente necesita discos especiales, más caros que los normales. La Figura No. 1.13
muestra la unidad lectora/grabadora de Magneto-ópticos.

Figura No. 1.13 Unidad lectora / grabadora de Magneto-ópticos.

UNIDAD JAZZ

La unidad jazz usa discos de 1Gb de capacidad con autentica tecnología de


disco duro. El Jazz no solo toma en serio el espacio de almacenamiento, sino que
mejora el aprovechamiento de las unidades internas en muchas computadoras
personales. Las características son, por ello, impresionantes incluso superiores a la
de algunos discos duros: velocidad de transferencia por ráfagas de 10 Mb /seg. , 12
ms de tiempo promedio de búsqueda, 17 ms de tiempo promedio de acceso y la
capacidad de ser reconocida como disco duro por el sistema operativo de la
computadora.

Su precio es de $300 Dls. la unidad externa y $250 Dls. la unidad interna,


pesa aproximadamente 2 libras y su capacidad formateada del cartucho es de
1020.9 Mb. El costo del cartucho de 1 GB es de $100 Dls. aproximadamente, la
instalación de la unidad es sumamente sencilla y las utilerías del manejo son claras e
intuitivas (e incluye protección de datos y catalogación). Puede dejar caer los
cartuchos de una altura de 8 pies (2.43 mts.) sin causarles ningún daño. Los precios
comentados en éste párrafo son al mes de noviembre del año 2003.

Por otro lado, el Jazz tiene las mismas características portátiles que su
hermano zip, pero a diferencia de este, tiene la rapidez y capacidad para cargar
aplicaciones, permitir el desarrollo de multimedia, hacer el resguardo de la

Página : 19
DISPOSITIVOS DE ALMACENAMIENTO EXTERNO

computadora en 10 min., guarda hasta 8 hrs. de música con calidad de CD, 2 hrs. de
película o 150 fotografías de color, etc.

Estamos antes el concepto más moderno de versatilidad en materia de


almacenamiento. No es de extrañar que los usos crezcan en todas las direcciones y
que esta tecnología pase a ser un nuevo estándar en la industria. Muy pronto las
computadoras vendrán ya equipadas con una unidad Iomega y con software que
permita detectar la presencia de un zip o jazz y seleccionarla como ruta básica de
almacenamiento. La figura No. 1.14 muestra una unidad lectora / grabadora del tipo
JAZZ.

Figura No. 1.14 Unidad lectora / grabadora de JAZZ.

Página : 20
CAPITULO 2

Definiciones y
Conceptos
DEFINICIONES Y CONCEPTOS

Capitulo II.- Definiciones y Conceptos.

El procesamiento de la información es fundamental para planificar cualquier


actividad del hombre de hoy, que va desde conocer el tiempo que puede hacer el fin
de semana, las últimas cotizaciones en la bolsa o disponer en todo momento de una
información actualizada de los datos de una empresa, entendiendo como “empresa”
cualquier organización comercial, científica, técnica o de otra clase, con un nivel
razonable de autosuficiencia.

Una consecuencia de todo esto es la gran cantidad de datos que es necesario


manejar en cualquier actividad de la vida, sobre todo en el mundo empresarial. Al
aumentar el volumen de datos a manejar, también debe aumentar la rapidez con que
se procesan dichos datos. Cualquier empresa mediana, en la actualidad, maneja
miles de millones, o incluso billones de elementos individuales de datos.

Las computadoras han venido a revolucionar la forma de almacenar y tratar


dichos datos, los cuales deben estructurarse en forma adecuada para poder
representarse dentro de la computadora y poder ser procesados en forma adecuada.

Cuando hablamos de archivos, habitualmente se utilizan cuatro términos que


debemos definir claramente: Campo, Registro, Archivo y Base de datos. Se puede
decir que estos términos forman una estructura de datos agrupados y relacionados
de alguna manera en particular donde uno contiene al otro y que nos facilitan la
manera de almacenarlos y recuperarlos.

Tema II.1 Campo, campo secuencial, registro, llave, archivo, base


de datos y transacción.

Campo.- Un Campo es un espacio definido en la memoria de la computadora o en


algún medio de almacenamiento dispuesto para contener un solo dato de
un solo tipo. Como ejemplo: un campo individual contiene un valor único,
como el apellido de un empleado, una fecha o un valor leído por un sensor.
Lo más importante de un campo es su longitud (que puede ser fija o
variable) y el tipo de datos que contenga (ya sea una cadena ASCII o un
dígito decimal).

Campo Secuencial.- Un campo secuencial es aquél que permite establecer una


colección de continuidad entre los registros de un archivo. El campo
secuencial se muestra en la figura No. 2.1, donde la clave del
departamento de adscripción, se encadena con la descripción
correspondiente que se encuentra en un registro en otro archivo.

Página : 22
DEFINICIONES Y CONCEPTOS

Figura No. 2.1 Ejemplo de campo secuencial.

Registro Un registro es un conjunto de campos relacionados entre si que pueden


tratarse como una unidad por algunos programas de aplicación. Por
ejemplo: un registro de nombre “empleado” contendría campos tales como:
clave del empleado, nombre, Departamento de adscripción, sueldo diario,
etc. Un registro puede ser de longitud variable en el caso de que el
número de campos pueda variar, esto dependerá de su diseño.

Llave Es aquel campo que permite identificar en forma unívoca a un registro.


Generalmente se designaran como campos llave, aquellos que no
contienen datos repetidos.

Si el sistema de archivos no posee campos con esas características,


deberán utilizarse llaves intermedias o escalonadas. Y en el último de los
casos, se unen dos o más campos para generar la llave.

Este método presenta listas de objetos (o individuos) que se van


reduciendo conforme se introducen los valores para cada una de las llaves
escalonadas. El proceso se da por concluido al hacer contacto visual con
el objeto buscado o hasta reducir la lista de tal forma que se determina la
inexistencia del objeto.

Al manejar algunos campos como llaves, éstos pueden ser de dos tipos :

Llave primaria.

Es el campo llave principal de un archivo multillave. En un archivo


secuencial indexado con llaves alternas representa el campo por
medio del cual el acceso directo y secuencial es manejado.

Página : 23
DEFINICIONES Y CONCEPTOS

Llave secundaria.
Es, en un archivo multillave (de varios campos llave), cualquier llave
exceptuando la primaria.

Archivo.- Un Archivo es un conjunto de registros similares. Los usuarios y las


aplicaciones se refieren a él por un nombre que es único y que puede
crearse y borrarse. Las restricciones al control de acceso suelen aplicarse
a los archivos. Es decir en un sistema compartido, el acceso de los
usuarios y los programas se garantiza o deniega a archivos completos, en
otros casos se aplica a los registros e incluso a ciertos campos.

La figura No. 2.2 muestra en forma gráfica los conceptos de : Campo,


Registro, Campo llave y archivo.

Figura No. 2.2 Ejemplo de campo llave, campo, registro y archivo.

Base de datos.- Una base de datos es un conjunto de varios archivos de datos


independientes, que están ligados y relacionados de alguna forma, donde
se elimina parcial o totalmente cualquier redundancia entre los mismos.
Las bases de datos generalmente están mecanizadas en una computadora
por un software llamado DBMS (Database Management System).

La figura No. 2.3 nos muestra el esquema de una base de datos, en la cual se
manejan varios archivos llamados tablas (Empleado, Depto_Ads y Tipos_emp) que
se encuentran vinculados por campos llave (Cve_dep y Tipo_emp) y que entre todos
forman la base de datos.

Transacción.- Una transacción consiste en agregar, eliminar o modificar un registro


de datos en algún archivo en específico. Las transacciones son la forma

Página : 24
DEFINICIONES Y CONCEPTOS

más común de actualizar los datos de un archivo o de toda una base de


datos.

Figura No. 2.3 Ejemplo de una base de datos trivial.

Tema II.2 Organización de registros y archivos.

En los lenguajes de programación actuales, los dispositivos tradicionales como


: terminales, unidades de disco, unidades de cinta, puertos de comunicación e
impresora; todos ellos son tratados como archivos. Esto es posible, sea cual sea la
naturaleza del dispositivo externo, el sistema de almacenamiento temporal de
archivos los convierte en un dispositivo lógico denominado corriente (stream).
Debido a que la corriente es casi independiente del dispositivo que la genera, las
funciones de librería que escriben un archivo en disco pueden ser utilizadas, con las
oportunas variaciones, para producir una salida por impresora o por el monitor.

A estos efectos, la entrada estándar de datos (teclado) se asocia con un


archivo de nombre <stdin> (Standard Input o entrada de datos estándar), y la salida
por el monitor con <stdout> (Standard Output o salida de datos estándar).

En forma general se manejan dos tipos de stream o corrientes, para


almacenar los datos en un archivo :

• Corrientes de texto.
• Corrientes binarias.

Una corriente de texto es una sucesión indefinida de caracteres organizados


en lineas de diversas longitudes o sea en registros de longitud indefinida.

Página : 25
DEFINICIONES Y CONCEPTOS

La organización de los registros en un archivo considerado como corriente de


texto maneja un separador entre registros y al final del último registro una marca de
fin de archivo, tal como se muestra en la figura No. 2.4.

Figura No. 2.4 Separadores entre registros y fin de archivo de una corriente de texto.

Al tratar los datos contenidos en un archivo como corriente de texto, se


realizan ciertas transformaciones de los caracteres especiales leídos / escritos. Por
ejemplo el carácter LF puede transformarse en un par (CR y LF) según las
conveniencias del sistema. Por tanto existen ciertas diferencias entre los caracteres
leídos de un archivo y los realmente almacenados en la memoria de la computadora
y viceversa. Dichas conversiones se pueden apreciar en la figura No. 2.5.

Figura No. 2.5 Conversiones Caracteres a Binario y viceversa.

En los lenguajes de programación como Pascal, Fortran, Cobol, R.P.G. II,


Basic, etc. los archivos de datos se manejaban como corrientes de texto y en
algunos de los casos se trató de ahorrar espacio de almacenamiento y las variables
del tipo numérico se manejaban como empacadas (o sea que en medio byte se
representaba un digito y en el otro medio byte otro dígito).

En la corriente binaria las transformaciones mencionadas no se realizan, y


los datos presentes en la memoria y el del archivo coinciden unívocamente byte a
byte. Además, al almacenar los datos en un registro no existen separadores entre
registros tal como se puede apreciar en la figura No. 2.6.

Página : 26
DEFINICIONES Y CONCEPTOS

Figura No. 2.6 No existen separadores entre registros en la Corriente de Binaria.

Un ejemplo de corriente binaria es el caso de variables tipo int, que ocupan 2


bytes para su almacenamiento y que puede almacenar valores entre -32,768 y
+32,767; es decir que los valores reales pueden tener entre 1 y 5 dígitos; pero como
los datos con convertidos a binario nunca existen conversiones al leer, procesar o
escribir los datos tal como se muestra en la figura No. 2.7.

Figura No. 2.7 Conversiones Caracteres a Binario.

Comparando las dos tipos de corrientes (de texto y binarias), el flujo de texto
ya quedó obsoleto y los lenguajes de programación Orientados a Objetos, los
Lenguajes Visuales y los Lenguajes Orientados a eventos utilizan el flujo binario
porque optimiza el uso del espacio y además no utiliza mucho tiempo en
conversiones Texto-Binario-Texto.

Al momento de ejecutar una aplicación creada en los lenguajes de


programación actuales tales como C++, Visual C++ o Java; se abren de forma
simultanea cinco corrientes estándar las cuales son asociadas por default a los
dispositivos enumerados a continuación :

• stdin Entrada estándar de datos (Teclado).


• stdout Salida estándar de datos (Monitor).
• stderr Despliegue de errores estándar (Monitor).
• stdaux Auxiliar estándar (RS-232, puertos USB y sus variantes).
• stdprn Impresora estándar (Impresora).

Página : 27
DEFINICIONES Y CONCEPTOS

Para los ejemplos prácticos de administración de archivos de éste libro, se


elaboraron en el Lenguaje C++ versión 3.1 y se utilizó la filosofía de Programación
Orientada a Objetos; debido a que es la más utilizada en los lenguajes de
programación actuales.

Debido a lo anterior, se adoptó la biblioteca de flujos de entrada / salida de


C++ para crear los objetos respectivos tipo archivo. La jerarquía de clases que se
utilizan en la entrada / salida de datos se puede observar en la figura No. 2.8.

Figura No. 2.8 Jerarquía de clases de Entrada / salida de C++.

Para construir y manipular un archivo de datos, se debe conectar el archivo a


un programa, un medio para leer el contenido de un archivo y un medio para crear y
escribir en archivos. El paquete de clases de C++ manipula entradas y salidas de
archivos de igual forma que si manejara entradas y salidas estándar.

Los programadores que deseen conectar un archivo a un programa para


realizar operaciones de entrada / salida deberán incluir el archivo de cabecera
<fstream.h> (para crear y manipular objetos tipo archivo) y además el <iostream.h>
(para las funciones de entrada / salida).

En C++ un archivo se enlaza a un flujo, cuando se abre, se accede, se lee o


se escribe en él y cuando se cierra. Después que un archivo se ha abierto, se debe
conectar a un flujo. Un archivo se puede conectar a los siguientes flujos :

• Ifstream Para abrir un archivo como entrada (Lectura).


• Ofstream Para abrir un archivo como salida (Escritura).
• Fstream Para abrir un archivo como entrada / salida (Lectura / escritura).

Los tres flujos anteriores son considerados como clases para la creación de
objetos tipo archivo de datos.

Página : 28
DEFINICIONES Y CONCEPTOS

La clase tipo ifstream contiene varias funciones miembro. Entre las más
comunes tenemos las que se muestran en la figura No. 2.9.

Figura No. 2.9 Funciones miembro de la clase ifstream.

Las acciones que lleva a cabo cada una de las funciones miembro de la clase
ifstream se enumeran a continuación :

♦ ifstream () Es el constructor del archivo.


♦ ~ifstream () Es el destructor del archivo.
♦ open () Sirve para abrir un archivo de tipo lectura.
♦ rdbuf () Sirve para devolver un puntero tipo streambuf a este stream.
♦ eof () Sirve para verificar si llegamos al fin del archivo.
♦ read () Leer datos de un archivo y transferirlos al buffer de lectura que
se encuentra en la memoria.
♦ close () Cierra un archivo previamente abierto como lectura.
♦ seekp () Coloca el apuntador de lectura a una posición específica en el
archivo.
♦ gcount () Sirve para conocer los caracteres que se han leído.

La clase tipo ofstream contiene varias funciones miembro. Entre las más
utilizadas tenemos las que se muestran en la figura No. 2.10.

Figura No. 2.10 Funciones miembro de la clase ofstream.

Página : 29
DEFINICIONES Y CONCEPTOS

Las acciones que lleva a cabo cada una de las funciones miembro de la clase
ofstream se enumeran a continuación :

♦ ofstream () Es el constructor del archivo de escritura


♦ ~ofstream () Es el destructor del archivo de escritura.
♦ open () Sirve para abrir un archivo de tipo escritura.
♦ rdbuf () Sirve para devolver un puntero tipo streambuf a este stream.
♦ write () Sirve para tomar datos del buffer de memoria y escribirlos en el
archivo.
♦ close () Cierra un archivo previamente abierto como escritura.
♦ seekg () Coloca el apuntador de escritura a una posición específica en el
archivo.

La clase ultima clase para manipulación de archivos es la fstream que también


contiene varias funciones miembro. Entre las más comunes tenemos las que se
muestran en la figura No. 2.11.

Figura No. 2.11 Funciones miembro de la clase fstream.

Las acciones que lleva a cabo cada una de las funciones miembro de la clase
fstream se enumeran a continuación :

♦ fstream () Es el constructor del archivo de lectura / escritura


♦ ~ofstream () Es el destructor del archivo de lectura / escritura.
♦ open () Sirve para abrir un archivo lectura / escritura.
♦ read () Leer datos de un archivo y transferirlos al buffer de lectura que
se encuentra en la memoria.
♦ write () Sirve para tomar datos del buffer de memoria y escribirlos en el
archivo.
♦ close () Cierra un archivo previamente abierto como lectura / escritura.
♦ eof () Sirve para verificar si llegamos al fin del archivo.
Página : 30
DEFINICIONES Y CONCEPTOS

♦ seekg () Coloca el apuntador de escritura a una posición específica en el


archivo.
♦ seekp () Coloca el apuntador de lectura a una posición específica en el
archivo.
♦ tellg () Informa la posición actual del puntero de lectura.
♦ tellp () Informa la posición actual del puntero de escritura.
♦ rdbuf () Sirve para devolver un puntero tipo streambuf a este stream.

Un archivo de datos debe crearse en algún medio de almacenamiento, el


medio más común es el disco duro, el cual es utilizado en un 95 % de las
aplicaciones para almacenar sus datos. En el disco duro está organizado en varios
fragmentos llamados carpetas o subdirectorios y la forma de ubicar el lugar donde se
escribirá físicamente lo podemos apreciar en la figura No. 2.12.

Figura No. 2.12 Elementos a considerar para ubicar un archivo.

El acceso de datos a un archivo (lectura y escritura) requiere de mucha


actividad que es transparente para el programador de la aplicación. Los lenguajes
de programación permiten a los programadores definir técnicas de organización de
archivos bastante complejas con instrucciones muy simples. Un sistema de archivos
proporciona el apoyo que permite al programador accesar archivos sin preocuparse
de los detalles sobre las características de almacenamiento y tiempos de acceso. El
sistema de archivos convierte a las instrucciones de acceso muy sencillas para el
programador sin que él se meta con instrucciones de bajo nivel.

En forma general, el sistema de archivos (file system) del disco duro, es el


encargado de permitir o negar el acceso a ciertos archivos de datos. Para ello los
archivos cuentan con unos elementos propios para cuidar su acceso.

ELEMENTOS PROPIOS DEL ARCHIVO.

• Atributos.- Son marcas físicas que determinan el tipo de operaciones y


características de un archivo, dichas marcas pueden ser : permitir solo lectura,
permitir solo escritura, permitir lectura / escritura o bien permanecer oculto.

Página : 31
DEFINICIONES Y CONCEPTOS

• Identificador de archivo.- Es un elemento lógico que se crea en un ambiente


de programación para hacer referencia al archivo de datos y normalmente es
el nombre del mismo.
• Apuntador de registro.- Es una marca lógica que indica la posición donde se
realizara la siguiente operación de lectura o escritura en el archivo.
• Número de registro.- Son elementos lógicos que indican la posición relativa
del registro en el archivo.
• Marca de fin de archivo (EOF).- Es una marca física que determina la
finalización del archivo.
• Marca de fin de línea (EOL).- Es una marca física utilizada en los archivos de
texto para indicar la finalización de una línea.

CLASIFICACIÓN DE ARCHIVOS DE DATOS

Por su estructura

Con tipo.- Son aquellos que presentan un formato basado en una estructura
especifica, la cual puede ser incluso variable. Son los más utilizados en
los sistemas de información.

De texto.- Son documentos que se graban en formato ASCII y contienen la


información de manera legible para el usuario. Estos archivos tienen la
característica de que pueden ser actualizados exclusivamente en el
procesador de palabras con que fueron creados o bien haciendo la
conversión a otro procesador.

Sin tipo.- Son archivos que son procesados por bloques de lectura y/o
escritura. No tienen un formato determinado, y su representación puede ser
o no binaria. El tamaño de los bloques es ajustable.

Por su función en un Sistema de Información.

Archivo Maestro.- Este tipo de archivo representa una visión estática de


ciertos datos de un sistema de información que no cambian o que sus
cambios son muy esporádicos. Un ejemplo clásico es el Archivo maestro
de nómina que contiene todos los datos del trabajador que casi no
cambian, por ejemplo : Clave del empleado, Nombre, Dirección,
Departamento de adscripción, Rfc, Curp, fecha de nacimiento, etc.

Página : 32
DEFINICIONES Y CONCEPTOS

Dichos archivos son utilizados comúnmente en el proceso de la nómina


para obtener los datos del trabajador e imprimirlos en los cheques o en los
reportes solicitados.

Archivo de Transacciones.-Es aquel donde se registran las operaciones


que se realizan en un periodo determinado. Una vez transcurrido éste se
realizara la actualización del archivo maestro y se reinicializara el de
transacciones. En algunos lugares también les llaman archivos de
movimientos y son los que actualizan los movimientos dinámicos del
sistema.

Archivo de Reporte.-Es aquel que convierte los datos en información


formateada dirigida al usuario final. Este tipo de archivo puede enviarse a
la impresora para que pueda ser impreso en hojas de papel; o bien puede
enviarse directamente al monitor para que pueda ser consultado
directamente.

Los archivos de reporte generalmente son el resultado de algún proceso,


que además de actualizar algunos datos, los refleja para ser utilizados por
los usuarios del sistema de información.

Archivo de Trabajo .-Son aquellos archivos temporales imperceptibles


para el usuario que son utilizados generalmente en etapas intermedias en
el procesamiento de datos. Un ejemplo clásico es cuando el usuario desea
un reporte ordenado por algún campo en especial (por nombre, por
departamento, por número de empleado, etc), lo que se hace es ejecutar
una utilería llamada sort tal como se muestra en la figura No. 2.13.

Figura No. 2.13 Ejemplo de archivo de trabajo o temporal.

En el proceso anterior, el archivo maestro se encuentra en un orden diferente a


como se desea obtener un reporte, los que se hace es ejecutar el sort tomando como
entrada el archivo maestro y como salida un archivo de trabajo, el cual será utilizado
para obtener el reporte ordenado tal y como fue solicitado. Una vez que se obtiene
el reporte requerido, el archivo de trabajo se elimina.
Página : 33
DEFINICIONES Y CONCEPTOS

Archivo de Programa.- Son aquellos que contienen instrucciones las


cuales serán procesadas por la computadora para realizar alguna
operación específica. Dichas instrucciones pueden estar en algún lenguaje
de programación (C++, java, visual Basic, visual fox, etc.) o bien pueden
estar en código que puede ser ejecutado directamente por la computadora
(.exe, .bat, .com, etc).

Archivo de Texto.- Son aquellos que se encuentran en formato ASCII y


contienen generalmente información referente a la ayuda y presentación del
sistema, así como a la salida de datos con destino al medio de
almacenamiento.

OPERACIONES CON ARCHIVOS DE DATOS.

Creación.- Consiste en la asignación de un espacio en el medio de


almacenamiento mediante la colocación del nombre del archivo en la tabla
fat.

Apertura.- Es el establecimiento de un canal de comunicación con un


archivo determinado, con el fin de que puedan fluir los datos entre el archivo
y la aplicación o viceversa.

Cierre.- Es la cancelación de un canal de comunicación previamente


establecido con un archivo. Incluye una verificación al buffer para realizar
un vaciado automático de los datos contenidos en él a través del canal.

Asignación.- Es la asociación de un nombre de archivo con un identificador


valido en el lenguaje de programación en donde se esta manipulando, para
de esa forma manipular un archivo en forma lógica desde el programa y las
operaciones se reflejen en un archivo que existe físicamente en el medio de
almacenamiento.

Actualización.- Son los procesos u operaciones que modifican el contenido


de un archivo de datos (altas, bajas o cambios).

Consulta.- Es el acceso a los datos de un archivo con el fin de generar una


salida por la impresora o por el monitor. El acceso puede ser especifico,
grupal o global.

Eliminación.- Es la eliminación física del archivo del medio de


almacenamiento.

Renombrar.- Es el cambio del nombre del archivo en el ámbito del sistema


operativo.

Página : 34
DEFINICIONES Y CONCEPTOS

Clasificación.- Consiste en la organización de los registros de acuerdo a un


criterio determinado.

Mezcla.- Es la combinación de dos o más archivos para dar como resultado


un tercer archivo que contendrá los registros totales de los dos archivos.

Partición.- Es la descomposición de un archivo en dos o más para ser


utilizados en forma separada con algunos procesos.

Importación.- Consiste en extender un archivo a partir de los datos


contenidos en otro, ya sea que los registros añadidos se supriman o no de
este ultimo.

Exportación.- Es la generación de un nuevo archivo o la extensión de uno


ya existente a partir de los datos contenidos en un archivo primario, ya sea
que los datos exportados sean o no suprimidos de este.

Organización de Archivos.

La técnica utilizada para representar y almacenar registros en archivo de datos


es llamada organización de archivos. Existen cuatro técnicas fundamentales de
organización de archivos las cuales serán tratadas en forma detallada en los
próximos capítulos de éste libro. Las cuatro técnicas se enumeran a continuación :

• Organización de archivos Secuencial.


• Organización de archivos Secuencial Indexada.
• Organización de archivos directa.
• Organización de archivos multi-llave (una variante de la segunda).

Existen dos aspectos básicos en que difieren las técnicas de organización de


archivos. Primero, la organización determina la secuenciación de los registros del
archivo, la cual es la ordenación física de los registros almacenados.

La Segunda, la organización del archivo determina el conjunto de operaciones


necesarias para encontrar cierto registro en particular. Los registros individuales son
identificados normalmente mediante valores particulares en los campos de la llave de
búsqueda. Este campo de datos puede o no tener valores duplicados en el archivo
y el campo puede ser un elemento básico o de grupo.

Algunas técnicas de organización de archivos proporcionan una rápida


accesibilidad sobre una variedad de llaves de búsqueda; otras técnicas apoyan un
acceso directo solamente sobre uno de los valores.

Página : 35
DEFINICIONES Y CONCEPTOS

La organización mas apropiada para un archivo en particular está determinada


por las características operacionales del medio de almacenamiento utilizado y por la
naturaleza de las operaciones a ejecutar sobre los datos. La característica más
importante de un dispositivo de almacenamiento que influye en la elección de la
técnica de organización de archivos es, si el dispositivo permite el acceso directo a
registros en particular sin tener que accesar todos los registros anteriores
almacenados en el dispositivo, o si permite únicamente un acceso secuencial a los
registros.

La manera como se va a usar el archivo es un factor importante para


determinar cómo se debe organizar el archivo. Dos aspectos importantes sobre el
uso de archivos son su modo de utilización y la naturaleza de las operaciones sobre
el archivo.

Un archivo puede accesarse por un programa que se ejecuta por lotes (en
modo batch) o por un programa que se ejecuta interactivamente. Y en función del
acceso se elige la organización de archivos mas apropiada.

Página : 36
CAPITULO 3

Archivos
Secuenciales
ARCHIVOS SECUENCIALES

Capitulo III.- Archivos Secuenciales.

En los archivos de datos con organización secuencial los registros de datos se


graban en el archivo uno detrás de otro, sin dejar huecos. La grabación de dichos
registros se lleva a cabo exactamente en el mismo orden en que fueron introducidos
por el capturista y tienen la característica que existe un campo en cada registro que
es único (campo llave) y que se utiliza para identificar cada registro. Dicha forma de
almacenar los registros en organización secuencial se puede apreciar en la figura
No. 3.1.

Figura No. 3.1 Registros grabados en forma secuencial (Uno detrás de otro).

En estos archivos, la información sólo puede leerse desde el inicio del


archivo y escribirse después del último registro que existe en el archivo.

Los archivos secuenciales tienen algunas características que hay que tener
en cuenta :

1. La escritura de nuevos registros siempre se hace al final del archivo.

2. Para leer una zona concreta del archivo hay que avanzar siempre, si la zona
está antes de la zona actual de lectura, será necesario "rebobinar" o regresar
el puntero de lectura del archivo.

3. Los archivos sólo se pueden abrir para lectura o para escritura, nunca de los
dos modos a la vez.

Esto es en teoría, por supuesto, en realidad el lenguaje C++ no distingue si los


archivos que usamos son secuenciales o no, es el tratamiento que hagamos de ellos
y que los clasifica como de uno u otro tipo.

Pero hay archivos que se comportan siempre como secuenciales, por


ejemplo los archivos de entrada y salida estándar: stdin, stdout, stderr, stdprn y
stdaux.

El caso de stdin, que suele ser el teclado. Un programa sólo podrá abrir
ese archivo como de lectura, y sólo podrá leer los caracteres a medida que estén
disponibles y en el mismo orden en que fueron tecleados.

Lo mismo se aplica para stdout y stderr, que es el monitor, en estos casos


sólo se pueden usar para escritura, y el orden en que se muestra la información es
el mismo en que se envía.

Página : 38
ARCHIVOS SECUENCIALES

Un caso especial es stdaux, que suele ser el puerto serie. También es un


archivo secuencial, con respecto al modo en que se leen y escriben los datos. Sin
embargo es un archivo de entrada y salida, aunque no simultáneamente.

Trabajar con archivos secuenciales tiene algunos inconvenientes. Por


ejemplo, imagina que tienes un archivo de este tipo en una cinta magnética. Por
las características físicas de este soporte, es evidente que sólo podemos tener un
archivo abierto en cada unidad de cinta. Cada archivo puede ser leído y también
sobrescrito, pero en general, los archivos que haya a continuación del que
escribimos se perderán, o bien serán sobrescritos al crecer el archivo o quedará un
espacio vacío entre el final del archivo y el principio del siguiente.

En cuanto a las ventajas, los archivos secuenciales son más sencillos de


manejar, ya que requieren menos funciones, además son más rápidos, ya que no
permiten moverse a lo largo del archivo, el punto de lectura y escritura está
siempre determinado.

En ocasiones pueden ser útiles, por ejemplo, cuando sólo se quiere


almacenar cierta información a medida que se recibe, y no interesa analizarla en el
momento. Posteriormente, otro programa puede leer esa información desde el
principio y analizarla. Este es el caso de archivos "log" o "diarios" por ejemplo, los
servidores de las páginas WEB pueden generar una línea de texto cada vez que
alguien accede a una de las páginas y las guardan en un archivo secuencial.

A nivel físico, los bloques están almacenados "consecutivamente" ya sea:

• Almacenados de tal forma que ellos están físicamente adyacentes y por lo


tanto residen en la misma sola extensión (archivo secuencial físico); o
• Almacenados de tal forma que pertenezcan a grupos (clusters) diferentes y,
por lo tanto, pertenezcan a más de una extensión, con su adyacencia lógica
mantenida vía punteros de disco. (archivo secuencial enlazado físico).

Como desventaja se tiene que no existe una manera rápida de acceder a un


registro de datos específico (en contraste, por ejemplo, con lo que sucede en los
archivos relativos y en los archivos indexados, en dónde es posible acceder a un
registro determinado en pocos accesos).

III.1 Estructura de un archivo secuencial.

Normalmente cada registro tiene una estructura semejante, la cual está


compuesta por una cantidad finita de campos y todos ellos están relacionados entre
sí y hacen referencia a una unidad. La estructura de un registro tiene generalmente
campos de distinto tipo y uno de ellos se denomina campo llave para identificar en
forma única a cada registro. En la figura No. 3.2 se puede apreciar la estructura del

Página : 39
ARCHIVOS SECUENCIALES

registro de datos que será utilizada a lo largo de éste capítulo para ejemplificar todas
las operaciones en un archivo organizado en forma secuencial.

Figura No. 3.2 Estructura del registro de datos.

La manipulación de los archivos secuenciales puede darse en cualquiera de


los tipos de programación (en espagueti, modular, estructurada, orientada a objetos,
visual, orientada a eventos, etc). En éste documento, se va a utilizar la
programación orientada a objetos por ser la más utilizada y que incluso es usada por
la programación visual y la orientada a eventos.

Con la filosofía de la programación Orientada a objetos se abstrae la realidad


y se encapsulan en una sola entidad los datos miembro y las funciones miembro.
Dicho encapsulamiento es con el fin de generar un modelo o plantilla la cual es
llamada clase, en la que se describen todos los datos miembro a utilizar y se
desarrolla el código que manipula a dichos datos.

La mayoría de los lenguajes de programación orientada a objetos utilizan el


término clase para describir a los objetos de un mismo tipo. Y consideran a la clase
como un tipo de dato definido por el usuario y a partir de él se crean objetos o
instancias que ya contienen internamente los datos miembro y las funciones
miembro. La figura No. 3.3 muestra en forma gráfica el concepto de clase, donde
los datos miembro y las funciones miembro son parte de una sola entidad.

Figura No. 3.3 Representación gráfica de una clase.

En el lenguaje C++ en cualquiera de sus versiones, la clase se codifica en un


archivo que tenga extensión .hpp. La definición de la clase se puede apreciar en el
programa No. 3.1.

Página : 40
ARCHIVOS SECUENCIALES

/* ==========================================================
Clase para definir objetos tipo : Registro de Empleado.
===========================================================*/

class empleado {
private:
int clave; // Datos Miembro : clave (llave)
char nombre[30]; // nombre
float sdia; // sueldo diario
int dias; // dias trabajados
public:
empleado(); // FUNCIONES MIEMBRO
Desplegar(int iL);
PedirDatos();
Modifica();
Consultas();
Datos_Constantes();
~empleado() {};
};

empleado::empleado()
{
dias = clave = 0;
strcpy(nombre," \0");
sdia = 0.0;
}

empleado::Desplegar( int iL)


{
gotoxy(3,iL); cout<<clave;
gotoxy(10,iL); cout<<nombre;
gotoxy(50,iL); cout<<dias;
gotoxy(70,iL); cout<<setprecision(2)<<sdia;
return 0;
}

empleado::PedirDatos()
{
clrscr();
gotoxy(10,5); cout<<"ALTAS DE UN REGISTRO A UN ARCHIVO SECUENCIAL.";
Datos_Constantes();
gotoxy(46,10); cin>>clave;
fflush(stdin);
gotoxy(46,12); gets(nombre);
fflush(stdin);
gotoxy(46,14); cin>>sdia;
fflush(stdin);
gotoxy(46,16); cin>>dias;
fflush(stdin);
return 0;
}

Página : 41
ARCHIVOS SECUENCIALES

empleado::Modifica()
{
clrscr();
char nomm[30], diass[3],sdiaa[10];
gotoxy(10,5);
cout<<"MODIFICACION A UN REGISTRO A UN ARCHIVO SECUENCIAL.";
Datos_Constantes();
gotoxy(48,12);gets(nomm);
fflush(stdin);
gotoxy(48,14);gets(diass);
fflush(stdin);
gotoxy(48,16);gets(sdiaa);
fflush(stdin);
if (diass[0] != '\x0') dias = atoi(diass);
if (sdiaa[0] != '\x0') sdia = atof(sdiaa);
if (nomm[0] != '\x0')
{ strcpy(nombre," ");
strcpy(nombre,nomm);
}
return 0;

empleado::Consultas()
{
gotoxy(10,5);
cout<<"CONSULTAS DE UN REGISTRO EN UN ARCHIVO SECUENCIAL.";
Datos_Constantes();
gotoxy(46,10); cout<<clave;
gotoxy(46,12); cout<<nombre;
gotoxy(46,14); cout<<sdia;
gotoxy(46,16); cout<<dias;
gotoxy(50,22); cout<<"<Return> para continuar";
getchar();
return 0;
}

empleado::Datos_Constantes()
{
gotoxy(20,10); cout<<"Clave del empleado : " << clave;
gotoxy(20,12); cout<<"Nombre del empleado : " << nombre;
gotoxy(20,14); cout<<"Sueldo diario : " << sdia;
gotoxy(20,16); cout<<"No. de Dias trabajados : " << dias;
return 0;
}

Programa No. 3.1 Codificación de la clase registro_empleado.

Página : 42
ARCHIVOS SECUENCIALES

Una vez que se tiene la clase, se pueden crear instancias u objetos de la clase
empleado. Cada objeto tendrá internamente y en forma ordenada los cuatro
campos y las siete funciones miembro definidas en el programa No. 3.1.

Se crea adicionalmente el código que será el responsable de crear todos los


objetos de la aplicación y la manipulación de los mismos. Dicho código deberá
almacenarse con el nombre apropiado, pero deberá tener extensión *.cpp
conteniendo lo siguiente :

• Incluir archivos de cabecera (incluso el .hpp donde se definió la clase).


• Incluir la función main () como rectora de la aplicación.
• Dentro de la función main () deberán crearse, manipularse y destruirse los
objetos requeridos por la aplicación.

Pueden existir varios archivos .hpp en una aplicación debido a que en cada
archivo de cabecera se desarrolló posiblemente otras acciones complementarias del
sistema de información. Pueden incluso existir varios .cpp, pero solo uno de ellos
tendrá la función main () y será quien defina el orden de ejecución. La figura No. 3.2
muestra en forma esquemática la forma de unir varios archivos de cabecera y un
solo .cpp para crear una aplicación.

Al compilar la aplicación con los archivos .hpp incluidos, se genera un solo


ejecutable que ya no requiere el compilador del lenguaje de programación para su
ejecución.

Figura No. 3.4 Encadenar varios archivos de clases para crear una aplicación.

III.2 Operaciones a efectuar.

La manera como se va a usar el archivo es un factor importante para


determinar cómo se debe organizar un archivo. Dos aspectos importantes sobre el
uso de archivos son su modo de utilización y la naturaleza de las operaciones sobre
el archivo.

Página : 43
ARCHIVOS SECUENCIALES

Un archivo puede accesarse por un programa que se ejecuta por lotes (en
modo batch) o por un programa que se ejecuta interactivamente. Con el modo de
acceso por lotes, las transacciones generalmente pueden ordenarse para mejorar el
acceso al archivo maestro, mientras que con accesos interactivos las transacciones
se procesan a medida que llegan. Con el modo de acceso por lotes el desempeño
es normalmente medido por el número de transacciones procesadas en el periodo.
Con el acceso interactivo, el desempeño también es medido por el tiempo de
respuesta a las transacciones individuales.

Las operaciones básicas que se pueden ejecutar sobre un archivo organizado


en forma secuencial son las siguientes :

CREACION.

La creación incial de un archivo es conocida también como la carga del


archivo y consiste en definir un espacio en algún medio de almacenamiento y en
dicho espacio capturar uno a uno los registros de datos de alguna aplicación
especifica que incluye además la validación de los datos que se van introduciendo.

Generalmente la creación de un archivo ocurre en el preciso momento en que


se ejecuta por primera vez el programa de altas. En ese preciso momento, al indicar
que se abra un archivo que no existe, el sistema operativo busca el archivo en la
unidad y path indicada; pero como no lo encuentra genera un registro de dicho
archivo en la tabla Fat y mediante un puntero le asigna una dirección fisica de la
unidad de almacenamiento para que a partir de ahí se graben en forma consecutiva
todos los registros que formarán parte del archivo que se acaba de crear.

ACTUALIZACION.

La actualización consiste en cambiar el contenido de un archivo de datos, esto


con el fin de reflejar todos los cambios que se dan en cierto momento en el mundo
real. Dichos cambios pueden incluir las siguientes acciones :

1.- Altas de nuevos registros al archivo de datos. Por ejemplo cuando entra a
trabajar un nuevo empleado, también se tiene que dar de alta en el archivo
maestro de nómina para que pueda generarse en la próxima quincena su recibo
de pago.

En la figura No. 3.5, se puede apreciar gráficamente el procedimiento para dar


de alta nuevos registros a un archivo organizado en forma secuencial.

Página : 44
ARCHIVOS SECUENCIALES

Figura No. 3.5 Alta un registro a un archivo secuencial.

El procedimiento para realizar una alta de acuerdo a la figura No. 3.5, consiste
en lo siguiente :

1.- Crear un objeto tipo ofstream (El del archivo donde se grabarán los nuevos
registros).
2.- Crear un objeto tipo registro de datos (Que es el objeto que contendrá los datos
que se van capturando y que se escribirán en el archivo).
3.- Abrir un archivo que se encuentra en algún medio de almacenamiento y ligarlo al
objeto tipo ofstream. En el caso de la figura no. 3.5 se llama nomina.dat.
4.- Se hace una verificación para investigar si se abrió correctamente el archivo de
datos. Si la apertura fue exitosa continuar en el paso 5; en caso contrario se
envía un mensaje de error y dar por terminado el proceso.
5.- Desplegar en el monitor la pantalla de captura en blanco conteniendo :
encabezados, etiquetas que indiquen todos los datos a capturar y los lugares
donde se aceptaran cada uno de los datos.
6.- Teclear todos los datos solicitados en la pantalla de captura y en cada dato pulsar
<return> para pasar al siguiente campo.
7.- Escribir el registro de datos (como objeto) en el archivo (otro objeto), el cual se
adicionará al final del último registro contenido en el archivo.
8.- Deberá existir una pregunta para que el usuario indique si desea capturar otro
registro o no. En caso de indicar que se va a capturar otro registro, se ejecutan
los pasos 5, 6 y 7. En caso contrario se continua con el paso 9.
9.- Cerrar el archivo de datos y terminar el proceso.

En el bloque case 1, del programa No. 3.2 que se muestra en el tema III.4
Ejemplo de una Aplicación, de éste mismo capítulo se codifican los pasos

Página : 45
ARCHIVOS SECUENCIALES

enumerados anteriormente donde se implementa la operación de altas a un archivo


secuencial.

2.- La eliminación de registros; esto es borrar del archivo un registro de datos de


información que ya no es útil a la compañía (por ejemplo un trabajador que acaba
de renunciar).

Esta operación de eliminación de un registro que se encuentra en un archivo


organizado secuencialmente tiene la particularidad que no puede eliminarse
directamente porque dicho registro puede estar al inicio del archivo, en medio del
archivo o bien al final del mismo.

Debido a lo anterior, es necesario utilizar un archivo de trabajo adicional para


pasar a dicho archivo los registros que nos interesan y no grabar el registro que se
va a eliminar tal como se muestra en la figura No. 3.6.

Figura No. 3.6 Eliminación de un registro en un archivo secuencial.

El procedimiento para eliminar un registro consiste en lo siguiente :

1.- Crear un objeto tipo ofstream que en el caso de la figura No. 3.6 sería el archivo
llamado depaso.dat. y en el cual se grabarán en forma temporal todos los
registros a excepción del que se va a eliminar.
2.- Crear un objeto tipo ifstream que sería el archivo llamado nomina.dat, del cual se
leeran registro por registro desde el primero hasta el final del archivo para
eliminar el registro deseado.
3.- Crear un objeto tipo registro de datos, que servirá para leer registro por registro
del archivo tipo ifstream.

Página : 46
ARCHIVOS SECUENCIALES

4.- Abrir un archivo que se encuentra en algún medio de almacenamiento y ligarlo al


objeto tipo ofstream (que para el ejemplo se llama depaso.dat).
5.- Abrir un archivo que se encuentra en algún medio de almacenamiento y ligarlo al
objeto tipo ifstream (que para el ejemplo se llama nomina.dat).
6.- Se hace una verificación para investigar si se abrieron correctamente los dos
archivos. Si la apertura fue exitosa continuar en el paso 7; en caso contrario
enviar un mensaje de error y dar por terminado el proceso.
7.- En el monitor se pide la clave del empleado (que es la llave de búsqueda) para
buscarla en el archivo de entrada.
8.- Dentro de una estructura de repetición (en el caso del ejemplo se maneja un
while) leer un registro del archivo de entrada, comparar la clave del registro a
eliminar con la del registro leído y si son diferentes; grabar dicho registro en el
archivo depaso.dat. En el caso que ambas llaves coincidan, quiere decir que es
el registro que debe eliminarse, por lo que dicho registro no se escribe en el
archivo depaso.dat y se regresa a leer otro registro. Realizar el procedimiento
de éste paso mientras no se llegue al fin del archivo.
9.- Cerrar los dos archivos abiertos al inicio del proceso de eliminación.
10.- Actualizar el archivo maestro; es decir, eliminar físicamente del medio de
almacenamiento el archivo llamado nomina.dat y renombrar el archivo depaso.dat
como nomina.dat.

3.- La modificación de datos a ciertos registros que ya existen en el archivo; por


ejemplo cambiar al trabajador del departamento de adscripción, cambiar su
sueldo, cambiar su dirección, etc.

Esta operación de modificación a ciertos campos de un registro que se


encuentra en un archivo organizado secuencialmente tiene la particularidad que tiene
que buscarse registro por registro en todo el archivo y al momento de encontrarse
deberán cambiarse los datos de los campos que tienen modificación.

Posteriormente se debe grabar el registro modificado en su mismo lugar. El


detalle es que el archivo está organizado en forma secuencial y si se encuentra en
una cinta no se puede rescribir en su mismo lugar, por lo que se procesan todos los
registros y se utiliza un archivo de trabajo tal como se muestra en la figura No. 3.7.

Página : 47
ARCHIVOS SECUENCIALES

Figura No. 3.7 Modificación de algunos datos de un registro.

El procedimiento para modificar algunos datos de un registro consiste en lo


siguiente :

1.- Crear un objeto tipo ofstream que en el caso de la figura No. 3.6 sería el archivo
llamado depaso.dat. y en el cual se grabarán en forma temporal todos los
registros, incluso el modificado.
2.- Crear un objeto tipo ifstream que sería el archivo llamado nomina.dat, del cual se
leeran registro por registro desde el primero hasta el final del archivo con el fin de
encontrar el que se va a modificar.
3.- Crear un objeto tipo registro de datos, que servirá para leer registro por registro
del archivo tipo ifstream.
4.- Abrir un archivo que se encuentra en algún medio de almacenamiento y ligarlo al
objeto tipo ofstream (que para el ejemplo se llama depaso.dat).
5.- Abrir un archivo que se encuentra en algún medio de almacenamiento y ligarlo al
objeto tipo ifstream (que para el ejemplo se llama nomina.dat).
6.- Se hace una verificación para investigar si se abrieron correctamente los dos
archivos. Si la apertura fue exitosa continuar en el paso 7; en caso contrario
enviar un mensaje de error y dar por terminado el proceso.
7.- En el monitor se pide la clave del empleado (que es la llave de búsqueda) para
buscarla en el archivo de entrada.
8.- Dentro de una estructura de repetición (en el caso del ejemplo se maneja un
while) leer un registro del archivo de entrada , comparar la clave del registro a
modificar con la del registro leído y si son diferentes; grabar dicho registro en el
archivo depaso.dat. En el caso que ambas llaves coincidan, quiere decir que es
el registro que debe modificar por lo que se mostrará en el monitor.

Página : 48
ARCHIVOS SECUENCIALES

9.- Se cambia el contenido de los campos a modificar y también se graba en el


archivo depaso.dat. Posteriormente se pasan íntegramente los registros
restantes del archivo nomina.dat al archivo depaso.dat.
10.- Cerrar los dos archivos abiertos al inicio del proceso de modificación.
11.- Actualizar el archivo maestro; es decir, eliminar físicamente del medio de
almacenamiento el archivo llamado nomina.dat y renombrar el archivo depaso.dat
como nomina.dat.

RECUPERACIÓN.

El acceso a un archivo con el propósito de extraer información significativa es


llamado recuperación de la información. Existen básicamente dos clases de
recuperación de información : consulta y generación de reportes. Estas dos clases
se pueden distinguir de acuerdo al volumen de información que producen.

Una consulta produce un volumen relativamente mínimo, mientras que un


reporte puede crear muchas páginas de salida de información. Sin embargo,
algunas empresas prefieren distinguir entre consulta y generación de reportes de
acuerdo a su forma de procesar. Si una recuperación de información es procesada
interactivamente, estas empresas llamarán la recuperación como consulta.

Si la recuperación es procesada por lotes, la recuperación será llamada


generación de reportes. Esta terminología tiende a hacer que la generación de
reportes sea un proceso más planificado, más programado; y la consulta sea un
proceso más espontáneo. La mayoría de los sistemas de información requieren de
ambas clases de recuperación de información.

Una consulta se formula por lo general mediante un lenguaje de consulta, el


cual idealmente se estructura como un lenguaje natural, fácil de comprender y usar
por cualquier persona que no sea experto en la programación.

Los procesadores de consulta, son programas que traducen las preguntas del
usuario en instrucciones que son usadas directamente para accesar al archivo de
datos. Un software procesador de consultas muy común es el SQL (Structured
Query Languaje).

III.3 Mantenimiento.

El mantenimiento de un archivo organizado en forma secuencial consiste en


readaptarlo a todos los cambios continuos del mundo real que es muy dinámico.
Existen dos clases de operaciones de operaciones básicas, las cuales son :

Página : 49
ARCHIVOS SECUENCIALES

1.- Reestructuración de un archivo implica que es necesario aplicar cambios


estructurales dentro del contexto de la misma organización de archivos. Por
ejemplo, cambiar la longitud de los campos, agregar nuevos campos a los
registros, eliminar algunos campos que ya no se utilicen, asignar más espacio
para el archivo, ordenar por algún otro campo a los registros del archivo. Pero el
método de organización sigue siendo el secuencial.

2.- Reorganización es la segunda forma de darle mantenimiento a un archivo


organizado en forma secuencial y que consiste en cambiar de organización al
archivo de datos. El cambio puede ser a organización de archivos secuencial-
indexada u organización de archivos directa.

III.4 Ejemplo de aplicación.

Se desea realizar un programa que permita crear y manipular un archivo


organizado en forma secuencial y que permita las operaciones de : Altas, Bajas,
Modificaciones, Consultas y Reportes.

Se definió un registro de datos que contiene 4 campos que son : Clave del
empleado, su nombre, sueldo diario y días trabajados. La anterior estructura es con
fines didácticos y es la que está establecida en la figura No. 3.1. Se consideró la
clave del empleado como campo llave para poder realizar todas las operaciones
mencionadas en el párrafo anterior.

El programa se elaboró utilizando la programación Orientada a Objetos y la


organización del código se muestra en un diagrama de niveles mostrado en la figura
No. 3.8.

Figura No. 3.8 Estructura genérica del programa práctico.

La función principal del esquema anterior es la encargada de procesar


cualquiera de las seis operaciones que se muestran en forma de bloque.

Página : 50
ARCHIVOS SECUENCIALES

El módulo de desplegar menú, es el que muestra una pantalla principal la cual


es la encargada de solicitar al usuario de la aplicación la operación que desea
realizar en ese momento (Altas, bajas, Consultas, Modificaciones o reporte).

El módulo de altas es el encargado de pedir datos al usuario y almacenar


dichos datos al final del archivo. La ejecución dentro del programa corresponde al
case 1 de la estructura de repetición while.

El módulo de bajas es el que elimina un registro de datos que ya no es útil en


el archivo. La ejecución dentro del programa corresponde al case 2 de la estructura
de repetición while.

El módulo de consultas permite visualizar todo el registro de un empleado en


especial. La ejecución dentro del programa corresponde al case 3 de la estructura
de repetición while.

El módulo de modificaciones es el que permite cambiar el contenido de uno o


varios campos de un registro, a excepción del campo llave. La ejecución dentro del
programa corresponde al case 4 de la estructura de repetición while.

El módulo de reporte es el que obtiene un reporte impreso de cada uno de los


registros, realizando algunos cálculos con los campos de sueldo diario y días
trabajados. La ejecución dentro del programa corresponde al case 5 de la
estructura de repetición while.

En el programa no. 3.2 se muestran las cinco operaciones en un archivo


organizado en forma secuencial.

/* ====================================================
PROGRAMA QUE MANIPULA UN ARCHIVO
ORGANIZADO EN FORMA SECUENCIAL.

AUTOR : JOSE LUIS HERNANDEZ HERNANDEZ


======================================================*/

# include <conio.h>
# include <dos.h>
# include <ctype.h>
# include <stdlib.h>
# include <iostream.h>
# include <fstream.h>
# include <iomanip.h>
# include <string.h>
# include <stdio.h>
# include "C:\NOMINA.HPP"

Página : 51
ARCHIVOS SECUENCIALES

main()
{
int lClave;
int iOp, iJ;
float fSueldo_quin, fDeduc, fSueldoNeto, fIssste;
float fIspt, fTotalQuin, fTotalDeduc, fTotalnNeto;
ifstream ifMaestro; // Objeto tipo archivo de lectura.
ofstream ofMaestro; // Objeto tipo archivo de escritura.
empleado EMP; // Objeto tipo registro empleado.

do {
clrscr();
gotoxy(17,5);cout<<"INSTITUTO TECNOLOGICO DE CHILPANCINGO";
gotoxy(17,6);cout<<"PROGRAMA DE EJEMPLO PARA LA CREACION Y";
gotoxy(18,8);cout<<"MANIPULACION DE ARCHIVOS ORGANIZADOS";
gotoxy(24,9);cout<<"EN FORMA SECUENCIAL.";
gotoxy(26,11); cout<<"MENU PRINCIPAL";
gotoxy(25,14); cout<<"1] ALTAS.";
gotoxy(25,15); cout<<"2] BAJAS.";
gotoxy(25,16); cout<<"3] CONSULTAS.";
gotoxy(25,17); cout<<"4] MODIFICACIONES.";
gotoxy(25,18); cout<<"5] REPORTE. ";
gotoxy(25,19); cout<<"6] SALIR.";
gotoxy(25,21); cout<<"Elige una opcion: ";
cin>>iOp;
switch(iOp) {

case 1: // OPCION DE ALTAS


clrscr();
char Op = 'n';
ofMaestro.open("c:\\nomina.dat", ios::app | ios::binary);
do{
EMP.PedirDatos();
ofMaestro.write((char *) &EMP, sizeof(EMP));
gotoxy(24,20);cout<<"Desea otro registro: ";
Op = getchar();
}while(toupper(Op)=='S');
ofMaestro.close();
break;

case 2: // OPCION DE BAJAS


clrscr();
ifMaestro.open("c:\\nomina.dat",ios::in | ios::binary);
ofMaestro.open("c:\\depaso.dat",ios::app| ios::binary);
gotoxy(25,12);cout<<"introduce la clave del registro a eliminar : ";
cin>>lClave;
while(ifMaestro.read((char *) &EMP, sizeof(EMP))!=0){
if(EMP.clave!=lClave)

Página : 52
ARCHIVOS SECUENCIALES

ofMaestro.write((char *) &EMP, sizeof(EMP));


}
ifMaestro.close();
ofMaestro.close();
remove("c:\\nomina.dat");
rename("c:\\depaso.dat","c:\\nomina.dat");
break;

case 3: // OPCION DE CONSULTAS.


clrscr();
ifMaestro.open("c:\\nomina.dat",ios::in | ios::binary);
gotoxy(25,12);cout<<"introduce la clave del registro a consultar : ";
cin>>lClave;

while(ifMaestro.read((char *) &EMP, sizeof(EMP))!=0){


if(EMP.clave==lClave) {
clrscr();
EMP.Consultas();
}
}
ifMaestro.close();
break;

case 4: // OPCION DE MODIFICACIONES


clrscr();
int iL = 25;
ifMaestro.open("c:\\nomina.dat",ios::in | ios::binary);
ofMaestro.open("c:\\depaso.dat",ios::out| ios::binary);
gotoxy(25,12);cout<<"introduce la clave del registro a modificar : ";
cin>>lClave;
while(ifMaestro.read((char *) &EMP, sizeof(EMP))!=0){
if(EMP.clave==lClave)
{
EMP.Modifica();
ofMaestro.write((char *) &EMP, sizeof(EMP));
}
else
ofMaestro.write((char *) &EMP, sizeof(EMP));
}
ifMaestro.close();
ofMaestro.close();
remove("c:\\nomina.dat");
rename("c:\\depaso.dat","c:\\nomina.dat");
break;

case 5: // OPCION DE REPORTE


int pagina=1, iLineas=62;
clrscr();

Página : 53
ARCHIVOS SECUENCIALES

ifstream entrada("c:\\nomina.dat",ios::in | ios::binary);


ofstream impresora("PRN");
if (!entrada){
gotoxy(10,8); cout<<"no se puede abrir el archivo de datos. ";
delay(2000);
}
else if(!impresora){
gotoxy(10,8); cout<<"no se puede abrir la impresora";
delay(2000);
}
else{
fTotalQuin = fTotalDeduc = fTotalnNeto =0.0;
while(entrada.read((unsigned char *) &EMP,sizeof(empleado))!= 0){
fSueldo_quin=fDeduc=fSueldoNeto=fIssste=fIspt=0.0;
fSueldo_quin=EMP.sdia*EMP.dias;
fIssste=fSueldo_quin*0.0176;
fIspt=fSueldo_quin*0.0143;
fDeduc=fIssste+fIspt;
fSueldoNeto=fSueldo_quin-fDeduc;
fTotalQuin=fTotalQuin+fSueldo_quin;
fTotalDeduc+=fDeduc;
fTotalnNeto=fTotalnNeto+fSueldoNeto;
if (iLineas>60){
impresora<<" INSTITUTO TECNOLOGICO DE”;
impresora<<” CHILPANCINGO”;
impresora<<” “<<”pagina: "<<pagina<<endl<<endl;
impresora<<" REPORTE OBTENIDO DE UN ARCHIVO”;
impresora<< ORGANIZADO EN FORMA SECUENCIAL“;
impresora<<endl;
impresora<<"=============================================”;
impresora<<”========”<<endl;
impresora<<" CLAVE NOMBRE SUELDO DEDUC.”;
impresora<<” SUELDO "<<endl;
impresora<<" DEL EMPLEADO QUINCENAL
impresora<<” NETO”<<endl;
impresora<<"=============================================”;
impresora<<”========”<<endl;
iLineas = 8;
}
impresora.fill(' ');
impresora<<setw(8)<<EMP.clave<<" ";
impresora<<resetiosflags(ios::right);
impresora.setf(ios::left);
impresora<<setw(25)<<EMP.nom;
impresora<<resetiosflags(ios::left);
impresora<<setiosflags(ios::showpoint | ios::fixed);
impresora<<setprecision(2);
impresora.setf(ios::right);
impresora<<setw(12)<<setiosflags(ios::right)<<fSueldo_quin;
impresora<<setw(12)<<fDeduc;
impresora<<setw(10)<<fSueldoNeto<<endl;

Página : 54
ARCHIVOS SECUENCIALES

iLineas++;

}
impresora<<endl<<endl;
impresora<<" totales.......... $ ";
impresora<<setw(11)<<fTotalQuin;
impresora<<setw(12)<<fTotalDeduc;
impresora<<setw(10)<<fTotalnNeto;
entrada.close();
impresora<<"\f";
impresora.close();
}
break;
}
}while(iOp!=6);
return 0;
}

Programa No. 3.2 Ejemplo de manipulación de un archivo secuencial.

Página : 55
CAPITULO 4

Archivos
Secuencial-
Indexados
ARCHIVOS SECUENCIAL-INDEXADO

Capitulo IV.- Archivos Secuencial-Indexados.

Una manera efectiva de organizar una colección de registros, cuando existe la


necesidad de accesar los registros secuencialmente, por algún valor de llave, como
de accesarlos individualmente, con esa misma llave, es la organización de archivos
secuenciales-indexados. Un archivo secuencial-indexado proporciona la
combinación de tipos de acceso que manejan un archivo secuencial y un archivo
directo.

Esta organización está diseñada para utilizar la combinación de la


organización directa y la secuencial, obteniendo la ventaja de poder acceder a los
registros en forma secuencial y relativamente de manera directa.

Como se pude apreciar la organización de archivos secuenciales-indexados


es efectiva para satisfacer la necesidad tanto de acceder a los archivos en forma
secuencial como de forma directa mediante algún valor del campo llave.

IV.1 Estructura de un archivo secuencial-indexado.

Para poder estructurar esta organización es necesario construir el área de


índices a partir de un archivo organizado en forma secuencial y basándonos en la
disposición física de los datos almacenados.

Para construir el área del índice, se toma un archivo organizado en forma


secuencial para considerarlo como área de datos. Por ejemplo imaginemos que se
va a tomar el archivo que se muestra en la figura no. 4.1 y dicho archivo
corresponderá al área de datos del archivo secuencial-indexado.

Figura No. 4.1 Área de datos de un archivo secuencial-indexado.

A partir del área de datos del ejemplo de la figura no. 4.1, se crea el área de
índices en donde se manejará una estructura del registro que contenga
exclusivamente dos campos : El campo llave (clave) y la dirección de inicio
(ubicación) de cada registro. La estructura del registro del área de índices queda tal
como se muestra en la figura No. 4.2.

Página : 57
ARCHIVOS SECUENCIAL-INDEXADO

Figura No. 4.2 Estructura del registro del área de datos.

Para cualquier proceso de altas, bajas, modificaciones, consultas o reporte es


necesario utilizar el área de índice para la búsqueda del registro solicitado y el área
de datos para tomar toda la información del registro. Es decir, que los dos archivos
unidos son considerados para realizar los accesos en forma secuencial-indexado tal
como se aprecia en la figura no. 4.3.

Figura No. 4.3 El área de datos y el área de índice permiten la organización


Secuencial-indexado.

El área de índices siempre deberá conservarse ordenado por el campo llave,


de forma que la búsqueda pueda ser lo más rápida posible. La función del área de
índices es análoga a la del índice de éste libro : facilitar la búsqueda de una
determinada palabra o tema. Considerando como área de datos la figura no 4.1, el
área de índices queda tal y como se muestra en la figura no. 4.4.

Figura No. 4.3 El área de datos y el área de índice permiten la organización

Página : 58
ARCHIVOS SECUENCIAL-INDEXADO

El tipo de más simple de búsqueda en el archivo de índices es el lineal


simple, que consiste en buscar en forma secuencial la llave solicitada y al
encontrarla toma la ubicación del registro y se dirige en forma directa al área de
datos para leer el registro en cuestión.

De acuerdo a la forma en que se estén almacenados los registros y la forma


en que se desea recuperar, se pueden presentar los siguientes dos casos :

1.- El archivo está almacenado en secuencia física por el campo llave y se


desea el acceso directo por dicho campo.- Cuando el campo de búsqueda
coincide con el campo de secuencia física se le denomina organización
secuencial indexada.

2.- El archivo está almacenado en secuencia física por un campo y se desea la


recuperación en secuencia por algún campo.- Si el campo llave por el que se
desea acceder de forma secuencial es el mismo que el de la secuencia física,
simplemente hay que leer los registros según la secuencia en que están
almacenados.

A la hora de construir el archivo de índices hay que tener en cuenta los puntos
que se describen a continuación :

• Cualquier campo del archivo puede servir de base para construir el índice.
• Una combinación de campos de un registro de datos puede servir de base
para construir in índice. Por ejemplo, para obtener un listado ordenado
alfabéticamente, el archivo índice estará formado por dos o más campos a la
vez.
• Cualquier índice puede emplearse tanto para el acceso directo, en función del
campo indexado, como para el acceso secuencial, según la secuencia de
dicho campo.
• Un determinado archivo puede tener asociados varios archivos índices, bien
por un campo llave o por una combinación de ellos. La figura No. 4.5 nos
muestra el caso de un archivo de datos y dos archivos de índices.
• Cuando se modifica el archivo de datos es necesario actualizar todos los
archivos de índices asociados al archivo de datos. Es una tarea laboriosa
porque en todo momento debe haber una correspondencia entre el archivo de
datos y sus archivos de índices.

Página : 59
ARCHIVOS SECUENCIAL-INDEXADO

Figura No. 4.5 Una área de datos y dos áreas de índice.

Los índices que pueden crearse son de dos posibles tipos :

• Índice denso o exhaustivo.- Es aquel en el cual existe un registro índice por


cada valor del campo llave en el archivo de datos. Este tipo de índice es el
más utilizado hasta ahora.
• Índice escaso o selectivo.- En este tipo de índices se crea solamente
registros índice para algunos de los registros del campo llave en el archivo de
datos. Estos índices son utilizados cuando se desea cierta información
selectiva (Por ejemplo todos los trabajadores de confianza de cierta empresa).

Siguiendo con ejemplos en la programación Orientada a Objetos, se creó una


clase en el lenguaje C++ para crear objetos tipo empleado y otra clase para crear
objetos tipo índice. Las dos clases se crearon en un solo archivo .hpp y muestran
en el programa no. 4.1

//=========================================================
// DEFINICION DE LA CLASE TIPO : EMPLEADO.
// PARA MANEJO DE ARCHIVOS ORGANIZADOS EN FORMA
// SECUENCIAL-INDEXADOS.
//=========================================================

class empleado{
private:
int clave; // DATOS MIEMBRO
char nom[30];
float sdia;
int dias;
public:
empleado(); // FUNCIONES MIEMBRO
Desplegar(int iL);
PedirDatos();
Modifica();
Consultas();

Página : 60
ARCHIVOS SECUENCIAL-INDEXADO

Bajas();
imprime();
Datos_Constantes();
~empleado(){};
};

empleado::empleado()
{
dias = clave = 0;
strcpy(nom," \0");
sdia = 0.0;
}

//=========================================================
// DEFINICION DE LA CLASE TIPO : INDICE.
//=========================================================

class Indice {
private :
int clave; // Campo llave.
unsigned int ubicacion; // Campo Ubicación.
public :
Indice(); // Funciones miembro
~Indice() {};
};
Indice::Indice()
{
clave = ubicacion = 0;
}

Programa No. 4.1 Codificación de la clase empleado y la clase indice.

Una vez que se tiene la clase, se pueden crear instancias u objetos de la clase
empleado y de la clase índice. Los objetos creados con la clase empleado
contendrán los cuatro campos acomodados en el orden definido junto con sus
funciones miembro; por otro lado los objetos creados a partir de la clase índice
contendrán dos campos y sus funciones miembro respectivas.

Se crea adicionalmente el código que será el responsable de crear todos los


objetos de la aplicación y la manipulación de los mismos. Dicho código deberá
almacenarse con el nombre apropiado, pero deberá tener extensión *.cpp
conteniendo lo siguiente :

• Incluir archivos de cabecera (incluso el .hpp donde se definió la clase).


• Incluir la función main () como rectora de la aplicación.
• Dentro de la función main () deberán crearse, manipularse y destruirse los
objetos requeridos por la aplicación.

Página : 61
ARCHIVOS SECUENCIAL-INDEXADO

Al compilar la aplicación se incluye el archivo .hpp donde están definidas las


dos clases y junto con él .cpp, se genera un solo ejecutable tal como se muestra en
la figura No. 4.6.

Figura No. 4.6 Se incluye el archivo .hpp con sus clases para crear el ejecutable.

IV.2 Operaciones a efectuar.

La manera como se va a usar el archivo es un factor importante para


determinar que la organización secuencial-indexada es la adecuada para cierto
sistema de información.

Un archivo con la forma de organización secuencial-indexada puede


accesarse por un programa que se ejecuta por lotes (en modo batch) o por un
programa que se ejecuta interactivamente. Con el modo de acceso por lotes, las
transacciones normalmente serían secuenciales, mientras que con accesos
interactivos las transacciones aprovecharían esta forma de organización y las
operaciones sería más rápidas que en un archivo organizado en forma secuencial.

Las operaciones básicas que se pueden ejecutar sobre un archivo organizado


en forma secuencial-indexada son las siguientes :

CREACION.

La creación inicial de un archivo es conocida también como la carga del


archivo y consiste en tomar un archivo que se encuentra organizado en forma

Página : 62
ARCHIVOS SECUENCIAL-INDEXADO

secuencial y generar el área de índices para poderle hacer todas las operaciones
que se describen más delante de éste mismo documento.

Se va a tomar el archivo creado y que está organizado en forma secuencial del


capítulo III de éste documento y se hace la programación requerida, la cual se
plasma en el programa no. 4.2 que se encuentra a continuación.

//============================================================
// PROGRAMA DE EJEMPLO PARA CREAR EL ARCHIVO DE INDICES
// DE UN ARCHIVO SECUENCIAL INDEXADO
// Autor : José Luis Hernández Hernández.
//============================================================

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <fstream.h>
#include "indice.hpp"

int Reg = 0; // Contador de registros.


ifstream ifEmpleado; // Objeto tipo archivo de lectura.
ofstream ofIndice; // Objeto tipo archivo de escritura.
empleado EMP; // Objeto tipo registro de empleados.
Indices IND[50]; // Arreglo de Objetos tipo registro de indices.

Abrir_Archivos(); // Definición de prototipos de funciones utilizadas.


Leer_Archivo();
Ordenar_Indices();
Grabar_Indices();
Cierra_Archivo();

main()
{
Abrir_Archivos(); // Abre Archivo Secuencial y de Indices.
Leer_Archivo(); // Lee Archivo Secuencial y carga Matriz.
Ordenar_Indices(); // Ordena el Arreglo de Indices.
Grabar_Indices(); // Graba los indices en el archivo.
Cierra_Archivo(); // Cierra los Archivos.
return 0;
}

Abrir_Archivos()
{
ifEmpleado.open("c:\\nomina.dat",ios::in | ios::binary);
if (!ifEmpleado)
{
clrscr();

Página : 63
ARCHIVOS SECUENCIAL-INDEXADO

cout << "El Archivo <SECUENCIAL> no pudo abrirse"<<endl;


cout << "Pulsar <Return> para Salir"<<endl;
getchar();
exit (-1);
}

ofIndice.open("c:\indices.dat",ios::out | ios::binary);
if (!ofIndice)
{
clrscr();
cout << "El Archivo de <INDICES> no pudo abrirse"<<endl;
cout << "Pulsar <Return> para Salir"<<endl;
getchar();
exit (-1);
}
return 0;
}

Leer_Archivo()
{
int Ubicacion = 0;
Reg = 0;
ifEmpleado.read((char *) &EMP, sizeof(EMP));
while(!ifEmpleado.eof())
{
IND[Reg].clave = EMP.clave;
IND[Reg].ubicacion = Ubicacion;
ifEmpleado.read((char *) &EMP, sizeof(EMP));
Reg++; // Incrementa # Registro
Ubicacion = Ubicacion + sizeof (EMP); // Incrementa Ubicaci¢n
}
Reg--; // Para Conocer No. de Registros
return 0;
}

Ordenar_Indices()
{
int i,j; // Indices para manipular matriz
int Aux1,Aux2;
for (i=0 ; i < Reg - 1; i++)
{
for (j = 0; j < Reg - 1; j++)
{
if ( (IND[j].clave) > (IND[j+1].clave))
{
Aux1 = IND[j].clave;
Aux2 = IND[j].ubicacion;
IND[j].clave = IND[j+1].clave;
IND[j].ubicacion = IND[j+1].ubicacion;
IND[j+1].clave = Aux1;

Página : 64
ARCHIVOS SECUENCIAL-INDEXADO

IND[j+1].ubicacion = Aux2;
}
}
}
return 0;
}

Grabar_Indices()
{
int i;
for(i=0; i<= Reg ; i++)
{
ofIndice.write((char *) &IND, sizeof(IND));
cout << IND[i].clave << " " << IND[i].ubicacion << endl;
}
return 0;
}

Cierra_Archivo()
{
ifEmpleado.close();
ofIndice.close();
return 0;
}
Programa No. 4.2 Programa para la creación del área de indices.

ACTUALIZACION.

La actualización consiste en cambiar el contenido de un archivo de datos, esto


con el fin de reflejar todos los cambios que se dan en cierto momento en el mundo
real. Dichos cambios pueden incluir las siguientes acciones :

1.- Altas de nuevos registros al archivo de datos. En el caso de los archivos


organizados en forma secuencial-indexada, el nuevo registro deberá grabarse
al final del área de datos y deberá insertarse en el lugar adecuado del área
de índices para que los índices siempre estén ordenados.

Un ejemplo de altas de un nuevo registro, se puede observar en el programa


No. 4.3 en el cual se graba el registro completo en el área de datos y el campo
llave junto con la ubicación del registro se almacena en el área de índices.

2.- La eliminación de registros implica borrar físicamente el registro del área de


datos y además el registro del área de índices. La forma de eliminación es
semejante a la organización de archivos secuencial, porque se recorre todo el

Página : 65
ARCHIVOS SECUENCIAL-INDEXADO

archivo apoyándose en un archivo de trabajo y escribiendo en él todos los


registros que tengan la llave diferente al registro que se va a eliminar.

Caber hacer mención que dicha operación tiene que hacerse a los archivos
donde se encuentra en área de datos y también al área de índice.

3.- La modificación es el cambio de contenido a uno o varios campos


exclusivamente del registro del área de datos. El área de índice sirve
únicamente para localizar el registro que se va a modificar.

Cabe hacer mención que el área de datos es abierta como archivo de entrada
/ salida, debido a que se lee un registro de datos, se corrigen algunos campos y se
vuelve a rescribir en el mismo lugar que ocupa físicamente.

RECUPERACIÓN.

El acceso a un archivo con el propósito de extraer información significativa es


llamado recuperación de la información. Existen básicamente dos clases de
recuperación de información : consulta y generación de reportes. Estas dos clases
se pueden distinguir de acuerdo al volumen de información que producen.

Los archivos organizados en forma secuencial-indexados son muy


apropiados para implementar las consultas; debido a que en comparación con la
organización de archivos secuencial, el tiempo de acceso es muchisimo más rápido
debido a que el área de índices es leída y nos manda directamente al registro en
cuestión.

En el caso de los reportes, no existe ninguna diferencia con la organización


de archivos secuencial, porque se toma únicamente el área de datos para generar
cualquier reporte.

III.3 Mantenimiento.

1.- Reestructuración de un archivo implica que es necesario aplicar cambios


estructurales dentro del contexto de la misma organización de archivos.
Dichos cambios pueden ser el cambio del campo llave, lo que implica tomar el
área de datos y volver a generar el área de índices.

Página : 66
ARCHIVOS SECUENCIAL-INDEXADO

2.- Reorganización es la segunda forma de darle mantenimiento a un archivo


organizado en forma secuencial-indexado y que consiste en cambiar de
organización al archivo de datos. El único cambio que puede ser posible es a
organización de archivos directa.

IV.4 Ejemplo de aplicación.

Se desea realizar un programa que permita crear y manipular un archivo


organizado en forma secuencial y que permita las operaciones de : Altas, Bajas,
Modificaciones, Consultas y Reportes.

Se definió un registro de datos que contiene 4 campos que son : Clave del
empleado, su nombre, sueldo diario y días trabajados. La anterior estructura es con
fines didácticos y es la que está establecida en la figura No. 3.1. Se consideró la
clave del empleado como campo llave para poder realizar todas las operaciones
mencionadas en el párrafo anterior.

Debido a que un programa para aplicar todas las operaciones a un archivo


secuencial-indexado se hacía muy extenso para poder explicarlo, se utilizó el código
de la clase establecida en el programa no. 4.1 de éste capitulo y se decidió hacer
un programa para cada operación.

OPERACIÓN DE ALTAS.

/* ==============================================================
PROGRAMA QUE DA DE ALTAS REGISTROS A UN ARCHIVO INDEXADO
CON LA FILOSOFIA DE LA PROGRAMACION ORIENTADA A OBJETOS.
AUTOR: JOSE LUIS HERNANDEZ HERNANDEZ
===============================================================*/

# include <conio.h>
# include <ctype.h>
# include <stdlib.h>
# include <iostream.h>
# include <fstream.h>
# include <string.h>
# include <stdio.h>

# include "INDICE.HPP" // Se incluye el archivo donde se


// encuentra la clase del registro
// de datos y la clase del indice.

main()

Página : 67
ARCHIVOS SECUENCIAL-INDEXADO

{
clrscr();
char Op = 'n';
empleado EMP; // Crea un objeto Tipo Registro Empleado.
Indices Ind; // Objeto tipo indice..

ofstream Arch_Datos; // Se crean dos objetos tipo Archivo de salida.


ofstream Arch_Indice;

Arch_Datos.open("c:\\nomina.dat", ios::app | ios::binary);


Arch_Indice.open("c:\\nomina.idx", ios::app | ios::binary);

if (!Arch_Datos)
{
cout << "No se abrio el archivo de datos" << endl;
cout << "<RETURN> para terminar ..." << endl;
getchar();
exit (-1);
}

if (!Arch_Indice)
{
cout << "No se abrio el archivo de indices" << endl;
cout << "<RETURN> para terminar ..." << endl;
getchar();
exit (-1);
}

do{
EMP.limpiar();
EMP.PedirDatos();
Ind.ubicacion = Arch_Datos.tellp();
Ind.clave = EMP.clave;
Arch_Datos.write((char *) &EMP, sizeof(EMP));
Arch_Indice.write((char *) &Ind, sizeof(Ind));
gotoxy(24,20);cout<<"DESEA CAPTURAR OTRO REGISTRO : ";
Op = getchar();
}while(toupper(Op)=='S');

Arch_Datos.close();
Arch_Indice.close();
}

Programa No. 4.3 Programa dar de alta un registro en el area de datos y en el area de indice.

Página : 68
ARCHIVOS SECUENCIAL-INDEXADO

OPERACIÓN DE MODIFICACION.

/* ================================================================
PROGRAMA QUE SIRVE PARA REALIZAR MODIFICACIONES A UN
ARCHIVO ORGANIZADO EN FORMA SECUENCIAL-INDEXADA.
SE UTILIZA LA FILOSOFIA DE LA PROGRAMACION ORIENTADA A OBJETOS
AUTOR : JOSE LUIS HERNANDEZ HERNANDEZ
===============================================================*/

# include <conio.h>
# include <ctype.h>
# include <stdlib.h>
# include <iostream.h>
# include <fstream.h>
# include <string.h>
# include <stdio.h>
# include "INDICE.HPP" // Se incluye el archivo donde se
// encuentra la clase (del registro
// de datos).
main()
{
int Clave; // Clave para pedir por teclado.
empleado EMP; // Crea un objeto Tipo Registro Empleado
Indices IND; // Crea un objeto Tipo Indice.

fstream Archivo_Datos;
fstream Archivo_Indice;

Archivo_Datos.open("c:\\nomina.dat", ios::in | ios::out | ios::binary);


if (!Archivo_Datos)
{
cout << "No se abrio el archivo de lectura-escritura" << endl;
cout << "<RETURN> para terminar ..." << endl;
getchar(); exit(-1);
}

Archivo_Indice.open("a:\\nomina.idx", ios::in | ios::binary);


if (!Archivo_Indice)
{
cout << "No se abrio el archivo de Indices " << endl;
cout << "<RETURN> para terminar ..." << endl;
getchar(); exit(-1);
}

Clave = EMP.Pedir_Clave(); // Pedir Clave del registro a modificar.

Archivo_Indice.read((char *) &IND, sizeof(IND));


while( !Archivo_Indice.eof() )
{
if (Clave == IND.clave)

Página : 69
ARCHIVOS SECUENCIAL-INDEXADO

{
Archivo_Datos.seekg(IND.ubicacion);
Archivo_Datos.read((char *) &EMP, sizeof(EMP));
EMP.Desplegar_Registro();
EMP.PedirDatos();
Archivo_Datos.seekg(IND.ubicacion);
Archivo_Datos.write((char *) &EMP, sizeof(EMP));
Archivo_Indice.close();
Archivo_Indice.close();
return 0;
}
Archivo_Indice.read((char *) &IND, sizeof(IND));
}
gotoxy(40,22);
cout << "NO SE ENCONTRO EL REGISTRO BUSCADO ......." << endl;
Archivo_Indice.close();
Archivo_Indice.close();
return 0;
}

Programa No. 4.4 Modificaciones a un registro en el area de datos sin modificar el area de
indice.

Página : 70
CAPITULO 5

Archivos Directos
ARCHIVOS DIRECTOS

Capitulo V.- Archivos Directos.

Un archivo organizado en forma directa consiste en una colección de registros


de longitud fija almacenados uno al lado del otro en un dispositivo de
almacenamiento de acceso directo (direct - access storage device, DASD). El
almacenamiento de este tipo de archivos se restringe a los DASD, tales como discos
y tambores, por que el acceso a registros se hace generalmente en orden aleatorio.

Cada registro en un archivo de organización en forma directa se puede referir


por medio de un número -entero- de dirección, el cual indica su distancia o
desplazamiento desde el origen del archivo. Al primer registro en un archivo relativo
se le asigna el valor 1, 2 al siguiente y así sucesivamente. De este modo, la
dirección relativa de un valor entero refleja su posición respecto al primer registro del
archivo. El acceso aleatorio de un registro en un archivo de organización relativa se
hace vía su número relativo de registro o bien su llave.

Un archivo de organización directa puede crearse con un programa en un


lenguaje de alto nivel si es que el método de acceso del sistema operativo central es
capaz de manejar esta organización, y si el compilador del lenguaje de programación
soporta dicho método de acceso.

Para utilizar esta forma de organización, se debe crear el archivo apartando


una cantidad específica de lugares para cada uno de los registros de datos, tal y
como se muestra en la figura no. 5.1

Figura No. 5.1 Estructura de un archivo directo.

V.1 Estructura de un Archivo Directo.

En un archivo directo existe una relación predecible entre la clave utilizada


para identificar al registro en particular y la localización del registro dentro del
archivo, siempre y cuando la el campo llave del mismo corresponda con la ubicación
relativa del registro como se aprecia en la figura no. 5.1.

Página : 72
ARCHIVOS DIRECTOS

Pero el mayor de los casos ocurre cuando el ordenamiento lógico de los


registros no tiene ninguna relación con su secuencia física; para éste caso tiene que
haber una transformación del campo llave para traducirlo a una ubicación dentro del
registro tal como se muestra en la figura no. 5.2.

Figura no 5.2 Archivo directo donde debe transformarse la llave.

Cuando un archivo directo se establece debe definirse una relación que será
utilizada para obtener una dirección física a través de un valor del campo llave. Esta
relación es llamada función de mapeo (también conocida como transformación KTA
-Key To Address-). Se utiliza la siguiente función de transformación :

Cuando se debe guardar un registro en un archivo directo, la función de


mapeo R se utiliza para traducir el valor del campo llave del registro en una dirección
que indica dónde deberá almacenarse el registro.

Cuando se desea recuperar un registro, el valor del campo llave es entregado


a la función R, la cual traduce el valor del campo en una dirección en la cual está el
registro.

En general, los archivos organizados en forma directa permiten acceder a


registros en un número de accesos igual o cercano a uno.

Los archivos directos deben de ser almacenados en medios de


almacenamiento de acceso directo exclusivamente (como los diskettes, discos duros
o cd’s).

Existen varias técnicas de transformación de llaves (Hashing), cinco de las


más utilizadas son las que se describen a continuación :

1.- Direccionamiento por Conversión a Octal.- Esta forma de direccionamiento es


utilizada para llaves que son tipo alfabéticas y consiste en asignar a cada

Página : 73
ARCHIVOS DIRECTOS

letra de la llave un valor numérico que corresponda con su orden alfabético.


Así la A valdría 1n la B valdría 2, la C valdría, y así sucesivamente. Los
valores de todas las letras que forman la llave se suman y el resultado se
transforma en octal. El número obtenido es la dirección lógica buscada.

Por ejemplo, si el campo llave contiene el nombre : LUIS. Dicho dato se


transformará de la forma siguiente :

El número 63 está dado en decimal, pero se convierte a octal dando : 77


que es el número de registro donde se almacenará el registro de dicha llave.

Este método puede producir sinónimos, es decir que el valor octal sea el
mismo. Así por ejemplo las claves : COSA, SACO, CASO y ASCO.
Producen el mismo valor por lo que se debe considerar una área de
desborde para éstos casos.

2.- Direccionamiento por Restas Sucesivas.- Esta forma de direccionamiento se


aplica en campos llave que son del tipo numérico y es utilizada en archivos
que pueden tener muchos huecos de valores conocidos previamente.

Por ejemplo, si los campos llave se encuentran comprendidos entre los


siguientes valores :

Rangos de valores Huecos de numeración

01500 a 03100 00001 a 01499 inclusive


03700 a 03900 03101 a 03699 inclusive
10001 a 12000 03901 a 10000 inclusive

Este método consiste en restar al campo llave el valor absoluto de estos


límites de la forma siguiente :

1500 <= Llave <= 3100 Restar 1499


3700 <= Llave <= 3900 Restar (1499 + 599)
10001 <= Llave <= 12000 Restar (1499 + 599 + 6100).

Este método de direccionamiento no produce sinónimos y es muy bueno.

3.- Direccionamiento Por División.- Esta forma de direccionamiento consiste en


dividir el valor del campo llave entre el número de direcciones asignadas al

Página : 74
ARCHIVOS DIRECTOS

archivo más uno y tomar el resto de la división entera como dirección lógica
del registro.

Por ejemplo, el campo llave con el valor 97234 para un archivo de 1,200
posiciones físicas se transformará en la dirección lógica siguiente :

97234 / 1201 = 80.96, De la cual se toma el valor entero y por lo tanto


80  corresponde a la dirección lógica calculada.

Esta forma de calcular direccionamiento, por lo que también deberá


considerarse un área de desborde.

4.- Direccionamiento por el Centro del Cuadrado.- Consiste en eliminar del


número obtenido, al elevar la clave al cuadrado, las cifras extremas (a
izquierda y derecha del número) y considerar las cifras restantes como un
valor decimal comprendido entre cero y uno, valor que se multiplica por el
número de direcciones disponibles en el archivo para obtener la dirección
lógica del registro.

Por ejemplo, para obtener la dirección lógica correspondiente a la clave 75460


en un archivo de 2000 direcciones, se hace lo siguiente :

75460 * 75460 = 569 4211 600  0.4211

Dirección Lógica = Valor entero de (0.4211 * 2000) = 842.

5.- Direccionamiento por desplazamiento.- En éste método, los dígitos exteriores


en ambos extremos se corren hacia adentro, de modo que queden
trasladados en la medida de la longitud de la dirección. Se suman a
continuación los dígitos trasladados, y el resultado se multiplica por el factor
de ajuste, que estará en función del número de direcciones disponibles en el
archivo.

Por ejemplo : La llave que tiene el valor : 17207359

Se toman los primeros cuatro dígitos para formar un valor y los últimos cuatro
dígitos para formar el otro valor; ambos se suman y se obtiene la dirección
lógica donde se almacenará el registro.

1720
+ 7359
-------------
9 0 7 9  Que es la dirección lógica del registro.

Página : 75
ARCHIVOS DIRECTOS

Ventajas y desventajas de usar archivos directos.


• La ventaja principal de un archivo directo es la habilidad de accesar registros
individuales directamente.
• Su desventaja radica (dependiendo de la función de mapeo) en que se puede
presentar una misma dirección para diferentes valores de llave, es decir, se
presentan colisiones.
• Otra desventaja es el desperdicio de espacio debido a la distribución al azar
de los registros.

Siguiendo con ejemplos en la programación Orientada a Objetos, se creó una


clase en el lenguaje C++ para crear objetos tipo empleado para que en base a dicha
clase se pueda crear un archivo organizado en forma directa. La clase creada se
muestra en el programa no. 5.1.

/* ============================================================
CLASE EMPLEADO, QUE SERA UTILIZADA PARA LA
CREACION DE REGISTROS PARA SER UTILIZADOS
EN UN ARCHIVO ORGANIZADO EN FORMA DIRECTA.
AUTOR : JOSE LUIS HERNANDEZ HERNANDEZ
==============================================================*/

class empleado{
private :
int clave; // DATOS MIEMBRO
char nom[30];
float sdia;
int dias;
public :
empleado(); // FUNCIONES MIEMBRO
Pedir_Datos();
int Pedir_Clave();
Modifica();
Consultas();
Datos_Constantes();
~empleado() { };
};

empleado::empleado()
{
dias = clave = 0;
strcpy(nom," \0");
sdia = 0.0;
}

Página : 76
ARCHIVOS DIRECTOS

int empleado::Pedir_Clave()
{
int Cve;
clrscr();

gotoxy(20,10); cout<<"Clave del empleado : ";


cin >> Cve;
fflush(stdin);
return Cve;
}

empleado::Pedir_Datos()
{ clrscr();
gotoxy(10,5); cout<<"ALTAS DE UN REGISTRO A UN ARCHIVO DIRECTO.";
Datos_Constantes();
gotoxy(46,10); cout << clave;
fflush(stdin);
gotoxy(46,12); gets(nom);
fflush(stdin);
gotoxy(46,14); cin>>sdia;
fflush(stdin);
gotoxy(46,16); cin>>dias;
fflush(stdin);
return 0;
}

empleado::Modifica()
{ clrscr();
char nomm[30], diass[3],sdiaa[10];
gotoxy(10,5);
cout<<"MODIFICACION A UN REGISTRO DE UN ARCHIVO DIRECTO.";
Datos_Constantes();
gotoxy(46,10); cout<< clave;
gotoxy(46,12); cout<< nom;
gotoxy(46,14); cout<< sdia;
gotoxy(46,16); cout<< dias;
gotoxy(48,12); gets(nomm);
fflush(stdin);
gotoxy(48,14); gets(sdiaa);
fflush(stdin);
gotoxy(48,16); gets(diass);
fflush(stdin);
if (diass[0] != '\x0') dias = atoi(diass);
if (sdiaa[0] != '\x0') sdia = atof(sdiaa);
if (nomm[0] != '\x0')
{ strcpy(nom," ");
strcpy(nom,nomm);
}
return 0;
}

Página : 77
ARCHIVOS DIRECTOS

empleado::Consultas()
{
gotoxy(10,5);
cout<<"CONSULTAS DE UN REGISTRO EN UN ARCHIVO DIRECTO.";
Datos_Constantes();
gotoxy(46,10); cout<< clave;
gotoxy(46,12); cout<< nom;
gotoxy(46,14); cout<< sdia;
gotoxy(46,16); cout<< dias;
gotoxy(50,22); cout<<"<Return> para continuar";
getchar();
return 0;
}

empleado::Datos_Constantes()
{
gotoxy(20,10); cout<<"Clave del empleado : ";
gotoxy(20,12); cout<<"Nombre del empleado : ";
gotoxy(20,14); cout<<"Sueldo diario : ";
gotoxy(20,16); cout<<"No. de Dias trabajados : ";
return 0;
}

Programa no. 5.1 Codificación de la clase empleado para usarla en Archivos Directos.

V.2 Operaciones a efectuar.

La forma como se va a usar un archivo es un factor importante para


determinar cómo se debe organizar. Dos aspectos importantes sobre el uso de
archivos son su modo de utilización y la naturaleza de las operaciones sobre el
archivo.

Los archivos organizados en forma directa son los ideales para utilizarlos en
sistemas de información que tienen accesos interactivos o en tiempo real. Lo
anterior es debido a que no importa la cantidad de registros que tenga el archivo de
datos. Las altas, bajas, modificaciones o consultas serán rapidísimas porque el
acceso lo hace en forma directa sin pasar por ningún registro previo.

Para el uso de un archivo en procesos tipo batch, el acceso es semejante a un


archivo organizado en forma secuencial, con la diferencia que tiene que ir verificando
que el registro leído tenga datos para que sea procesado; en caso contrario, debe
ser brincado si proceso alguno.

Página : 78
ARCHIVOS DIRECTOS

Las operaciones básicas que se pueden ejecutar sobre un archivo organizado


en forma directa son las que se describen a continuación :

ACTUALIZACION.

La actualización consiste en cambiar el contenido de un archivo de datos, esto


con el fin de reflejar todos los cambios que se dan en cierto momento en el mundo
real. Dichos cambios pueden incluir las siguientes acciones :

1.- Creación.- La creación inicial de un archivo organizado en forma directa


consiste en crear un esqueleto con una cierta cantidad de registros, donde cada
registro se encuentra vacío, pero que se encuentra disponible para almacenar
en forma directa cualquier registro al que se haga referencia.

Un ejemplo de la creación de un archivo organizado en forma directa, se puede


observar en el programa no. 5.2 en el cual se crea la estructura vacia de un
archivo que contendrá una cierta cantidad de registros de acuerdo a las
necesidades del usuario.

2.- Altas.- Para insertar elementos en archivos directos se utilizan técnicas como
son las técnicas de cálculo de direcciones, en éstas técnicas tienen lugar las
llamadas "coalisiones" que no son mas que la repetición de una localidad al
momento de almacenar un dato. Las colisiones no pueden ser eliminadas, lo
mas que se puede hacer es tratar de minimizarlas y para ello existen distintos
métodos que se describieron anteriormente.

Si la llave de trabajo de los registros son números consecutivos, se puede


hacer un simple enlace directo entre claves y direcciones. Sencillamente se
asocia una llave primaria más pequeña con la dirección relativa 1, la siguiente
clave primaria más pequeña con la dirección relativa 2, y así sucesivamente.
Por cuestiones de didáctica se implementará esta forma para el ejemplo de
altas a un archivo directo.

Un ejemplo de altas a un archivo organizado en forma directa, se puede


observar en el programa no. 5.3, el cual en base a la clave del empleado busca
la ubicación en todo el archivo, a partir de donde se graba el registro.

3.- Eliminación.- La eliminación de un registro consiste en buscar en ubicar en el


archivo directo el registro que se va a eliminar y una vez localizado los campos
tipo cadena se llenan completamente con espacios y a los campos tipo
numérico se les borra el valor que contengan.

Página : 79
ARCHIVOS DIRECTOS

Un ejemplo de eliminación de un registro a un archivo organizado en forma


directa, se puede observar en el programa no. 5.4, el cual en base a la clave del
empleado busca la ubicación en todo el archivo, a partir de donde se graba el
registro completamente en blanco.

4.- La modificación significa que se van a cambiar los contenidos de algunos


campos de cierto registro de datos, para esto se hacen los siguientes pasos :

• Usando el campo llave que es introducido por el usuario (registro a modificar),


se calcula su ubicación dentro de archivo directo.
• Comprobar si el registro está ocupado (o tiene datos) y además saber si
realmente es el deseado.
• Proporcionar las nuevas modificaciones utilizando una variables temporales.
• Reemplazar la variable temporal a registro a modificar. Y grabar nuevamente
el registro en la misma ubicación original.

Un ejemplo de modificación de algunos campos de un registro a un archivo


organizado en forma directa, se puede observar en el programa no. 5.5, el cual
en base a la clave del empleado busca la ubicación en todo el archivo, se
cambian los campos requeridos y se graba el registro en su mismo lugar
original.

RECUPERACIÓN.

El acceso a un archivo con el propósito de extraer información significativa es


llamado recuperación de la información. Existen básicamente dos clases de
recuperación de información : consulta y generación de reportes.

Una consulta es la operación más rápida en un archivo directo, debido a que


el usuario teclea el campo llave y con la conversión respectiva se ubica el puntero de
lectura exactamente en el registro que se desea consultar. El tiempo de respuesta
es exactamente el mismo, ya sea para el registro No. 1 o bien para el registro 20,000
o 1,000,000.

Otra forma de recuperación de los datos es mediante un reporte, el cual es


manejado exactamente como si fuera un archivo secuencial, con la diferencia que lee
registro por registro. Si el registro contiene información lo procesa y lo envía al
reporte; en caso contrario simplemente lo brinca y lee el siguiente hasta alcanzar el
fin del archivo.

Página : 80
ARCHIVOS DIRECTOS

IV.3 Mantenimiento.

El mantenimiento de un archivo organizado en forma directa consiste en


readaptarlo a todos los cambios continuos del mundo real que es muy dinámico.

Existen dos clases de operaciones de operaciones básicas, las cuales son :

1.- Reestructuración de un archivo implica que es necesario aplicar cambios


estructurales dentro del contexto de la misma organización de archivos. Por
ejemplo, cambiar la longitud de los campos, agregar nuevos campos a los
registros, eliminar algunos campos que ya no se utilicen, asignar más espacio
para el archivo, etc.

2.- Reorganización, la cual consiste básicamente en el cambio de mecanismo de


acceso. Dicha reorganización se describe en los siguientes puntos :

• Reorganización por Cambio del Campo Llave.- En este caso, lo único


que se va a cambiar es la manera de como se calculaban las direcciones
para los nuevos elementos a introducir. Esto es cuando el cambio
únicamente se refleja en la nueva dirección que ocupa únicamente.

• Reorganización por Cambio del Campo llave y Aumento en el Tamaño. A


hora el cambio tambíen se vera reflejado por el aumento de tamaño por
nuevos elementos.

V.4 Ejemplo de aplicación.

Se desea realizar un programa que permita crear y manipular un archivo


organizado en forma directa y que permita las operaciones de : Altas, Bajas, y
Modificaciones.

Se definió un registro de datos que contiene 4 campos que son : Clave del
empleado, su nombre, sueldo diario y días trabajados. La anterior estructura es con
fines didácticos y es la que está establecida desde la figura No. 3.1 de éste
documento.

Debido a que un programa para aplicar todas las operaciones a un archivo


directo se hacía muy extenso para poder explicarlo, se utilizó el código de la clase
establecida en el programa no. 5.1 de éste capitulo y se decidió hacer un programa
para cada operación.

Página : 81
ARCHIVOS DIRECTOS

OPERACIÓN DE LA CREACION DE UN ARCHIVO DIRECTO.

//============================================================
// PROGRAMA DE EJEMPLO PARA CREAR EL ESQUELETO DE UN
// ARCHIVO DIRECTO.
//
// Autor : José Luis Hernández Hernández.
//============================================================

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <fstream.h>
#include <dos.h>
#include "emplea.hpp"

ofstream ofDirecto; // Objeto tipo archivo de Directo.


empleado EMP; // Objeto tipo registro de empleados.

Abrir_Archivo(); // Definición de prototipos de funciones utilizadas.


Grabar_Registro();
Cierra_Archivo();

main()
{
Abrir_Archivo(); // Abre Archivo Secuencial y de Indices.
Grabar_Registro(); // Graba Registros en blanco.
Cierra_Archivo(); // Cierra el Archivo.
return 0;
}

Abrir_Archivo()
{
ofDirecto.open("c:\\directo.dat",ios::out | ios::binary);
if (!ofDirecto)
{
clrscr();
cout << "El Archivo <DIRECTO> no pudo abrirse"<<endl;
cout << "Pulsar <Return> para Salir"<<endl;
getchar();
exit (-1);
}
return 0;
}

Página : 82
ARCHIVOS DIRECTOS

Grabar_Registro()
{
int i, Reg;
clrscr();
gotoxy(10,8);
cout << "CREACION DE UN ARCHIVO DIRECTO";
gotoxy(10,12);
cout << "CANTIDAD DE REGISTROS QUE TENDRA EL ARCHIVO DIRECTO : ";
cin >> Reg;
for(i=0; i<= Reg ; i++)
{
ofDirecto.write((char *) &EMP, sizeof(EMP));
gotoxy(20,18); cout << "Registro Creado : " << i;
delay(100);
}
return 0;
}

Cierra_Archivo()
{
ofDirecto.close();
gotoxy(30,22);
cout << "ARCHIVO DIRECTO CREADO EXITOSAMENTE.";
return 0;
}

Programa No. 5.2 que ejemplifica la creación de un archivo directo.

OPERACIÓN DE ALTAS A UN ARCHIVO DIRECTO.

//============================================================
// PROGRAMA DE EJEMPLO PARA DAR ALTAS DE REGISTROS
// A UN ARCHIVO DIRECTO.
// Autor : José Luis Hernández Hernández.
//============================================================

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <fstream.h>
#include <dos.h>
#include "emplea.hpp"

fstream ofDirecto; // Objeto tipo archivo de Directo.


empleado EMP; // Objeto tipo registro de empleados.

Página : 83
ARCHIVOS DIRECTOS

Abrir_Archivo(); // Definición de prototipos


Alta_Registro(); // de funciones utilizadas.
Cierra_Archivo();

main()
{
Abrir_Archivo(); // Abre Archivo Directo.
Alta_Registro(); // Da de alta un registro en forma Directa.
Cierra_Archivo(); // Cierra el Archivo.
return 0;
}

Abrir_Archivo()
{
ofDirecto.open("c:\\directo.dat",ios::in | ios::out |ios::ate | ios::binary);
if (!ofDirecto)
{
clrscr();
cout << "El Archivo <DIRECTO> no pudo abrirse"<<endl;
cout << "Pulsar <Return> para Salir"<<endl;
getchar();
exit (-1);
}
return 0;
}

Alta_Registro()
{
int Cve, ubicacion;
Cve = EMP.Pedir_Clave();
EMP.clave = Cve;
int Ubi = Cve * sizeof(EMP); // Hace el cálculo para encontrar
ubicacion = Ubi - sizeof(EMP); // la ubicación lógica en el archivo.
EMP.Pedir_Datos();
ofDirecto.seekp(ubicacion, ios::beg);
ofDirecto.write((char *) &EMP, sizeof(EMP));
return 0;
}

Cierra_Archivo()
{
ofDirecto.close();
gotoxy(30,22); cout << "REGISTRO GRABADO EXITOSAMENTE.";
return 0;
}

Programa No. 5.3 Ejemplo de alta de un registro a un archivo Directo.

Página : 84
ARCHIVOS DIRECTOS

OPERACIÓN DE BAJAS A UN ARCHIVO DIRECTO.

//============================================================
// PROGRAMA DE EJEMPLO PARA DAR BAJAS DE REGISTROS
// A UN ARCHIVO DIRECTO.
// Autor : José Luis Hernández Hernández.
//============================================================

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <fstream.h>
#include <dos.h>
#include "emplea.hpp"

fstream ofDirecto; // Objeto tipo archivo de Directo.


empleado EMP; // Objeto tipo registro de empleados.

Abrir_Archivo(); // Definición de prototipos


Eliminar_Registro(); // de funciones utilizadas.
Cierra_Archivo();

main()
{
Abrir_Archivo(); // Abre Archivo Directo.
Eliminar_Registro(); // Eliminar un registro en forma Directa.
Cierra_Archivo(); // Cierra el Archivo.
return 0;
}

Abrir_Archivo()
{
ofDirecto.open("c:\\directo.dat",ios::in | ios::out |ios::ate | ios::binary);
if (!ofDirecto)
{
clrscr();
cout << "El Archivo <DIRECTO> no pudo abrirse"<<endl;
cout << "Pulsar <Return> para Salir"<<endl;
getchar();
exit (-1);
}
return 0;
}

Página : 85
ARCHIVOS DIRECTOS

Eliminar_Registro()
{
int Cve, ubicacion;
Cve = EMP.Pedir_Clave();
int Ubi = Cve * sizeof(EMP);
ubicacion = Ubi - sizeof(EMP);

EMP.clave = 0; // Se borran los datos.


strcpy(EMP.nom," \0");
EMP.dias = 0;
EMP.sdia = 0.0;

ofDirecto.seekp(ubicacion, ios::beg);
ofDirecto.write((char *) &EMP, sizeof(EMP));
return 0;
}

Cierra_Archivo()
{
ofDirecto.close();
gotoxy(30,22); cout << "REGISTRO ELIMINADO EXITOSAMENTE.";
return 0;
}

Programa No. 5.4 Ejemplo de eliminación de un registro a un archivo Directo.

OPERACIÓN DE MODIFICACION A UN ARCHIVO DIRECTO.

//=================================================================
// PROGRAMA DE EJEMPLO PARA HACER MODIFICACIONES A REGISTROS
// A UN ARCHIVO DIRECTO.
// Autor : José Luis Hernández Hernández.
//=================================================================

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <fstream.h>
#include <dos.h>
#include "emplea.hpp"

fstream ofDirecto; // Objeto tipo archivo de Directo.


empleado EMP; // Objeto tipo registro de empleados.

Abrir_Archivo(); // Definición de prototipos

Página : 86
ARCHIVOS DIRECTOS

Modificar_Registro(); // de funciones utilizadas.


Cierra_Archivo();

main()
{
Abrir_Archivo(); // Abre Archivo Directo.
Modificar_Registro(); // Modificar un registro en forma Directa.
Cierra_Archivo(); // Cierra el Archivo.
return 0;
}

Abrir_Archivo()
{
ofDirecto.open("c:\\directo.dat",ios::in | ios::out |ios::ate | ios::binary);
if (!ofDirecto)
{
clrscr();
cout << "El Archivo <DIRECTO> no pudo abrirse"<<endl;
cout << "Pulsar <Return> para Salir"<<endl;
getchar();
exit (-1);
}
return 0;
}

Modificar_Registro()
{
int Cve, ubicacion;
Cve = EMP.Pedir_Clave();
int Ubi = Cve * sizeof(EMP);
ubicacion = Ubi - sizeof(EMP);
ofDirecto.seekp(ubicacion, ios::beg); // Coloca el puntero en la ubicación lógica
ofDirecto.read((char *) &EMP, sizeof(EMP)); // Lee el registro.
EMP.Modifica(); // Cambia los campos.
ofDirecto.seekp(ubicacion, ios::beg); // Regresa el Puntero.
ofDirecto.write((char *) &EMP, sizeof(EMP)); // Reescribe en registro.
return 0;
}

Cierra_Archivo()
{
ofDirecto.close();
gotoxy(30,22);
cout << "REGISTRO MODIFICADO EXITOSAMENTE.";
return 0;
}

Programa No. 5.5 Ejemplo de modificación de un registro en un archivo Directo.

Página : 87
CAPITULO 6

Correspondencia
entre la llave y la
dirección física
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

Capitulo VI. Correspondencia entre la llave y la dirección física.

Los registros donde se almacenan los datos de un sistema de información,


normalmente contienen un campo especial que se le denomina campo llave y que es
un dato que “identifica” a cada uno de los registros que se encuentran en un archivo.

Normalmente la llave es una clave única, aunque no necesariamente única


que se utiliza para hacer la búsqueda de algún registro en especial y poder accesar a
todos los datos que lo componen.

En las organizaciones de archivos secuencial-indexado y directos, se requiere


establecer la correspondencia entre el campo llave y la dirección física en donde se
encuentra un archivo de datos específico.

Conociendo la relación que existe entre la llave y la dirección física se pueden


establecer algunas técnicas de búsqueda de datos adecuadas, para minimizar el
tiempo de búsqueda y optimizar los resultados en tiempo real.

Para poder conocer la ubicación física de un registro específico, es necesario


tener dos archivos encadenados :

• El archivo con todos los datos.


• Un archivo de llaves con las referencias adecuadas para conocer la ubicación
de todos y cada uno de los registros de datos.

Teniendo lo anterior, se implementa un direccionamiento el cual puede ser


directo o indirecto.

VI.1 Direccionamiento Directo e Indirecto.

El direccionamiento de dos registros puede darse en forma directa e indirecta.


Se dice que es directa cuando es posible determinar la dirección mediante una
relación natural con la llave. Es indirecta cuando la llave debe ser alterada o se le
deben de aplicar operaciones para determinar la dirección del registro.

DIRECCIONAMIENTO DIRECTO.

El archivo organizado en forma directa intenta explorar la capacidad,


proporcionada por las unidades de disco y dispositivos similares, de lograr acceso a

Página : 89
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

cualquier bloque de dirección conocida. Para lograr el direccionamiento directo se


utiliza la llave del registro para localizarlo en el archivo. En la figura No. 6.1 se
muestra una forma muy simple de realizar un direccionamiento.

Figura No. 6.1 Direccionamiento Directo.

Los más antiguos archivos almacenados en disco y con una organización de


acceso directo fueron utilizados por las maquinas electrónicas de contabilidad que
utilizaban un número perforado en una tarjeta, para determinar en dónde debería
archivarse el resto del contenido de la tarjeta. Los métodos modernos de acceso
directo transforman la llave mediante un algoritmo de computación antes de utilizarla
como dirección. El método de acceso directo es rápido, ya que se evitan las
operaciones intermedias de archivo, pero obliga a que los datos se localicen dé
acuerdo con un solo atributo llave.

Puede compararse el acceso directo con un archivo secuencial indexado en el


que el acceso se proporciona de acuerdo con un solo atributo; sin embargo, los
registros dentro de los archivos directos no están eslabonados con sus registros
predecesores o sucesores. Los métodos de archivo directo utilizan un calculo para
proporcionar la dirección de registro para una llave, mientras que las organizaciones
de archivo indexado buscan en índices para determinar cual es el registro
correspondiente a una llave.

Los árboles B utilizan un espacio extra para reducir el esfuerzo de inversión.


El archivo directo utilizará espacio extra en el archivo principal (m>n), conservando
algunos espacios de registros vacíos, para reducir la probabilidad y el costo de
conflictos al insertar mas registros al archivo.

Página : 90
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

DIRECCIONAMIENTO INDIRECTO.

El direccionamiento indirecto es muy utilizado al organizar un archivo en forma


secuencial-indexado, debido a que se requiere crear un archivo de índices o de
direcciones que normalmente contiene únicamente dos datos : Llave del registro y
dirección de la ubicación del registro en el área de datos.

Al momento de diseñar la estructura de un archivo secuencial-indexado,


deben considerarse los siguientes puntos :

• Formato de los campos del registro.


• Definir el campo llave para identificar un registro.
• Definir varios campos llave cuando un registro tiene varias ocurrencias con el
primer campo llave.
• Frecuencia esperada de inserción de nuevos registros.
• Método utilizado en la aplicación, para implantar la construcción de los
índices.
• Definir el tamaño del registro para hacer los cálculos de la ubicación física de
cada registro.

Los campos adecuados para formar la llave para un archivo secuencial


indexado son determinados por la aplicación. La restricción significativa de la
organización secuencial indexada es, que cualquier campo que constituya la llave
para el acceso secuencial del archivo, también deberá ser la llave para el acceso
indexado al archivo. Si no es el caso, y diferentes llaves parecen adecuadas para
los accesos secuenciales e indexado, entonces otro tipo de organización de archivo
resultaría mas adecuada que la organización secuencial indexada.

La estructura del área donde se almacenarán los índices, queda de la forma


que se muestra en la figura No. 6.2

Figura No. 6.2 Estructura de los índices

Página : 91
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

La cantidad esperada de registros que se van a insertar al archivo determina


cuanto espacio libre debe asignarse en el archivo, cuando es cargado inicialmente y
cuanto espacio queda disponible para insertar registros como se vaya requiriendo.
Una buena sugerencia es considerar aproximadamente el 40% de espacio extra de
la carga inicial.

Dependiendo del método utilizado para implantar al archivo secuencial-


indexado, pueden tomarse algunas otras alternativas para el manejo y manipulación
de los índices. Los manuales de manejo de datos locales, a menudo proporcionan
una guía dependiente de la implantación para la determinación de parámetros tales
como los que se enumeran a continuación :

Método de árbol – B+

• Tamaño del bloque de datos.


• Tamaño del bloque de índice.
• Numero de niveles de índice inicialmente.
• Numero máximo de niveles de índice.

Método del esquema Físico de Índice.

• Tamaño del área de índice.


• Niveles de índice.
• Tamaño del área primaria.
• Tamaño del área de sobrecarga.
• Bloqueo de registros en el área primaria.

Estos parámetros descritos anteriormente, están determinados por : el tamaño


de bloque natural del sistema, el numero actual de registros, el número esperado de
registros de datos, y el uso del archivo. La necesidad de una rápida recuperación
directa implica el uso un de índice espeso, además que la rápida recuperación
secuencial implica bloques de datos más grandes o áreas primarias de datos y un
factor de bloqueo más grande. Entre mayor sea la frecuencia de partición, los
bloques de datos o de índices proporciona un mejor desempeño; tanto en la
recuperación directa y secuencial como en la actualización.

VI.2 Clasificación de los tipos de correspondencia.

Se trató anteriormente de los direccionamientos directos e indirectos que son


utilizados en los archivos organizados en forma directa y en forma secuencial-
indexada para establecer un mecanismo de enlace con una llave específica y la
ubicación física donde se encuentra un registro de datos.

Página : 92
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

El manejo de los direccionamientos directos e indirectos, están íntimamente


relacionados con la búsqueda óptima de cierto registro. En el uso de los archivos
organizados en forma directa se requieren de técnicas de calculo de direcciones.
Éstas técnicas consisten en transformar una llave en una dirección por medio de
alguna operación, esta operación depende del tipo de técnica usada.

Las técnicas mas comunes de calculo de direcciones son : Direccionamiento


directo (absoluto o relativo), direccionamiento por asociación, direccionamiento por
circulo (técnicas aleatorias típicas, truncamiento, selección, análisis de frecuencias,
división por número primo, cambio de base, multiplicación y cuadrado) y soluciones
con claves no numéricas

VI.2.1 Directa.

La técnica directa es la mas sencilla para traducir una llave de un registro de


datos a una dirección de almacenamiento y consiste básicamente en utilizar el
campo llave casi en forma directa. La llave es tomada y puede manejarse de dos
posibles formas :

a) Direccionamiento Absoluto.- Esta forma de direccionamiento consiste en tomar


el valor de la llave suministrada por el usuario y que dicha llave
sea la dirección real de registro.

Cuando el registro es almacenado en al archivo, la localidad del


registro (que es la llave) puede ser :

• El número de cilindro, número de superficie y número de


registro (Si se utiliza el direccionamiento por cilindro).

Con éste método del cilindro, la dirección de su número de


cilindro, número de superficies y número de registros, todas las
pistas de un diámetro dado en el paquete de discos forman un
cilindro tal como se aprecia en la figura No. 6.3.

• El número de sector y número de registro.

Con éste otro método, cada pista del paquete está dividida en
sectores, como se ilustra en la figura No. 6.4. Cada sector es un
área de almacenamiento para un número fijo de registros. Una
dirección del registro es simplemente su número de sector. Dado
un número de sector, el controlador del disco puede determinar

Página : 93
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

que pista deberá accesar y donde reside en registro direccionado


sobre la pista.

Figura No. 6.3 Estructura de un cilindro.

Cuando el registro es recuperado posteriormente, se localiza en


forma absoluta, ya que el usuario conoce exactamente donde se
encuentra por lo que el acceso es directo.

Figura No. 6.4 Ejemplo de direccionamiento por sector.

Esta forma de direccionamiento directo absoluto tiene dos grandes


ventajas :

• La función de mapeo R es muy sencilla.


• Dado un valor de llave de un registro, no se requiere
tiempo de procesamiento del CPU para determinar la
localidad del registro en el almacenamiento secundario.

Página : 94
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

Las desventajas de ésta forma de direccionamiento son mucho


mayores que las ventajas y se enuncian a continuación :

• Las consideraciones lógicas y físicas no son


independientes del direccionamiento absoluto; el usuario
debe conocer exactamente cómo están almacenados
físicamente los registros.
• Los usuarios normalmente no suministran los tipos
apropiados de valores de llave, por ejemplo en un banco
no se producen direcciones físicas de almacenamiento con
los números de cliente; ya que en el banco se necesitan
rangos consecutivos y es muy difícil hacerlos adaptar la
administración del banco con la forma de almacenamiento
en un archivo de datos.
• Las direcciones absolutas dependen de los dispositivos.
Si fuera conveniente actualizar o cambiar el dispositivo en
el que se almacenó un archivo de datos, los valores de las
llaves también tienen que cambiar.
• Las direcciones absolutas dependen del espacio
direccionable. Si fuera conveniente reorganizar el archivo
directo, pero conservarlo en el mismo dispositivo, los
valores de las llaves deberían cambiarse. Esta
reorganización puede ser necesaria debido al propósito de
ampliar el espacio de dirección, compactar el espacio libre,
recuperar el espacio desperdiciado, o reducir el espacio de
direcciones.

b) Direccionamiento Relativo.- Este tipo de direccionamiento consiste en tomar el


valor de la llave, el cual es el número ordinal del registro dentro del
archivo de datos.

Un archivo con espacio para contener N registros con direcciones


que están dentro del conjunto {1,2,3,4,5,6,....., n-1,n}, o bien el
conjunto {0,1,2,3,4,5,......, n-2,n-1}. El i-ésimo tiene la dirección
relativa, la cual se calcula de la forma siguiente :

Dirección = (N * CB) – CB. Donde :

Dirección = Ubicación física del registro


N = Número ordinario del registro
CB = Cantidad en bytes de registro

Página : 95
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

Las ventajas del esquema de direccionamiento directo relativo son


las que se describen a continuación :

• La función de direccionamiento R es muy sencilla.


• Dado el valor de una llave de registro, esencialmente no se
requiere tiempo de proceso para determinar la localidad del
registro en el almacenamiento secundario.

Las direcciones relativas directas, no dependen tanto del


dispositivo como las direcciones absolutas, lo cual elimina una de
las desventajas mencionadas para el direccionamiento absoluto.
Sin embargo, como en el caso de las direcciones absolutas, las
direcciones relativas dependen del espacio para las direcciones.

Algunos tipos de valores naturales no son apropiados para usarse


como direcciones relativas. Por ejemplo, aunque pudiesen
convertirse a un equivalente numérico, los valores del número de
control de los alumnos del Instituto Tecnológico de Chilpancingo
no son buenos para usarse como dirección relativa. La razón es
muy sencilla, el número de control están definido considerando
tres datos diferentes y conjugados nos proporcionan el número de
control de cada alumno que ingresa a la institución como puede
apreciarse en la figura No. 6.5.

Figura No. 6.5 Formación del Número de control de un alumno del Tecnológico.

Si se crea un archivo utilizando el direccionamiento relativo, sería


necesario que el archivo tuviera 99,999,999 de registros y con los
alumnos registrados en 20 años que tiene de vida el Instituto
tecnológico de Chilpancingo, a lo mucho tendremos unos 9,000
alumnos registrados lo que equivale aproximadamente al 9 % del
archivo, teniendo un desperdicio de espacio del 91 %.

Recordemos que el tamaño del archivo (es decir, el tamaño del


espacio de direcciones del archivo) está determinado por el rango
de valores posibles para las direcciones relativas, el cual, con un
direccionamiento relativo es equivalente al rango de posibles

Página : 96
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

valores para la llave, y no por el número real de valores de llave


utilizados.

Un enfoque para este problema de espacio de llaves es identificar


o inventar una llave cuyo rango de valores esté altamente poblado.
Por ejemplo, en un archivo directo de datos de un inventario de
partes, un número de parte de 4 dígitos puede ser una buena
dirección relativa, si el inventario contiene por ejemplo 8,489 tipos
de partes distintas. Pero las solicitudes para accesar los datos de
alguna parte o artículo en particular tendrán que enunciarse en
términos del número de parte de 4 dígitos, y no en términos de su
nombre, o de su tipo, o por algún otro valor del campo.

VI.2.2 Asociación.

La correspondencia entre la llave y la dirección física donde se encuentra un


registro específico, puede ser por asociación la cual es muy utilizada en archivos del
tipo secuencial indexados y consiste en utilizar una área de datos y una área de
índice para asociar o ligar el registro de datos y su índice que tiene la ubicación
exacta.

El área de datos y el área de índice se muestra asociadas por la llave del


registro en la figura No. 6.6 que se encuentra a continuación.

Figura No. 6.6 Área de datos y área de índice de un archivo secuencial-indexado.

Como se muestra en la figura No. 6.6, en el área de datos se encuentran


todos los registros grabados en el mismo orden en que fueron introducidos por el
capturista, que como puede apreciarse no están ordenados de ninguna forma.

Página : 97
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

En al área de índice de la misma figura No. 6.6, se encuentran únicamente


dos campos: El primero que es la llave que identifica a cada uno de los registro del
área de datos y el segundo campo es la ubicación física o apuntador donde inicia el
registro en el área de datos.

Entre el área de índice y el área de datos se realiza una asociación, debido a


que la llave en ambos archivos es la misma y están encadenados por la ubicación o
apuntador de cada uno de los registros.

Cabe hacer mención que el área de índice normalmente se encuentra en


forma ordenada, con el fin de implementar la búsqueda binaria y sea más rápido
encontrar un registro en especial.

Cuando un usuario desea hacer una búsqueda, normalmente teclea la clave


que identifica al registro que desea accesar. En ese momento se hace una
búsqueda binaria en el área de índice; al encontrar la clave del registro que se desea
accesar, se toma únicamente la ubicación o apuntador donde se encuentra el
registro en cuestión y dicho dato se envía como parámetro para que una función del
lenguaje en uso posicione el puntero de lectura-escritura al inicio del registro. En ese
momento todos los datos del registro encontrado pueden manipularse de la forma
que se crea conveniente (Desplegarse en el monitor, imprimirse en papel e incluso
modificar el contenido de algún campo del registro; desde luego considerando que la
llave no puede alterarse).

Esta forma de correspondencia entre la llave y la dirección física es lo que


permite accesar los registros, incluso por dos o más llaves; para lo que es necesario
crear dos áreas de índice tal como se puede apreciar en la figura No. 6.7.

Figura 6.7 Asociación cuando existen 2 áreas de índices y una área de datos.

Página : 98
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

De acuerdo a la figura No. 6.7, el área de datos está asociado con una área de
índice por la clave de la persona y con otra área de índice por el nombre de la
persona. Con cualquiera de los dos datos (clave y nombre) es posible accesar al
registro respectivo que se encuentra en el área de datos.

VI.2.3 Por Circulo.

Un método ampliamente utilizado para generar direcciones físicas de los


registros es aquel llamado por circulo y que consiste en una descomposición de la
llave la cual se aplica a todos los registros realizando una serie de operaciones que
darán como resultado un numero relativamente grande (en proporción al tamaño total
del archivo) y del cual será generado un numero en un intervalo determinado, el cual
se utilizara como dirección en el esqueleto.

Este método es mejor conocido como Hashing y en el presente documento se


tratarán las siguientes técnicas para obtener la dirección física donde se almacena
cada uno de los registros : Técnicas aleatorias típicas, truncamiento, selección,
análisis de frecuencias, división por número primo, cambio de base, multiplicación y
cuadrado.

La creación del esqueleto para almacenar los registros de un archivo


organizado en forma relativa o directa, debe considerar un porcentaje de registros
para las colisiones, es decir para ubicaciones de registro que se obtengan
exactamente igual para varios registros de datos.

La forma del esqueleto que se crea puede apreciarse en la figura No. 6.8 y
que considera un área del 10% para posibles colisiones.

Figura No. 6.8 Esqueleto de un archivo relativo que considera una área para colisiones.

Página : 99
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

TECNICAS ALEATORIAS TIPICAS.

La técnica aleatoria típica consiste en utilizar una función o instrucción del


lenguaje de programación que se esté utilizando que sea capáz de generar en forma
aleatoria una secuencia de números a partir de una clave. La secuencia de
números obtenidos generalmente obtendrá varios repetidos, lo que significa que
existirán varias colisiones que deberán ser tratadas adecuadamente para que el
acceso a los registros sea lo más óptimo posible.

En algunas ocasiones puede crearse una rutina personal para crear los
número aleatorios; aunque el resultado serán números pseudoaleatorios.

Es muy común que como existen muchos valores repetidos, se aplique a


dichos números alguna otra técnica de conversión con el fin de minimizar la cantidad
de colisiones.

TRUNCAMIENTO.

La técnica de truncamiento consiste en particionar en varias partes la llave del


registro, cada una de las cuales (Excepto la última) tiene el mismo número de dígitos
que tiene la dirección relativa objetiva. Las particiones obtenidas de la llave son
colocadas una debajo de la otra y son sumadas.

Una vez que se obtuvo un resultado, se toma la cantidad de dígitos que tendrá
la dirección relativa objetiva empezando de derecha a izquierda y los dígitos de
mayor valor son truncados para de esa forma obtener la dirección relativa.

Por ejemplo, sonsiderese que tenemos el valor 68654321, y suponga que la


dirección relativa objetiva tendrá 3 dígitos. Se sigue el siguiente procedimiento :

• Se toma la Llave y se divide en bloques de 3 valores, iniciando de derecha a


izquierda de la forma siguiente :

68 654 321

• A continuación se toman los tres valores obtenidos y se colocan uno abajo del
otro, ajustandolos de izquierda a derecha y sumandose de la forma siguiente :

68
+ 654
321
1655

Página : 100
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

• Al realizar al suma anterior, se obtiene el valor 1655 y el dídito de mayor


orden es eliminado para finalmente obtener la dirección relativa : 655.

SELECCIÓN.

La técnica por selección consiste en seleccionar un patrón que en algunas


circunstancias aparece en forma natural. Esto sucede con mucha probabilidad entre
llaves del tipo numéricas. Un buen ejemplo puede ser definir la dirección relatica
seleccionando la fecha de nacimiento de la persona, lo que dará como resultado
incluso a no tener sinónimos y por lo tanto a no tener colisiones.

Imagine usted que se desea encontrar la dirección relativa de los empleados


del Instituto Tecnológico, por lo que se decidió seleccionar el patrón de su fecha de
nacimiento con el formato MMDD, el cual fue tomado de los datos de su Curp y
considerando la clave Curp como llave.

Implementando ésta técnica para encontrar la dirección relativa, encontramos


los valores que se muestran en la Figura No. 6.9.

Figura 6.9 Dirección relativa seleccionando la fecha de nacimiento.

ANÁLISIS DE FRECUENCIAS.

El método de análisis de frecuencias consiste en obtener una gran muestra de


llaves posibles y sus número hash correspondientes, se analiza la frecuencia de
repetición para cada una de las columnas y se van descartando aquellos que
presentan mayor repetición porque son colisiones al definir la ubicación física del
registro.

Finalmente, se toman las columnas con mayor variación y tantas como dígitos
se requieren. Se aplica un factor de ajuste para reducir el porcentaje de colisiones.

Página : 101
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

DIVISIÓN POR NÚMERO PRIMO.

Este método consiste en dividir una llave dada entre un numero primo
seleccionado con anterioridad, y finalmente utilizar el resultado de la operación como
una dirección relativa.

Lo anterior se implementa con la formula siguiente :

Ubicación = Llave mod Primo.

Donde : Ubicación es la dirección relativa resultante de la operación.


Llave es la clave del registro que se va a convertir.
Mod es una función llamada división modulo que obtiene un valor
entero.
Primo es el número divisor que debe ser un número primo con el
fin de minimizar la cantidad de valores repetidos.

Como se menciono anteriormente, el valor del número primo debe ser


escogido con anterioridad considerando los dos factores siguientes :

• Primero, el rango de valores que resultan de la operación "llave mod primo",


va desde 0 hasta primo – 1. Luego, el valor del divisor determina el tamaño
del espacio de dirección relativa. Si se sabe que nuestro archivo va a
contener por lo menos n registros, entonces tendremos que hacer que primo
> n, suponiendo que solamente un registro puede ser almacenado en una
dirección relativa dada.

• Segundo, el divisor deberá seleccionarse de tal forma que la probabilidad de


colisión sea minimizada. De hecho, éste es un objetivo difícil de alcanzar.
Se trata de seleccionar un divisor que mantenga la probabilidad de colisión
relativamente baja, pero en general no nos vamos a esforzar en minimizar
realmente las colisiones. Mediante investigaciones se ha demostrado que los
divisores que son números pares tienden a comportarse pobremente,
especialmente con los conjuntos de valores de llave que son
predominantemente impares.

Algunas investigaciones sugieren que el divisor debe ser un numero primo,


con lo cual se reducirían los resultados sesgados. Sin embargo, otro trabajo sugiere
que los divisores no primos trabajan también como los divisores primos, siempre y
cuando los divisores no primos no contengan números primos pequeños como
factores. Se sugieren seleccionar un número que no contenga ningún factor primo
menor de 20, lo que asegura un buen desempeño.

Página : 102
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

De esta forma si elegimos usar un número primo como divisor y tener un


numero máximo de localidades de 5000, entonces nuestro divisor tendría el valor de
5003 que es el numero primo mayor inmediato a 5000.

La figura No. 6.10 nos muestra como obtener la ubicación física utilizando la
técnica de división por número primo, considerando el valor 5003 como número
primo.

Figura No. 6.10 Ubicación fisica de un registro con la división por número primo.

CAMBIO DE BASE.

Esta técnica de cambio de base o conversión de base consiste en convertir la


llave a otra base numérica que no sea la decimal con la que se está trabajando, y
tomar después el resultado del módulo con la máxima dirección como la dirección
física donde se almacenará el registro de datos.

Por ejemplo supongase que se desea generar las direcciones físicas entre 0 y
99 y se considera que se cambiará la base 10 a base 8, tal como se muestra en la
figura No. 6.11.

Figura No. 6.11 Direcciones físicas utilizando el cambio de base 10 a base 8.

Página : 103
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

MULTIPLICACIÓN.

Lá técnica de la múltiplicación es muy sencilla y consiste en tomar la llave (que


se supone que está compuesta de una gran cantidad de dígitos y multiplicarla por
algún valor fraccionario que fue previamente analizado en función de las posibles
combinaciones y la dirección relativa objetiva.

En función a dichas consideraciones, imaginemos que la llave de los registros


tienen generalmente 9 dígitos y se espera que la dirección objetiva sea máximo de 4
dígitos. Tomando dichas consideraciones, se analiza y se llega a la conclusión de
que se debe multiplicar por la fracción 0.0000072, de la cual se obtiene un número
real con enteros y fracciones; de dicho resultado se toma exclusivamente el valor
entero y dicho dato es la dirección relativa calculada tal como se muestra en la
Figura No. 6.12.

Figura 6.12 Cálculo de la dirección relativa por medio de multiplicación.

CUADRADO.

La técnica por medio del cuadrado consiste en tomar la llave del registro y
elevarla al cuadrado, después se extraen algunos dígitos especificados de la mitad
del resultado para constituir la dirección relativa.

Si se desea una dirección relativa de N dígitos, entonces los dígitos se


truncan en ambos extremos de la llave que fue elevada al cuadrado, tomando los N
digitos intermedios. Las mismas posiciones de n-digitos deben extraerse para
cada llave.

Página : 104
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

La figura No. 6.13 ilustra el uso de la técnica del cuadrado para llaves que
tienen 9 digitos y que se extraen 4 digitos del centro para tomarlo como ubicación
física del registro.

Figura No. 6.13 Uso del cuadrado para obtener la dirección física.

Como se puede observar en la figura No. 6.13, se genera una dirección


relativa y en muchas ocasiones existen colisiones porque al hacer el cálculo del
cuadrado y extraer la parte intermedia del resultado del cuadrado, coincide y se
obtiene una dirección relativa que ya está ocupada, lo que implica enviar el registro al
área de colisiones definida en el esqueleto del archivo.

A modo de conclusión con respecto a las 8 formas de establecer la


correspondencia entre la llave y la dirección física, se debe considerar la elección de
alguna de ellas que conduzca a una óptima búsqueda de los datos en un archivo.

Para elegir alguna de las ocho formas, se deben de considerar dos puntos que
son muy importantes :

• Tiempo.- Cualquiera de las ocho formas de calcular la ubicación de un registro


de datos, requieren un tiempo de CPU, por lo que en función al tamaño del
registro, al tipo de datos que contiene el registro y a la cantidad de registros
totales que contendrá el esqueleto del archivo directo, se debe hacer un estudio
detallado del tiempo real que requiere cada una de las ocho formas para
establecer la más óptima para una cierta aplicación.

• Espacio.- Por regla general, no se conoce la cantidad exacta de todos los


registros que contendrá un archivo organizado en forma directa, por lo que se
recomienda utilizar una aproximación lo más cercano a lo que realmente se va a
utilizar, dejando un 20% adicional para las posibles colisiones.

• Frecuencia de las supresiones.- Si hay muchas eliminaciones de registros de


datos de un archivo debe buscarse la técnica de direccionamiento más
conveniente considerando que sea la que menos colisiones presente, debido al
alto índice de movimiento del archivo.

Página : 105
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

VI.2.4 Soluciones con Claves no Numéricas.

En muchas ocasiones se tiene el problema de que las llaves de acceso son


del tipo cadena, lo que implica hacer una conversión a valores enteros para poder
hacer la transformación y encontrar la dirección relativa.

Un procedimiento muy conveniente es hacer la conversión siguiendo los pasos


siguientes :

• Tomar carácter por carácter de la clave no numérica y obtener su valor


numérico de acuerdo con el código ascii de la forma siguiente :

Clave = JOSE LUIS

Valores del codigo ascii :

BYTES J O S E L U I S

VALOR (Código Ascii) 74 79 83 69 32 76 85 73 83

• A continuación se suman todos los valores individuales del código ascii y se


obtiene un valor entero largo de la forma siguiente :

74 + 79 + 83 + 69 + 32 + 76 + 85 + 73 + 83 = 654

• Finalmente, la clave : JOSE LUIS, corresponde con la dirección relativa =


654.

Esta forma de conversión presenta un problema y es quer seguramente no


utilizará todos los caracteres del código ascii. Por ejemplo, imaginemos el caso
habitual en que las cadenas de caracteres representan nombres (de personas, de
lugares, etc.); es evidente que algunos caracteres válidos del código de la máquina
no aparecerán nunca (como por ejemplo : }, ö, §, |, ~, Ç, ç, î, ƒ,Í, , ¶, %, etc.), por lo
que su codificación numérica no se usará.

En casos prácticos, esta forma de conversión será mas o menos laboriosa


según la distribución de los caracteres dentro del código usado por la computadora.

En la figura No 6.14 se muestra un ejemplo de claves tipo cadena convertidas


por el procedimiento comentado anteriormente.

Página : 106
CORRESPONDENCIA ENTRE LA LLAVE Y LA DIRECCIÓN FÍSICA

Figura No. 6.14 Llaves tipo cadenas convertidas a direcciones relativas.

Página : 107
CAPITULO 7

Otros métodos de
organización de
archivos y
busquedas de
economías.
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

Capitulo VII. Otros métodos de organización de archivos


y búsquedas de economías.

Otro de los métodos de administración de archivos que es posible manejar, es


utilizar la memoria RAM de la computadora como un medio de almacenamiento
rápido, minimizando el tiempo de acceso a casi cualquier registro de datos y por lo
tanto también maximizando el tiempo de respuesta en tiempo real.

Al hacer uso de la memoria como almacenamiento de datos, se debe


considerar al administrador de la memoria y que es parte del sistema operativo. Su
labor consiste en llevar un registro de las partes de la memoria que se están
utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos
cuando éstos los necesiten y liberarlo cuando terminen, así como administrar el
intercambio entre la memoria principal y el disco, en los casos en que la memoria
principal no pueda albergar a todos los procesos.

Cabe hacer mención que la memoria de la computadora es volátil y no debe


considerarse como un medio de almacenamiento de datos real; por lo que deben
implementarse mecanismos para que en ciertos intervalos de tiempo se graben a
disco duro los archivos que se encuentran en memoria y desde luego también al
momento de terminar de utilizar la aplicación.

Los sistemas de administración de la memoria se pueden clasificar en dos


tipos: los que desplazan los procesos de la memoria principal al disco y viceversa
durante la ejecución (intercambio y paginación) y aquellos que no.

VII.1 Memoria Virtual.

La memoria virtual fue diseñada por Fotheringhan en el año de 1961. La idea


de la memoria virtual es que el tamaño combinado del programa, los datos y la pila
puede exceder la cantidad de memoria física disponible par él. El sistema operativo
mantiene aquellas partes del programa que se utilicen en cada momento en la
memoria principal y el resto permanece en el disco duro.

La memoria virtual se encuentra en el disco duro (área de swap del disco


duro). En esa zona se encuentran los programas (instrucciones y datos) que se
están ejecutando y que están divididos en bloques.

Todas las palabras de un programa (proceso) ubicadas en la memoria virtual


tienen una dirección lógica (dirección virtual) distinta tal como puede mostrarse en la
figura No. 7.1

Página : 109
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

Figura No. 7.1 Memoria virtual de una computadora.

Los bloques de la memoria virtual son llevados a la memoria principal cuando


son necesarios para la ejecución. Una dirección física es entonces asignada a cada
dirección lógica y la correspondencia entre dirección física y lógica del comienzo del
bloque es guardada en una tabla asociada al proceso de una forma semejante a
como se muestra en la figura No. 7.2.

Figura No. 7.2 Correspondencia entre la dirección física y lógica de la memoria.

Página : 110
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

La ilusión de la memoria virtual está soportada por el mecanismo de


traducción de memoria, junto con una gran cantidad de almacenamiento rápido en
disco duro. En cualquier momento el espacio de direcciones virtual, está mapeado
de tal forma que una pequeña parte de él, está en memoria real y el resto
almacenado en el disco.

El objeto de las técnicas de memoria virtual en los sistemas actuales de


computación es el de hacer que la memoria principal de la maquina aparezca como
mayor de lo que realmente es. Se logra dar esta ilusión dividiendo el contenido de la
memoria en paginas (esta técnica es llamada paginación) y almacenando estas en
una memoria auxiliar o de respaldo. Cuando un programa necesita datos que no se
encuentran en la memoria principal, se suspende temporalmente la ejecución de
aquél mientras se copia la pagina faltante con la mayor rapidez posible. Cuando el
programa ha modificado los datos contenidos en la pagina, ésta vuelve
inmediatamente al almacén de respaldo. El sistema operativo intenta satisfacer las
necesidades del programa mediante una juiciosa permutación de las paginas entre la
memoria principal y la memoria de respaldo (disco duro).

Los sistemas de almacenamiento virtual permiten a los programas referenciar


direcciones que no necesitan corresponder con las direcciones reales disponibles en
el almacenamiento primario. Las direcciones virtuales desarrolladas por los
programas en ejecución son traducidas dinámicamente (por ejemplo, en el momento
de ejecución) por el hardware a las direcciones de instrucciones y datos de
almacenamiento principal. Los sistemas de almacenamiento virtual permiten a los
programas hacer referencia a espacios de direcciones mucho mayores que los
espacios de direcciones disponibles en el almacenamiento primario. Permiten al
usuario crear programas independientes (en su mayor parte) de los limites del
almacenamiento primario, y facilitan la operación de los sistemas de información.

Los sistemas de almacenamiento virtual utilizan técnicas de paginación de


bloques de datos de tamaño fijo que van o vienen entre el almacenamiento primario y
secundario, y la segmentación, la cual identifica las unidades lógicas de los
programas y datos para facilitar el control de acceso a los datos.

VII.2 Sistema de paginación.

La paginación pura en el manejo de memoria consiste en que el sistema


operativo divide dinámicamente los programas o los archivos de datos en unidades
de tamaño fijo (generalmente múltiplos de 1 kbyte) los cuales va a manipular de la
memoria RAM a disco y viceversa. Al proceso de intercambiar páginas, segmentos
o programas completos entre memoria RAM y disco se le conoce como `intercambio'
o `swapping'. En la paginación, se debe cuidar el tamaño de las páginas, ya que si
éstas son muy pequeñas el control por parte del sistema operativo para saber cuáles

Página : 111
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

están en memoria RAM y cuales en disco, sus direcciones reales, etc; crece y
provoca mucha `sobrecarga' (overhead). Por otro lado, si las páginas son muy
grandes, el overhead disminuye pero entonces puede ocurrir que se desperdicie
memoria en procesos pequeños.

El traspaso de datos entre los distintos niveles de almacenamiento se realiza


eventualmente en paginas de longitud fija, tal y como ocurre en la actualidad en los
sistemas de memoria virtual. El tamaño de la pagina es un parámetro del sistema y
no esta determinado por las longitudes de registro elegidas por los programadores.
Al usarse la paginación, los datos serán lógicamente independientes del tamaño de
pagina, pero tendrán que ser físicamente “empaquetados” para que encajen en las
paginas.

Los registro de datos empaquetados, pueden quedar almacenados en una o


en otra página de la memoria de la computadora e incluso algunas páginas de la
memoria pueden ser compartidas por registros de datos de otros procesos tal como
se muestra en la página No. 7.3.

Figura No. 7.3 Páginas de memoria compartidas por uno o más procesos.

Página : 112
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

Uno de los aspectos más importantes de la paginación, así como de cualquier


esquema de memoria virtual, es la forma de traducir una dirección virtual a dirección
real. Para comprenderlo mejor, observar la figura No. 7.4 que se muestra a
continuación.

Figura No. 7.4 Traducción de página virtual a página real.

Como se observa en la figura 7.4, una dirección virtual `v' = (b,d) está formada
por un número de página virtual `b' y un desplazamiento `d'. Por ejemplo, si el
sistema ofrece un espacio de direcciones virtuales de 64 kbytes, con páginas de 4
kbytes y la memoria RAM sólo es de 32 kbytes, entonces se tienen 16 páginas
virtuales y 8 reales. La tabla de direcciones virtuales contiene 16 entradas, una por
cada página virtual. En cada entrada, o registro de la tabla de direcciones virtuales
se almacenan varios datos: si la página está en disco o en memoria, quién es el
dueño de la página, si la página ha sido modificada o es de lectura nada mas, etc.
Pero el dato que nos interesa ahora es el número de página real que le corresponde
a la página virtual. Obviamente, de las 16 virtuales, sólo ocho tendrán un valor de
control que dice que la página está cargada en memoria RAM, así como la dirección
real de la página, denotada en la figura 7.4 como b' . Por ejemplo, supóngase que
para la página virtual número 14 la tabla dice que, efectivamente está cargada y es la
página real 2 (dirección de memoria 8192). Una vez encontrada la página real, se le
suma el desplazamiento, que es la dirección que se desea dentro de la página
buscada ( b' + d ).

La tabla de direcciones virtuales a veces está ubicada en la misma memoria


RAM, por lo cual se necesita saber en qué dirección comienza y en este caso, existe
un registro con la dirección base denotada por la letra `a' en la figura 7.4.

Cuando se está buscando una página cualquiera y ésta no está cargada,


surge lo que se llama un `fallo de página' (page fault ). Esto es caro para el
manejador de memoria, ya que tiene que realizar una serie de pasos extra para

Página : 113
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

poder resolver la dirección deseada y darle su contenido a quien lo solicita. Primero,


se detecta que la página no está presente y entonces se busca en la tabla la
dirección de dicha página en el disco duro. Una vez localizada en disco se intenta
cargar en alguna página libre de la memoria RAM. Si no hay páginas libres se tiene
que escoger alguna para enviarla hacia el disco. Una vez escogida y enviada a
disco, se marca su valor de control en la tabla de direcciones virtuales para indicar
que ya no está en la memoria RAM, mientras que la página deseada se carga en
RAM y se marca su valor para indicar que ahora ya está en RAM. Todo este
procedimiento es caro, ya que se sabe que los accesos a disco duro son del orden
de decenas de veces más lentos que en RAM. En el ejemplo anterior se mencionó
que cuando se necesita descargar una página de RAM hacia disco se debe de hacer
una elección.

Para realizar la elección de la página deseada, se utilizan varios algoritmos,


los cuales se describen a continuación :

• Algoritmo de reemplazo de páginas optimo.- Mejor algoritmo posible para


reemplazo de páginas pero irrealizable en la práctica.

Al momento de ocurrir una falla de página cierto conjunto de páginas se


encuentran en la memoria, otras páginas no se utilizaran sino hasta mucho
después, cada página puede ejecutarse con el número de instrucciones
ejecutadas antes de la primera referencia a esa página, el algoritmo dice que
se elimine la página con la mayor etiqueta; si una página no va a utilizase sino
hasta mucho después que otra la eliminación de la primera retrasa el fallo de
página lo más posible, el único problema de este algoritmo es que es
irrealizable. Al momento del fallo de página el Sistema Operativo no tiene
forma de saber a qué página se hace referencia.

• Algoritmo de página de uso no muy reciente.- En un fallo de página, el


sistema operativo inspecciona todas las páginas y las divide en cuatro
categorías según los valores actuales de los bits R y M.

Clase 0: No se ha hecho referencia ni ha sido modificada.


Clase 1: No se ha hecho referencia pero ha sido modificada.
Clase 2: Se ha hecho referencia pero no ha sido modificada.
Clase 3: Se ha hecho referencia y ha sido modificada.

El algoritmo de páginas de uso no muy reciente implica una hipótesis que


indica que es mejor eliminar una página modificada sin referencias al menos
por lo general un intervalo de reloj. Este algoritmo es fácil de comprender, de
implantación eficiente y con un rendimiento que, aún sin ser el óptimo si es
adecuado en muchos casos.

Página : 114
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

• Algoritmo de reemplazo " primero en entrar, primero en salir FIFO" .- El


sistema operativo tiene una lista de todas las páginas que se encuentran en
memoria, siendo la primera página la más antigua y la última la más reciente,
en un fallo de página, se elimina la primera página y se añade la nueva al final
de la lista.

• Algoritmo de reemplazo de páginas de la segunda oportunidad.- Una


modificación simple del FIFO que evita deshacerse de una página de uso
frecuente inspecciona el bit R de la página más antigua, busca una página
antigua sin referencias durante el anterior intervalo de tiempo.

• Algoritmo de reemplazo de páginas del reloj.- Aunque el anterior algoritmo


es razonable un mejor enfoque es mantener las páginas en una lista circular
con la forma de un reloj, una manecilla apunta hacia la más antigua. Al
ocurrir un fallo de página se inspecciona la página a la que apunta la manecilla
si su bit R=0 se retira de la memoria, se inserta la nueva página en su lugar en
el reloj y la manecilla avanza una posición, si R=1 la manecilla avanza una
posición y el bit se limpia, esto continua hasta encontrar una página con R=0.

Al ocurrir el fallo de página, el sistema operativo debe elegir una página para
retirarla de la memoria y usar el espacio para la página que se necesita para
desbloquear el sistema y que el hardware pueda seguir trabajando. Si la página por
eliminar de la memoria fue modificada, se debe volver a escribir al disco para
mantener la información actualizada; de lo contrario, si la página no fue modificada
no es necesario rescribir la información a disco y la página que se carga simplemente
se escribe sobre la página que se va a borrar de la memoria. La figura 7.5 muestra
gráficamente un intercambio de páginas entre la memoria principal y el disco
(memoria secundaria).

Figura No. 7.5 Eliminación de la memoria principal una página que no está en uso y se
reemplaza por otra página que se requiere.

Página : 115
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

Otro dato interesante de la paginación es que ya no se requiere que los


programas estén ubicados en zonas de memoria adyacente, ya que las páginas
pueden estar ubicadas en cualquier lugar de la memoria RAM.

VII.3 Concepto de segmentación y sistema.

Cuando se usa paginación, el sistema divide la memoria para poder


administrarla, no para facilitarle la vida al programador. Lo que ocurre es que la
vista lógica que el programador tiene de la memoria no tiene nada que ver con la
vista física que el sistema tiene de ella. El sistema ve un sólo gran arreglo dividido
en páginas, pero cuando se está programando, uno piensa en términos de un
conjunto de subrutinas y estructuras de datos, a las cuales nos referimos por su
nombre: la función coseno, el stack, la tabla de símbolos, sin importarnos su
ubicación en memoria, y si acaso una está antes o después que la otra.

La segmentación es una forma de administrar la memoria que permite que el


usuario vea la memoria de esa manera, es decir, como una colección de
segmentos, cada uno de los cuales tiene un nombre y un tamaño (que, además,
puede variar dinámicamente).

La segmentación se aprovecha del hecho de que los programas se dividen en


partes lógicas, como son las partes de datos, de código y de pila (stack). La
segmentación asigna particiones de memoria a cada segmento de un programa y
busca como objetivos el hacer fácil el compartir segmentos (por ejemplo librerías
compartidas) y el intercambio entre memoria y los medios de almacenamiento
secundario.

Esta forma de organización de la memoria para el manejo de archivos, tiene


ciertas ventajas para el programador frente a un espacio de direcciones no
segmentado. Dichas ventajas se enumeran a continuación :

• Simplifica la gestión de las estructuras corrientes de datos. Si el programador


no conoce a priori el tamaño que puede llegar a tener una estructura de datos
particular, no es necesario que lo presuponga. A la estructura de datos se le
asigna su propio segmento y el Sistema Operativo lo expandirá o reducirá
según sea necesario.

• Permite modificar los programas y recompilarlos independientemente, sin que


sea necesario volver a enlazar y cargar el conjunto entero de programas.
Nuevamente, esto se logra utilizando varios segmentos.

Página : 116
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

• Permite que varios procesos compartan segmentos. Un programador puede


situar un programa correspondiente a una utilidad o una tabla de datos de
interés en un segmento que puede ser direccionado por otros procesos.

• Se facilita la protección. Puesto que un segmento se construye para contener


un conjunto de programas o datos bien definido, el programador o el
administrador del sistema puede asignar privilegios de acceso en forma
adecuada.

Las ventajas anteriormente descritas, no se tienen con la paginación, que es


invisible para el programador. Por otra parte se ha visto que la paginación
proporciona una forma eficiente de gestionar la memoria. Para combinar las
ventajas de ambas, algunos sistemas están equipados con el HW y el SW del
Sistema Operativo que permite las dos.

En teoría, cada programa debe tener un número muy grande de segmentos


(por Ej. 232), de los cuales cada uno conste, a su vez, de un número grande de bytes
(por Ej., 232 también). Los primeros segmentos de 64 Kbyte podrían reservarse para
procedimientos, datos, pilas y grupos que pertenezcan al programa en ejecución.
Los segmentos restantes podrán contener cada uno un archivo por segmento, de
modo que los procesos pudieran direccionar en forma directa todos sus archivos, sin
tener que abrirlos y utilizar primitivas especiales de E/S para leerlos y escribirlos.
Cada archivo podría crecer y contraerse en forma completamente independiente de
los demás.

La memoria administrada mediante segmentos, estará dividida en cuatro


partes tal como se muestran en al figura No. 7.6.

Figura No. 7.6 Segmentos que puede tener la memoria.

La idea de memoria segmentada ha sobrevivido hasta la fecha. En una forma


muy moderada en muchas microcomputadoras basada los procesadores 68000 de
motorola y en los Pentium de Intel. Una implementación común proporciona soporte
de hardware hasta para 16 procesos, cada uno con 1.024 páginas de 2 K o 4 K.
Tomaremos para nuestro ejemplo, las páginas de 4 K. Cada proceso tiene un
espacio de dirección virtual de 4 Mega bites (1024 páginas de 4 Kbyte / página =
4096 Kbyte = 4 Megabytes).

Página : 117
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

Este esquema se implementa de la siguiente manera: el HW de la MMU


contiene una tabla con 16 secciones, una para cada uno de los 16 procesos. Cada
sección consta de 64 descriptores de segmentos (de modo que el espacio de
dirección de cada proceso de 4 Megabytes se divide hasta en 64 segmentos, donde
cada uno contiene 16 páginas.

Cada uno de los descriptores del segmento contiene la longitud del segmento
(de 0 a 16 páginas), bits de protección que indican si el segmento se puede leer o
escribir y un apuntador a la tabla de páginas. Cuando el Sistema Operativo da inicio
a un proceso carga el número de proceso de 4 bits y los 6 bits de alto orden (posic.
Más significativas) de la dirección virtual de 22 bits y los combina en un número de
10 bits que se usa como índice en la tabla de segmentos y para localizar el descriptor
del segmento relevante. Luego verifica los bits de protección en el descriptor. Si el
acceso está permitido la MMU verifica el número de página que se extrajo de la
dirección virtual respecto al campo de longitud del segmento para ver si el segmento
es suficientemente grande. Si lo es el número de página se utiliza como índice en
la tabla de páginas, cuya dirección se proporciona en el descriptor del segmento.
Una vez que se halla el número del frame, éste se combina con el desplazamiento
para acceder a la memoria física.

Una característica importante de este diseño es que cuando el Sistema


Operativo debe realizar un cambio de proceso, todo lo que tiene que hacer es
cambiar el registro del Número de proceso de 4 bits. tiene que volver a cargar todas
las tablas de segmentos o páginas.

Dos o más procesos pueden compartir un segmento sin más que hacer que
sus descriptores de segmentos apunten a la misma tabla de páginas. Cualquier
variación hecha a las páginas de este segmento por algún proceso se hace
automáticamente visible para los otros.

La tabla de segmentos del procesador.

Para traducir las direcciones virtuales a direcciones reales, el procesador


posee una tabla de segmentos con 4 filas. Cada una de estas filas describe uno de
los 4 segmentos del programa en ejecución. Para cada segmento se indica:

• Base: Dirección virtual en donde comienza (incluyendo esta dirección).


• Límite: Dirección virtual en donde finaliza (excluyendo esta dirección).
• Desplazamiento: Desplazamiento que hay que sumar a una dirección virtual
para obtener su dirección real. Se calcula como la dirección de comienzo del
segmento en la memoria real menos la dirección virtual de inicio del
segmento.

Página : 118
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

• Atributos del segmento: lectura/escritura, solo lectura e invisible (accesible


solo por el núcleo).

Problemas de la segmentación

A pesar de que un sistema segmentado aporta soluciones y optimizaciones,


persisten algunos problemas que solo se resuelven con paginación. Estos
problemas son:

• La implementación de fork es ineficiente, pues copia completamente los


segmentos. Con paginación, frecuentemente no es necesario copiar
completamente datos y pila.

• La compactación introduce una pausa generalizada del sistema que es difícil


distinguir de una caída del sistema. Con paginación no es necesario efectuar
compactación.

• El tamaño de un proceso no puede exceder el tamaño de la memoria real,


puesto que un proceso necesita estar completamente residente para poder
correr. Con paginación en demanda, un proceso no necesita estar
completamente residente en memoria para poder correr.

Ventajas:

• Al usuario se le simplifica el manejo de estructuras de datos de tamaño


dinámico.
• Se facilita el que los procesos compartan memoria.
• Los segmentos pueden estar protegidos según la semántica de su contenido.
Por ejemplo, un segmento que contiene código, puede especificarse como
sólo para ejecución (y nadie puede copiarlo ni sobrescribirlo); un arreglo
puede especificarse como read/write but not execute. Esto facilita
enormemente la detección de errores en el código.
• Librerías compartidas de enlace dinámico (DLLs).

Sistemas de Archivos

La mayoría de aplicaciones necesitan almacenar y recuperar información. Un


proceso puede almacenar una cantidad limitada de esta en su propio espacio de
direcciones, sin embargo este es de un tamaño muy limitado. Además cuando el

Página : 119
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

proceso termina, la información se pierde. Por otro lado en algunas ocasiones se


hace necesario que varios procesos accesen la misma información simultáneamente.
La solución a estos tres problemas está en el almacenamiento de la información
en medios externos, en unidades denominadas archivos.

La información almacenada en los archivos debe ser persistente, es decir,


no debe depender de la creación y terminación de un proceso. Un archivo, en
teoría, solo debe desaparecer por su eliminación explícita.

Los archivos son administrados por el sistema operativo. Su estructura,


nombre, forma de acceso, uso, protección e implantación son responsabilidad de él.
La parte del sistema operativo que se encarga de esta labor se conoce con el
nombre de sistema de archivos o File System.

VII.4 Archivos Vsam (virtual storage access method).

Un archivo secuencial indizado, normalmente es un archivo ordenado por la


clave con un índice no denso ordenado, donde el archivo y el índice están
organizados bajo la forma de un árbol_B. Esta estructura surge como una mejora a
un método de acceso a archivos llamado ISAM (Indexed Sequential Access Method),
siendo un producto de la IBM. Así, el VSAM hace que el almacenamiento de los
archivos sea más independiente de las unidades de almacenamiento.

El archivo se divide en áreas que son un conjunto de pistas de un cilindro o de


cilindros contiguos. Cada área se divide en intervalos, los cuales se componen de
una parte de una pista o de varias pistas consecutivas accedidas en una E/S. Hay
fisionamiento de intervalos y áreas para producir el crecimiento del archivo, por lo
que no hay áreas de desborde pues las políticas de fisión las absorben.

El método de acceso de almacenamiento virtual, utiliza una Zona de datos


que es la que contiene todos los registros de un archivo de datos. Dicha zona de
datos está dividida en intervalos y áreas. Los registros son almacenados por orden
ascendente de la clave principal o llave. Las actualizaciones son previstas dejando
intervalos vacíos por áreas y registros vacíos por intervalos.

Si se tiene, por ejemplo, un archivo cuyos registros tienen claves numéricas


con una secuencia inicial de carga como: 0, 1, 3, 5, 6, 7, 10, 12, 14, 15, 18, 20, 25,
30, 38, 40 y 50, almacenados bajo el método VSAM en dos áreas que contienen
cuatro intervalos cada una, con capacidad para cuatro registros por intervalo, el
estado del archivo al final de la carga inicial es el mostrado en la figura No. 7.7.

Página : 120
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

Figura No. 7.7 Archivo VSAM luego de la carga inicial.

La inserción de un nuevo registro con clave 26 se realiza buscando en el


índice de áreas, el área adecuada para dicho registro, así el 26 no es menor que 14
pero si es menor que el valor más grande (HV) por debajo del cual estará una clave.
Por ello, el área adecuada es el área 1. Luego se busca dentro de la zona de índice
de esa área el intervalo adecuado, como 26 no es menor que 20 pero si menor que
38, se identifica el intervalo adecuado que deberá contener el registro y luego se
decide cuál es el caso de inserción.

CASOS DE INSERCIÓN :

Primero: inserción sobre un intervalo no lleno.

Como el registro de datos de clave 26 va en el segundo intervalo, este último


es leído y el registro es insertado dentro de él siguiendo el orden creciente de sus
claves. El nuevo estado del archivo una vez que el registro de clave 26 ha sido
insertado, se muestra en la figura No. 7.8.

Figura No. 7.8 Archivo VSAM luego de una inserción en un intervalo no lleno.

Página : 121
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

Segundo: inserción sobre un intervalo lleno.

Como el intervalo está lleno y la inserción debe hacerse allí, se dice que dicho
intervalo desbordó por lo cual debe ser dividido en dos intervalos semi-llenos. Esta
fisión puede presentar dos casos suplementarios, ellos son:

1. Existe un intervalo vacío en el área hacia el cual se dirigirán los registros en


desborde:

Este caso se muestra en la Figura No. 7.9, con la inserción del registro con
clave 29. Siguiendo los mismos pasos que en el primer caso, el intervalo
donde este registro debe ser insertado es el mismo intervalo anterior.

Figura No 7.9 Inserción en intervalo lleno con intervalo vacío en el área.

2. No existe un intervalo vacío en el área :

Al no haber un intervalo libre en el área, el intervalo que desborde tendrá que ser
dividido y dicha fisión hará que el área desborde a su vez, teniéndose que fisionar
el área también. La fisión de un área se realiza de igual manera que la de los
intervalos. La inserción de los registros de claves 27 y 28 consecutivamente
hacen que el área 1 desborde, creándose una nueva área que es la número 2 y
se puede apreciar en la figura No. 7.10.

Figura No. 7.10 Inserción con fisión de intervalo y de área.

Página : 122
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

El método de acceso de almacenamiento virtual, utiliza además una Zona de


índice, de la cual pueden existir dos o más niveles de índices. El primer nivel se
llama índice de intervalos y hay uno por cada área. Cada entrada contiene la clave
mayor del intervalo y su dirección. El segundo nivel es el índice de áreas y hay
uno por archivo. Cada entrada de éste contiene la clave mayor del área y su
dirección. En caso que el índice de área sea muy grande y desborde se tiene un
tercer nivel denominado índice maestro.

La principal cualidad de VSAM es su transportabilidad, el inconveniente es la


cantidad de accesos a disco que se requieren para obtener el dato deseado.

Según la cantidad de memoria disponible se diseñara la cantidad de memoria


de los bloques. A mayor cantidad de memoria, mayor tamaño de bloques y en
consecuencia menor cantidad de niveles y por lo tanto menos accesos a disco.

Ventajas:

• El archivo está siempre ordenado y agrupado según la clave


• El tiempo de acceso en lectura es siempre pequeñísimo.

Desventajas:

• El tiempo de acceso en escritura puede ser grande si hay fisión de intervalo y


de área.

VII.5 Compactación de datos.

La compresión no es más que una técnica que consiste en aplicar un


algoritmo, es decir, una serie de transformaciones que reducen el tamaño inicial de
un conjunto de datos informáticos, ya sean textos, archivos, gráficos, video o
audio. La compresión de datos parte de una máxima: "el espacio es dinero", y trata
de realizarla de la mejor manera posible. Puesto que cualquier información
procesada por una computadora ocupa un determinado espacio a la hora de
almacenarla, hay que encontrar la manera de reducir ese espacio, sin perder
información. Esta es la base sobre la que se asientan todos los sistemas de
compresión de datos.

Los avances experimentados nos permiten disponer de una computadora con


el doble de memoria que la memoria física; el doble de espacio en el disco duro;
diversos formatos que reducen el tamaño de un archivo gráfico o sonoro a la décima
parte de su tamaño real; módems funcionando al doble o al triple de su capacidad,

Página : 123
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

así como secuencias de vídeo reproducidas con una calidad muy superior a la
ofrecida por una tarjeta gráfica que no utilice ningún sistema de compresión.

Los logros obtenidos por la compresión de datos son espectaculares. Sin la


existencia de compresores, es posible que el hardware de las computadoras hubiese
evolucionado de forma muy distinta. Los disquetes, tal como hoy los conocemos,
habrían dejado de existir hace muchos años, pues no son capaces de almacenar
archivos de más de 2.8 Megabytes.

La compresión de datos es un tema complejo, pero a la vez apasionante,


pues no en vano abarca prácticamente todos los campos en los que se produce una
manipulación de datos.

La pregunta clave de todo esto es: ¿cómo funcionan los compresores de


archivos?. La teoría es muy sencilla. La idea consiste en partir de un determinado
conjunto de archivos con un determinado tamaño, y conseguir almacenarlos en un
espacio mucho menor, sin perder información. Todos los compresores se
aprovechan de la repetición de los datos dentro de un archivo, puesto que todos los
archivos se traducen en combinaciones de bits, según el código ASCII, de tal forma
que podemos apreciar que en la práctica existen secuencias de bytes repetidas, que
pueden almacenarse de forma más corta. Por ejemplo, si un archivo contiene 300
bytes con el número 46, el cual corresponde al color de una determinada porción de
un dibujo, estos 200 bytes pueden reducirse a 2 bytes, que contendrán el número 46
y el 200, para indicar que el primero está repetido 200 veces. Este método también
se aplica a conjuntos de datos repetidos que no están seguidos, de manera que,
dependiendo del sistema que se utilice para controlar los bloques repetidos, se
obtienen los distintos algoritmos para la compresión de archivos.

Los Métodos de compactación de datos entran en dos categorías:

1.- La primera es la de los métodos dependientes de la estructura de registros o


del contenido de los datos, por lo general deben ser escritos para cada
aplicación en especial.

2.- La segunda es la de los métodos de uso más general, por los que se les puede
incluir en paquetes de software de uso general, en el hardware o en
microprogramas. Muchas firmas especializadas ofrecen
comercialmente paquetes de software para reducir el tamaño de los
archivos.

Los métodos de compresión más utilizados son los siguientes:

1.- Eliminación de los ítems de datos redundantes.- Es uno de los más


importantes para reducir el espacio de almacenamiento de una base

Página : 124
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

de datos es el que se basa en la eliminación de la redundancia


inherencia al almacenamiento múltiple de ítems de datos idénticos
en distintos archivos. Es éste uno de los objetivos principales de los
sistemas de administración de bases de datos.

2.- Conversión de la notación humana en notación compacta.- Cuando se


almacenan datos en la forma que los humanos prefieren para
leerlos, ellos contienen a menudo más caracteres que los
necesarios. Las fechas, por ejemplo, pueden escribirse como 12
Nov 1976, o de las manera más compacta 12.11.76, de modo que
ellas se almacenan a menudo con seis bytes en los archivos (hasta
antes del Año 2000, ya que actualmente se utilizan cuatro bytes
para almacenar la fecha, en lugar de dos como se hacia
anteriormente). Este tipo de compactación es también aplicable a
muchos otros ítems, por ejemplo, los números de pieza y las
direcciones postales.

3.- Supresión de caracteres repetidos.- Los campos numéricos de algunos


archivos contienen a menudo muchos ceros a la izquierda o a la
derecha. Cuando hay más de dos ceros, la codificación requiere en
rigor solo dos caracteres (decimales compactados): uno para indicar
la repetición y el otro para indicar las veces que se repite el cero. En
algunos archivos se encuentran espacios en blanco u otros
caracteres repetitivos, los que pueden codificarse de manera similar.

4. Evitar los espacios vacíos en el archivo.- En algunos archivos, los registros y


los ítems de datos son de longitud muy variable. Son muy variables,
por ejemplo, los ítems de datos que representan la dirección postal
de un individuo o los que representan comentarios. La organización
de un archivo para ítems variables es más compleja que la de un
archivo para ítems de longitud fija.

5. Sustitución de los ítems de datos de uso habitual.- Cuando existe solo un


conjunto limitado de valores de atributo, no es necesario escribir el
ítem de forma completa. Con ciertos tipos de ítems de datos, por
ejemplo, “clase de licencia”, se utilizaría normalmente un código; los
“nombres” en cambio, se deletrean de forma completa a menudo.

6. Sustitución de texto idiomático.- Es frecuente el almacenamiento de textos


escritos en los archivos de la computadora. Cuando el texto escrito
constituye una porción considerable de un archivo, es una buena
idea la de sustituir palabras y aun frases completas con caracteres
de código. Supongamos que un archivo almacena bytes de 8 bits.
Cada byte permite combinaciones suficientes para representar más
o menos 200 palabras de uso común. Supongamos, además, que

Página : 125
OTROS MÉTODOS DE ORGANIZACIÓN DE ARCHIVOS Y BUSQUEDAS DE ECONOMÍAS

se reservan 32 de las 256 posibles combinaciones para indicar que


ese carácter solo no da por si mismo la palabra completa sino que
hay que leer el siguiente carácter. Se tiene así la posibilidad de
codificar 32*256 = 8192 palabras adicionales. Otra combinación de
bits en el primer carácter podría indicar que la palabra está
deletreada según el código EBCDIC o el código ASCII. La maquina
que recibe esta sucesión de datos la convertirá en texto escrito
mediante una operación de lectura de tabla.

Página : 126
CAPITULO 8

Acceso Multi-
llaves
ACCESO MULTI-LLAVES

Capitulo VIII. Acceso Multi-llaves.

Muchas aplicaciones que existen en las áreas administrativas de nuestra vida


cotidiana, exigen que los registros de datos tengan más de una llave de búsqueda, lo
que viene a complicar la forma de organización de los archivos. Para cierto tipo de
consultas es ventajoso el uso de múltiples índices. Los registros de clave múltiple
aparecen, en algunos sistemas de operaciones, pero se los encuentra más
comúnmente en los sistemas de información, en los que han de admitirse muchos
tipos de averiguaciones sobre diferentes aspectos de la información contenida en los
archivos.

En los últimos años ha existido mucho interés en los sistemas de archivos que
guardan múltiples tipos de datos tales como multimedia, imágenes, sonido y vídeo.
En dichas aplicaciones es muy conveniente implementar un sistema de archivos que
pueda manejar múltiples llaves de acceso.

Cuando el número de objetos multimedia es relativamente reducido, las


prestaciones proporcionadas por los sistemas de archivos con múltiples llaves, no
suelen ser importantes.

La funcionalidad de los archivos que se accesan utilizando varias llaves, se


vuelve más importante cuando el número de objetos multimedia guardado es grande.
Los aspectos como las actualizaciones de las transacciones, las posibilidades de
consulta y la creación de índices se vuelve un punto importantísimo al establecer los
sistemas de archivos.

Las consultas intentan encontrar los registros de datos, especificando, por


ejemplo, conjuntos de palabras clave. La consulta que el usuario tiene en mente no
suele poderse formular con precisión; por tanto, los sistemas de recuperación de
registros intentan dar las respuestas imaginando todas las posibles forma de
búsqueda que se le puedan ocurrir al usuario.

Existen dos métodos para proporcionar trayectorias de acceso adicional hacia


los archivos de registros de datos. Dichos métodos son :

• La organización multilista.
• La inversión.

Muchos compiladores de los lenguajes de programación no proporcionan


capacidades preconstruidas para manejar archivos organizados en forma de
multillave. Más bien, una agrupación de procesamiento de datos normalmente
adquiere un paquete de manejo de datos que manipula a los archivos multillave, o
bien su propio sistema de manejo de datos. Entonces, los compiladores del

Página : 128
ACCESO MULTI-LLAVES

lenguaje pueden establecer una interfase directa con este manejo de archivos, o
pueden generar llamadas a estas rutinas de manejo.

Un ejemplo donde se requiere manejar un archivo organizado en forma de


multillave, es en los sistemas bancarios, en el que hay varios usuarios de la misma
información : Cajeros, jefes de crédito, administradores de sucursal, gerentes, cuenta
habientes, y muchos más. Todos ellos tienen la necesidad de accesar los mismos
datos, para éste caso se utiliza un registro que es mostrado en la Figura No. 8.1.

Clave de Nombre Código de grupo Num. De Balance Límite de


Cliente Apell. Pat. Apell. Mat Nombre Sucursal Tipo Socio Crédito

Figura No. 8.1 Ejemplo de un registro de una sucursal bancaria.

De los usuarios mencionados en el párrafo anterior, todos ellos tienen la


necesidad de accesar la información de diferente manera. El cajero podría
identificar un registro de cuenta por el valor de su Clave de Cliente. Un Jefe de
crédito podría necesitar accesar todos los registros de cuenta con un valor dado para
el Límite de crédito, o todos los registros con base en el valor de Num. De socio.
Un administrador de sucursal podría accesar los registros mediante los códigos de
Grupo Sucursal y Tipo. Un gerente podría necesitar reportes periódicos de todos
totales de cuentas, ordenados por Clave de Cliente.

Debido a todo lo anterior, muchas de las aplicaciones que se utilizan en la


industria y en las dependencias requieren el uso de los archivos organizados en
forma de multillave.

VIII.1 Organización multilista.

Otro enfoque básico para suministrar la conexión entre un índice y el archivo


de registros de datos, se llama organización multilista.

El enfoque de multilista para instrumentar acceso multillave ha sido la base


para estructuras físicas en muchos sistemas de administración de base de datos
jerárquicos y de redes disponibles comercialmente incluyendo la familia de sistemas
CODASYL, TOTAL de Cincom, y el IMS de la IBM.

Los archivos multilista mantienen un índice para cada llave secundaria.


Existe una entrada en el índice de llave secundaria para cada valor que, la llave

Página : 129
ACCESO MULTI-LLAVES

secundaria, tiene en este momento en el archivo de datos. La organización de


archivos multilista difiere de la inversión en que, mientras que la entrada en el índice
de inversión para un valor de llave tiene un apuntador a cada registro de datos con
ese valor de llave, la entrada en el índice de multilista para un valor de llave tiene
sólo un apuntador al primer registro de datos con ese valor de llave. Este registro de
datos contiene un apuntador al siguiente registro de datos con ese valor de llave, y
así sucesivamente. Posteriormente hay una lista ligada de registros de datos para
cada valor de la llave secundaria. Los encadenamientos en Multilistas normalmente
son bidireccionales y ocasionalmente son circulares, para mejorar la eficiencia de
actualización.

Esta forma de organización de un archivo, permite accesar la información de


manera ordenada a través de campos llaves. Las multilistas permiten llegar a un
registro por diferentes caminos. El camino lo determina el campo clave sobre el cual
se hace la búsqueda.

Supóngase que se tiene un archivo en el cual cada registro almacena la


siguiente información :

Nombre Profesión Categoría

En un archivo organizado en forma de multilista, se tienen almacenados seis


registros que contienen los datos definidos en la tabla No. 8.1.

Nombre Profesión Categoría


Alejo Matemático 1
Andrés Físico 2
Miguel Matemático 2
Tomás Ingeniero 3
Darío Ingeniero 1
Esperanza Abogado 2
Tabla 8.1 Datos para crear un archivo multilista.

Una vez creando la estructura del archivo organizado en forma de multilista,


se crean dos áreas de índices : La lista del índice profesión y la lista del índice por la
categoría. Dicha estructura se puede apreciar en la figura No. 8.2.

Una característica interesante de los archivos organizados en forma de


multilista, es que las entradas del índice pueden ser de longitud fija. Cada Valor
está asociado a un solo apuntador.

Página : 130
ACCESO MULTI-LLAVES

Figura No. 8.2 Organización multilista por profesión y categoría

En el caso de la Figura No. 8.2, la información de cada persona puede


accesarse por medio de su profesión y por medio de su categoría, que son los
atributos que permiten realizar búsqueda directa en el archivo. Como puede
observarse en la Figura No. 8.2, se tiene una lista por profesión y una por categoría.

La organización de archivos multilista como puede apreciarse, implementa


unas listas ligadas entre los campos llave que se hayan definido y encadenando a
todos los registros con un cierto valor. Todos los registros están ligados entre sí por
medio de apuntadores que hacen virtualmente varias listas ligadas en un solo
archivo.

Como se mostró en la Tabla No. 8.1, los registros están almacenados en


forma aleatoria y dispersos en una unidad de almacenamiento; ya que el sistema de
archivos almacena registros en cualquier espacio libre, su secuencia lógica se
mantiene por medio de apuntadores. Esto contrasta con lo que sucede en archivos
organizados en forma secuencial, en el cual la secuencia lineal lógica coincide con la
contigüidad física de los registros. Cada registro en una estructura de listas ligadas
incluye un campo señalador dirigido al siguiente registro en la lista ligada y el
apuntador consiste en una dirección relativa, un valor principal o una dirección física
real.

La lista ligada es una estructura práctica para el mantenimiento de la


secuencia lógica de un archivo en el que se efectúan frecuentes operaciones de
actualización. La inserción y la eliminación se llevan a cabo sin tener que
reorganizar nuevamente el archivo de datos.

Página : 131
ACCESO MULTI-LLAVES

VIII.2 Lista Invertida.

Un método fundamental para proporcionar el encadenamiento entre un índice


y los registros del archivo es llamado inversión. Un índice de inversión de llaves
contiene todos los valores que la llave tiene presente en los registros del archivo.
Cada uno de los valores de la llave en el índice de inversión apunta a todos los
registros que tienen el valor correspondiente. El archivo de datos se dice que está
invertido sobre esa llave.

La inversión como enfoque para proporcionar acceso multillave ha sido


utilizado como base para las estructuras físicas de bases de datos en sistemas
comerciales disponibles para la administración de bases de datos, incluyendo varios
sistemas relacionales (el DB2 de IBM el Ingres Relational Technology y Oracle),
sistema 2000 de Intel y el Adabas de Software AG. Estos sistemas fueron diseñados
para proporcionar un rápido acceso a los registros, vía tantas llaves de inversión
como el diseñador quiere identificar. Están orientados al usuario con lenguajes de
consulta de tipo natural para asistir al usuario en la formulación de consultas.

Si un campo de llave se usa para determinar la estructura de almacenamiento


de los datos del archivo, éste es llamado llave primaria o principal del archivo.
Todas las demás llaves de acceso son llamadas llaves secundarias.

Desde el punto de vista común, el uso del término inversión implica que los
valores de los datos indexados han sido sacados del registro de datos y residen
solamente en el correspondiente índice de inversión.

En los archivos de listas múltiples con listas de longitud controlada, ésta puede
ir desde un eslabón por lista hasta una longitud suficiente para incluir todos los ítems.
En el primer caso hablamos de una lista invertida, en ésta hay una entrada de índice
de cada clave, para cada registro.

De esta manera, se requiere un único acceso a los datos para cada registro
que es la respuesta a una consulta. Suponiendo que es posible examinar
rápidamente los índices secundarios, la organización de lista invertida da la
respuesta más rápida a las consultas en tiempo real, porque no hay lista que seguir.
En cambio, los índices pueden resultar tan extensos (habrá que almacenarlos en
dispositivos secundarios) que su propia organización llega a constituir un problema.

En las listas invertidas, se indizan todos los valores de atributo de la clave


secundaria, de modo que no hay cadenas.
Debe observarse que el archivo de listas invertida no es sino un caso
particular de los archivos de listas múltiples, es decir, se trata de listas múltiples
cuando k=1, en el índice se incluyen todos los registros o valores de la clave.

Página : 132
ACCESO MULTI-LLAVES

Se emplean en los sistemas de gestión de bases de datos (SGBD)


Documentales llamados SRI (Sistemas de Recuperación de Información). Los
archivos de datos equivalen a una función del estilo:

Archivo (# registro ) (atributo : valor) , (atributo : valor) ...

El archivo de índice representa la función inversa (de ahí el nombre de


archivos invertidos).

Archivo ( atributo : valor ) # reg. # reg ...

En la Figura No. 8.3 se observa un archivo donde se almacenaron 6 registros


en el área de datos en forma desordenada con respecto a las llaves clave e índice.
Se crearon dos índices, uno por clave y el otro por teléfono. Los dos índices se
encuentran totalmente ordenados por lo que la búsqueda en ellos puede
implementarse como binaria para encontrar rápidamente el registro completo en el
área de datos.

Figura No. 8.3 Organización de datos de lista invertida (dos índices).

Al momento de realizar una búsqueda en el archivo organizado como lista


invertida, se puede implementar por dos campos : Proporcionando la clave, o bien el
número telefónico de la persona.

Página : 133
ACCESO MULTI-LLAVES

Si la búsqueda se realiza por clave, se accesa en primer término el área de


índices. Se ejecuta un procedimiento de búsqueda en el que se implementó
previamente la búsqueda binaria debido a que están ordenadas todas las claves;
Una vez que se encontró la clave buscada, se toma el apuntador. Una vez que se
tiene el apuntador, se hace uso el área de datos y se coloca el puntero de lectura-
escritura en el registro que indica el apuntador. En ese preciso momento se tiene
acceso completo al registro que se estaba buscando.

Por el otro lado, si la búsqueda se realiza por número telefónico, se accesa


el área de índices y se ejecutan exactamente todos los pasos descritos
anteriormente hasta llegar al registro que se está buscando.

VIII.3 Multilista restringida y estructurada.

Una variante de la organización multilista básica es la multilista restringida y


estructurada que consiste en un archivo multilista de longitud controlada en la cual
una longitud máxima es impuesta a las listas ligadas de los registros de datos.
Si el valor de la llave secundaria lo poseen más registros de datos de lo que permite
la longitud, entonces el valor de la llave aparecerá más de una vez en el índice y
podrá haber más de una lista ligada de registros de datos con ese valor.

Por cada campo llave, puede haber una o varias listas ligadas dependiendo la
restricción que se le haya impuesto a cada una de las listas ligadas de los índices.

Suponga usted que se tiene un registro de datos con la estructura siguiente :

Grupo Nombre Categoría

En el área de datos se almacenarán los cinco registros que se muestran en la


Tabla No. 8.2.

Tabla No. 8.2 Registros que se almacenan en una multilista restringida.


Una vez creando la estructura del archivo organizado en forma de multilista
restringida, se crean dos áreas de índices : La lista del índice grupo y la lista del
índice por la categoría. Dicha estructura se puede apreciar en la figura No. 8.4.

Página : 134
ACCESO MULTI-LLAVES

Figura No. 8.4 Organización multilista restringida por grupo y categoría

En la figura No. 8.4, se restringió la cantidad de elementos a 3 de la lista


ligada de grupo, de tal forma que existen dos listas ligadas de la llave grupo.

Al momento de realizar una búsqueda por la llave grupo, se verifica la cantidad


de listas ligadas del grupo del que se hace la búsqueda y si existen varios grupos de
la misma llave, todos esos grupos serán considerados para realizar la búsqueda de o
de los registros la cual se realizará en forma secuencial en los índices.

La organización de archivos multilista restringida no es muy eficiente, debido a


que en ocasiones existen varias listas ligadas y las búsquedas utilizan mucho tiempo
del procesador, por lo que las respuestas en tiempo real son un poco lentas.

VIII.4 Particionada celular.

Por regla general, al manipular archivos multillaves se está buscando reducir


el tiempo de búsqueda en las listas ligadas, sobre todo cuando hay una gran
cantidad de elementos en el archivo, lo que se hace es dividir en segmentos, dando
lugar a las multilistas celulares o particionada celular.

De ésta forma, cada uno de estos segmentos no se extiende fuera de una


frontera física determinada, como puede ser un cilindro, e incluso, si es posible, una
pista, así, cada segmento se halla prácticamente al alcance inmediato del dispositivo
de acceso cuando se recorra la lista ligada.

Página : 135
ACCESO MULTI-LLAVES

En la figura No. 8.5 se muestra un esquema donde el archivo está organizado


en forma de multilista celular o particionada celular. Se supone que se almacenan 6
registros por sector y existen dos listas ligadas una por articulo (Muñeca en el
ejemplo) y otra por color del producto (negro en el ejemplo), y las dos listas
encadenan a los registros en cierto sector y en cierta pista.

Figura No. 8.5 Estructura de un archivo organizado en forma particionada celular.

Imaginemos que en el archivo de la Figura No. 8.5, se desea obtener un


listado de un pedido de muñecas Negras, se examinara lo siguiente :

Página : 136
ACCESO MULTI-LLAVES

1. Los índices para ver qué zonas del hardware contienen el atributo “Negro” y el
atributo “muñeca”. Si observamos la Figura No. 8.5 nos damos cuenta
que la zona 4 no contiene el atributo muñeca, y las zonas 1,3,5 no tienen
el atributo “negro”. Por lo tanto, solo hay que explorar la zona 2, pero sólo
tiene dos registros con el atributo “negro”.

2. Por lo tanto solo se examinará los registros que contienen el atributo negro para
ver si hay muñecas negras.

La relación entre un archivo organizado en lista invertida y un archivo


organizado en forma de multilista; es una multilista celular o particionada celular.

Para el caso de que cada sublista contenga un único registro, el índice de la


multilista celular es semejante al índice del archivo inverso, con la diferencia de que
este último no requiere la presencia del campo contador.

En las consultas sobre claves múltiples se puede accesar directamente a la


zona física con los registros deseados por medio del índice llave.

En los dos componentes de la organización multilista y lista invertida, se


puntualizó como las longitudes de las listas se limitaban de manera que no se
extendiesen más allá de ciertas fronteras o zonas del hardware. Evitando así las
largas búsquedas en que se incurre al seguir una lista de una zona a otra.

Esta variante de multilista puede ser útil en la reducción de movimientos de los


brazos lectores del disco duro y de accesos de entrada/salida del buffer de datos.

Existe una variante llamada multilista celular en paralelo. Esta técnica es


un caso particular de Multilista celular que consiste en desparramar los registros de
datos en módulos que pueden ser leídos simultáneamente, diseñando la distribución
de manera de maximizar el número de pedazos de lista que se recorren en paralelo.
Esta forma de operación se encontrará seguramente con mayor frecuencia en los
sistemas del futuro que deban permitir la rápida exploración de grandes bases de
datos.

Otra versión de las multilistas celulares o particionada celular, son las listas
invertidas celulares en paralelo en las cuales las posiciones de las celdas podrán
seleccionarse de forma que dos o más de ellas puedan explorarse en paralelo, con el
fin de reducir los tiempos de respuesta del sistema.

El archivo de claves múltiples puede distribuirse, por ejemplo, entre varios


paquetes de discos, ocupando sólo unos pocos cilindros en cada paquete y con
datos diferentemente organizados en los demás cilindros.

Página : 137
ACCESO MULTI-LLAVES

Las celdas a que se refieren los índices son cilindros, varios de los cuales
pueden ser explorados en paralelo. Cada cilindro posee un índice propio para
acelerar la búsqueda dentro de ese cilindro y para que no sea necesario leer todas
las pistas de éste.

Para muchos archivos el cilindro sería una celda demasiado grande y se


usarían entonces como celdas grupos menores de pistas dentro del mismo cilindro.

VIII.5 Mantenimiento (De cada una de las anteriores).

El mantenimiento a un archivo son todos los cambios hechos para mejorar la


eficiencia de los programas que los accesan y manipulan.

Existen tres formas de mantenimiento que se les puede aplicar a un archivo


organizado en forma de multillave : reestructuración, reorganización y actualización
de los datos.

La reestructuración consiste en aplicar cambios estructurales, por ejemplo


cambiar la longitud de algún campo, incluir un campo que se requiere, eliminar algún
campo que ya no es necesario, etc.

La reorganización consiste en cambiar de una organización multilista a una


lista invertida, a una particionada celular o multilista restringida. Cualquier
cambio entre ellas por cuestión de optimización, también se le llama reorganización.

Finalmente tenemos la actualización que es, que consiste en mantener los


datos de los archivos exactamente igual a como ocurren en la vide de una
organización. Dicho mantenimiento puede ser : Altas, Bajas y Modificaciones.

MANTENIMIENTO A UN ARCHIVO ORGANIZADO EN FORMA DE


MULTILISTA.

El mantenimiento de un archivo multilista consiste en cambiar el contenido del


archivo, de tal forma que refleje todos los momentos transitorios del mundo actual.
Estos cambios incluyen :

A) La inserción de nuevos registros.- Esta acción consiste en adicionar un nuevo


registro, modificando los índices y los apuntadores que sean
necesarios.

Página : 138
ACCESO MULTI-LLAVES

Cuando se va a insertar un registro en una lista ligada, puede


insertarse en cualquier espacio libre del archivo. Sin embargo,
los apuntadores de los nodos (registros) afectados, deben
ajustarse para que reflejen la secuencia lógica deseada.

Por ejemplo, imagine usted que se inserta un registro al archivo


utilizado en la tabla No. 8.1. El archivo quedaría de la forma en
que se muestra en la Tabla No. 8.3.

Tabla No. 8.3 Insertar un registro a un archivo multilista.

En los índices y apuntadores, se adicionaría el registro de la


forma como se muestra en la Figura No. 8.6.

B) La modificación de datos.- Esta acción consiste en buscar un registro especifico


y cambiar el contenido de uno o varios de los campos del
registro; a excepción del campo llave.

En el caso de las modificaciones, se hace el recorrido por los


índices, hasta llegar al registro que se desea modificar. Una vez
que se encontró el registro se podrá cambiar el contenido de
todos los campos e excepción de los campos llave.

C) La eliminación de registros.- Esta acción consiste en eliminar físicamente un


registro en específico, eliminándolo tanto del área de datos como
del área de los índices.

Página : 139
ACCESO MULTI-LLAVES

Figura No. 8.6 Adición de un registro en las listas ligadas de profesión y categoría.

MANTENIMIENTO A UN ARCHIVO ORGANIZADO EN FORMA DE LISTA


INVERTIDA.

El mantenimiento de un archivo multilista consiste en cambiar el contenido del


archivo de datos y de los índices, de tal forma que refleje todos los momentos
transitorios del mundo actual. Estos cambios se llevan a cabo por las siguientes tres
acciones :

A) La inserción de nuevos registros.- Esta acción consiste en adicionar un nuevo


registro, modificando tanto al área de datos como el área de
índices.

En el caso de éste tipo de organización de archivos,


primeramente se graba el registro al final del área de datos y
se toma la dirección física donde se graba el registro y la llave
del registro.

A continuación, se graba la llave y la dirección física del registro


en el área de índices y se reorganiza dicha área, con el fin de
que los índices estén siempre ordenados.

Página : 140
ACCESO MULTI-LLAVES

B) La modificación de datos.- Esta acción consiste en tomar del usuario la clave


llave del registro que se desea modificar. Con dicha llave, se
hace una búsqueda binaria en el área de índices para
encontrar la ubicación física del registro de datos.

Una vez que se ha obtenido la ubicación física del registro, se


ejecuta una función para posicionar el puntero de
lectura/escritura del archivo de datos. Una vez que se
localizó el registro en cuestión, podrán modificarse todos los
datos que se deseen, a excepción del campo llave.

Una vez que ya se actualizó el registro de datos, se re-escribe


el registro de datos en el mismo lugar donde estaba
originalmente.

C) La eliminación de registros.- Esta acción consiste en eliminar físicamente un


registro en específico, eliminándolo tanto del área de datos como
del área de los índices.

Para éste tipo de organización, se busca primero en el área de


índices utilizando la búsqueda binaria, tomando la ubicación
física y marcando el registro como baja.

A continuación se posiciona directamente en el registro a


eliminar del área de datos y también se marca como registro
dado de baja.

Por último, se ejecuta un proceso de actualización, el cual


consiste en eliminar físicamente todos los registros del área de
datos y del área de índices que estén marcados como bajas.
Dicho proceso se ejecuta al final del todo un proceso de
actualización o bien al final del día.

MANTENIMIENTO A UN ARCHIVO ORGANIZADO EN FORMA DE


MULTILISTA RESTRINGIDA Y ESTRUCTURADA Y PARTICIONADA CELULAR.

La actualización a los archivos organizados en forma de multilista restringida y


estructurada y la particionada celular, siguen exactamente el mismo procedimiento
que la organización multilista; esto por ser éstas últimas una versión de la primera.

Página : 141
CAPITULO 9

Evaluación
General de
Sistemas de
Archivos
EVALUACIÓN GENERAL DEL SISTEMA DE ARCHIVOS

Capitulo IX. Evaluación General del Sistema de Archivos.

Actualmente, las empresas se enfrentan a un entorno comercial que


progresivamente se hace más complejo y difícil. El mercado requiere respuestas
cada vez más rápidas en un mundo donde los cambios resultan impredecibles, las
situaciones evolucionan con mucha velocidad, los problemas requieren un
conocimiento mayor de una cantidad elevada de factores que se interrelacionan
entre sí de forma compleja, etc. Ante esto, la compañía debe adaptarse creando
organizaciones más eficaces. Los directivos de las empresas buscan el tipo de
organización que resulte más apropiada para los objetivos que se quieren lograr. La
eficacia de una empresa depende de su capacidad para que todos sus elementos
funcionen de manera coordinada para la consecución de los objetivos fijados. En un
mercado como el actual en el que la competitividad y la rapidez de maniobra es
esencial para el éxito, hay que contar con la información adecuada para actuar y
tomar las mejores decisiones. Por ello, las organizaciones crean sistemas de
información que ayuden a lograr los objetivos de la compañía.

Los sistemas de información es todo el conjunto de componentes que


interaccionan entre sí para lograr un objetivo común.

Los sistemas de información, a través de su papel central en la economía de


la información, están llevando a cabo los cambios en cuatro aspectos fundamentales:

• Las personas trabajan de manera más inteligente.


• Un cambio global en el concepto de la industria.
• Tanto las ideas como la información están tomando mayor importancia que el
dinero.
• Las personas que trabajan con la información dominan la fuerza del trabajo.

Todo sistema organizacional depende, en mayo o menor medida, de una


entidad abstracta denominada sistema de información. Este sistema es el medio por
el cual fluyen los datos de una persona o departamento hacia otros y puede ser
cualquier cosa, desde la comunicación interna entre los diferentes componentes de
la organización y líneas telefónicas hasta sistemas de cómputo que generan
reportes periódicos para varios usuarios.

La idea general, es puntualizar que en todo sistema organizacional se


requieren sistemas de información tales como : Nomina, inventarios, contabilidad,
cuentas por cobrar, etc. Dichos sistemas de información operaban en forma
tradicional registrando todas las operaciones y movimientos en papel. Con el uso de
los equipos de cómputo como herramienta para su operación se minimizó el tiempo
de proceso trayendo grandes ventajas.

Página : 143
EVALUACIÓN GENERAL DEL SISTEMA DE ARCHIVOS

Los sistemas de información vía computadora, requieren que la computadora


cuente con un buen medio de almacenamiento de datos y dentro de dicho medio
crear un buen sistema de archivos (también llamado file system), para almacenar
todos los datos del sistema.

El file system es aquel sistema que provee servicios a los usuarios y


aplicaciones en el uso de archivos. El único camino que tiene el usuario o la
aplicación para acceder a los archivos es a través de un sistema de gestión de
archivos. Esto revela para el usuario o programador la necesidad de desarrollar
software de propósito especial para cada aplicación y provee al sistema un medio de
controlar su ventaja más importante. Los objetivos de un sistema de gestión de
archivos se enumeran a continuación :

• Cumplir con las necesidades de gestión de datos y con los requisitos del
usuario, que incluye el almacenamiento de datos y la capacidad de ejecutar
las operaciones cotidianas.
• Garantizar, en la medida de lo posible, que los datos en el archivo sean
válidos.
• Optimizar el rendimiento, ambos desde el punto de vista del sistema en
términos de productividad global, y como punto de vista del usuario en
tiempos de respuesta.
• Para proveer soporte de E/S para una variedad de tipos de dispositivos de
almacenamiento.
• Para minimizar o eliminar la posibilidad de perdida o destrucción de datos.
• Para proveer un conjunto estándar de rutinas de E/S.
• Para proveer soporte de E/S para múltiples usuarios, en caso de sistemas
multiusuarios.

Diferentes sistemas van a tener diferente organizaciones pero estas


organizaciones son razonablemente representativas. A un nivel mas bajo los
manejadores de dispositivos se comunican directamente con los dispositivos de
periféricos o con sus canales o controladores. Un controlador de dispositivos es
responsable de iniciar las operaciones de E/S en un dispositivo y procesar la
terminación de una petición de E/S. Para operaciones de archivos, el controlador
típico de dispositivos son discos y unidades de cinta. Los manejadores de los
dispositivos son usualmente considerados como parte del sistema operativo.

El próximo nivel esta referido con el nombre de sistema de archivos básicos, o


nivel de E/S física. Esta es la interfase primaria con el ambiente fuera del sistema
de la computadora. Este nivel trata con bloques de datos que son intercambiados
con sistemas de disco o cinta. De este modo se preocupa de ubicar dichos bloques
en el dispositivo de almacenamiento secundario y del almacenamiento intermedio de
los mismos en memoria principal. Este nivel no comprenderá el contenido de los

Página : 144
EVALUACIÓN GENERAL DEL SISTEMA DE ARCHIVOS

datos o la estructura de los archivos implicados. El sistema de archivos básicos es


usualmente considerado como parte del sistema operativo.

La E/S lógica habilita a los usuarios y aplicaciones de acceder a registros.


Así, mientras el sistema de archivos básico trabaja con bloques de datos. El modulo
lógico de E/S trabaja con el archivo de registros. La E/S lógica provee una
capacidad de E/S de registro de propósito general y mantiene los datos básicos
acerca de los archivos.

Este capítulo tiene como fin evaluar en forma general un sistema de archivos;
pero como para ello se requiere contar con un sistema de archivos real y no se
cuenta, lo que se hizo fue tomar datos ficticios. A dichos datos ficticios se les
aplicaron ciertas operaciones aritméticas y ciertas consideraciones; para finalmente
obtener estimaciones del uso de un sistema de archivos tales como : análisis de los
beneficios del sistema, necesidades de almacenamiento y una comparación entre
costo-beneficio.

IX.1 Estimación del uso del sistema.

Como Ingeniero en Sistemas Computacionales, probablemente tendrá que


producir varias estimaciones para un sistema de información y sobre todo para el
sistema de archivos del sistema. De hecho, tal vez sea el único responsable de
producir las estimaciones de los costos.

¿Qué tipo de cosas necesitan estimarse en un proyecto de desarrollo de


sistemas?. Esto varía de un proyecto a otro pero típicamente lo principal que se
requiere estimar es lo siguiente :

• Recursos humanos. ¿Cuántos programadores, ingenieros, diseñadores de


bases de datos, expertos en telecomunicaciones, representantes de los
usuarios y otros tipos de personas se necesitan para el proyecto?

• Tiempo. ¿Cuánto tardará el proyecto? ¿Cuánto tiempo se puede esperar


invertir en cada fase típica del proyecto (por ejemplo, la tasa de análisis, la de
diseño, la de programación, la de prueba, etc.)?

• Programación de personal. Además de saber cuantas personas requiere e!


proyecto, se necesita saber cuando se requerirán. Si el proyecto requiere diez
programadores. ¿Se necesitarán todos al mismo tiempo?

• Presupuesto. ¿Cuánto costará desarrollar el sistema?. El costo principal


será probablemente el de los sueldos del personal de desarrollo, y esto

Página : 145
EVALUACIÓN GENERAL DEL SISTEMA DE ARCHIVOS

usualmente se puede calcular directamente una vez que se conocen los


recursos humanos y la programación del personal.

Hay que tener en mente que generalmente habrá que hacer las estimaciones
más de una vez. Suele hacerse un conjunto de estimaciones en las primeras etapas
de un proyecto, pero pueden requerirse muchas veces, a medida que los usuarios y
la administración exploran las diferentes posibilidades de combinaciones. Un
ejemplo obvio de esto es el posible sacrificio de funcionalidad a cambio de tiempo y
viceversa (por ejemplo, el administrador del proyecto puede decir al usuario: "Estoy
prácticamente seguro de que podemos entregarle el sistema para el 1 de enero si no
metemos las funciones X, Y y Z"; otro ejemplo es el de la relación inversa entre
personas y tiempo (por ejemplo, el usuario puede decirle al administrador del
proyecto, "Si tuviera tres programadores más, podría terminar el proyecto a tiempo".
Podría tomar varias iteraciones que el equipo del proyecto, la administración y la
comunidad usuaria lleguen a un acuerdo aceptable.

Dependiendo de su puesto dentro del proyecto y de su influencia con la admi-


nistración y los usuarios, puede tener la posibilidad de prevenir que algunos de estos
problemas se vuelvan más serios. Pero incluso si es un ingeniero muy abajo en el
escalafón, debe estar consciente de los problemas de estimación, pues a fin de
cuentas pueden determinar el éxito o fracaso de un proyecto.

A menudo existe una buena cantidad de negociación al principio de un proyec-


to. Esto es normal, pues la comunidad usuaria entiende poco acerca de la cantidad
de trabajo que un sistema de información complejo involucra, y por ello pedirán "que
les bajen la luna", es decir, funcionalidad enorme en una cantidad absurdamente
pequeña de tiempo, y a cambio de muy poco dinero. Mientras tanto, el
administrador se enfrenta al problema de personal y presupuesto limitado; por tanto,
necesita trabajar con los usuarios para ayudarles a ver las posibles combinaciones.

Desafortunadamente es muy difícil hacer una estimación real del uso del
sistema de archivos y lo que se propone hacer es la aplicación de programas
sintéticos para emular el trabajo real de procesamiento de un sistema de cómputo.

Los programas de prueba permiten someterse a una mezcla de trabajos que


sean representativos de la carga proyectada de trabajo del usuario. También
demuestran las técnicas de almacenamiento de datos por part6e del equipo y dan la
oportunidad de probar funciones específicas realizadas por el sistema. Por medio
de ésta técnica, las limitaciones del equipo se hacen evidentes en el proceso de
adquisición.

Las pruebas más comunes para comprobar el sistema de archivos son la


velocidad del procesador central, con instrucciones típicas de lectura/ecritura en
archivos de datos organizados en cualquier tipo de organización. La misma
prueba se realizará en otras computadoras para mostrar la diferencia entre velocidad
y desempeño atribuible al procesador de la computadora.

Página : 146
EVALUACIÓN GENERAL DEL SISTEMA DE ARCHIVOS

IX.2 Análisis de los beneficios del sistema.

Es mucho más difícil calcular los beneficios de un nuevo sistema de


información que calcular su costo. En algunos casos puede ser imposible; debido tal
vez a que el sistema es obligatorio, o porque el usuario decidió que quiere el sistema
sin importar si se pueden identificar beneficios tangibles o no.

El intento de calcular beneficios tangibles es el que ocasiona tantos


problemas. Los usuarios probablemente hablarán entusiastamente acerca de
"mejor control" o "información más oportuna" o "mejores marcos para toma de
decisiones", pero si les pregunta cuanto dinero va a ahorrar o cuántas ganancias
reportará, es probable que contesten: "Pues... mucho ... sencillamente, sé que será
magnífico...". De hecho, probablemente lo será, pero términos como "magnífico'“ no
tienen mucha cabida en hojas de cálculo que muestran comparaciones numéricas de
costo/beneficio.

Por ello, su más grande labor al Ilevar a cabo un cálculo de costo-beneficio


será acorralar a los usuarios y hacer que identifiquen beneficios tangibles que
puedan medirse y calcularse de manera cuantitativa. Si no lo puede lograr hay que
tratar de lograr que comparen su nuevo sistema con algún otro con beneficios
conocidos. Así, puede decir al usuario: "Suponga que tuviera que elegir entre el
sistema nuevo del que estamos hablando y el sistema X. ¿Cuál consideraría más
importante? Si solo se pudiera implantar uno de ellos, ¿cuál escogería?" Suponiendo
que el sistema X tiene algunos beneficios tangibles asociados, esto debiera darle por
lo menos una manera burda de determinar el valor aproximado del nuevo sistema.

Un beneficio táctico es aquel que permite que la organización continúe


realizando la misma actividad de negocios, pero a menor costo (o mayor ganancia);
un beneficio estratégico es el que permite comenzar a realizar un tipo de negocio
totalmente nuevo, o a hacerlo en un área totalmente nueva o con clientes nuevos.

Beneficios tácticos

Los beneficios tácticos suelen asociarse con reducciones en el personal


administrativo o de oficina. Aunque esto no es música para los oídos de los
oficinistas, es una realidad. Un nuevo sistema de información puede permitir que se
realice la misma función con la mitad o menos del número de usuarios que se
ocupaban antes. Esto generalmente se debe a que los usuarios actualmente están
realizando cálculos o actividades de registro de datos a mano, cuando podrían
computarizarse; o se ven forzados a realizar las mismas actividades múltiples veces,
cuando puede hacerse una vez con una computadora; o les toma una gran cantidad
de tiempo recuperar los datos, siendo que puede hacerse rápidamente por
computadora.

Página : 147
EVALUACIÓN GENERAL DEL SISTEMA DE ARCHIVOS

En algunos casos, habrá menos ahorro de lo que puede haber estimado;


los reglamentos del sindicato y la bondad de algunos administradores intermedios de
la organización usuaria pueden evitar el despido de algunos de esos usuarios
oficinistas (cuyas indemnizaciones deben contemplarse como costo del nuevo
sistema). Además, es igualmente importante darse cuenta que los niveles
superiores de la administración se impresionan cada vez menos con el ahorro de uno
o dos oficinistas; buscan beneficios mayores y mejores con la introducción de un
nuevo sistema.

Un tipo de beneficio táctico mucho más interesante es el ahorro que resulta


de poder procesar transacciones de negocios más rápidamente. Poder manejar
mas transacciones por segundo no solo permite reducir costos de oficina, sino que
puede llevar a un mejor flujo de efectivo para la organización. Nuevamente el
secreto radica en cuantificar esto y expresarlo como una cantidad en dinero.

Un nuevo sistema también puede reportar ahorros en equipo de cómputo;


el sistema anterior puede estar funcionando en una computadora principal cara.
mientras que el nuevo funciona en una pequeña PC colocada en el escritorio del
usuario. Un cambio así no sólo ahorra costos de hardware, sino también representa
un ahorro en el área de costos de local, de operadores, etc. Y si el nuevo sistema
reduce la cantidad de papel y de formularios impresos también ahí debe reflejarse un
ahorro. Asegúrese de que sus cálculos en cuanto a esto están completos; tenga en
cuenta que pueden requerirse menos archiveros, menos espacio de oficina, menos
máquinas de escribir, y posiblemente menos Ilamadas telefónicas entre su
organización y los clientes, etc.

Los costos de mantenimiento del nuevo sistema también deben


proporcionar un beneficio. Los costos de mantenimiento de hardware deben
reducirse, y los costos de mantenimiento de software es de suponerse que serán
interiores a los del sistema actual.

Beneficios estratégicos del nuevo sistema

En cada vez más casos, los beneficios realmente interesantes e importantes


de un nuevo sistema son beneficios estratégicos. No solo se trata de la oportunidad
de ahorrarse unos cuantos oficinistas o unas cuantas hojas de papel, sino de la
posibilidad de permitirle a la organización hacer cosas que le serian imposibles con el
sistema actual. Existen varios ejemplos de beneficios estratégicos potenciales entre
las que tenemos :

• Identificar o atraer nuevos clientes que de otra manera no podría identificar la


organización.
• Entrar a nuevos mercados o proporcionar nuevos productos que previamente
no estaban disponibles

Página : 148
EVALUACIÓN GENERAL DEL SISTEMA DE ARCHIVOS

• Capturar, reproducir o distribuir conocimientos y experiencia a los que


previamente solo tenían acceso una o dos personas dentro de la
organización.

En una economía tan competitiva como parece ser la actual, un sistema de


información que puede atraer nuevos clientes o evitar la pérdida de los actuales por
la competencia es realmente muy valioso. En algunos casos, esto es posible
gracias a la funcionalidad que ofrece el nuevo sistema, que anteriormente no estaba
disponible en otros, puede resultar de la capacidad del sistema para identificar
clientes potenciales nuevos que anteriormente ignoraba la organización.

Una forma más difícil de beneficio estratégico es la capacidad del sistema


para proporcionar información que anteriormente no se tenia. El ejemplo típico es la
capacidad de identificar tendencias y patrones. Esto es posible en casi cualquier
sistema automatizado que reemplace a uno manual y usualmente cualquier sistema
en línea o de tiempo real presenta tales tendencias de una manera más oportuna
que la lograda con un sistema por lotes. De manera similar, un sistema con
capacidades gráficas puede proporcionar información de una manera más efectiva
que uno actual que produzca información en forma de tablas y salidas numéricas.

IX.3 Necesidades de almacenamiento.

Debido a que el fin es hacer la estimación del uso del sistema de archivos
en un sistema de información, se tiene que investigar los datos que se van a
almacenar en los archivos, por lo que se hace necesario hacer las preguntas
siguientes :

• Cuando se crea un archivo nuevo. ¿Se asigna de una sola vez el máximo
espacio que necesite?
• El espacio se asigna a un archivo en forma de una o más unidades contiguas
que se llaman secciones. Un tamaño de una sección puede variar desde un
único bloque a un archivo entero. ¿Que tamaño de sección debería usarse
para asignar archivos?
• ¿Qué tipos de estructura de datos o tabla se usaran para guardar constancia
de las secciones asignadas a un archivo?.

Respondiendo a las preguntas anteriores, se crea un diagrama de bloques


para conocer a ciencia cierta la cantidad de archivos que se van a utilizar en el
sistema de información. De cada archivo se analiza y se encuentran los datos
siguientes : Cantidad total de registros, tamaño del registro, medio de
almacenamiento y organización de cada archivo. Se hace un concentrado
semejante al de la Tabla No. 9.1.

Página : 149
EVALUACIÓN GENERAL DEL SISTEMA DE ARCHIVOS

Nombre Cantidad de Tamaño del Medio de Organización Tamaño en


Del Archivo Registros. Registro Almacenamiento del Archivo Bytes

Empleados 500 270 Disco Duro Multi - llave 135,000


Deptos 28 120 Disco Duro Directo 3,360
Incidencias 250 170 Disco Duro Secuencial 42,500
Extra 400 220 Disco Duro Indexado 88,000
Issste 500 245 Disco Duro Secuencial 122,500
Hacienda 500 224 Disco Duro Secuencial 112,000
Sindicato 500 212 Disco Duro Indexado 106,000
Base 500 165 Disco Duro Directo 82,500

TOTAL EN BYTES -----------------> 691,860

Tabla No. 9.1 Concentrado para conocer la cantidad de espacio de almacenamiento secundario
requerido.

Cabe hacer mención que los nombres de los archivos y los datos que se
manejan en la Tabla No. 9.1, son ficticios y únicamente se utilizan para
ejemplificar y obtener las necesidades de almacenamiento de un sistema de
información.

Una vez que se conoce la cantidad de bytes que ocuparán los archivos de
datos, se hace un cálculo del 10 % adicional para los índices de los archivos
Indexados y multillave, obteniéndose los datos que se muestran en la tabla No. 9.2.

Nombre Cantidad de Tamaño del Medio de Organización Tamaño en


Del Archivo Registros. Registro Almacenamiento del Archivo Bytes

Empleados 500 270 Disco Duro Indexado 135,000


Extra 400 220 Disco Duro Indexado 88,000
Sindicato 500 212 Disco Duro Indexado 106,000

Total en bytes p/área de datos ---> 329,000

Total en bytes para Índices ---------> 32,900

Tabla No. 9.2 Cantidad en Bytes para los índices.

Una vez que se obtienen los datos, se hace una estimación de un 50 % para
contener los programas de la aplicación, se consideran 900 megabytes para el
Sistema Operativo y dos megabytes para un software antivirus que será
actualizado mensualmente o antes si es necesario, obteniéndose el total que se
muestra en la Tabla No. 9.3.

Página : 150
EVALUACIÓN GENERAL DEL SISTEMA DE ARCHIVOS

Total de bytes para el área de datos 691,860


Total de bytes para el área de índices 32,900
Total de bytes para los programas de la aplicación 362,380
Total de bytes para el Sistema Operativo 900,000
Total de bytes para un antivirus 2,000

Gran total en bytes ------------------------> 1,989,140

Tabla No. 9.3 Estimación General para el Sistema de Archivos.

Se debe considerar en forma global un incremento del 12 % mensual, por


concepto de actualización de los datos y crecimiento en forma general del sistema
de archivos. Dicho incremento se plasma en la tabla No. 9.4.

Mes Inicial Incremento Total

Enero 1,989,140 238,697 2,227,837


Febrero 2,227,837 267,340 2,495,177
Marzo 2,495,177 299,421 2,794,598
Abril 2,794,598 335,352 3,129,950
Mayo 3,129,950 375,594 3,505,544
Junio 3,505,544 420,665 3,926,210
Julio 3,926,210 471,145 4,397,355
Agosto 4,397,355 527,683 4,925,037
Septiembre 4,925,037 591,004 5,516,042
Octubre 5,516,042 661,925 6,177,967
Noviembre 6,177,967 741,356 6,919,323
Diciembre 6,919,323 830,319 7,749,642

Tabla No. 9.4 Incremento global mensual.

De los datos plasmados en las Tablas No. 9.1 al 9.4 se deduce que el disco
duro como medio de almacenamiento requerido para éste pequeño caso de estudio,
debe considerarse de al menos 3 Gigabytes al iniciar operaciones y al año debe
tener una capacidad para almacenar 8 gigabytes y de esa forma se hace el cálculo
para los años posteriores.

Una buena práctica es adquirir un disco duro con una capacidad suficiente
para que funcione correctamente en al menos 3 años y posteriormente se verá la
posibilidad de crecimiento o escalamiento de la computadora según sea el caso.

Cabe hacer mención que debe considerarse la adquisición de algún medio de


almacenamiento secundario para hacer respaldos mensualmente, pero dichos
respaldos deben quedar fuera de la computadora por si sufre daños el disco duro o la

Página : 151
EVALUACIÓN GENERAL DEL SISTEMA DE ARCHIVOS

propia computadora. Se sugiere pensar en la compra de cintas o cartuchos para


hacer el proceso de respaldo.

Los respaldos deben contener únicamente lo siguiente : Todos los archivos


de datos del sistema, los archivos de índices y los programas de la aplicación.
Todos ellos porque son actualizados dinámicamente en tiempo real.

En esta estimación se consideró exclusivamente el medio de almacenamiento


(disco duro) de la computadora, sin considerarse la configuración propia de la
computadora, debido a que dicha evaluación es realizada en otra etapa del análisis y
diseño de sistemas de información.

IX.4 Comparación entre costo y beneficio.

Este tema se dedica a las técnicas de cálculos de costo/beneficio que es


parte importante de toda evaluación de un sistema de archivos. El propósito desde
luego, es mostrar a los usuarios del nuevo sistema, al igual que a otros grupos de
administradores de la organización, que los beneficios que se esperan obtener con
el nuevo sistema superan a los costos esperados.

Como ingeniero en sistemas computacionales, se le podría dar la tarea de


desarrollar un modelo de costo/beneficio para el sistema de archivos de una
aplicación. Incluso como ingeniero en jefe a cargo de todo el proyecto, podría ser
que no esté involucrado en los cálculos de costo/beneficio porque podrían estar a
cargo, por ejemplo, de un grupo de finanzas separado.

A continuación se examinan los aspectos de los cálculos de costo/beneficio:

ANÁLISIS DE COSTOS

El propósito de esta actividad, es calcular todos los costos anticipados


asociados con el sistema de archivos; no solo el costo de construirlo, sino también el
costo de instalarlo, de operario y de mantenerlo, además de los costos extras.

El costo de construir el sistema

En la mayoría de los casos, de la administración puede obtener el salario


promedio de las distintas categorías de personas incluidas en su proyecto; esto se
puede expresar en términos de costos por hora, por mes, o anuales.

Página : 152
EVALUACIÓN GENERAL DEL SISTEMA DE ARCHIVOS

En muchos proyectos deberá incluir también el costo de preparar al


personal de desarrollo. Puede ser que los miembros del equipo necesiten
prepararse en el área de las nuevas metodologías de desarrollo, los nuevos
lenguajes de programación o las diversas habilidades sobre el software y hardware
asociados con el equipo comercial que se esté usando.

Otro costo que hay que tener en cuenta es el de tiempo de computadora,


terminales o estaciones de trabajo y herramientas de desarrollo (editores, paquetes
de prueba, etc.) que se ocupan para el desarrollo del sistema. En algunos casos,
las terminales y las herramientas pueden existir ya y por tanto el proyecto no incurrirá
en gastos adicionales; en casi todos los casos, sin embargo, el proyecto tendrá que
incluir los costos del tiempo de computadora.

El costo de instalar el sistema

En un proyecto sencillo, pudiera ser suficiente Ilamar por teléfono al


usuario y decirle que se terminó de desarrollar el sistema; puede entregarse en un
disco flexible y dejar que él mismo lo instale en su computadora personal. Pero en un
proyecto grande y complejo, el proceso de instalación es más difícil e incluye
muchos gastos. Entre ellos tenemos los siguientes:

• Gastos de capacitación de usuarios


• Gastos de conversión de sistemas de archivos
• Gastos de ejecuciones paralelas
• Gastos del equipo de desarrollo durante la instalación

Típicamente, toda la comunidad usuaria necesitará de cierta capacitación para


familiarizarse con el uso del sistema.

Costos operacionales

Una vez instalado el sistema, al usuario le costará dinero continuar


operándolo. Sin embargo, esto también debe representar un área en la que el
nuevo sistema ahorrará dinero, dado que es de suponerse que será más económico
que el que actualmente tiene él. Algunos ejemplos típicos de costos operacionales
son:

• Costos de hardware y materiales y equipo relacionados


• Costo de software
• Costos de personas
• Costos de mantenimiento

Un costo final que debe estimarse cuando se calcula el costo operacional


del nuevo sistema es el de la planta física. Si el nuevo sistema va a operar en una

Página : 153
EVALUACIÓN GENERAL DEL SISTEMA DE ARCHIVOS

computadora principal centralizada que ya está instalada estos costos pueden estar
incluidos en el costo global del hardware. Sin embargo, si se está desarrollando un
sistema completamente nuevo que tendrá su propio local de operaciones, éste
podría ser un gasto importante.

Si se incurriera de manera instantánea en todos los costos del sistema, y


todos los beneficios se observaran de manera instantánea, sería relativamente
sencillo representar el valor del sistema como la diferencia entre costos y
beneficios. Pero, como los gastos usualmente se hacen en el transcurso de
algunos años y si el gasto se llegara a hacer en un momento (por ejemplo, una
compra de hardware), las políticas de contabilidad de la organización pudiera
dictaminar que se reparta a lo largo de un periodo de varios años.

Así, probablemente tendrá que demostrar los costos y beneficios que del
sistema a lo largo de cierto periodo de tiempo. Existen cuatro métodos comunes
para hacer comparar los costos contra los beneficios. Dichos métodos se enumeran
a continuación :

• Flujo de efectivo.
• Rendimientos de inversiones (en ingles, ROI).
• Tasa interna de rendimiento (IRR).
• Valor neto actual (VNA).
.
Aplicando los cuatro métodos comunes, se podrá hacer la comparación de los
costos con los beneficios y en ese momento se podrá evaluar si el sistema de
archivos vino a resolver un problema a bajo costo o si su utilización salió mas cara
que como venía operando.

Página : 154
BIBLIOGRAFIA

[t1] Análisis y Diseño Orientado a Objetos.


James Martín y James J. Odell.
Prentice Hall.

[t2] Base de Datos. Serie Informática de Gestión.


Miguel A. Rodríguez Almeida.
Mc. Graw Hill.

[t3] C++ a su alcance. Un enfoque Orientado a Objetos.


Luis Joyanes Aguilar.
Mc. Graw Hill.

[t4] Computación y Programación Moderna. Perspectiva integral de la Informática.


Guillermo Levine Gutierrez.
Addison-Wesley.

[t5] Estructura de datos y Organización de Archivos.


Mary E. S. Loomis.
Prentice Hall.

[t6] Estructura de Datos. Algoritmos, abstracción y objetos.


Luis Joyanes Aguilar e Ignacio Zahonero Martínez.
Mc. Graw Hill.

[t7] Estructura de la Información.


Juan F. García de Sola.
Mc. Graw Hill.

[t8] Estructuras de Archivos. Un conjunto de herramientas conceptuales.


Michael J. Folk y Bill Zoellick
Addison – Wesley Iberoamericana.

[t9] Estructuras de Datos. Especificación, diseño e implementación.


Xavier Franch Gutiérrez.
Alfaomega.

[t10] Estructuras de Datos. Referencia práctica con Orientación a Objetos.


Román Martínez y Elda Quiroga.
Instituto Tecnológico y de estudios Superiores de Monterrey.
Thomson Learning.

Página : 155
[t11] Fundamentos de Programación.
Luis Joyanes Aguilar, Luis Rodríguez Bahena y Matilde Fernández Azuela.
Mc. Graw Hill.

[t12] Introducción a la Programación con ejemplos en Visual Basic, C, C++ y Java.


Ramón A. Mata-Toledo y Pauline K. Cushman.
Mc. Graw Hill.

[t13] Introducción a los Sistemas de Bases de Datos.


Jeffrey D. Ullman y Jennifer Widom.
Prentice Hall.

[t14] Lenguaje C y Estructura de Datos. Aplicaciones generales y de gestión.


Juan F. García de Sola y Vicente Garcerán Hernández.
Mc. Graw Hill.

[t15] Modelado y Diseño Orientado a Objetos. Metodología OMT.


James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy
y William Loresen.
Prentice Hall.

PAGINAS DE INTERNET CONSULTADAS.

[i-1] http://www.lafacu.com/apuntes/informatica/organizacion_de_computadoras/default.htm

[i-2] http://www.itlp.edu.mx/publica/tutoriales/admonarch/index.htm

[i-3] http://www.info-ab.uclm.es/labelec/solar/Discos/33cdrom.htm

[i-4] http://www.domotica.net/ir'www.monografias.com/trabajos/perifericos/perifericos.shtml

[i-5] http://www.inf.udec.cl/~sistcomp/c5.html

[i-6] http://www.lafacu.com/apuntes/informatica/Los_archivos_II/default.htm

[i-7] http://www.uap.edu.pe/Fac/02/trabajos/02119/archivos.htm

[i-8] http://www.intel.com

Página : 156
GLOSARIO DE TERMINOS.

Acceso Directo.- Es la facilidad para accesar cualquier registro, de un conjunto sin


necesidad de accesar los registros precedentes físicamente.

Administrador de archivos.- Es la parte del sistema operativo responsable de la


administración 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 información entre los almacenamientos
primario y secundario.

Almacenamiento temporal o buffer.- Es un área de almacenamiento reservada


para la ejecución de operaciones de entrada/salida, en el cual los datos
son leídos y de la cual los datos son escritos.

Archivo multilista celular.- Es un archivo multilista en el cual ninguna lista ligada


sobrepasa el límite entre las áreas de celdas físicas.

Archivo multilista de longitud controlada.- es un archivo multilista donde ninguna


lista ligada excede una longitud especificada.

Bloque.- Es una colección de registros contiguos registrados como una sola unidad;
algunas veces es llamado registro físico.

Búsqueda.- Es el proceso de tratar de encontrar el o los registros que satisfacen un


criterio dado.

Cilindro.- Conjunto de pistas en un disco que se encuentran directamente una sobre


la otra. Se puede accesar a todas las pistas de un cilindro sin tener que
mover el brazo de acceso, lo que significa que se puede tener acceso a
ellas sin gasto de tiempo de desplazamiento.

Coercitividad.- es una propiedad física que se define como la resistencia de los


materiales magnetizados. Un material con alto nivel de coercitividad,
necesitará un campo magnético más intenso para alterar la orientación de
sus partículas.

Colisión.- Situación que ocurre cuando dos valores de llaves diferentes se mapean a
la misma dirección física.

Controlador.- Dispositivo que controla directamente la operación de uno o más


dispositivos de almacenamiento secundario, como unidades de disco,
unidades de cd-rom, etc.

Página : 157
Direccionamiento por Cilindro.- Es una técnica para el direccionamiento de los
registros de datos sobre un disco duro, donde una dirección de registro es
su número de cilindro, numero de superficie y número de registro.

Estructura de datos.- Es una clase de datos que se caracteríza por su organización


lógica y operaciones que se definen sobre ella. También es conocida
como tipo de datos.

Indice de inversión.- Es un índice que contiene todos los valores que la llave
primaria o secundaria tiene en el archivo de datos y apuntadores a todos
los registros de datos que tienen los valores correspondientes.

Llave.- Es el campo que identifica a un registro de datos.

Mb.- Megabyte (millones de bytes que realmente equivale a : 1024,000,000 bytes).

Ms.- milisegundos.

Ordenamiento.- Es el proceso para ordenar una colección de llaves en un orden


específico.

Pista.- Es un área sobre la superficie de un disco duro, puede ser leída sin el
reposicionamiento de la cabeza de lectura/escritura.

R.p.m.- Significa revoluciones por minuto que gira un disco duro.

Sector.- Es la parte de una pista sobre el disco duro que puede ser accesada por las
cabezas de lectura/escritura durante el desplazamiento rotacional
predeterminado del dispositivo.

Página : 158

View publication stats

Anda mungkin juga menyukai