ESTRUCTURA DE ARCHIVO

Objetivos
Conocer y comprender conceptos con los archivos computacionales.

Unidades
I Conceptos Generales - Dato - Información - Archivo Físico - Archivo Lógico - Operaciones sobre archivos Driver de un Disco - Tablas - Operaciones de E/S de alto nivel Organización de Archivos - Organización Secuencial - Organización Indexada Métodos de Acceso - Modo de Acceso Secuencial Indexado - Betree - Algoritmos de Inserción y Eliminación - Construcciones de índices Betree a partir de un archivo - Tablas de Hashing - Algoritmo de Hashing

II

III

IV

Bibliografía
File System: Diseño e implementación. File System: Estructuras y Algoritmos Estructuras de datos y algoritmos de archivos

Unidad I. Conceptos Generales
Informática: Es la ciencia que estudia el tratamiento ordenado y racional de la información; como ciencia, la informática desarrolla técnicas para el procesamiento de datos. Comprende aspectos teóricos y prácticos (computación). Computación: Es la parte de la informática que estudia los aspectos técnicos y prácticos, los cuales incluyen el conocimiento de la estructura de un computador y la base de su funcionamiento. Lenguaje de Máquina: es el lenguaje de nivel más bajo que entiende un computador. Son códigos binarios, es decir, utilizan sucesos de 0 y 1. Lenguaje Assembler: Es un lenguaje similar en estructura al lenguaje de máquina pero compuesto además por símbolos matemáticos que tienden a simplificar lo complicado. Compilador: es un programa que traduce a algún lenguaje de máquina.

Conceptos sobre archivos
Registro Lógico: Unidad homogénea de información formada por ítems o campos de datos elementales o compuestos, referenciados as un determinado dato, individuo o concepto. Por tanto, un archivo esta compuesto poe un conjunto de registros lógicos del mismo tipo. Supongamos un archivo que contenga datos personales de los individuos que trabajan en una empresa. Los registros lógicos de este archivo podrían contener entre otros los siguientes datos: REG_PER { código empleado RUN Nombre Apellidos Dirección Teléfono Profesión categoría Sueldo }

De entre todos los campos que contiene un registro, al menos uno de ellos nos sirve para identificarlo de entre los demás; dicho campo se denomina campo clave o identificador de registro. Como los archivos de datos están almacenados en soporte de almacenamiento externos, será necesario transferir la información del soporte a la memoria Ram para poder operar con ella; análogamente, después del tratamiento del archivo para poder conservar la información, habrá que realizar el proceso inverso desde la Ram al soporte. Si dicha transferencia se hiciera de registro a registro, el tiempo invertido en la operación seria considerable. Por tanto, cuando los PC leen o escriben una determinada información en un archivo, intercambian con la Ram varios registros lógicos uno a continuación del otro, formando un bloque. A dicho bloque se le denomina Registro Físico. Registro físico: es la cantidad mínima de información que se transfiere entre un medio de almacenamiento y la Ram, en una sola operación de entrada o salida. El número de Registros lógicos que contiene un bloque se llama Factor de Bloqueo. Tipos de archivo según su función y tiempo de vida Archivos Permanentes. Son archivos de larga vida, que se usan para más de una transacción o proceso. Generalmente, existen durante un periodo más o menos largo de tiempo. Se pueden subdividir en: • A. Maestro o de constantes. Los datos contenidos en este tipo de archivos tiene muy pocas inclusiones de registros nuevos. • A. de Situación. Contienen Registros con campos que están variando frecuentemente. • A. Histórico. Está constituido por Registros que contienen las distintas modificaciones de los datos en el tiempo, tanto de los archivos Maestros como de los de Situación, reflejando su ubicación en el tiempo. Por ejemplo, los archivos que guardan un Registro con los movimientos o transacciones de los clientes de un banco. Archivos de Movimiento. Estos archivos contienen Registros que actualizan otros archivos. Después de la actualización llamada comúnmente COMMIT o UpDate, se almacenan en un Histórico o se destruyen. Por ejemplo, un archivo temporal con las altas, bajas y modificaciones de los artículos de un almacén.

Archivo de maniobra o de trabajo. Son archivos con una vida limitada, generalmente corta, se crean en los procesos habitualmente contienen resultados intermedios de un programa que sirve como datos de entrada de otro archivo. Estos archivos no se suelen conservar. Se usa por ejemplo en: • archivo intermedio usado en la ordenación de un archivo maestro. • Archivo intermedio usado en la eliminación de un registro de un archivo maestro de texto. Operaciones frecuentes que se realizan sobre archivos Creación Consulta Actualización Listado reorganización

Creación de un archivo. Consiste en grabar los registros en un medio de almacenamiento, según una determinada organización. Las formas de grabarlo pueden ser: - A través del teclado - Desde otro Archivo. Se lee determinados Registros de un archivo original; los que cumplan una determinada condición, se graban en el archivo que deseamos crear. - Fusión de varios archivos. Consiste en unir 2 o más archivos, clasificados con el mismo criterio, de forma que el archivo resultante, mantenga el mismo orden (con campo clave). Consulta. Permite buscar y leer registros concretos dentro de un archivo, identificándolos mediante su campo clave o identificativo. Actualización. Es la operación que permite la puesta al día de los registros del archivo (Mantención). Listado. Volcado del contenido de un archivo ya sea por impresora o por pantalla. Reorganización. El uso frecuente de un archivo hace que con el tiempo la información contenida en el mismo se deteriore. Ello hace necesario que periódicamente los Registros deban ser reorganizados de forma que se eliminen físicamente los registros dados de baja, y así se puedan utilizar los posibles espacios libres intermedios existentes entre los distintos tipos de archivos. Esta operación implica en una MEJORA en la rapidez de acceso.

Concepto básico sobre archivo Un archivo informático esta compuesto por lo que se denominan Registros. Un Registro es la unidad menor de información que puede ser escrita en un archivo de una sola vez. Se pueden escribir muchos registros o parte de uno pero siempre que se haga, se hará de Registro en Registro. Si se escriben varios, se hará uno a uno y para escribir una parte del registro, hay que escribirlo completo. No obstante, un Registro se compone de campos, que son datos elementales del Registro que se relacionan entre si para obtener información referente a un objeto, concepto o personas. Cada registro de un archivo esta separado se los demás por una marga denominada Flag. Terminología usada • nodo de datos es un Registro, que esta compuesto de campos. • Nodo de memoria es el bloque que también se llama Registro físico. En un bloque se pueden almacenar más de un Registro. • Un archivo puede estar estructurado por Registro y almacenado en algún medio físico de almacenamiento. Representación de Campos o ITEMS de un Registro Una manera resumida de representar valores de campo pueden ser las siguientes alternativas, las que están ejemplificadas por los siguientes datos: {<N° Empleado,”035”>, <nombre,”l. González”>, <Sexo,”M”>, <Edad,”26”>, <Sueldo,”14000”>} Representación Posicional Es esta representación sólo se almacena el valor de cada campo; el atributo queda implícito por las posiciones estáticas que ocupan los valores en el registro. Para usarla es necesario conocer el largo máximo que ocupa cada campo. Cuando este largo es difícil de conocer, esto implicará dejar muchos bytes sin uso del campo o el truncamiento de valores cuando la longitud reservada en Ram para el tipo de dato del campo sea insuficiente. N° Nombre Sexo Edad Sueldo | | | | | 0 3 5 L . G O N Z A L E Z M 2 6 1 4 0 0 0

Representación Relacional Los valores pueden ser de cualquier largo y se distinguen uno de otros a través de un separador de campo, por ejemplo, el “/”. Debe observarse que en esta representación, si bien los atributos están implícitos por posicionamiento, si lo están en su ordenamiento relativo. 0 3 5 / L . G O N Z A L E Z / M / 2 6 / 1 4 0 0 0 / Representación Indexada En esta representación se usan Índices para señalar el final de cada campo (podría ser al principio); los índices se almacenan todos al comienzo del registro y apuntan al número del último carácter de cada valor. Alternativamente, puede ser simplemente los largos de cada uno de los campos. Nuevamente, en esta representación los atributos están implícitos en el ordenamiento de los valores. Se debe observar que para leer un campo, podría ser necesario avanzar o retroceder en el registro la cantidad de bytes reservados en memoria por cada campo predecesor o sucesor del deseado a leer. * * * * * 0 3 5 L . G O N Z A L E Z M 2 6 1 4 0 0 0

Representación con Rótulos Los atributos se especifican explícitamente. De esta manera, el carácter “#” representa el atributo “número empleado” y “N” representa “Nombre”. Los rótulos pueden tener largos mayores que un carácter. Debe observarse también que los rótulos también sirven como delimitadores de campo. Los diversos campos pueden aparecer en un registro en cualquier orden y también no estar presentes, esta representación es útil cuando hay muchos campos que pueden o no estar presentes en cada registro, porque en esta situación, permite un ahorro de espacio en almacenamiento (y en la memoria); por otro lado, la obtención de información usando este método de representación es la menos simple de programar, ya que requiere un análisis de cada uno de los caracteres del registro a fin de poder reconocer los valores de cada campo. Rótulos: #, N, S, E, $. # 0 3 5 N L . G O N Z A L E Z S M E 2 6 $ 1 4 0 0 0

Buffer Es un área de almacenamiento temporal, por lo general en la Ram. El objetivo de la mayor parte del buffer es de actuar como un área propia. Necesita el permiso de la CPU antes de la transferencia de datos a un dispositivo. Como la lectura y escritura de datos a un disco son relativamente lento, muchos programas almacenan la información de los cambios de datos dentro de un buffer y luego lo carga en un disco. Por ejemplo, los procesadores de texto emplean un buffer para almacenar los cambios de un archivo. Entonces, cuando se guarda el archivo, el procesador de textos lo actualiza respecto a los cambios efectuados con el contenido del buffer. Esto es mucho más seguro que tener acceso sobre el archivo que hay guardado en el disco originario. Así podemos evitar posibles daños irreparables, por eso cuando hay un corte de energía eléctrica, toda la información que tengamos dentro del buffer se pierde; por eso cuando se crea un documento es aconsejable guardar la información cada cierto tiempo. El buffer también es usado en la impresión de documentos. Características de los archivos • • • existen muchas posibilidades de disposición de los Registros de un archivo y algunos de ellos con varias alternativas de métodos de búsqueda incorporados (secuencial, al azar). Cada una de estas organizaciones de archivo alternativas, pueden ser las más adecuadas para una aplicación específica, porque no existe una organización que sea óptima para todos los casos. Las siguientes características de los archivos pueden servir para una comparación y selección adecuada a la aplicación particular, aunque en la práctica, el conjunto de alternativas puede ser muy limitado.

a) Importancia del Archivo Los Archivos Permanentes o Maestros • • Los Registros de estos archivos son almacenados uno a la vez, consultados (leídos) muchas veces y clasificados. Los archivos que contienen clasificaciones a un archivo maestro se denominan área de transacciones. Normalmente están estructurados de manera muy simple, porque su vida es muy corta: sus Registros están destinados a ser leídos una vez y ser borrados enseguida.

Los archivos de respaldo son copias de archivos maestros que se necesitan por razones de seguridad de los datos. En efecto, si se destruye por error el archivo maestro original, existen copias para reproducirlo. En algunos casos, muchas clasificaciones al archivo maestro se guardan también por cierto tiempo. En le momento de comenzar los procesamientos, se toman dos copias A y B (suponiendo); al finalizar la primera semana, se reemplaza el respaldo A por el contenido del maestro; desde ese momento, al terminar la segunda semana, se reemplaza el contenido del respaldo B por el de A y, en seguida, el contenido del archivo maestro es copiado al respaldo A, y así se continua de esta manera. Observar que es necesario guardar las transacciones de hasta dos semanas atrás; también que con este esquema, si se enfrenta un error cometido en el maestro durante la semana actual del proceso, se puede recurrir al archivo de respaldo A para repararlo; y si este error se cometió en la semana previa, se usa el respaldo B con el mismo objetivo.

b) Frecuencia de Acceso Esta característica se refiere al N° de procesos que usan el archivo por unidad de tiempo y también el N° de registros que cada uno de estos procesos accede. Estas cifras tienen importancia en el diseño de la organización del archivo porque en un extremo no vale la pena gastar esfuerzo de diseño y programación en una organización de archivo que es acezada muy poco: la organización más simple será suficiente; pero por otro lado, un archivo que se accederá muy frecuentemente justifica un estudio detenido de la organización que se le debe dar. c) Distribución del Acceso El acceso a los Registros puede ser solamente a los primeros registros, o bien a los últimos o en forma homogénea a todos los Registros. Esta característica en muchos casos se conoce en el momento de diseñar la organización, y es muy importante cuando se busca optimizar el tiempo total. Existen dos formas básicas de procesar un archivo: i) Modo Secuencial o Serial. Consiste en procesar un Registro tras otro en la secuencia en la que están almacenados, el acceso puede hacerse del primero al último o viceversa. El acceso también puede ser a la totalidad de los registros o sólo a unos pocos. ii) Modo NO Secuencial. El acceso es a un Registro cualquiera, después de otro cualquiera, etc. Generalmente, en este modo de procesamiento no se accedan todos los Registros del archivo.

El termino al azar no significa que los registros se acceden a valores de identificador iguales a N° aleatorios, sino solamente a un Registro cualquiera. d) Tamaño del Archivo La organización de un archivo muy pequeño (50 Registros por ejemplo) es sin importancia ya que el acceso más lento a ese archivo demorará una cantidad pequeña de tiempo; por el contrario, si el archivo es voluminoso, pequeñas variaciones en la estructura de almacenamiento o en la búsqueda, pueden significar grandes ahorros de tiempo de ejecución, en el acceso a un determinado Registro. De esta manera, el tamaño del archivo es otra de las características a considerar en el diseño de una organización (la estructura del archivo). e) Volatilidad Del Archivo Es la frecuencia de modificaciones a las que están sujetas sus Registros, y más particularmente a la frecuencia de adiciones y eliminaciones. Estas modificaciones pueden ser realizadas más eficientemente en algunas arquitecturas que en otras. f) Apoyo del Software La utilización de una organización de archivo implica el uso de programas que realizan una gran cantidad de labores como: Asignación de un Registro a ser insertado en una posición específica del medio de almacenamiento, Eliminación física de un Registro del archivo, Búsqueda de un Registro dado su identificador, Medidas de seguridad sobre los datos almacenados como el uso de programas autorizados para acceder a los datos, Obtención de respaldos, Generación de archivos maestros, a partir de Respaldos y transacciones, internas con las instrucciones del lenguaje de programación con el usuario. Organización Secuencial Es la organización de archivos más simple y usada. Consiste en una lista con continuidad almacenada en un dispositivo de almacenamiento, que generalmente son de acceso directo. La actualización tiene características que podemos considerar como las siguientes: • Para archivos secuenciales en disco, el reemplazo de campos de igual lago puede realizarse sin dificultades, las adiciones y eliminaciones de Registros intermedios, implica una reescritura del archivo.

• •

Cuando la volatilidad es baja, no importa mayormente el desempeño de la organización de archivo respecto a la actualización. Para procesamientos al azar la organización secuencial no es muy conveniente si la búsqueda es lineal, cuando el archivo esta guardado en disco, es posible realizar el método de búsqueda binaria, que es mucho más rápida pero requiere tener los registros ordenados y saber la cantidad de Registros a la hora de realizar la búsqueda. El Software de Apoyo es la mejor de todas las Organizaciones. Todos los modelos de computación con dispositivos de almacenamiento externo, tienen software para la Organización secuencial.

En la Aplicación se usan lenguajes algorítmicos, con códigos especialmente dedicados al manejo de archivos: i) Su Declaración. Un archivo será declarado con algún nombre con el atributo file, que aceptará otros atributos como secuencial, indexado, etc., que especificarán su tipo. ii) Entradas y Salidas. Para realizar operaciones de E/S es necesario preparar los archivos previamente para ser accedidos, realizando una operación de open sobre el archivo indicando el modo de acceso deseado. Ya realizadas todas las operaciones de E/S, se cerrarán los archivos con una instrucción close o reset, dependiendo del lenguaje. iii) Lectura. La lectura tiene la forma Read, Input, Get, etc., seguido del nombre del archivo o puntero a él y el nombre de una variable de datos, que será el área indicada por el programador para almacenar los datos leídos del archivo para su manipulación. iv) Escritura. Se hará con Write, Output u otra forma de redireccionar la información que está en el área de memoria reservada por la variable de memoria al archivo, por ejemplo, write nombre_archivo from nombre_datos. v) Fin de Archivo. Las especificaciones de fin de archivo se obtendrán por medio de la instrucción EOF, BOF, LOF u otra función con parámetro especificativo del tipo de archivo a tratar, según el lenguaje y/o el tipo de archivo (un archivo binario es distinto a uno binario). Organización Secuencial con Índices Esta Organización de archivos mantiene las características de la Organización secuencial con respecto al procesamiento secuencial de registros pero tiene mejoras significativas con respecto al procesamiento al azar y a la actualización. Estas ventajas se obtienen pagando con mayor espacio de almacenamiento y cierta mayor dificultad relativa.

Consideremos la estructura de archivo que debe residir en un dispositivo de almacenamiento (acceso) directo y está compuesto de las siguientes áreas de almacenamiento: Área Principal. Donde se almacenan los registros de datos. Área de Rebalse u Overflow. Se almacenan nuevos registros agregados. Área de Índices. Es la memoria usada por el mecanismo de búsqueda. Los registros almacenados en el área principal están ordenados por identificador (en ascendencia) y pueden ser accedidos de la misma manera que los registros en una organización secuencial. Para el acceso al azar se usa el mecanismo de búsqueda de índices. Un índice es una lista de pares <identificador, puntero>, en este caso se aplica como sigue. Identificador. Es el valor del identificador para el último registro de un grupo de ellos. Puntero. Es el nexo al 1° de los registro de este grupo. Por ejemplo.

La búsqueda con un índice es más rápida que la búsqueda de registros de manera secuencial, por ejemplo, la búsqueda de un registro con identificador 063, significa hacer 3 comparaciones de una búsqueda lineal sobre el índice (comparación de 063 con el 023, 031 y 069). Si se busca un registro que no está almacenado, se detecta a través de la

ordenación de los registros (al ir comparando valores del Id, pasa de un Id menor al buscado a uno mayor) Ejercicio. Describir proceso para buscar “035”. Comparo los índices del archivo de punteros con el valor “035”, es decir, con “023”, “031” y “063”; como “063” es mayor que “035” paso a comparar con el primer índice del archivo de registros perteneciente al grupo de “063”, el cual es accedido por el puntero de “063” en el archivo de puteros y que apunta a la pista 6; en la pista 6 se encuentra el Id 032, y como es menor que “035”, paso a la siguiente pista 7 y comparo “035” con Id 063, y como “035” < “063” entonces el registro con el Id 035 no existe. En conclusión, si el Id X buscado es mayor que todos los <Id, Puntero> del archivo de Punteros, entonces no existe y se ahorra el proceso de búsqueda en al archivo de <Id, Registro>. Si es menor o igual que uno de los <Id, Puntero>, entonces se usa el proceso de búsqueda para <Id, Registro> en el archivo de registros comparando el Id correspondiente a la pista indicada por el Puntero con el Id X; si ¿Id X = Id?  ¡¡¡registro encontrado!!! fin de la búsqueda; sino, si ¿Id X > Id?  ¡¡¡registro No EXISTE!!! fin de la búsqueda; sino, quiere decir que Id X < Id, por tanto, se compara el siguiente Id de la pista siguiente de la misma forma.

La idea básica de un índice puede extenderse para tener varios niveles de índice en archivos jerarquizados, e decir, los punteros de un índice apuntan al comienzo de otro archivo de índices, el que a su vez, puede apuntar a un tercer de índices, etc., hasta que los punteros direccional registros de datos propiamente tales. En un archivo secuencial con índices almacenados en disco, el nivel más bajo de índice es el índice de pista, cuyos punteros direccional cada uno de ellos, al grupo de registros que están almacenados en una pista.

Área Principal

Este Esquema se asemeja a La estructura De un árbol.

Ahora se examinará el problema de mantención de esta organización. LA ELIMINACIÓN DE REGISTROS. Se lleva a cabo normalmente marcando esos registros en un bit determinado, por el cual serán ignorados posteriormente, pero físicamente su espacio no es reasignado. El reemplazo de campos no tiene características especiales. LA ADICIÓN DE REGISTROS. Es más bien compleja ya que la idea no es tener que recurrir a una reescritura completa del archivo, como es el caso de la organización secuencial, se usa el área de rebalse para la inserción de registros intermedios. En ésta área se construye una lista de registros que en secuencia lógica, va ubicada entre 2 pistas del área primaria. El comienzo de esta lista se conoce también a partir del índice de pista: Cada par <Id, Punt al área primaria>, de este índice tiene además asociado un par < Id, Punt al área de rebalse>, que apunta al comienzo de la lista de registros de Overflow que están lógicamente antes al próximo par < Id, Punt al área primaria >. La figura siguiente ilustra la situación.

Obsérvese que en el índice quedan ordenados en secuencia tanto los registros del área principal como los de Overflow; también, nótese que en el valor de identificador para el par de Overflow cuando no hay R, es el mismo que el par primario correspondiente.

Ejercicio. Si se introduce un registro con identificador 0096, qué ocurre con el Overflow.  Se almacena directo en el Overflow en la pista 11 entre 0094 y 0105. Observar que la pista 7 se ocupa cuando empieza el archivo de base de datos (Cuando se actualiza el área principal en la reorganización del archivo), donde además, se eliminan físicamente los registros marcados como borrados y se reordenan los registros en el área principal y no hay lista de rebalse. El uso del área de rebalse tiene 2 implicancias importantes: • El acceso secuencial al archivo requiere ahora de todas maneras del índice, a fin de conocer la dirección de comienzo de la lista de Overflow. Esto es necesario porque después de acceder los registros de una pista, se deben procesar los registros de la lista de Overflow correspondiente. La conclusión es que el procesamiento secuencial en un archivo secuencial con índices, es más lento que el procesamiento secuencial correspondiente. En la práctica, la diferencia en tiempo de ejecución no es grande. • Después de un periodo de muchas actualizaciones, el proceso es más bien lento y es conveniente crear una copia nueva del archivo en la que no haya listas de rebalse ni registros marcados como eliminados. Este proceso se llama reorganización del archivo.

El almacenamiento de registros, el manejo de reblase, la reorganización, el acceso secuencial y el acceso al azar (con su respectivo manejo de índices), son algunas de las labores que realizan los software de apoyo a la organización secuencial con índices. Estos programas son más complejos que los de la organización secuencial. Desde el punto de vista del programador, las instrucciones son simples. DISPOSITIVOS DE ALMACENAMIENTO ¿Qué Es una unidad de almacenamiento? Son dispositivos periféricos del sistema que actúan como medio de soporte para la grabación de los programas de usuario y de los datos y archivos que son manejados por las aplicaciones que se ejecutan en estos sistemas. Por ejemplo, la memoria Ram es un lugar posicional de almacenamiento para los archivos que Usted usa. La mayoría de la información guardada en la Ram se borra al apagar el PC. Por tanto, el PC necesita formas de permanentes de almacenamiento para guardar y recuperar programas de software y archivo de datos que desee usar a diario. Los dispositivos de almacenamiento (unidades) fueron creados para satisfacer esta necesidad. Los siguientes constituyen los dispositivos de almacenamiento más usados: Discos duros, disquetes, unidades ZIP, CDs, DVD, etc. Los dispositivos de almacenamiento magnéticos son aquellos que usan la propiedad de los metales ferrosos o las cintas cubiertas con este material. El disco duro es el medio de almacenamiento más importante de un PC y en él se guardan los archivos de los programas como OS, hojas de cálculo, procesadores de texto, juegos, etc. La tecnología IDE (Integrated Drive Electronics) de los discos duros actuales ha sido mejorada y se le conoce como Enhanced IDE o EIDE, permitiendo mayor transferencia de datos por segundo. Algunos fabricantes los denominan como Fast ATA-2, que son más rápidos. Partes del Disco Duro Un disco duro se organiza en platos (platters) y en la superficie de cada una de sus caras existen pistas (tracks) concéntricas como surcos de un disco de vinilo y las pistas se dividen en sectores. El disco duro tiene un cabeza (head) en cada cara de cada plato y esta es movida por un motor servo, cuando busca los datos en una pista y un sector correcto.

Cilindro (Cylinder). Es un parámetro de organización y está conformado por las pistas concéntricas de cada cara de cada plato que están situada una sobre la otra, de modo que la cabeza no tiene que moverse para acceder a las diferenctes pistas de un mismo cilindor.

Organización Lógica. Cuando damos un formato lógico (el físico a bajo nivel), bien dicho el que viene de fábrica, no es recomendable hacerlo de nuevo, excepto en casos excepcionales, porque podría inutilizar el disco, lo que hacemos es agrupar los sectores en unidades de asignación (clusters) que es en donde se guardan los datos de manera organizada. Cada unidad de asignación solo puede ser usada por un archivo (nunca por dos o más), pero un archivo si puede ocupar más de una unidad de asignación.

Cuando Usted o el software indican al OS a que deba leer o escribir un archivo, el OS solicita que el controlador del disco duro traslade los cabezales de lectura-escritura a la tabla de asignación de archivos (FAT). El OS lee la FAT para determinar en que parte comienza un archivo o que partes están disponibles para guardar un nuevo archivo. Los cabezales escriben datos en los platos al alinear partículas magnéticas sobre la superficie de estos. Los cabezales leen datos al detectar las polaridades de las partículas que ya han alineado. Es posible guardar un archivo en racimos diferentes sobre varios platos comenzando tonel primer racimo disponible que se encuentra. Después de que el OS escribe un nuevo archivo en el disco, se graba en una lista de todos los racimos del archivo en la FAT. Un computador funciona al ritmo marcado por su componente más lento y por eso, un disco duro lento, puede hacer al computador vencido en prestaciones por otro hardware menos equipado en cuanto a procesador y cantidad de memoria, pues la velocidad del disco duro depende del tiempo necesario para cargar programas y para recuperar y almacenar datos. Velocidades de Rotación (RPM) Es la velocidad de rotación del disco duro, más exactamente la velocidad a la que giran en el disco los platos, que es en donde se guardan los datos magnéticamente. La regla es que a mayor velocidad de rotación, más alta es la transferencia de datos, pero también será mayor el calor generado por el disco. Se mide en revoluciones por minuto. Una velocidad de 5400 RPM permitirá una transferencia de entre 10 MB/Seg y 16 MB/seg para los datos que están en la parte posterior del cilindro o plato, algo menos en el interior (ya que la velocidad angular aumenta al crecer el radio de lectura respecto al eje del disco). Tiempo de Acceso (Access Time) Es el tiempo medio necesario que tarda el cabezal del disco en acceder a los datos que necesitamos. Realmente es la suma de varias velocidades: 1.- Tiempo que tarda el disco en cambiar de una cabeza a otra cuando busca datos. 2.- El tiempo que tarda la cabeza lectora en buscar la pista con los datos saltando de una a otra.

3.- el tiempo que tarda la cabeza en buscar el sector correcto dentro de la pista. Estos son factores relevantes a la hora de escogen un disco duro, cuando se escucha hacer ligeros clic al disco, es porque está buscando los datos que hemos pedido. Los Sistemas de Archivo Todo dispositivo para el almacenamiento de datos debe ser formateado antes de su uso; es decir, se le debe dar un cierto formato lógico que indique como va a ser almacenada la información: el tamaño de los paquetes, la forma en que se distribuyen los atributos posibles de los archivos (nombre, tipo, fecha y otras características que definan un tipo de sistema de archivo concreto). En el mundo PC, un sistema de archivos puede ser por ejemplo: FAT16/32, VFAT, NTFS, EXT2, EXT3, etc. Uno de los sistemas de bastante uso es el FAT32. las ventajas de este sistema de archivo frente a otros anteriores, radica en que es de 32 bits y tiene un tamaño de cluster muy pequeño, lo que lo hace capaz de admitir grandes discos duros y aprovecharlos muy bien, además de no necesitar artificios como VFAT para usar archivos con nombre largos. Los cluster son como cajones en que la capacidad del disco duro esta divida, en los cuales se guardan los archivos. Se da la peculiaridad de que un cluster no puede ser compartido por 2 archivos, por lo que si tenemos un cluster de 16 kbytes y queremos guardar un archivo de 17 kbytes, este se repartirá en dos cluster, ocupando el primero los 16 kbytes y el resto del archivo en otro cluster que ocupará 1 kbyte de los 16 que le corresponden y estos cluster se marcarán como ocupados en la tabla de asignación de archivos (se actualizará la FAT). Como comprenderá, en estas condiciones resulta muy importante mantener el tamaño del cluster lo menor posible, para minimizar las perdidas que ocasionan estos archivos, especialmente los más pequeños. Observe la tabla a continuación, la que relaciona el tamaño de las particiones y el tamaño de los cluster.

PARTICIÓN FAT 16 Hasta 2 GB Menos de 1.2 GB Menos de 512 MB Menos de 256 MB Menos de 128 MB FAT32 A partir de 8 GB Menos de 8 GB

CLUSTER Cluster 32 KB 16 KB 8 KB 4 KB 2 KB Cluster 8 KB 4 KB

En la arquitectura X86: 220= Direccionamiento de memoria Entonces para 8GB/220 = 8 KB Cluster Para 4GB/220 = 4 KB Cluster

En cuanto al tamaño de los discos, no es para entender el sistema de archivos, sino su sistema de direcciones de archivo de 16 o 32 bits, direcciones que en FAT16 serían 216=65536 direcciones en un disco de 2 GB como máximo para FAT16. ¿Quiere decir esto que no podemos usar discos de más de 2 GB? No, ya que si el disco es de mayor capacidad, podemos dividirlos en dos o más particiones, que son cada una de las divisiones de un disco, las cuales se manejan como si fueran discos individuales. Para FAT32 el cálculo es similar, aunque no se usan los 32 bits, sino solo 28, lo que da un total de 2048 GB (2 TeraByte) por partición usando cluster de 8 Kb ([1024kb x 1024mb x 1024gb x 2]/2 28=8 kb). Sin duda no es hacer más de una partición al disco duro. Calcular la capacidad con FAT16, el cluster de 16 kb, debería dar para un disco de menos de 1.2 GB. 216direcciones*16kb=1048576 kb = 1024 MB = 1 GByte de capacidad Caché del Disco – Tamaño del Buffer Es la memoria que viene incluida en la controladora interna del disco duro, de modo que todos los datos que se leen y escriben, se almacenan primero en el buffer. La regla de memoria aquí es de 128 kb para menos de 1 GB, 256 kb para más de 1 GB y 512 kb para 2 GB en adelante. Si un disco duro esta bien organizado la serie de datos que se va a necesitar a continuación de una lectura, estará situada en una posición físicamente contigua a la última lectura, por esto los discos duros almacenan en la caché los datos contiguos para proporcionar una acceso más veloz sin tener que buscarlos. De ahí la conveniencia de desfragmentar el disco duro con cierta frecuencia.

El buffer es muy útil cuando se está grabando un disco duro a un CDROM, pero en general, cuanto mayor sea la caché mejor, porque contribuye de modo importante a la velocidad de búsqueda de datos. Tasa de Transferencia Es la cantidad de datos que en un disco se puede leer/escribir en la parte más exterior del disco en un periodo de 1 segundo, normalmente se mide en MB/segundo. Discos Flexibles Están construidos de material plástico flexible, el cual está cubierto de material ferromagnético sobre el cual el cabezal graba. Auí se muestra la estructura de un disco flexible: Características: Lados = Superficie superior o inferior. Pistas = Círculos concéntricos longitudinales. Sectores = Porciones radiales. Son como un trozo de torta.

Los datos se graban en el lado, pista y sector especificado en unidades de localización llamadas cluster. Los cluster en los disquetes son de 512 bytes. Cuando se desea acceder a un cluster, se debe especificar en que lado, pista y sector se encuentra. El cluster es el mínimo tamaño al que se puede acceder, por tanto, es el mínimo tamaño que se puede reservar un archivo en el disquete, aun cuando sea de 1 byte. Para poder grabar y leer los archivos, se tienen los cabezales. Estos se componen de un núcleo metálico alrededor del cual se enrolla una bobina (cables de cobre enrollados en un metal). El núcleo no está totalmente cerrado ya que tiene un espacio de aire llamado GAP. Este

GAP al estar en contacto en el material ferromagnético del que se compone el disquete, orienta a los dipolos de una manera tal que los datos quedan grabados. Para leer, los dipolos magnéticos orientados que están en el disquete, al pasar cerca del núcleo, producen en la bovina un voltaje que es entendido como 0 o 1 siendo por tanto leídos los datos antes grabados. Para desplazarse de una pista a otra, los cabezales de lectura/escritura, cuentan con un motor de pasos que puede ser movido en pasos de 1.8° grados. En el eje de este motor está el mecanismo tipo espiral que mueve los cabezales. Para encontrar los sectores, un motor de giro mueve el disquete a una velocidad de 300 RPM. Tunelamiento: Para grabar las pistas, el cabezal graba los datos entre 2 pistas de borrado. De esta forma no se producen solapamiento de datos entre pistas adyacentes. Conectores La disquetera tiene 2 conectores: 1° es de 4 cables para la fuente de alimentación y en 2° es un cable plano para datos y control.

Unidades de CD-R/RW Existe una gran variedad de ellos. Es necesario entender las diferencias entre las tecnologías del Lector de CD y los CD-R. entre los tipos de CD, no todos son creados de igual forma desde un punto de vista de durabilidad por lo tanto, es importante conocer ciertas características sobre la longevidad del CD para una mejor elección del producto dentro de los diferentes tipos y marcas, así como los requerimientos de almacenamiento que cada CD necesita. Toda la variedad de CDs comparten ciertas características como la misma dimensión física, hechos al menos parcialmente de policarbonato plástico y tienen una capa metálica para refractar el as láser que lee la información. Los CDs tienen una ranura espiral microscópica dibujada dentro del policarbonato plástico, que son tan pequeñas y cercanas unas con otras

que actúan como una rejilla de disfracción. Están creados con líneas relucientes de colores de arco Iris que emanan de la cabeza central hacia el exterior en cada superficie del CD. El surco de la espiral es continua en cada CD grabable, porque es necesario para guiar el láser durante la escritura. La mayor diferencia para poder distinguir entre las distintas fabricaciones de CDs de solo lectura y aquellos regrabables, puede ser a primera vista: los CD-ROM tienen un color metálico en ambos lados; en cambio el CD regrabable metálico dorado en la superficie y verde dorado por el otro lado. El CD grabable en la superficie tiene información impresa y el otro lado no tiene marcas excepto en el área cercana al centro. El láser lee el disco desde el lado verde, por tanto, niveles o daños en esta área dañarán la lectura. Hay dos tipos de CDs, los que son de solo lectura y los que permiten ser grabados y son muy diferentes en estructura, materiales y tecnología de fabricación. Cuando se necesitan una gran cantidad de copias, el CD es la elección natural y todos los discos serán creados de un mismo modelo. El proceso de modelaje usa un disco de policarbonato en su mayor parte. Este disco modelo tiene un pista espiral de marcas impresas en uno de sus lados, estas marcas contienen información codificada. Como el láser en el lector de CD es guiado hacia delante a lo largo de la posta, es interrumpido por las marcas, y estas interrupciones son decodificadas en música, texto o imágenes. Después de que el CDROM deja el molde, es sólo un disco plástico limpio, con tenues marcas, y si se trata de leer en un lector de CD, el láser no podrá distinguir entre una marca o un área plana. Es por esto que el CDROM debe tener una capa metálica plateada. La cubierta metálica en la superficie es la que reflecta y hace rebotar la luz láser dentro del censor de luz. Cuando el rayo encuentra una marca, este es reflectado. La capa metálica de reflexión es el problema de la durabilidad del CD. La tecnología del CDROM que es desarrollada a partir de los 80 es más antigua que la del CD-R. Como todo nuevo producto, hay lecciones aprendidas e incorporadas en la nueva fabricación. La capa de reflexión era un ejemplo claro; actualmente en el CDROM la capa es de aluminio o aleación de cromo-aluminio, no de plata. El metal es aplicado a la cara de las marcas del modelo de disco de policarbonato por medio de una

capa de renqueo donde átomos de metal son depositados como una delgada película semitransparente usando una cámara al vacío. DVD Disco Versátil Digital o de Video Digital es un dispositivo de almacenamiento masivo de datos cuyo aspecto es idéntico al del CD, aunque tiene hasta 125 veces más capacidad y puede transmitir al PC unas 200 veces más veloz que el CD. Su mayor capacidad de almacenamiento se debe entre otras cosas, a que pueden grabarse ambas caras del disco y en algunos casos hasta 2 capas por cada cara; mientras tanto el CD admite 1 cara y 1 capa. Todos los DVD tienen la misma forma física y tamaño, pero difieren en el formato de almacenamiento de los datos y en consecuencia en su capacidad. Así, los DVD-Video de 1 cara y 1 capa almacenan 4.7 GB y los DVD-ROM de 2 cara y 2 capa almacenan hasta 17 GB. Del mismo modo no todos los DVD se pueden reproducir en cualquier lector, por ejemplo; un DVD-Video no puede leer un DVD-ROM, aunque si al revés. Por supuesto los lectores de CD y unidades de DVD disponen de un láser, ya que la lectura de información se hace por procesos ópticos. Existen las unidades de sólo lectura o de lectura y escritura. Soporte CD DVD 1cara 1capa DVD 1cara 2capas DVD 2caras 1capa DVD 2caras 2capas Capacidad Dur. Audio Dur. Video Equivalencia en CD650 650/700MB 74-80 min. 15-16 min. 1 4.7GB 8.7GB 9.4GB 17GB 9h 30m 17h 30m 19 horas 35 horas 2h 15m 4 horas 4h 30m 8 horas 7 13 14 26

Memorias Flash Son dispositivos de almacenamiento que ofrecen gran versatilidad y seguridad además de comodidad, ya que su tamaño no supera al de un llavero grande y su capacidad de almacenamiento hace que estos

llaveros sean una buena elección a la hora de elegir un dispositivo para transportar información rápido y con seguridad. Utilizan el puerto USB aprovechando muy bien su alta taza de transferencia como la que se da en la versión 2.0 que soporta la 1.0. En cuanto a capacidad existen de 16/32/64/128/256/512 MB y hasta versiones superiores a 2GB. Utiliza la tecnología PnP (Plug & Play), que hace posible que con solo conectar el dispositivo este sea reconocido y disponible para operar con él. Unidad IV. Tecnologías De Búsqueda de Datos Búsqueda Lineal El método más simple búsqueda es leer consecutivamente un nodo tras otro hasta que coincida el valor buscado con el valor del identificador del nodo buscado y; en el caso de que no exista un valor como el buscado en el conjunto de datos, la búsqueda finaliza cuando se han examinado todos los nodos (que pueden estar almacenados en forma desordenada). Esta técnica se llama Scanning o Búsqueda Lineal.

Máximo de comparaciones: n + 1

Suponiendo que el valor buscado existe como el valor de identificador en el conjunto de datos, el número promedio de nodos examinados es [n+1]/2 para nodos o registros de 1 a n. 1 2 3 4 5 6 7 Para ¿8? Máximo de comparaciones = 7 Mínimo de comparaciones =1 Promedio de comparaciones = [7+1]/2=4 La búsqueda lineal tiene como ventaja su sencillez y cuando n es pequeño, es la forma más recomendable de realizar la búsqueda.

Búsqueda Binaria Exige que los nodos estén ordenados por su identificador al momento de realizar la búsqueda y para fijar ideas, por valores ascendentes, es decir, un nodo cuyo valor de identificador es menor que el valor de identificador de otro nodo, está posicionado antes que este. También supongamos que el número de nodos es una potencia de 2-1, es decir, N = 2J-1 para todo J ∈ Z+. La búsqueda binaria consiste en comparar un valor dado con el valor de identificador del nodo, posicionado en [n+1]/2 tomado las siguientes decisiones: - Si ambos valores son iguales, entonces la búsqueda ha terminado. - Si el valor buscado es menor que el valor dado, puesto que los nodos están ordenados, se debe buscar en la primera mitad del conjunto, para lo cual se compara el valor buscado con el identificador del nodo posicionado en [n+1]/4. - Si el valor buscado es mayor que el valor dado, se debe buscar en la segunda mitad del conjunto, para lo cual se compara el valor buscado con el identificador del nodo posicionado en ¾[n+1].

Consideremos la figura anterior donde se ha generado un árbol de decisiones para las comparaciones de identificador de 15 nodos. En cada bifurcación, una rama ascendente significa que el valor buscado es menor que el comparado y una descendente que es mayor. El resultado es un Árbol Binario que no se almacena (no es una estructura de datos), sino que representa el algoritmo de búsqueda. Tiene la siguiente formalización:

• • •

V1, V2, …, Vn son los valores de los identificadores de los n nodos con V1<V2<V3…<Vn. Val es el valor buscado. Inf, Sup y J son punteros o índices.

// Contraste el programa con la figura anterior #define exito=1 #define fracaso=0 void Función BusqBin (V, Val, N) { Inf=1; Sup=N; while (Inf<=Sup) { J=(Inf+Sup)/2 if(V[J]==Val) return(exito); if(V[J]<Val) { Inf=J+1; Sup=J-1; } } return(fracaso); } Para determinar el número promedio de comparaciones, observemos la figura anterior, hay un elemento que requiere 1 comparación (el 8 para este caso); 2 que requieren 2 comparaciones (4 y 12); y 4 que requieren 3 comparaciones (2, 6, 10, 14); y en general, 2J comparaciones que necesitan J comparaciones, así el promedio de comparaciones serán: [Log2 N]  sería el J máximo 1 Log 2 N J P= ∑2 J N J =2 Donde [Log2 N] es el mayor entero menor o igual a Log 2 N; puede escribirse P = [[[Log2 N]-1] * [N + 1]+2] Si N es muy grande entonces P ≈ [Log2 N]-1 En la discusión anterior, N fue siempre una potencia de 2-1. Cuando N es cualquier entero, una manera de seguir usando la búsqueda binaria representada es agregar nodos de relleno en el conjunto de datos a fin de que N cumpla la condición buscada. Esta solución aunque simple no es práctica cuando N es grande, la mejor solución es reemplazar la

instrucción de asignación del índice J del algoritmo de Búsqueda Binaria por J = int [ [ Inf + Sup ] /2 ]. Usando este algoritmo también el N promedio de comparaciones es del orden [Log2 N] para N muy grande. N = 15  P = [Log2 N] P = [Log2 15] P=3

Ahora formulas para N chicos. N = 15  P P P P = = = = 1/15 * (([Log2 15]-1) * (15+1)+2) 1/15 * ((3-1) * (16)+2) 1/15 * (2*16+2) 34/15 = 2.266

Para visualizar el número promedio de comparaciones (P) de este método y el método de búsqueda lineal veamos la siguiente tabla: N Búsq. Lineal (N/2) Búsq. Binaria (Log2 N) 10 5 3 100 50 6 1000 500 9 10000 5000 13 100000 50000 16 1000000 500000 19 10000000 5000000 23 Desventajas de la Búsqueda Binaria El algoritmo es más complejo que el correspondiente a la búsqueda lineal y además los nodos deben estar ordenados, lo que ocupa tiempo. Si hay adiciones y eliminaciones de nodos, normalmente debe procederse a reordenar los nodos. Existe una alternativa de la búsqueda binaria utilizando tabla. Se deben ordenar los pares <identificador, puntero>. De acuerdo 2 valores ascendentes del identificador (o descendentes), enseguida se busca en la tabla con búsqueda binaria y, una vez encontrado el identificador del valor buscado, se accede al nodo de datos correspondientes usando el puntero índice asociado.

Este método permite que los nodos estén almacenados en cualquier forma, hacer reordenamientos de cuando no se use la tabla. Esto ultimo porque solo se necesita reordenar los pares <identificados, puntero> de la tabla que normalmente son más pequeños en número de Word (2 Bytes) que los nodos de datos mismos y por lo tanto el cambiarlos de ubicación es más rápido. El uso de tabla implica un uso adicional de almacenamiento que se requiere para guardar los nodos de datos. Si se hace búsqueda muy frecuentemente por varios identificadores diferentes, puede construirse tabla para cada uno de los identificadores, lográndose un tiempo de acceso pequeño a los datos a un costo de almacenamiento extra requerido para guardar cada una de las tablas. Organización Directa Esta Organización de Archivos que también se denomina Organización al Azar, es una implementación de las técnicas de Hashing en memoria secundaria de acceso directo. La aplicación inmediata es entonces procedimiento al azar. Explicación de una búsqueda usando Hashing Supongamos un factor de carga de 1.00 de conjunto de datos y además que N =100 y el valor del identificador que este en el rango 2741 a 2840. Entonces, una manera simple de buscar un nodo cuyo identificador sea igual T, en esta situación es buscar el nodo de memoria señalado por f(T)=T-2740. Observación Donde N = número de nodos L = Largo de cada Nodo (Bytes o Words) M = Memoria disponible (M posiciones)

La cantidad (M*L)/M se llama factor de carga del conjunto de datos y representa la función de nodos activos del total de nodos posibles de almacenar en la memoria. Ejemplo, si tenemos identificador T = 2752 -> f(2752)=2752-2740=12 Este ejemplo sencillo es un caso particular de un poderoso método de búsqueda llamado Hashing, que consiste brevemente en obtener una dirección (o número de nodo, índice, etc.) a partir del valor del identificador, usando una función o transformación de Hashing f. En la discusión que sigue, consideramos la memoria disponible en ternito de nodos que puede contener: P = M/L. la función Hashing f será f(T) tal que al aplicarla sobre un valor de identificador T, entonces f(T)=d, donde 0<=d<=P-1. En otras palabras definimos P de tal modo que las direcciones estén en el rango de 0 a P-1 en la memoria (nodo0, nodo1… nodo P-1). El caso más general es aquel que el identificador tiene un rango de variación posible V número mayor que el número de valores de identificador realmente presentes en el conjunto de datos. Por ejemplo, si el identificador es el número de empleados en un conjunto de datos de personal y este es de 6 dígitos, entonces hay 106 valores posibles de 000000 al 999999 (se acepta del 0 al 9, por eso es 10 6); en circunstancias en que la cantidad de empleados es mucho menor. En este caso no se deja almacenamiento para contener V nodos, sino que una cantidad un poco mayor que la necesaria para contener los nodos presentes (activos). En otras palabras, el Factor de Carga es un poco menor que 1.00. • Factor de carga: [N*L]/M donde N = Cantidad de nodos L = Longitud de cada nodo M = Memoria principal Cantidad de nodos en memoria: P=M/L nodos Función de Hashing que ocupa las P direcciones: f(t)=d donde 0<=d<=P-1

• •

Ejemplo. Si los números de empleados de una empresa son de 6 dígitos, e inicialmente 99 empleados tenían los números 010000, 020000,

030000… 990000, entonces una función de Hashing simple de una memoria de P = 120 nodos es: f(t)=INT[t/10000] Pero puede suceder que ingresen nuevos nodos empleados, si a un empleado se le asigna el número 505000, entonces la aplicación de la función anterior da: f(505000)=INT(505000/10000)=50, y este valor es idéntico para el nodo correspondiente al empleado número 500000, por tanto el nodo de memoria 50 tiene dos nodos de datos asociados a él. Cuando hay valores de identificados que tienen el mismo valor de la función Hashing, se dice que estos valores de identificador son sinónimos y que tienen una colisión en el valor de la función Hashing. Toda técnica de Búsqueda por Hashing tiene 2 aspectos que requieren mayor estudio: La determinación de la función Hashing f es un caso específico. El mecanismo de resolución y manejo de sinónimos bajo una función de Hashing.

Una buena función Hashing debe provocar un número pequeño de colisiones. Por supuesto, esto depende de la función estadística y probabilística de los valores activos del identificador sobre los valores posibles. La distribución de valores de identificador más sencilla es la uniforme. Desafortunadamente no son únicos los casos en que los identificadores siguen esta distribución; es más frecuente el caso de los valores aglutinados en grupos. Por ejemplo, en el caso de empleados visto anteriormente puede que se le asignen los primeros 3 dígitos para designar el departamento en el que se desempeña y el siguiente dígito para el sexo; así habrá varios empleados con los primeros 4 dígitos iguales, lo cual es muy difícil cuando una distribución es uniforme. Una función de Hashing aritmética (+ - / etc.) no siempre puede aplicarse directamente sobre el identificador. Es necesario hacer muchas veces una transformación previa del tipo de dato, a fin de poder realizar aritmética. En algunos casos un carácter de 16 bits puede ser necesario convertirlo a 2 dígitos octales y enseguida agregar 1 bits a cada uno, para obtener 2 dígitos decimales, a fin de realizar aritmética decimal o; en otros caso, puede requerirse la conversión decimal a binario.

División  También sirve para sacar el resto. Ej. Con el entero primo 7. 21:7=3 0// 22:7=3 1// 23:7=3 2// 24:7=3 3// 25:7=3 4//

7 Direcciones, el último sería 7-1=6. Da la vuelta el número entero menos 1. La división consiste en dividir el valor del identificador por P, y usar el Mod (resto) como dirección. Resulta que con ésta función valores consecutivos del identificador producen restos consecutivos después de dividirlos por cualquier puntero P, considerando que el 0 sigue al P-1. Mientras haya menos de P valores consecutivos del identificador en una secuencia, esto significa que todos los restos que se obtienen en esa secuencia son distintos. Los mismo es cierto para una ejecución en la que valores sucesivos están separados por una constante C (C>1), siempre que P y C sean primos relativos (es decir, no tengan factores comunes mayores que 1). Ej. 7 y 2  Primos relativos. 7 y 14  No primos relativos. El mejor número para hacer una división es un número Primo. La siguiente tabla ilustra esto mostrando restos después de dividir números de 3 dígitos por 19. Ejemplo de uso de divisor como función Hashing (divisor = 19). Identidad | Resto | Ident. | Resto | Ident. | Resto ------------------------------------------------------------------101 | 6 | 150 | 17 | 550 | 18 102 | 7 | 200 | 10 | 600 | 11 103 | 8 | 250 |3 | 650 |4 104 | 9 | 300 | 15 | 700 | 16 105 | 10 | 350 |8 | 750 |9 106 | 11 | 400 |1 | 800 |2 107 | 12 | 450 | 13 | 850 | 14 108 | 13 | 500 |6 | 900 |7 Todavía existe el problema de las secuencias distintas de valores que tienen n colisiones (101 con 500). Si los puntos de comienzo de 2 secuencias difieren en una constante S, sus direcciones obtenidas con la

función Hashing no coincidirán, siempre que S con tenga factor común con P. de esta manera existirán a lo más colisiones parciales entre las direcciones obtenidas de las 2 secuencias de valores de identificador. Ya que las colisiones no pueden ser evitadas completamente, de todas maneras habrá algunas direcciones duplicadas, distribuidas irregularmente. Con esta discusión podemos concluir que normalmente un número primo debe elegirse como divisor P. de esta manera, si C y S no pueden tener factor común a P, a menos que sea P mismo. En la práctica sería muy raro que el conjunto de identificadores activos tuviera separación sistemática en valores que fuesen múltiplos de números primos grandes. Los esquemas de clasificación usualmente producen separaciones que son pequeños múltiplos de alguna potencia de 2 o 10, y por tanto, no son múltiplos de ningún número primo grande. Ahora P es el tamaño de memoria disponible (P en cantidad de nodos), que usualmente es un dato y un número múltiplo de 10, lo que se hace en este caso es tomar un primo cercano a esta cantidad y ligeramente menor, por ejemplo; si hay 10000 nodos de memoria disponible, P puede elegirse como el primo 9973, lo que deja 27 nodos no usados. No siempre todos los primos son la mejor elección como divisores. Por ejemplo, los primos de la forma K*Rn±1 (K constante y R base). Deben evitarse para valores de identificador cuya base numérica es R (normalmente 2 o 10), siendo K un entero pequeño porque observando la expansión binomial de (Rn±1)-1, el resto después de la división es esencialmente una superposición de grupos sucesivos de n dígitos del dividendo, y esta superposición sistemática se mantiene para un K>1 pequeño. Así para valores de identificadores en el rango de 102 y 105, primos 101, 199, 301, 401, 499, 599, 4999, 90001 no son buenos divisores. Otra función de Hashing es la truncación de valores decimales. Cuando se utilizan los n últimos dígitos, esto equivale a dividir por 10n y guardar el resto. Si los valores activos son enteros consecutivos, con solo unos pocos actos, la truncación puede ser mejor que la división porque es la más rápida en la mayoría de los computadores. Sin embargo, con un conjunto de valores más irregular el divisor 10n se compara muy desfavorablemente con un primo de valor cercano. Ej.: 0347:102=3.47 => Truncar (3.47)=3

Otro método es el de doblar valores de identificador (Folding), como función de Hashing consistiendo en separar un identificador largo en grupos de menor largo, y sumar los dígitos que corresponden posicionalmente, por ejemplo; el número decimal 34495283 puede separarse en 2 grupos: 3449 y 5283, sumando unidades con unidades, decenas con decenas, etc., nos queda 8732. lo mismo puede hacerse con dígitos binarios. La cantidad de 16 bits siguientes 1010110011000101 puede dividirse en 2 grupos de 8 bits 10101100 y 11000101 que al sumarse y descartarse en primer bits resulta 01110001. Esta técnica introduce una buena cantidad de aleatoriedad en el resultado y por tanto, aumenta un poco las probabilidades de colisiones al compararla con la división, pero es una alternativa que generalmente produce una buena distribución. Mecanismos de manejo de sinónimos (Colisiones) Cualquiera sea la función de Hashing siempre se producirán, al menos eventualmente sinónimos, si V < P. el mecanismo de manejo de sinónimos debe proveer modo de almacenar los nodos sinónimos y una manera de recuperarlos. Un primer enfoque es usar el método de encadenamiento (Chaining) que consiste en unir a través de una lista lineal, almacenada con nexos todos los sinónimos de cada nodo de memoria. En la figura siguiente se ilustra la disposición típica de la memoria: Un área principal, donde se almacenan los nodos de datos usando la función Hashing como dirección y un área secundaria o de Overflow, donde la administración de memoria disponible se hace con lista de espacio disponible (DIPS). En la figura se muestra un ejemplo en la que el identificador tiene 3 dígitos decimales de longitud y la función de Hashing es la siguiente.

s  I N T ( X ix</ 11 00 )= f (x) =  r  1 1 d oe t m o o d o
El mecanismo de almacenamiento es como sigue: Se obtiene una dirección aplicando la función Hashing sobre el identificador.

-

Si el nodo de memoria con esa dirección esta desocupado, almacena ahí el nuevo nodo de datos. En caso contrario, se almacena el nuevo nodo de datos en el área Overflow (tomando un nodo de memoria desde la lista DISP)m y actualiza a la parte NEXO del último nodo de la lista de nodos datos si son sinónimos con el que esta siendo insertado.

se de se de

Por ejemplo, en la figura anterior si se va a insertar un nodo con identificador 039, el nodo de memoria 16 tendrá el contenido, los cual se muestra en la figura anterior, y la parte NEXO R del nodo de memoria 3 guardará la dirección 16. El mecanismo de almacenamiento: recuperación de datos es similar al de

se examinan los elementos de la lista de sinónimos correspondientes al nodo de memoria que es diseccionado al aplicar sobre el identificador buscado la función Hashing. Esta búsqueda lineal concluye cuando se encuentra el nodo esperado o hasta obtiene el final de la lista.

Con estos mecanismos y la lista DISP, la inserción y eliminación de nodos de datos es simple. Para saber, si un nodo de memoria en el área principal esta ocupado, se puede hacer uso de un bits especial destinado a este propósito o bien puede seguirse alguna convención cuando el nodo esta desocupado. Un ejemplo de esto último es colocar la parte identificador del nodo rellena con “blancos”. Resumiendo, la técnica de Chaining es simple y permite realizar adiciones y eliminaciones de nodos de datos sin mayor dificultad.

La alternativa de encadenamiento se llama direccionamiento abierto y tiene diversas variantes. En general, consiste en intentar buscar un segundo nodo de memoria si el primero después de aplicar la función Hashing esta ocupado por otro nodo de datos en forma precisa. El direccionamiento abierto se define como: FK(t)={F(t)+ r(K)} Mod P FK(t)= Es la dirección en donde se intentará buscar (para almacenar o recuperar) el identificador cuyo valor esté después de K-1 intentos infructuosos previos. F(t)= Función de Hashing. r(K)= Es un termino que depende de la técnica específica que se esté aplicando. P = Es el número de nodos de memoria disponible: P = Mem. Disponible / Tamaño 1 nodo Con el direccionamiento abierto se intenta encontrar el nodo buscado hasta que se verifica un valor de identificador igual al que de búsqueda o hasta que se encuentra un nodo desocupado. El algoritmo de búsqueda para un valor P es el siguiente: Función Dirección_Abierta(t) Begin J=F(t); K=0; Mientras Nodo[J]<>NULL hacer Begin Si T== Nodo[J] Entonces Retorno(Exito); /* Aquí se verifica si se revisaron todos los nodos de datos*/ Si Fin_Lista() Entonces Begin Overflow(); K=K+1; J= FK(t); End; End; Retorno(Fracaso);

End.

Aplicación de las funciones de Hashing en una Organización Directa de Archivos La Organización Directa de Archivos es la implementación de las técnicas de Hashing en memoria secundaria de acceso directo, la aplicación inmediata es: Procesamiento al Azar: A diferencia de la memoria principal, en los dispositivos de acceso directo el direccionamiento no es continuo, entonces para resolver esta dificultad, los OS usualmente proveen software que traduce direcciones “relativas” a físicas reales. Este direccionamiento relativo permite definir direcciones continuas de bloques (nodos de memoria). La función de Hashing (Método de Aleatoriedad) usadas son las misma vistas anteriormente. En la práctica las más usadas son las divisiones con resto y la extracción de dígitos determinados del identificador. Debido a las características particulares de cada aplicación, no existe software de uso visto que realice la función de Hashing de esta manera, usualmente es el programador quien debe seleccionar una técnica y además programarla. Las mismas técnicas de repetir programación se encuentran en el mecanismo de manejo de sinónimos. El programador debe escribir el software que contiene la búsqueda en caso recolisión; sin embargo, en algunos sistemas de provee un direccionamiento abierto automático. Un aspecto interesante en relación con el manejo de sinónimos es la determinación del tamaño y bloque, si este tamaño es mayor que un registro, entonces se puede tener una holgura automática a nivel de cada bloque, por ejemplo, en la siguiente figura se tiene que en cada bloque se tiene espacio para 3 registros; existirán sinónimos conflictivos sólo cuando se hayan ocupado los espacios del bloque. Si se introduce el registro con identificador 002, al que le corresponde bloque 0 por una función de Hashing particular, esto no ocasionará problema porque una búsqueda lineal trivial le asignará el segundo espacio en el bloque 0.

Esto también conviene desde el punto de vista de la eficiencia en E/S, puesto que, en una sola operación se tiene en memoria principal el registro buscado (el bloque es la unidad de memoria sobre la que se realizan las transferencias) desde y hacia la memoria principal. El método usual de procesamiento con la Organización Directa es el Procesamiento al Azar, ya sea para actualizar, leer o borrar registros. Por supuesto muchos de estos procesos requieren el uso de subrutinas que realizan la función Hashing y el manejo de sinónimos. La Organización Directa es adecuada al procesamiento On-Line a archivos de consulta que no son muy volátiles, además en general, cuando se requiere una alta eficiencia en el tiempo de ejecución, el factor de carga debe ser relativamente bajo, lo que implica un uso adicional de espacio de almacenamiento que usualmente es comparable con el requerido por la Organización Secuencial con Índices. En resumen la Organización Directa está orientada al Procesamiento al Azar y como tal esta basada en el Método de Búsqueda de Hashing. La eficiencia de los algoritmos de Hashing y de manejo de sinónimos es gradualmente responsabilidad del programador. Al comparar Organizaciones Secuenciales con Índices y Directo, se puede mencionar que para el procesamiento al Azar la Organización Secuencial con Índices es más lenta que la Organización Directa, pero más rápida para Procesamiento Secuencial.

B-TREES Es una organización de archivo que permite acceso al azar y secuencial, basada en el uso de Árboles de Búsqueda. Consideremos un pequeño recuadro con Árboles de Búsqueda. La idea básica es construir un árbol con los nodos de datos y enseguida realizar una búsqueda en esta estructura; en los nodos del árbol se almacenan respectivamente los nodos de datos.

El siguiente Árbol Binario ejemplifica esta técnica. Los nodos de datos contienen nombres tomados de un diccionario de términos de computación y la pagina correspondiente donde esta definida.

El Árbol se construye de la siguiente manera: 1°2°3°Si el identificador < nodo raíz => almacenar en subárbol izquierdo. Si el identificador > nodo raíz => almacenar en subárbol derecho. Enseguida se compara con el identificador en el segundo nivel (“Algo” “Overflow”) en la figura y se aplica el 1° o 2° paso hasta que se encuentra un nodo vacío. Ejemplo. Para almacenar el nodo Key | 171, la comparación con el nodo raíz, determina que se debe almacenar en el subárbol derecho de “DEVICE”; al comparar con “Overflow” se determina que se debe almacenar en el subárbol izquierdo; con “Fosdic” en el subárbol derecho; y con “Lag” en el subárbol izquierdo; llegándose a que debe guardarse en un nodo dependiente a la izquierda “Lace”. La Búsqueda para modificar o eliminar nodos se realiza de la misma manera.

Observemos que en árbol anterior recorriéndolo en Pre-Orden, se recuperan los nodos ordenados por identificador. También, que la manera en que quedan almacenados los nodos depende del orden en que fueron insertados. El árbol de búsqueda no necesita se binario. A continuación veremos un gráfico que ilustra un nodo de un árbol que tiene 2D nodos y 2D+1 punteros. La búsqueda en este tipo de árboles es como sigue: El identificador buscado es comparado con el primero almacenado en el nodo raíz; si es menor se sigue el primer puntero; si es mayor se comparará el identificador con el segundo almacenado, etc.

Otra variación importante con respecto al árbol de búsqueda esquematizado en el ejemplo anterior se refiere a las características de Balanceo. Un Árbol de Búsqueda No Balanceado tiene algunas trayectorias de la raíz al nodo terminal más largo que otros; en cambio, un Si Balanceado tiene todas estas características de trayectoria de mismo largo. La siguiente figura ilustra un árbol Balanceado.

La Búsqueda en un Árbol Balanceado tiene la ventaja de que está garantizado un número pequeño de nodos del árbol. Para acceder cualquier nodo de datos: Si el árbol tiene n nodos con 2D nodos de datos cada uno, el árbol tiene Log D N niveles (donde n es el número de nodos de datos). Por tanto para acceder cualquier nodo de datos se necesita consultar a lo más Log D N nodos del árbol. En compensación por esta ventaja, un árbol Balanceado requiere que los procesos de mantención (inserción y eliminación) sean más complejos. Por ejemplo, durante la inserción si el nodo del árbol en el cual correspondería agregar el dato un nodo AVL contiene entre D y 2D

nodos de datos, entonces se divide el nodo del árbol en 2 y se incluye un nodo de datos y puntero correspondiente al nodo padre; este a su vez puede tener división, etc., llegando este proceso de división eventualmente hasta la raíz. La siguiente figura ilustra un ejemplo en el que se inserta el nodo de datos “LAD” en el árbol de la anterior figura que quedaría como:

El Árbol de Búsqueda Balanceado fue llamado B-TREE por sus creadores R. Bayer y E. McCreight. Se han propuesto diversas variaciones de la idea básica, siendo una de las más importantes la de Knut denominada “B+-TREE”. Un “B+-TREE” consiste en 2 áreas: Un Índice, que es un B-TREE. Un área donde están los nodos de datos ligados por nexos.

El hecho de que los nodos de datos estén ligados en secuencial hace que el acceso secuencial a los nodos sea muy eficiente. El Índice por su parte, es usado para acceder al Azar. Veamos la siguiente figura de un B+-TREE:

ESTRUCTURA DE ARCHIVOS – OTRA TEORIA ANEXA
ARCHIVO SECUENCIAL Al llegar al Flag, se pasa al siguiente dato en forma secuencial. Los DATA son conjunto de caracteres alfanuméricos.

Hay dos formas de manipulación para DATA 1. Estática: Para los datos con longitud de bytes fija, definida internamente en la programación de la estructura, como se muestra en la siguiente ilustración: 30  Nombre 12  Rut Dinámica: Para los datos con longitud variable en la que se busca un separador o delimitador de campo. Por ejemplo el carácter # para la siguiente ilustración: Nombre # Fono Con respecto a la seguridad. - Dinámico: Bajo nivel de seguridad (Any access). ARCHIVO INDEXADO Su largo de registro va desde el más pequeño de 2500 pero hay hasta de 10000. Son seguros, las búsquedas son más rápidas y optimizan la utilización de la memoria. Para almacenar o acceder a un archivo indexado es necesario tener la Mascara de las estructura para no corromperlo, por ejemplo: Mascara (FDL) Nombre (30) Apellido (20) Rut (12) Teléfono (02)

Seguridad Owner [Cuenta/Máquina]  Eddie (Dueño original)

Define LA cuenta a la cual este archivo pertenece y en la cual tiene permitido correr. También tiene la lista de usuarios que puedan tener algún tipo de acceso a él. ID  [136,100] Es la cuenta asociada al grupo de trabajo (dominio) 136.

Esta es la seguridad de un indexado, que guarda los datos de quien lo creó y el dominio al cual pertenece que es otorgado por el OS que establece comunicación con el indexado al hacer Login una cuenta. Desventajas: - El uso de este tipo de archivos no es de bajo costo porque depende de la plataforma en que esté soportada (UNIS, OPEN VMS, VMS, etc.). - Su largo de registro está determinado por la plataforma en que se utilice (capacidad finita de largo de registro). - Menos versátil. Violación de seguridad Si se abre un indexado con un editor de texto y le agrego datos (corromper archivo), el sistema los transforma en secuencial para no perder datos. Investigar que es la Máscara o un FDL (File Description Lenguage). AL parecer como antecedente este busca el marcador delimitador y lo compara con tas tablas que posee y además es posible que con la Mascara recupere la información para dejarlo como archivo indexado. También crea un LOG de las cuentas. ***AVERIGUARLO*** Máscara o FDL (File Description Location) Si se modifica la estructura interna de un indexado, este se corrompe y no se puede tener acceso a él con el FDL. Cuando se hace un “Analizer” a un indexado, me generará la máscara de la estructura para acceder a él.

-

Si le hago Analizar a un TXR plano, me generará otro archivo al que se le puede aplicar Convert.

CRUCE DE ARCHIVOS Para un Cruce de Archivos lo primero que se debe hacer es conservar un campo clave (común a los archivos), que será la llave para el cruzar los archivos y provocar la carga del archivo cruzado resultante, el cual se accederá a través de este campo clave. El archivo resultante puede tener 1 o más campos comunes a los archivos de origen, sin que sea necesario que todos sean la llave(es un caso que se debe evaluar según los requerimientos). Consideraciones: - En el cruce, lo primero que se debe hacer es conservar la Llave. - La Llave o Clave de acceso puede ser 1 o N campos. - Los archivos a cruzar pueden ser 2 o más (siempre que estén relacionados). - El cruce es independiente del formato En la siguiente figura se ilustra un Cruce:

REQUERIMIENTOS DE SOFTWARE 1° Validación Es un requerimiento o pauta que solicita el usuario. Ej.: Se pide el perímetro de una circunferencia que es 2*pi*R. esto implica que se debe validar con cuantos decimales se trabajará pi y R y el tipo del resultado. La verificación le corresponde al que da la solución y cosiste en validar los tipos de datos que se ingresan (input) y las salidas (output) y por que periféricos, por ejemplo, si son numéricos no se admiten entradas alfanuméricas.

2° Caja Blanca y Negra. LA Blanca Corresponde al código del programa. La Caja Negra. Significa que el código realice la tarea para la cual tiene fin. También debe cumplir con las operaciones de orden y las condiciones de excepción o interrupciones que obedecen al OS (manejo de eventos como si la impresora esta apagada al imprimir comunicar un “error externo de hardware y/o OS”). 3° Integración Es el OS donde esta instalado el programa, en el que no debe crear conflictos al instalarse o desinstalarse con los programas vecinos, es decir, no usar bibliotecas compartidas (pueden provocar errores al desinstalar).

CASOS REPRESENTATIVOS Un negocio con Stock = [neumáticos, lubricantes, aceites] Preguntas: - Numero stock crítico. - Detalles varios. - 3 Operadores más 1 administrador.

Otras opciones: Linux y OPEN VMS pueden trabajar con archivos indexados. Un Inyector puede traspasar archivos de un OS a otro. Por lo general es Fullduplex. Seguridad:

-

Si Access se corrompe, si el OS es inestable (tiene errores) o falla el hardware de disco duro, se debe tener un ADM gemelo que respalde los datos. Siempre hay que tener una política de respaldo y un plan de contingencia. Por ejemplo, un PC Servidor como Isla que contiene una base de datos común con PC ADM para los mismos puntos de ventas. Para que Access no tenga recursos compartidos con otros programas, se puede probar renombrándolo. Los PC1, PC23 PC3 (vendedores), no deben tener acceso a Internet porque si hay un hoyo en la seguridad hay riesgos de ataques. Tienen que trabajar como Workstation pidiendo Login y Clave de acceso y que entren a un asistente cerrado que solo está conectado con el ADM y pueda descargar cosas solo de la base de datos. El ADM y ADM 2 deben estar con todos los parches de seguridad. Si los Workstation están conectados al ADM y se modifican los datos en una Workstation reflejándose los datos (actualizándose) en el ADM, esto quiere decir entonces que están conectados On-Line, por lo que también deberán actualizarse los datos en las demás Workstation. Si sucede un error al modificar, el servidor deberá notificar inmediatamente a la Workstation. Cuando están Off-Line el ADM no notifica sobre errores y se debe mantener la integridad de los datos para cada Workstation por lo que el refresco de datos es periódico (Off-Line). Por ejemplo, si el PC1 provoca un error en un registro y el PC2 accede al mismo, no sabrá que hubo un error, es por esto que se debe mantener la integridad de los datos. Todos los archivos de base de datos son de Concurrencia 1 debido a que se tiene una cola única de Transacción por procesador y si se dispone de un servidor bi-procesador, se mantiene una única cola, puesto que el segundo procesador es paralelo o se lo reserva el OS, por lo que por cola se accede a 1 registro a la vez. El encolamiento produce un Stress en el ADM por lo que se pueden tener Islas (otros servidores con una base de datos común). Por lo anterior, debe realizarse una Prueba de Carga y concluir que se debe hacer. Por ejemplo, SII implementó (suponiendo el número) una cola de lago 100, lo que quiere decir que sólo los primeros 100 que se

-

-

-

-

conecten podrán acceder al servicio por Internet y a los demás se les cortará la conexión notificando que “el servidor esta ocupado y que espere un turno en un reintento posterior.”, y podrá acceder cuando uno de los cien primeros se desconecte o cuelgue. Chess List: Se pide a las empresas y tiene que ver con la configuración regional con la que se esta trabajando. Por ejemplo, formato de fecha y hora, moneda, si se usa punto o coma para separador se miles o no se usa, punto o coma para los decimales, etc. Eje.: Si se ingresa UF = $17000 y topean 17.000 es un error si no se esta usando separador de miles. Lo mismo para números con decimales. si se tiene un sistema de stock configurado de X manera, la implementación de otro sistema en el mismo equipo por ejemplo para saber quién vende más en el mes para premiarlo, deberá adaptarse a la configuración X.

System File de Bodega

En cada interfas de entrada o salida de cada sucursal, debe haber Cargadores que verifiquen que los datos no vengan cortados para cargarlos en la base de datos o pedir un reenvío de datos (Cargadores e Inyectores). Esta es una verificación que se hace además de la que hace el protocolo usado como TCP/IP. Se debe asegurar la integridad de la información, que el tambor no se afecte ni tampoco su entorno (por ejemplo, si se hace un CTRL+C en

Oracle, el tambor se corrompe a excepción tal vez de versiones más avanzadas.). Archivos con Índices Se les aplican índices para optimizar las búsquedas cuando existe una cantidad masiva de datos. Se aplican cuando el crecimiento es exponencial, separando en segmentos de índices. Se estructura con parámetros fijos y la gracia de usar índices es de emular la caché, tratando de hacer el menor número de accesos. Índices de segmentos: un ejemplo sería: Archivos con segmentos de un mes con el registro de los movimientos realizados durante el año, que será el segmento superior de los anteriores y que forma parte de un conjunto de N años. Así, si se desea obtener los movimientos de Enero del 2001, se redireccionará 200101 donde los primeros 4 dígitos indicarán el segm-{ñ´p’0ento de año y los últimos dígitos el mes específico dependiente de este año. Se puede Observar que el acceso se produce de segmento en segmento y que pueden haber N niveles de segmentos según las necesidades derivadas del volumen de datos existentes. Otro Ej.: si busco el RUT 12.345.678-5 el proceso sería: 1° Verificar si el Rut es verdadero. 2° Buscar el segmento de los 12 millones. 3° El anterior segmento de índices redireccionará al archivo de índices correspondiente al segmento de 300 a 400 mil y este al de 40 a 49 mil y así sucesivamente o el proceso inverso desde el código del guión “Código” donde si los 3 últimos dígitos no están en los sub segmentos, entonces el Rut no está registrado. Los índices de segmentación son la base de la estructura de Hashing. Criterios para usar índices: La relación [Volumen, Tipo de Acceso, Cantidad de acceso]. El tipo de acceso (off-line u on-line, interfas de conexión, etc.). El acceso tiene que ver con la frecuencia con que se producen lecturas y escrituras de registros. Los índices ocupan más cantidad de memoria.

-

-

Ver amplitud, profundidad y balance de los árboles e índices. Para menos de 100 registros es mejor el acceso secuencial.

Determinismo o No Determinismo Determinista => Tiempo de Acceso Determinado El título depende del tipo de acceso que se pueda realizar sobre un archivo. El acceso a un archivo secuencial como los de un archivo de texto plano es No Determinista (Probabilístico), ya que el tiempo de acceso depende del tamaño en bytes del archivo (sin mencionar si está o no fragmentado en disco). Por tanto, no es controlable. El acceso a un indexado es Determinista ya que por naturaleza se asigna índices y si se le crean, se le agregan segmentándose. La CPU por ejemplo, es Determinista, ya que si es de 500Mhz, los procesos se encolan y por cada ciclo de 500Mhz corta el proceso, lo apila si es necesario y a continuación ejecuta el siguiente proceso. Notas sobre algunos conceptos
Bases de datos: Son estructuras arbóreas en archivos estructurados para el almacenamiento masivo de registros. que están

TRIGGERS: Son procesos almacenados que se gatillan dado un evento y son parte de los demonios. DB Dunga: Son archivos indexados que poseen una máscara para acceder a diferentes datos de un registro. Archivo ejecutable: Son archivos en código de máquina donde la cabecera con respecto a las instrucciones manda segmentos a la memoria para que se codifiquen y ejecuten de acuerdo a la estructura generada en la cabecera del ejecutable, no en el fuente. La cabecera identifica la instrucción que debe ejecutarse porque están como registros delimitados por marcadores. Archivo: Todo archivo si o si pasa por la memoria. Los ejecutables en forma directa; y otros como las DB en forma indirecta, por esto es que crean archivos temporales. Motor Transaccional: Es un programa demonio en forma de TRS como archivo fantasma, invisible e inaccesible. Se crean y optimizan para el manejo de grandes bases de datos, no se deben caer, deben ser autónomos y deben tomar decisiones según los eventos que se produzcan.

Protocolos: Son canales libres de comunicación. La mayoría es del tipo Full Duplex, por ejemplo, entre Linux y Windows está el Administrador Samba. Samba: Es un administrador de archivos que trabaja de forma transparente entre Windows y Linux como si estuvieran los dos sistemas montados al mismo tiempo. Máscara: Es la forma en que se acceden a los registros de una base de datos indexada, como una determinada Representación Posicional o Ítems de Campo, de parámetros estáticos (fijos). Caché: Memoria volátil pequeña y rápida que interviene en los procesos de paginación y segmentación. File System: Indica como están almacenados los archivos sean o no secuenciales, atributos disponibles, tamaño de unidades de asignación, métodos de ajuste para la escritura de archivos, etc.

Sign up to vote on this title
UsefulNot useful