1 #LyX 1.3 created this file. For more info see http://www.lyx.org/
14 \use_numerical_citations 0
15 \paperorientation portrait
18 \paragraph_separation indent
20 \quotes_language english
24 \paperpagestyle default
31 Organización de Archivos con Bloques Parametrizados y Registros de Tamaño
38 Las distintas organizaciones de archivos buscan aprovechar al máximo el
42 En este caso veremos que sucede luego de agregar y borrar una gran cantidad
43 de registros del archivo, lo que provoca como consecuencia directa la fragmenta
44 ción del archivo, es decir, quedan huecos entre un registro y otro, lo que
45 produce un desperdicio de espacio.
51 Esta organización guarda los registros pertenecientes al archivo en bloques
52 de tamaño parametrizado, de modo que intentará guardar la mayor cantidad
53 de registros que quepan en un bloque.
57 Así como los graba, también tendrá la posibilidad de leer registros y borrarlos
64 Archivo de Bloques y Registros (.IDX)
67 Con la ayuda de un archivo de bloques y registros (de extensión .idx), podremos
68 ubicar cualquier registro existente dentro del archivo.
72 El archivo de índice contiene una estructura que contiene el id de un registro
73 y el número de bloque al que pertenece.
74 Este archivo esta ordenado por id, de modo que incrementa su tamaño cada
75 vez que se grabe en el archivo de datos un nuevo registro, excepto que
76 un registro haya sido borrado con anterioridad lo cual produce que al guardar
77 un nuevo registro se actualice y no crezca.
80 Si un registro es borrado del archivo de datos, debe actualizarse el índice,
81 esto se logra colocando un flag que indique que el id no pertenece a ningún
82 bloque, hemos adoptado poner -1 en el campo location de la estructura EMUFS_IDX.
85 Es necesario que este archivo esté ordenado por id de registro, ya que esto
86 permitirá el acceso directo para la búsqueda de un registro en el archivo
90 Archivo de Bloques y Espacio Libre (.FSC)
93 El archivo de de espacios libres permite decidir a la hora de guardar un
94 registro, donde será guardado.
98 La estructura de este archivo está formada por un número que indica el bloque
99 y otro que indica el espacio libre en él.
102 De esta manera al querer guardar un registro este archivo informará donde
103 cabe el mismo, previa invocación al la función EMUFS_BLOCK_ID emufs_fsc_buscar_
104 lugar(EMUFS *, EMUFS_FREE, EMUFS_FREE*) perteneciente a fsc.h, la cual devuelve
105 el número de bloque donde entra el registro o -1 si no hay un bloque con
106 lugar suficiente, y toma como parámetros una estructura EMUFS, y dos EMUFS_FREE
107 donde el segndo parámetro es el tamaño buscado, y el tercero devuelve el
111 De la misma manera, al borrar un registro este archivo debe ser actualizado
112 colocando el nuevo espacio libre en el bloque.
113 \layout Subsubsection
115 Archivo de Id`s Borrados (.DID)
118 Este archivo funciona como una pila de id`s borrados, es decir, cuando se
119 borra un registro el id se almacena en este archivo y será recuperado cuando
120 se desee grabar un registro nuevo, de esta manera se aprovechan todos los
121 id`s sin necesidad de crear uno nuevo cada vez que se borra y graba un
125 Funciones Principales
139 se encuentran las cabeceras y la implementación de las funciones principalesde
140 respectivamente, las cuales dan funcionalidad a esta organización.
143 A continuación se comentara el funcionamiento de cada una de ellas.
144 \layout Subsubsection
146 void* emufs_tipo3_leer_registro(EMUFS *emu, EMUFS_REG_ID ID, EMUFS_REG_SIZE*
150 Devuelve un puntero con la memoria reservada que contiene al registro solicitado
151 por el segundo parámetro (
159 el tamaño del registro leido, que en este caso no es necesario pues es constante
160 y es conocicdo de antemano.
161 \layout Subsubsection
163 void* emufs_tipo3_leer_bloque(EMUFS *emu, EMUFS_BLOCK_ID num_bloque, int*
167 Devuelve un puntero con la memoria reservada que contiene el bloque solicitado
168 por el segundo parámetro (