]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - doc/informe.lyx
* Analisis con otro tamaño de bloque
[z.facultad/75.06/emufs.git] / doc / informe.lyx
index 5b08ea9143f46b8be2802cabb45f6c678c43cd2e..713976868c508bc5b97c7c6a0b0fe98ecd76e861 100644 (file)
@@ -52,6 +52,44 @@ Esta es la documentaci
  De la correcta elección de la organización, dependerá la eficiencia de
  la aplicación que la utilice.
  
+\layout Standard
+
+EMUFS se presenta como un 
+\emph on 
+emulador
+\emph default 
+ de un 
+\emph on 
+filesystem
+\emph default 
+, capaz de administrar datos almacenados en cualquiera de las tres organizacione
+s de archivo previamente mencionadas, las cuales a saberse son:
+\layout Enumerate
+
+Registros de Longitud Variable, Bloques de tamaño parametrizable
+\layout Enumerate
+
+Registros de Longitud Variable, Sin Bloques
+\layout Enumerate
+
+Registros de Longitud Fija, Bloques de tamaño parametrizables
+\layout Standard
+
+A través de este trabajo, se podrán observar las diferencias entre distintos
+ tipos de organización de archivos, ventajas y desventajas de cada una de
+ ellas, y las situaciones particulares que deberá sortear un filesystem,
+ como la partición de registros en distintos bloques, manejo de espacio
+ libre, compactación de un archivo, etc.
+\layout Standard
+
+A continuación, veremos que el manejo de los archivos en EMUFS se realiza
+ a través de una estructura de control comun para cualquier tipo de archivo,
+ dandole flexibilidad y escalabilidad a nuestro sistema.
+\layout Standard
+
+Hacia el final de esta presentación, se observaran las pruebas realizadas
+ con las distintas organizaciones de archivos, y las conclusiones obtenidos
+ al respecto.
 \layout Chapter
 
 Estructura común
@@ -697,13 +735,7 @@ Esto har
 articulos.dat
 \series default 
 , con la organización física tipo 3 con registros de longitud fija de 50
- bytes y bloques de 200 bytes (si el archivo ya existiaera, puede ser abierto
- con la función 
-\family typewriter 
-emufs_abrir()
-\family default 
-, pasando como parámetro sólo el nombre de archivo, la función autodetecta
- el tipo de archivo y sus datos adicionales).
+ bytes y bloques de 200 bytes.
  Al mismo tiempo, los se asginarán valores a los punteros a funciones que
  posee dicha estructura, la cual de ahora en más estará en condiciones de
  manejar un archivo del tipo 3.
@@ -714,7 +746,7 @@ emufs_abrir()
 \begin_inset Float figure
 placement H
 wide false
-collapsed false
+collapsed true
 
 \layout Caption
 
@@ -724,7 +756,8 @@ Inicializaci
 
 \begin_inset Graphics
        filename graphics/Emufsinit.png
-       scale 80
+       scale 75
+       keepAspectRatio
 
 \end_inset 
 
@@ -738,7 +771,7 @@ As
  sucedera lo siguiente:
 \layout LyX-Code
 
-efs->leer_registro(params) -- llama a -->  emufs_tipo3_leer_registro(params)
+efs->leer_registro(params) -- calls -->  emufs_tipo3_leer_registro(params)
 \layout Standard
 
 Como se puede observar, la estructura 
@@ -748,12 +781,6 @@ EMUFS
  permitirá el manejo de cualquier tipo de archivo, a través del mismo código,
  dandole gran flexibilidad a nuestro sistema, que podrá expandirse a más
  tipos de archivos de ser necesario.
-\layout Standard
-
-Finalmente hay otra función estática que sirve para destruir la estructura,
- liberando su memoria: 
-\family typewriter 
-emufs_destruir()
 \layout Chapter
 
 Archivos Auxiliares
@@ -1062,22 +1089,22 @@ id_reg
 .dat
 \series default 
 ).
-\newline 
-
 \series bold 
+
+\newline 
 NOTA:
 \series default 
  Cabe aclarar que por si bien el indice se encuentra ordenado por 
 \family typewriter 
 id_reg
 \family default 
-, los registros en el archivo de datos, por lo general no lo estarán.
(ordenados por id).
+, los registros en el archivo de datos, por lo general no lo estarán (ordenados
+ por id).
  
 \newline 
 Ver: 
 \family typewriter 
-emufs_idx_buscar_registro()
+emufs_idx_buscar_registro(), emufs_idx_get()
 \layout List
 \labelwidthstring 00.00.0000
 
 \family typewriter 
 nro_bloque
 \family default 
- se posee espacio suficiente para albergar el nuevo registro.
+ se posee espacio suficiente para albergar el nuevo registro (o a partir
+ de qué 
+\family typewriter 
+nro_bloque
+\family default 
+ se encuentran 
+\family typewriter 
+N
+\family default 
+ bloques consecutivos libres).
  En el caso de organizacion sin bloque, se buscará un gap o espacio libre
  en el archivo, obteniéndose en consecuencia, el 
 \family typewriter 
 offset
 \family default 
  hasta el mismo.
 \newline 
 Ver: 
 \family typewriter 
-emufs_fsc_buscar_lugar()
+emufs_fsc_buscar_lugar(), emufs_fsc_buscar_n_lugares()
 \layout List
 \labelwidthstring 00.00.0000
 
@@ -1704,7 +1741,7 @@ archivo
 +-----------+-----------+------------------------//-+
 \layout LyX-Code
 
-|    tipo   | tam bloque| Cero o más bloques ...
+|    tipo   | tam_bloque| Cero o más bloques ...
  
 \backslash 
 
@@ -1816,7 +1853,7 @@ tama
  Podemos ver gráficamente como se se compone un registro:
 \layout LyX-Code
 
-registro id
+registro [id]
 \layout LyX-Code
 
 +-----------+-----------+------------------+
@@ -1935,7 +1972,7 @@ A continuaci
 \begin_inset Quotes erd
 \end_inset 
 
-) almacenado en un archivo con bloques de 4 bytes:
+) almacenado en un archivo con bloques de 12 bytes (4 para datos):
 \layout LyX-Code
 
 | bloque 0          | bloque 1          | bloque 2
@@ -1979,6 +2016,20 @@ A continuaci
 
 \backslash 
 -+
+\layout LyX-Code
+
+                                                          ^^
+\layout LyX-Code
+
+                              2 bytes libres al final del bloque 2
+\layout Standard
+
+Este es un ejemplo figurativo, ya que se puso como límite mínimo de tamaño
+ de bloque 16 bytes (para que haya al menos la misma cantidad de espacio
+ para datos que para información de control).
+ Este límite mínimo ya roza lo absurdo (es muy ineficiente por la gran cantidad
+ de accesos a disco que necesita).
+ El límite físico es de 9 bytes (8 para información de control, 1 para datos).
 \layout Section
 
 Funciones principales
@@ -2283,6 +2334,9 @@ Esta implementaci
 Ver:
 \family typewriter 
  emufs_tipo1_compactar()
+\layout Section
+
+Detalles de implementación (funciones internas, ver si lo ponemos o no)
 \layout Chapter
 
 
@@ -2357,7 +2411,7 @@ o freespace
 \begin_inset Float figure
 placement H
 wide false
-collapsed true
+collapsed false
 
 \layout Caption
 
@@ -3358,7 +3412,32 @@ As
 \layout Standard
 
 El archivo estara compuesto por una cabecera que da información sobre el
- tipo de organización, el tamaño de los bloques y el tamaño de los registros.
+ tipo (2, o el valor T3 del tipo 
+\family typewriter 
+EMUFS_Tipo
+\family default 
+ en este caso) de organización, el tamaño de los bloques y el tamaño de
+ los registros.
+\layout LyX-Code
+
+archivo
+\layout LyX-Code
+
++-----------+-----------+-----------+------------------------//-+
+\layout LyX-Code
+
+|    tipo   | tam_bloque|  tam_reg  | Cero o más bloques ...
+\backslash 
+
+\backslash 
+ |
+\layout LyX-Code
+
++-----------+-----------+-----------+------------------------//-+
+\layout LyX-Code
+
+/- 4 bytes -/- 4 bytes -/- 4 bytes -/
 \layout Subsection
 
 Organización Física de un Bloque
@@ -3379,7 +3458,27 @@ virtualmente
 \begin_inset Quotes erd
 \end_inset 
 
- zonas en el archivo.
+ zonas en el archivo y obtener de esta manera acceso semi-aleatoreo a los
+ registros.
+\layout LyX-Code
+
+bloque N-1 | bloque N                                | bloque N+1
+\layout LyX-Code
+
+/----------+------------+------------+---------------+-----------/
+\layout LyX-Code
+
+
+\backslash 
+          | registro 1 | registro 2 | espacio libre |           
+\backslash 
+
+\layout LyX-Code
+
+/----------+------------+------------+---------------+-----------/
+\layout LyX-Code
+
+           /------------- tamaño del bloque ---------/
 \layout Subsection
 
 Organizacion Física de Registros
@@ -3394,15 +3493,36 @@ por este motivo al realizar la busqueda de espacio en un bloque se lo har
  preguntando por el tamaño del registro más 
 \family typewriter 
 sizeof(EMUFS_REG_ID).
+\layout LyX-Code
+
+registro [id]
+\layout LyX-Code
+
++-----------+-------------------+
+\layout LyX-Code
+
+|     id    |     datos ...
+     |
+\layout LyX-Code
+
++-----------+-------------------+
+\layout LyX-Code
+
+/- 4 bytes -/- [tam_reg] bytes -/
 \layout Subsection
 
-Organización Física de Registros Multibloque
+Organización Física de Registros 
+\emph on 
+Multibloque
 \layout Standard
 
 Al ser los registros de longitud constante, se ha adoptado que un registro
- multibloque nunca podra estar almacenado en algún lugar que no sea el comienzo
- de un bloque.
+\emph on 
+multibloque
+\emph default 
+ nunca podrá estar almacenado en algún lugar que no sea el comienzo de un
+ bloque.
  De esta manera se puede calcular cuantos bloques ocupará un registro y
  se podrá solicitar lugar para almacenarlo con la ayuda de la función 
 \family typewriter 
@@ -3411,19 +3531,81 @@ emufs_fsc_buscar_n_lugares(),
 que es muy importante para evitar el solapamiento de registros.
  Esta consideración acarrea como consecuencia directa un alto costo en términos
  del espacio desperdiciado.
+\layout Standard
+
+A continuación se presenta un ejemplo gráfico de un registro multibloque
+ de 26 bytes (de contenido 
+\begin_inset Quotes eld
+\end_inset 
+
+12345678901234567890123456
+\begin_inset Quotes erd
+\end_inset 
+
+) almacenado en un archivo con bloques de bytes 14 bytes (10 para datos)
+ y registros de 38 bytes:
+\layout LyX-Code
+
+| bloque 0          | bloque 1          | bloque 2
+\layout LyX-Code
+
++-------------------+-------------------+-------------------+-//-+
+\layout LyX-Code
+
+| registro 0 - 1/3  | registro 0 - 2/3  | registro 0 - 3/3..| 
+\backslash 
+
+\backslash 
+ |
+\layout LyX-Code
+
+|+----+------------+|+----+------------+|+----+--------+....| // |
+\layout LyX-Code
+
+|| id |    datos   ||| id |    datos   ||| id |  datos |....| 
+\backslash 
+
+\backslash 
+ |
+\layout LyX-Code
+
+||----+------------+||----+------------+||----+--------+....| // |
+\layout LyX-Code
+
+||  0 | 1234567890 |||  0 | 1234567890 |||  0 | 123456 |....| 
+\backslash 
+
+\backslash 
+ |
+\layout LyX-Code
+
+|+----+------------+|+----+------------+|+----+--------+....| // |
+\layout LyX-Code
+
++-------------------+-------------------+-------------------+-
+\backslash 
+
+\backslash 
+-+
+\layout LyX-Code
+
+                                                        ^^^^
+\layout LyX-Code
+
+            4 bytes libres (e inutilizables) al final del bloque 2
 \layout Section
 
 Funciones Principales
 \layout Standard
 
 Dento de 
-\emph on 
+\family typewriter 
 tipo3.h
-\emph default 
+\family default 
  y 
-\emph on 
+\family typewriter 
 tipo3.c
-\emph default 
+\family default 
  se encuentran las cabeceras y la implementación de las funciones principales
  respectivamente, las cuales dan funcionalidad a esta organización.
 \layout Standard
@@ -3431,7 +3613,7 @@ tipo3.c
 A continuación se comentará la descripción de algunas acciones importantes.
 \layout Subsection
 
-Leer Registro
+Lectura de registros
 \layout Standard
 
 La lectura de un registro se realiza con la ayuda del archivo .
@@ -3453,7 +3635,7 @@ Ver:
 emufs_tipo3_leer_registro()
 \layout Subsection
 
-Grabar Registro
+Alta de registros
 \layout Standard
 
 Graba un registro en un bloque donde haya espacio suficiente, y si no crea
@@ -3464,12 +3646,35 @@ Luego de grabar un registro, actualiza los archivos de 
  para mantener la coherencia.
 \layout Standard
 
+Cuando nos encontramos con registros multibloque, se calcula cuantos bloques
+ ocupará el registro de la siguiente manera: 
+\family typewriter 
+Cantidad de Bloques = 1 + Tamaño del Registro/(Tamaño del Bloque-Sizeof(EMUFS_RE
+G_ID)
+\layout Standard
+
+Esta ecuación solo falla en el caso que el tamaño del registro y el tamaño
+ del bloque sean iguales, en tal caso, se coloca el valor 1 en 
+\family typewriter 
+Cantidad de Bloques
+\family default 
+ post verificación.
+\layout Standard
+
+Y con esta información se realiza un ciclo 
+\family typewriter 
+for
+\family default 
+ que grabará tantas veces como sea necesario levantando y grabando los bloques
+ que correspondan.
+\layout Standard
+
 Ver: 
 \family typewriter 
 emufs_tipo3_grabar_registro()
 \layout Subsection
 
-Borrar Registro
+Baja de registros
 \layout Standard
 
 Borra un registro del archivo de datos, para esto levanta el bloque al que
@@ -3488,12 +3693,17 @@ Cabe destacar que para dar de baja un registro no hace falta borrarlo del
  ser así, si no se realizara el mismo.
 \layout Standard
 
+En el caso de los registros multibloque, se eliminará la porción del registro
+ contenida en el primer bloque y se actualizarán de manera conveniente los
+ archivos índice, para restaurarlos a un valor verdadero.
+\layout Standard
+
 Ver: 
 \family typewriter 
 emufs_tipo3_borrar_registro()
 \layout Subsection
 
-Leer Estadísticas
+Obtención de estadísticas
 \layout Standard
 
 Se puede tener acceso a las estadísticas generales del archivo, por ejemplo,
@@ -3516,7 +3726,7 @@ Ver:
 emufs_tipo3_leer_estadisticas()
 \layout Subsection
 
-Compactar el Archivo
+Compactación del archivo de datos
 \layout Standard
 
 Esta función intenta reorganizar el archivo de manera que el espacio libre