]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - doc/informe.lyx
* Ahroa tambien anda el buscar por ID de registro en Ver Registro.
[z.facultad/75.06/emufs.git] / doc / informe.lyx
index b7619bd4a44548b020b5449ed65aab44cee6062d..b568fdc4341a13942f27bcf403022e9fe33ead83 100644 (file)
@@ -54,7 +54,32 @@ Tipos
 EMUFS
 \layout Standard
 
-callbacks, etc
+
+\emph on 
+EMUFS 
+\emph default 
+es la estuctura principal que encapsula todas las funciones para el manejo
+ de un archivo de datos.
+\layout Standard
+
+Esta estructura consta de:
+\layout Enumerate
+
+EMUFS_Tipo que es un tipo enumerado que indica cual es la organización.
+\layout Enumerate
+
+EMUFS_BLOCK_SIZE indica el tamaño del bloque para los tipos 1 y 3.
+\layout Enumerate
+
+EMUFS_REG_SIZE indica el tamaño del registro, para el tipo 3 que posee tamaño
+ constante.
+\layout Enumerate
+
+void *leer_bloque()
+\layout Comment
+
+no me convence esta descripcion.
 \layout Subsection
 
 EMUFS_Tipo
@@ -70,7 +95,7 @@ etc
 \layout Chapter
 
 Archivos Auxiliares
-\layout Standard
+\layout Comment
 
 Por que los 3 tipos usan los mismo.
  Ventajas y desventajas.
@@ -79,19 +104,86 @@ Por que los 3 tipos usan los mismo.
 Archivo de índice (.idx)
 \layout Standard
 
-introduccion
+Con la ayuda de un archivo de bloques y registros (de extensión .idx), podremos
+ ubicar cualquier registro existente dentro del archivo.
+\layout Standard
+
+El archivo de índice contiene una estructura que contiene el id de un registro
+ y el número de bloque al que pertenece.
+ Este archivo esta ordenado por 
+\emph on 
+id
+\emph default 
+, de modo que incrementa su tamaño cada vez que se grabe en el archivo de
+ datos un nuevo registro, excepto que un registro haya sido borrado con
+ anterioridad lo cual produce que al guardar un nuevo registro se actualice
+ y no crezca.
+\layout Standard
+
+Si un registro es borrado del archivo de datos, debe actualizarse el índice,
+ esto se logra colocando un flag que indique que el id no pertenece a ningún
+ bloque, hemos adoptado poner -1 en el campo location de la estructura 
+\emph on 
+EMUFS_IDX
+\emph default 
+.
+\layout Standard
+
+Es necesario que este archivo esté ordenado por 
+\emph on 
+id
+\emph default 
+ de registro, ya que esto permitirá el acceso directo para la búsqueda de
+ un registro en el archivo de datos.
 \layout Subsection
 
 Estructura física
+\layout Standard
+
+El tipo EMUFS_IDX define la estuctura de los registros de este archivo.
+\layout Standard
+
+Esta estructura está compuesta por don enteros (long).
+\layout Itemize
+
+EMUFS_REG_ID reg_id indica el 
+\emph on 
+id
+\emph default 
+ del registro
+\layout Itemize
+
+EMUFS_BLOCK_ID location número de bloque donde se encuentra el registro.
+\layout Standard
+
+EMUFS_REG_ID y EMUFS_BLOCK_ID son 
+\emph on 
+unsigned long.
+\layout Comment
+
+ponerlo mas lindo...
 \layout Subsection
 
 Comportamiento (funciones generales)
 \layout Section
 
 Archivo de control de espacio libre (.fsc)
+\layout Subsection
+
+Estructura Física
 \layout Standard
 
-idem anterior
+La estuctura que define este archivo es la siguiente:
+\layout Standard
+
+EMUFS_FSC que contiene
+\layout Itemize
+
+EMUFS_BLOCK_ID indica el número de bloque
+\layout Itemize
+
+EMUFS_FREE freespace indica la cantidad de espacio libre que queda en el
+ bloque.
 \layout Section
 
 Archivo de índices recuperables (.did)
@@ -156,33 +248,13 @@ As
  del archivo.
 \layout Subsection
 
-Archivos Auxiliares
+Comportamiento Particular de los Archivos Auxiliares
 \layout Subsubsection
 
 Archivo de Bloques y Registros (.idx)
-\layout Standard
-
-Con la ayuda de un archivo de bloques y registros (de extensión .idx), podremos
- ubicar cualquier registro existente dentro del archivo.
-\layout Standard
-
-El archivo de índice contiene una estructura que contiene el id de un registro
- y el número de bloque al que pertenece.
- Este archivo esta ordenado por id, de modo que incrementa su tamaño cada
- vez que se grabe en el archivo de datos un nuevo registro, excepto que
- un registro haya sido borrado con anterioridad lo cual produce que al guardar
- un nuevo registro se actualice y no crezca.
-\layout Standard
-
-Si un registro es borrado del archivo de datos, debe actualizarse el índice,
- esto se logra colocando un flag que indique que el id no pertenece a ningún
- bloque, hemos adoptado poner -1 en el campo location de la estructura EMUFS_IDX.
-\layout Standard
+\layout Comment
 
-Es necesario que este archivo esté ordenado por id de registro, ya que esto
- permitirá el acceso directo para la búsqueda de un registro en el archivo
- de datos.
+buscar algun caso extraordinario.
 \layout Subsubsection
 
 Archivo de Bloques y Espacio Libre (.fsc)
@@ -198,10 +270,20 @@ La estructura de este archivo est
 \layout Standard
 
 De esta manera al querer guardar un registro este archivo informará donde
- cabe el mismo, previa invocación al la función EMUFS_BLOCK_ID emufs_fsc_buscar_
-lugar(EMUFS *, EMUFS_FREE, EMUFS_FREE*) perteneciente a fsc.h, la cual devuelve
- el número de bloque donde entra el registro o -1 si no hay un bloque con
- lugar suficiente, y toma como parámetros una estructura EMUFS, y dos EMUFS_FREE
+ cabe el mismo, previa invocación al la función 
+\emph on 
+EMUFS_BLOCK_ID emufs_fsc_buscar_lugar(EMUFS *, EMUFS_FREE, EMUFS_FREE*)
+\emph default 
+ perteneciente a fsc.h, la cual devuelve el número de bloque donde entra
+ el registro o -1 si no hay un bloque con lugar suficiente, y toma como
+ parámetros una estructura 
+\emph on 
+EMUFS
+\emph default 
+, y dos 
+\emph on 
+EMUFS_FREE
+\emph default 
  donde el segndo parámetro es el tamaño buscado, y el tercero devuelve el
  tamaño disponible.
 \layout Standard
@@ -238,103 +320,86 @@ tipo3.c
  respectivamente, las cuales dan funcionalidad a esta organización.
 \layout Standard
 
-A continuación se comentará el funcionamiento algunas de las mas importantes.
+A continuación se comentará la descripción de algunas acciones importantes.
 \layout Subsubsection
 
-void* emufs_tipo3_leer_registro(EMUFS *emu, EMUFS_REG_ID ID, EMUFS_REG_SIZE*
- reg_size, int* err)
+Leer Registro
 \layout Standard
 
-Devuelve un puntero con la memoria reservada que contiene al registro solicitado
- por el segundo parámetro ( 
+La lectura de un registro se realiza con la ayuda del archivo .
 \emph on 
-ID
+idx
 \emph default 
- ), y almacena en 
+ el cual contiene la información de la posición del registro dentro del
+ archivo de datos.
+ Una vez leida esta información, se recupera el bloque (en su totalidad)
+ del archivo y se busca secuencialmente el registro con el 
 \emph on 
-reg_size 
+ID
 \emph default 
-el tamaño del registro leido, que en este caso no es necesario pues es constante
- y es conocicdo de antemano.
+ especificado.
 \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*
- err)
-\layout Standard
-
-Devuelve un puntero con la memoria reservada que contiene el bloque solicitado
- por el segundo parámetro ( 
 \emph on 
-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.
+ver: void* emufs_tipo3_leer_registro(EMUFS *emu, EMUFS_REG_ID ID, EMUFS_REG_SIZE
+* reg_size, int* err)
 \layout Subsubsection
 
-EMUFS_REG_ID emufs_tipo3_grabar_registro(EMUFS *emu, void *ptr, EMUFS_REG_SIZE
- tam, int* err)
+Grabar Registro
 \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 
- ).
+Luego de grabar un registro, actualiza los archivos de índice .idx y .fsc
+ para mantener la coherencia.
 \layout Standard
 
-Luego de realizar la grabación, actualiza los archivos índice con los valores
- correspondientes.
+
+\emph on 
+ver: EMUFS_REG_ID emufs_tipo3_grabar_registro(EMUFS *emu, void *ptr, EMUFS_REG_S
+IZE tam, int* err)
 \layout Subsubsection
 
-int emufs_tipo3_borrar_registro(EMUFS *emu, EMUFS_REG_ID ID)
+Borrar Registro
 \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.
+Borra un registro del archivo de datos, para esto levanta el bloque al que
+ pertenece el archivo y ajusta los demás registros justificandolos hacia
+ la izquierda.
 \layout Standard
 
-Al borrar un registro, justifica los demás registros del bloque hacia la
- izquierda.
+Cabe destacar que para dar de baja un registro no hace falta borrarlo del
+ archivo de datos, solo es necesario borrar las entradas en los archivos
+ de índice.
 \layout Subsubsection
 
-EMUFS_Estadisticas emufs_tipo3_leer_estadisticas(EMUFS *emu)
+Leer Estadísticas
+\layout Standard
+
+Se puede tener acceso a las estadísticas generales del archivo, por ejemplo,
+ cantidad de bloques, cantidad de registros, espacio libre total, espacio
+ libre promedio, espacio libre máximo y mínimo, etc.
+\layout Standard
+
+Esta información es el resultado de ciertos cálculos realizados tanto en
+ el archivo de datos como en los archivos índice.
 \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 Standard
+
+
+\emph on 
+ver: EMUFS_Estadisticas emufs_tipo3_leer_estadisticas(EMUFS *emu)
 \layout Subsubsection
 
-void emufs_tipo3_compactar(EMUFS *emu)
+Compactar el Archivo
 \layout Standard
 
 Esta función intenta reorganizar el archivo de manera que el espacio libre
@@ -365,6 +430,11 @@ Al finalizar este proceso se verifica si existen bloques vacios para truncar
 fsc 
 \emph default 
 el cual disminuye su tamaño también.
+\layout Standard
+
+
+\emph on 
+ver: void emufs_tipo3_compactar(EMUFS *emu)
 \layout Section
 
 Consideraciones y Políticas de Diseño