Leandro Lucarella
\newline
Ricardo Markiewicz
-\layout Standard
-
-
-\begin_inset LatexCommand \tableofcontents{}
-
-\end_inset
-
-
\layout Chapter
Introducción
\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
\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
\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