X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/aa4f458f1938cfb39be5523a24a8349dcb050108..ee98a67093a8f8d008ae7781590c993d341ce642:/doc/informe.lyx diff --git a/doc/informe.lyx b/doc/informe.lyx index 8f32d42..f25411c 100644 --- a/doc/informe.lyx +++ b/doc/informe.lyx @@ -40,14 +40,6 @@ Alan Kennedy Leandro Lucarella \newline Ricardo Markiewicz -\layout Standard - - -\begin_inset LatexCommand \tableofcontents{} - -\end_inset - - \layout Chapter Introducción @@ -57,12 +49,18 @@ Estructura com \layout Section Tipos -\layout Subsection - - -\begin_inset LatexCommand \label{sub:EMUFS} +\layout Standard -\end_inset +Se detallan a continuación los tipos de datos definidos y utilizados en + las distintas implementaciones que conforman nuestro sistema, siendo el + más importante de ellos, la estructura +\family typewriter +EMUFS +\family default + que actúa como interfaz común para el manejo de cualquier tipo de archivo + (no importa que tipo de organización física posea un archivo, esta estructura + prooverá una interfaz (funciones) para su manejo). +\layout Subsection EMUFS \layout Standard @@ -76,121 +74,116 @@ EMUFS \emph default es la estuctura principal que encapsula todas las funciones para el manejo de un archivo de datos. + Posee punteros a funciones que dependiendo de la organización fisica por + la cual se opte dentro del sistema, serán asignados de acorde. + \layout Standard -Esta estructura consta de: -\layout Enumerate +Su declaración puede ser observada en el archivo +\series bold +emufs.h +\series default +y la misma cuenta con los siguiente campos: +\layout Itemize \family typewriter EMUFS_Tipo \family default que es un tipo enumerado que indica cual es la organización. -\layout Enumerate +\layout Itemize \family typewriter EMUFS_BLOCK_SIZE \family default - indica el tamaño del bloque para los tipos de archivo con bloques (ver - capítulos -\begin_inset LatexCommand \ref{cha:tipo1} - -\end_inset - - y -\begin_inset LatexCommand \ref{cha:tipo3} - -\end_inset - -). -\layout Enumerate + indica el tamaño del bloque para los tipos 1 y 3. +\layout Itemize \family typewriter EMUFS_REG_SIZE \family default - indica el tamaño del registro, para el tipo de archivo con tamaño de registro - parametrizado (ver capítulo -\begin_inset LatexCommand \ref{cha:tipo3} - -\end_inset - -). -\layout Enumerate + indica el tamaño del registro, para el tipo 3 que posee tamaño constante. +\layout Itemize \family typewriter -void* *leer_bloque() +void **leer_bloque() \family default puntero a la función para leer un bloque. -\layout Enumerate +\layout Itemize \family typewriter void *leer_bloque_raw() \family default puntero a la función para leer un bloque, el anterior y el siguiente. -\layout Enumerate +\layout Itemize \family typewriter -void* *leer_registro() +void **leer_registro() \family default puntero a la función para leer un registro. -\layout Enumerate +\layout Itemize \family typewriter -void* *leer_registro_raw() +void **leer_registro_raw() \family default puntero a la función para leer un registro con su encabezado. -\layout Enumerate +\layout Itemize \family typewriter EMUFS_REG_ID *grabar_registro() \family default puntero a la función para grabar un registro. -\layout Enumerate +\layout Itemize \family typewriter EMUFS_REG_ID *modificar_registro() \family default puntero a la función para modificar un registro. -\layout Enumerate +\layout Itemize \family typewriter int *borrar_registro() \family default puntero a la función para borrar un registro. -\layout Enumerate +\layout Itemize \family typewriter EMUFS_Estadisticas *leer_estadisticas() \family default puntero a la función para cargar una estructura con las estadísticas. -\layout Enumerate +\layout Itemize \family typewriter void *compactar() \family default puntero a la función para compactar un archivo. -\layout Enumerate +\layout Itemize \family typewriter -char* nombre +char *nombre \family default almacena el nombre del archivo sin extensión. \layout Standard Esta estructura define los valores de sus punteros según el tipo de organización - que se desee manejar. + que se desee manejar y esto se realiza a través del API emufs, implementado + en +\series bold +emufs.c +\series default +, que se describirá posteriormente. \layout Standard Por ejemplo si se desea crear un archivo de nombre @@ -244,15 +237,226 @@ emufs_tipo3_leer_bloque() \layout Subsection EMUFS_Tipo +\layout Standard + + +\family typewriter +EMUFS_Tipo +\family default + es un tipo de dato enum, el cual será utilizado en la cabecera de todo + archivo de datos ( +\series bold +.dat +\series default +), para indicar los distintos tipos de organización física. + Su declaración puede verse en el archivo +\series bold +emufs.h. +\layout Standard + +A saberse los valores y significado correspondiente que puede tomar este + tipo de dato son: +\layout Enumerate + +Archivos con registros de longitud variable y bloques parametrizables. +\layout Enumerate + +Archivos con registros de longitud variable sin bloques. +\layout Enumerate + +Archivos con registros de longitud fija y bloques parametrizables. \layout Subsection EMUFS_Estadisticas +\layout Standard + + +\family typewriter +EMUFS_Estadisticas +\family default + es una estructura que almacenará los datos pertinentes a las estadísticas + de un archivo dado, y será utilizada para visualizar dichas observaciones + a través de la GUI. +\layout Standard + +Su declaración puede ser observada en el archivo +\series bold +emufs.h +\series default +y la misma cuenta con los siguiente campos: +\layout Itemize + + +\family typewriter +unsigned long +\family default + tam_archivo: 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. +\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. +\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) +\layout Itemize + + +\family typewriter +unsigned long +\family default + total_fs: 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). +\layout Itemize + + +\family typewriter +unsigned long +\family default + min_fs: idem pero mínimo. +\layout Itemize + + +\family typewriter +unsigned long +\family default + cant_bloques: cantidad de bloques en el archivo de datos (. +\series bold +dat +\series default +) +\layout Itemize + + +\family typewriter +unsigned long +\family default + cant_registros: cantidad de registros en el archivo de datos ( +\series bold +.dat +\series default +) +\layout Standard + +En base a la estructura descripta anteriormente y mediante la utilización + de la función +\family typewriter +emufs_leer_estadisticas() +\family default + disponible en la estructura común +\family typewriter +EMUFS +\family default + handler de cualquier tipo de archivo, podremos obtener una serie de estadística +s que pasamos a detallar (más alla de los datos básicos como cant registros, + cant bloques, tam archivo, etc): +\layout Itemize + + +\emph on +Relación entre espacio libre y el tamaño del archivo de datos ( +\series bold +.dat +\series default +) +\layout Itemize + +Relación entre el espacio ocupado por información de control y el tamaño + del archivo de datos ( +\series bold +.dat +\series default +) +\layout Itemize + +Cantidad promedio de espacio libre (en bloque o gap promedio) +\layout Itemize + +Desviaciones extremas de espacio libre (máximo/mínimo espacio libre en bloque + o mayor/menor gap) \layout Subsection -EMUFS_BLOCK_ID +Tipos Comunes \layout Standard -etc +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 hayados en el archivo + +\series bold +emufs.h +\series default +: +\layout Itemize + +typedef +\family typewriter +unsigned long EMUFS_REG_ID +\family default +: usado para representar un +\emph on +Id +\emph default + de un registro. +\layout Itemize + +typdef +\family typewriter +unsigned long EMUFS_REG_SIZE +\family default +: usado para representar el tamaño en bytes de un registro. +\layout Itemize + +typedef +\family typewriter +unsigned long EMUFS_BLOCK_ID +\family default +: usado para representar un número de bloque. +\layout Itemize + +typdef +\family typewriter +unsigned long EMUFS_BLOCK_SIZE +\family default +: usado para representar el tamaño en bytes de un bloque. +\layout Itemize + +typedef +\family typewriter +unsigned long EMUFS_FREE +\family default +: usado para representar espacio libre en bytes. +\layout Itemize + +typedef +\family typewriter +unsigned long EMUFS_OFFSET +\family default +: usado para representar un offset. \layout Section