X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/89b4b53a904b13f4148decac07226be7017a76a2..baf79a90e2addd39a342fcb910bbfdb6ee6623cf:/doc/informe.lyx diff --git a/doc/informe.lyx b/doc/informe.lyx index 646add8..ab091fa 100644 --- a/doc/informe.lyx +++ b/doc/informe.lyx @@ -43,6 +43,53 @@ Ricardo Markiewicz \layout Chapter Introducción +\layout Standard + +Esta es la documentación correspondiente a las API`s para el manejo de tres + organizaciones de archivo diferentes. + A continuación se describe cada una de ellas y su modo de funcionamiento + y sus características principales. + De la correcta elección de la organización, dependerá la eficiencia de + la aplicación que la utilice. + +\layout Standard + +EMUFS se presenta como un +\emph on +emulador +\emph default + de un +\emph on +filesystem +\emph default +, capaz de administrar datos almacenados en cualquiera de las tres organizacione +s de archivo previamente mencionadas, las cuales a saberse son: +\layout Enumerate + +Registros de Longitud Variable, Bloques de tamaño parametrizable +\layout Enumerate + +Registros de Longitud Variable, Sin Bloques +\layout Enumerate + +Registros de Longitud Fija, Bloques de tamaño parametrizables +\layout Standard + +A través de este trabajo, se podrán observar las diferencias entre distintos + tipos de organización de archivos, ventajas y desventajas de cada una de + ellas, y las situaciones particulares que deberá sortear un filesystem, + como la partición de registros en distintos bloques, manejo de espacio + libre, compactación de un archivo, etc. +\layout Standard + +A continuación, veremos que el manejo de los archivos en EMUFS se realiza + a través de una estructura de control comun para cualquier tipo de archivo, + dandole flexibilidad y escalabilidad a nuestro sistema. +\layout Standard + +Hacia el final de esta presentación, se observaran las pruebas realizadas + con las distintas organizaciones de archivos, y las conclusiones obtenidos + al respecto. \layout Chapter Estructura común @@ -62,6 +109,73 @@ EMUFS prooverá una interfaz (funciones) para su manejo). \layout Subsection +Tipos Comunes +\layout Standard + +En la implementación de cada tipo de organización física, así como tambien + en las API de los archivos auxiliares comunes a ellas, se da la utilización + de tipo definidos para una clara interfaz entre las mismas, los cuales + son brevemente descriptos a continuación y pueden ser hallados en el archivo + +\series bold +emufs.h +\series default +: +\layout Itemize + + +\family typewriter +EMUFS_REG_ID +\family default +: usado para representar un +\emph on +Id +\emph default + de un registro. +\layout Itemize + + +\family typewriter +EMUFS_REG_SIZE +\family default +: usado para representar el tamaño en bytes de un registro. +\layout Itemize + + +\family typewriter +EMUFS_BLOCK_ID +\family default +: usado para representar un número de bloque. +\layout Itemize + + +\family typewriter +EMUFS_BLOCK_SIZE +\family default +: usado para representar el tamaño en bytes de un bloque. +\layout Itemize + + +\family typewriter +EMUFS_FREE +\family default +: usado para representar espacio libre en bytes. +\layout Itemize + + +\family typewriter +EMUFS_OFFSET +\family default +: usado para representar un offset. +\layout Standard + +Todos son del tipo +\family typewriter +unsigned long +\family default +. +\layout Subsection + EMUFS \layout Standard @@ -304,60 +418,91 @@ y la misma cuenta con los siguiente campos: \family typewriter unsigned long \family default - tam_archivo: indica el tamaño del archivo de datos (.dat) en bytes. + +\family typewriter +tam_archivo +\family default +: indica el tamaño del archivo de datos (.dat) en bytes. \layout Itemize \family typewriter unsigned long \family default - tam_archivos_aux: indica el tamaño de los archivos auxiliares sumados en - bytes. + +\family typewriter +tam_archivos_aux +\family default +: indica el tamaño de los archivos auxiliares sumados en bytes. \layout Itemize \family typewriter unsigned long \family default - tam_info_control_dat: indica la cantidad de bytes en información de control - utilizados para el archivo. + +\family typewriter +tam_info_control_dat +\family default +: indica la cantidad de bytes en información de control utilizados para + el archivo. \layout Itemize \family typewriter unsigned long \family default - media_fs: promedio de espacio libre en el archivo de datos (por bloque - o gap promedio segun la org) + +\family typewriter +media_fs +\family default +: promedio de espacio libre en el archivo de datos (por bloque o gap promedio + segun la org) \layout Itemize \family typewriter unsigned long \family default - total_fs: total de espacio libre en el archivo de datos. + +\family typewriter +total_fs +\family default +: total de espacio libre en el archivo de datos. \layout Itemize \family typewriter unsigned long \family default - max_fs: máximo espacio libre en el archivo de datos (en un bloque o máximo - gap segun la org). + +\family typewriter +max_fs +\family default +: máximo espacio libre en el archivo de datos (en un bloque o máximo gap + segun la org). \layout Itemize \family typewriter unsigned long \family default - min_fs: idem pero mínimo. + +\family typewriter +min_fs +\family default +: idem pero mínimo. \layout Itemize \family typewriter unsigned long \family default - cant_bloques: cantidad de bloques en el archivo de datos (. + +\family typewriter +cant_bloques +\family default +: cantidad de bloques en el archivo de datos (. \series bold dat \series default @@ -368,7 +513,11 @@ dat \family typewriter unsigned long \family default - cant_registros: cantidad de registros en el archivo de datos ( + +\family typewriter +cant_registros +\family default +: cantidad de registros en el archivo de datos ( \series bold .dat \series default @@ -409,73 +558,6 @@ Cantidad promedio de espacio libre (en bloque o gap promedio) Desviaciones extremas de espacio libre (máximo/mínimo espacio libre en bloque o mayor/menor gap) -\layout Subsection - -Tipos Comunes -\layout Standard - -En la implementación de cada tipo de organización física, así como tambien - en las API de los archivos auxiliares comunes a ellas, se da la utilización - de tipo definidos para una clara interfaz entre las mismas, los cuales - son brevemente descriptos a continuación y pueden ser hallados en el archivo - -\series bold -emufs.h -\series default -: -\layout Itemize - - -\family typewriter -EMUFS_REG_ID -\family default -: usado para representar un -\emph on -Id -\emph default - de un registro. -\layout Itemize - - -\family typewriter -EMUFS_REG_SIZE -\family default -: usado para representar el tamaño en bytes de un registro. -\layout Itemize - - -\family typewriter -EMUFS_BLOCK_ID -\family default -: usado para representar un número de bloque. -\layout Itemize - - -\family typewriter -EMUFS_BLOCK_SIZE -\family default -: usado para representar el tamaño en bytes de un bloque. -\layout Itemize - - -\family typewriter -EMUFS_FREE -\family default -: usado para representar espacio libre en bytes. -\layout Itemize - - -\family typewriter -EMUFS_OFFSET -\family default -: usado para representar un offset. -\layout Standard - -Todos son del tipo -\family typewriter -unsigned long -\family default -. \layout Section @@ -781,12 +863,6 @@ EMUFS_IDX ): \layout LyX-Code -typedef unsigned long EMUFS_REG_ID; -\layout LyX-Code - -typedef unsigned long EMUFS_OFFSET; -\layout LyX-Code - typedef struct emufs_idx_t { \layout LyX-Code @@ -1050,9 +1126,13 @@ emufs_idx_agregar() Baja: \series default Ante el borrado de un registro del archivo de datos, se accederá el registro - correspondiente en el índice, y se actualizara su LOCATION, estableciendolo - en el valor -1 UL, el cual indica que ese registro ha sido eliminado y - por ende no se lo podrá localizar en el futuro. + correspondiente en el índice, y se actualizara su LOCATION, estableciendolo + en el valor especial +\family typewriter +EMUFS_NOT_FOUND +\family default +, el cual indica que ese registro ha sido eliminado y por ende no se lo + podrá localizar en el futuro. Como se verá mas adelante, según el tipo de organización física, el registro puede ser borrado concretamente del . \series bold @@ -1137,10 +1217,10 @@ EMUFS_FSC typedef struct emufs_fsc_t { \layout LyX-Code - unsigned long int marker; + EMUFS_BLOCK_ID marker; \layout LyX-Code - unsigned long int freespace; + EMUFS_FREE freespace; \layout LyX-Code } EMUFS_FSC; @@ -3413,6 +3493,29 @@ Luego de grabar un registro, actualiza los archivos de para mantener la coherencia. \layout Standard +Cuando nos encontramos con registros multibloque, se calcula cuantos bloques + ocupará el registro de la siguiente manera: +\family typewriter +Cantidad de Bloques = 1 + Tamaño del Registro/(Tamaño del Bloque-Sizeof(EMUFS_RE +G_ID) +\layout Standard + +Esta ecuación solo falla en el caso que el tamaño del registro y el tamaño + del bloque sean iguales, en tal caso, se coloca el valor 1 en +\family typewriter +Cantidad de Bloques +\family default + post verificación. +\layout Standard + +Y con esta información se realiza un ciclo +\family typewriter +for +\family default + que grabará tantas veces como sea necesario levantando y grabando los bloques + que correspondan. +\layout Standard + Ver: \family typewriter emufs_tipo3_grabar_registro() @@ -3437,6 +3540,11 @@ Cabe destacar que para dar de baja un registro no hace falta borrarlo del ser así, si no se realizara el mismo. \layout Standard +En el caso de los registros multibloque, se eliminará la porción del registro + contenida en el primer bloque y se actualizarán de manera conveniente los + archivos índice, para restaurarlos a un valor verdadero. +\layout Standard + Ver: \family typewriter emufs_tipo3_borrar_registro()