]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - doc/informe.lyx
cambio los tipos de EMUFS_FSC y agrego doxycomentarios en tipo3.h
[z.facultad/75.06/emufs.git] / doc / informe.lyx
index b7619bd4a44548b020b5449ed65aab44cee6062d..b568fdc4341a13942f27bcf403022e9fe33ead83 100644 (file)
@@ -54,7 +54,32 @@ Tipos
 EMUFS
 \layout Standard
 
 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
 \layout Subsection
 
 EMUFS_Tipo
@@ -70,7 +95,7 @@ etc
 \layout Chapter
 
 Archivos Auxiliares
 \layout Chapter
 
 Archivos Auxiliares
-\layout Standard
+\layout Comment
 
 Por que los 3 tipos usan los mismo.
  Ventajas y desventajas.
 
 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
 
 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 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
 
 Comportamiento (funciones generales)
 \layout Section
 
 Archivo de control de espacio libre (.fsc)
+\layout Subsection
+
+Estructura Física
 \layout Standard
 
 \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)
 \layout Section
 
 Archivo de índices recuperables (.did)
@@ -156,33 +248,13 @@ As
  del archivo.
 \layout Subsection
 
  del archivo.
 \layout Subsection
 
-Archivos Auxiliares
+Comportamiento Particular de los Archivos Auxiliares
 \layout Subsubsection
 
 Archivo de Bloques y Registros (.idx)
 \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)
 \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
 \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
  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
 
  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
 
 \layout Subsubsection
 
-void* emufs_tipo3_leer_registro(EMUFS *emu, EMUFS_REG_ID ID, EMUFS_REG_SIZE*
- reg_size, int* err)
+Leer Registro
 \layout Standard
 
 \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 
 \emph on 
-ID
+idx
 \emph default 
 \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 
 \emph on 
-reg_size 
+ID
 \emph default 
 \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
 
 \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 
 \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
 
 \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
 
 \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
 
 \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
 
 \layout Subsubsection
 
-int emufs_tipo3_borrar_registro(EMUFS *emu, EMUFS_REG_ID ID)
+Borrar Registro
 \layout Standard
 
 \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
 
 \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
 
 \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
 
 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
 
 \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
 \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.
 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
 \layout Section
 
 Consideraciones y Políticas de Diseño