]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
un poco de lo general de EMUFS
authorNicolás Dimov <ndimov@gmail.com>
Mon, 19 Apr 2004 02:06:55 +0000 (02:06 +0000)
committerNicolás Dimov <ndimov@gmail.com>
Mon, 19 Apr 2004 02:06:55 +0000 (02:06 +0000)
doc/informe.lyx

index a545920e0eeefaae10e93d63c9204be223960a90..adaf45663e90b8fd25c789b7580bfbc24c286e9a 100644 (file)
@@ -55,8 +55,11 @@ EMUFS
 \layout Standard
 
 
+\family typewriter 
+EMUFS
+\family default 
 \emph on 
-EMUFS 
 \emph default 
 es la estuctura principal que encapsula todas las funciones para el manejo
  de un archivo de datos.
@@ -65,21 +68,149 @@ es la estuctura principal que encapsula todas las funciones para el manejo
 Esta estructura consta de:
 \layout Enumerate
 
-EMUFS_Tipo que es un tipo enumerado que indica cual es la organización.
+
+\family typewriter 
+EMUFS_Tipo
+\family default 
+ 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.
+
+\family typewriter 
+EMUFS_BLOCK_SIZE
+\family default 
+ 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.
+
+\family typewriter 
+EMUFS_REG_SIZE
+\family default 
+ 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.
+\family typewriter 
+void **leer_bloque() 
+\family default 
+puntero a la función para leer un bloque.
+\layout Enumerate
+
+
+\family typewriter 
+void *leer_bloque_raw()
+\family default 
+ puntero a la función para leer un bloque, el anterior y el siguiente.
+\layout Enumerate
+
+
+\family typewriter 
+void **leer_registro()
+\family default 
+ puntero a la función para leer un registro.
+\layout Enumerate
+
+
+\family typewriter 
+void **leer_registro_raw()
+\family default 
+ puntero a la función para leer un registro con su encabezado.
+\layout Enumerate
+
+
+\family typewriter 
+EMUFS_REG_ID *grabar_registro()
+\family default 
+ puntero a la función para grabar un registro.
+\layout Enumerate
+
+
+\family typewriter 
+EMUFS_REG_ID *modificar_registro() 
+\family default 
+puntero a la función para modificar un registro.
+\layout Enumerate
+
+
+\family typewriter 
+int *borrar_registro()
+\family default 
+ puntero a la función para borrar un registro.
+\layout Enumerate
+
+
+\family typewriter 
+EMUFS_Estadisticas *leer_estadisticas()
+\family default 
+ puntero a la función para cargar una estructura con las estadísticas.
+\layout Enumerate
+
+
+\family typewriter 
+void *compactar()
+\family default 
+ puntero a la función para compactar un archivo.
+\layout Enumerate
+
+
+\family typewriter 
+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.
+\layout Standard
+
+Por ejemplo si se desea crear un archivo de nombre 
+\begin_inset Quotes eld
+\end_inset 
+
+facturas
+\begin_inset Quotes erd
+\end_inset 
+
+ organizado de la forma 3, se invoca a la función 
+\family typewriter 
+EMUFS *emufs_crear(const char *filename, EMUFS_Tipo tipo,EMUFS_BLOCK_SIZE
+ tam_bloque, EMUFS_REG_SIZE tam_reg), 
+\family default 
+donde
+\family typewriter 
+ filename 
+\family default 
+es el nombre que tendrán los archivos de datos e índice, 
+\family typewriter 
+tipo
+\family default 
+ es el tipo de organización - bloques parametrizados y registros constantes
+ en este caso-, 
+\family typewriter 
+tam_bloque
+\family default 
+ es el tamaño del bloque, y 
+\family typewriter 
+tam_reg
+\family default 
+ es el tamaño del registro.
+\layout Standard
+
+Para las diferentes organizaciones puede ser que alguno de estos 2 últimos
+ valores no tengan sentido almacenarlas y tomaran un valor por defecto igual
+ a cero.
+\layout Standard
+
+Según el tipo de organización, se inicializan los punteros a las funciones.
+ Para el ejemplo 
+\family typewriter 
+leer_bloque
+\family default 
+ se igualará a 
+\family typewriter 
+emufs_tipo3_leer_bloque()
+\family default 
+, y lo mismo sucede con los demás.
 \layout Subsection
 
 EMUFS_Tipo
@@ -222,11 +353,15 @@ id
 \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 
+ esto se logra colocando un flag que indique que el 
 \emph on 
-EMUFS_IDX
+id
 \emph default 
+ no pertenece a ningún bloque, hemos adoptado poner -1 en el campo location
+ de la estructura 
+\family typewriter 
+EMUFS_IDX
+\family default 
 .
 \layout Standard
 
@@ -241,23 +376,43 @@ id
 Organización física
 \layout Standard
 
-El tipo EMUFS_IDX define la estuctura de los registros de este archivo.
+El tipo 
+\family typewriter 
+EMUFS_IDX
+\family default 
+ define la estuctura de los registros de este archivo.
 \layout Standard
 
 Esta estructura está compuesta por:
 \layout Itemize
 
-EMUFS_REG_ID reg_id indica el 
+
+\family typewriter 
+EMUFS_REG_ID
+\family default 
+ 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.
+
+\family typewriter 
+EMUFS_BLOCK_ID
+\family default 
+ location número de bloque donde se encuentra el registro.
 \layout Standard
 
-EMUFS_REG_ID y EMUFS_BLOCK_ID son 
+
+\family typewriter 
+EMUFS_REG_ID
+\family default 
+ y 
+\family typewriter 
+EMUFS_BLOCK_ID
+\family default 
+ son 
 \emph on 
 unsigned long.
 \layout Comment
@@ -287,19 +442,23 @@ La estructura de este archivo est
 
 De esta manera al querer guardar un registro este archivo informará donde
  cabe el mismo, previa invocación al la función 
-\emph on 
+\family typewriter 
 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 
+\family default 
+ perteneciente a 
 \emph on 
-EMUFS
+fsc.h,
 \emph default 
+ 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
+\family typewriter 
+EMUFS
+\family default 
 , y dos 
-\emph on 
+\family typewriter 
 EMUFS_FREE
-\emph default 
+\family default 
  donde el segndo parámetro es el tamaño buscado, y el tercero devuelve el
  tamaño disponible.
 \layout Standard
@@ -314,17 +473,36 @@ Organizaci
 La estuctura que define este archivo es la siguiente:
 \layout Standard
 
-EMUFS_FSC que contiene:
+
+\family typewriter 
+EMUFS_FSC
+\family default 
+ que contiene:
 \layout Itemize
 
-EMUFS_BLOCK_ID indica el número de bloque
+
+\family typewriter 
+EMUFS_BLOCK_ID
+\family default 
+ indica el número de bloque
 \layout Itemize
 
-EMUFS_FREE freespace indica la cantidad de espacio libre que queda en el
- bloque.
+
+\family typewriter 
+EMUFS_FREE
+\family default 
+ freespace indica la cantidad de espacio libre que queda en el bloque.
 \layout Standard
 
-EMUFS_FSC y EMUFS_FREE son 
+
+\family typewriter 
+EMUFS_FSC
+\family default 
+ y 
+\family typewriter 
+EMUFS_FREE
+\family default 
+ son 
 \emph on 
 unsiged long int
 \layout Subsection
@@ -340,8 +518,11 @@ Comportamiento
 Archivo de índices recuperables
 \layout Standard
 
-Este archivo funciona como una pila de id`s borrados, es decir, cuando se
- borra un registro el 
+Este archivo funciona como una pila de i
+\emph on 
+d`s
+\emph default 
+ borrados, es decir, cuando se borra un registro el 
 \emph on 
 id
 \emph default 
@@ -356,8 +537,11 @@ id`s
 Estructura Física
 \layout Standard
 
-Este archivo tiene registros de un solo campo, EMUFS_REG_ID el cual simboliza
- al id almacenado.
+Este archivo tiene registros de un solo campo, 
+\family typewriter 
+EMUFS_REG_ID
+\family default 
+ el cual simboliza al id almacenado.
 \layout Subsection
 
 Comportamiento
@@ -384,8 +568,8 @@ id
 \emph default 
 al archivo, el cual será el primero recuperado.
  
-\emph on 
-ver: emufs_did_agregar()
+\family typewriter 
+Ver: emufs_did_agregar()
 \layout Itemize
 
 
@@ -399,8 +583,8 @@ id
  que se guardó en el archivo (o se eliminó del archivo de datos), y trunca
  el archivo.
  
-\emph on 
-ver: emufs_did_get_last()
+\family typewriter 
+Ver: emufs_did_get_last()
 \layout Chapter
 
 
@@ -462,8 +646,11 @@ T1
 EMUFS_Tipo
 \family default 
 ).
- Luego le sigue una cabecera propia del archivo (un EMUFS_BLOCK_SIZE, 4
- bytes) que almacena el tamaño del bloque que usa el archivo.
+ Luego le sigue una cabecera propia del archivo (un 
+\family typewriter 
+EMUFS_BLOCK_SIZE
+\family default 
+, 4 bytes) que almacena el tamaño del bloque que usa el archivo.
  De esta menera, al abrir un archivo de este tipo no se necesita tener ninguna
  información sobre él.
  A esta cabecera le siguen cero o más bloques del tamaño fijo especificado
@@ -644,12 +831,14 @@ NOMBRE, ARREGLAME!!!!
 
 Como se puede observar, a nivel físico cada registro grabado esta compuesto
  por un Header cuyo tamaño total es de 8 bytes (
+\family typewriter 
 \series bold 
 EMUFS_REG_ID
 \series default 
  + 
 \series bold 
 EMUFS_REG_SIZE
+\family default 
 \series default 
 ), y posteriormente el registro (bloque de datos) en sí.
  Luego se encuentra el espacio libre de 18 bytes dejado por el registro
@@ -743,12 +932,16 @@ As
 \layout Enumerate
 
 Calculamos el espacio que necesitaremos para el registro: sizeof(
+\family typewriter 
 \series bold 
 EMUFS_REG_ID
+\family default 
 \series default 
 ) + sizeof(
+\family typewriter 
 \series bold 
 EMUFS_REG_SIZE
+\family default 
 \series default 
 ) + sizeof(registro).
 \layout Enumerate
@@ -1301,6 +1494,14 @@ que pudieron haberse formado por la eliminaci
  por otros.
 \layout Standard
 
+Al estar utilizando recuperación de 
+\emph on 
+id`s
+\emph default 
+ borrados, esto me asegura que el registro borrado-guardado conservará el
+ id al grabarse.
+\layout Standard
+
 Al finalizar este proceso se verifica si existen bloques vacios para truncar
  el archivo.
  Lo mismo se debe hacer con el archivo de espacios libres .