From e1fab33ce93839873b8c0b4fbad356e8ea6e384d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicol=C3=A1s=20Dimov?= Date: Sun, 18 Apr 2004 05:01:16 +0000 Subject: [PATCH] escribi un poco mas, pero sigo pensado que mucho de lo que puse puede ser redundante... espero opiniones --- doc/doc_t3/tipo3_doc.lyx | 93 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 89 insertions(+), 4 deletions(-) diff --git a/doc/doc_t3/tipo3_doc.lyx b/doc/doc_t3/tipo3_doc.lyx index 784c856..c40b9e6 100644 --- a/doc/doc_t3/tipo3_doc.lyx +++ b/doc/doc_t3/tipo3_doc.lyx @@ -136,11 +136,11 @@ tipo3.h \emph on tipo3.c \emph default - se encuentran las cabeceras y la implementación de las funciones principalesde + se encuentran las cabeceras y la implementación de las funciones principales respectivamente, las cuales dan funcionalidad a esta organización. \layout Standard -A continuación se comentara el funcionamiento de cada una de ellas. +A continuación se comentará el funcionamiento algunas de las mas importantes. \layout Subsubsection void* emufs_tipo3_leer_registro(EMUFS *emu, EMUFS_REG_ID ID, EMUFS_REG_SIZE* @@ -158,6 +158,13 @@ reg_size \emph default el tamaño del registro leido, que en este caso no es necesario pues es constante y es conocicdo de antemano. +\layout Standard + +Para realizar esta acción, busca en el archivo +\emph on +.idx +\emph default +el bloque al cual pertenece el registro. \layout Subsubsection void* emufs_tipo3_leer_bloque(EMUFS *emu, EMUFS_BLOCK_ID num_bloque, int* @@ -171,6 +178,86 @@ num_bloque \emph default ). +\layout Standard + +Como la numeración de los bloques es +\emph on +virtual, +\emph default +el acceso al archivo para levantar un bloque es directo, es decir, se posiciona + directamente en en número de bloque multiplicado por el tamaño del mismo, + salteando antes el encabezado del archivo. +\layout Subsubsection + +EMUFS_REG_ID emufs_tipo3_grabar_registro(EMUFS *emu, void *ptr, EMUFS_REG_SIZE + tam, int* err) +\layout Standard + +Graba un registro en un bloque donde haya espacio suficiente, y si no crea + un nuevo bloque y lo agrega al final del archivo. +\layout Standard + +El registro a grabar es apuntado por el segundo parámetro ( +\emph on +ptr +\emph default +) y el tamaño viene indicado en el tercero ( +\emph on +tam +\emph default + ). +\layout Standard + +Luego de realizar la grabación, actualiza los archivos índice con los valores + correspondientes. +\layout Subsubsection + +int emufs_tipo3_borrar_registro(EMUFS *emu, EMUFS_REG_ID ID) +\layout Standard + +Borra el registro indicado por el segundo parámetro ( +\emph on +ID +\emph default + ) del archivo de datos, y actualiza los archivos de índice para mantener + la coherencia en las próximas modificaciones. +\layout Standard + +Al borrar un registro, justifica los demás registros del bloque hacia la + izquierda. +\layout Subsubsection + +EMUFS_Estadisticas emufs_tipo3_leer_estadisticas(EMUFS *emu) +\layout Standard + +Completa una estructura del tipo EMUFS_Estadisticas con las estadísticas + del archivo de datos, espacio libre total, cantidad de registros, cantidad + de bloques, tamaño del archivo en bytes, relaciones entre tamaños y espacios + libres, etc. +\layout Subsubsection + +void emufs_tipo3_compactar(EMUFS *emu) +\layout Standard + +Esta función intenta reorganizar el archivo de manera que el espacio libre + sea lo menor posible, recordando siempre que un registro no puede ser almacenad +o en mas de un bloque excepto que el tamaño del registro sea mayor que el + del bloque. +\layout Standard + +Para realizar esto, se aprovecha la funcionalidad de +\emph on +emufs_tipo3_grabar_registro() +\emph default +ya que esta tiene la capacidad de determinar una posición mas eficiente + en el archivo para un registro. + Por esto lo que se hace es levantar uno por uno los registros y volverlos + a grabar, de ese modo todos los +\emph on +gaps +\emph default +que pudieron haberse formado por la eliminación de registros serán cubiertos + por otros. \layout Subsection IDX @@ -201,6 +288,4 @@ Si el tama se guardará desde el comienzo de un bloque, esto quiere decir que nunca se podrá encontrar un comienzo de registro en algún lugar de un bloque que no sea el comienzo del mismo. -\layout Enumerate - \the_end -- 2.43.0