X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/1a26a916a0a29ec0c4bb4766dc5a92b652181c9d..cd61d59673e28422ae9940d985868d436a75eed3:/doc/informe.lyx diff --git a/doc/informe.lyx b/doc/informe.lyx index ab091fa..7139768 100644 --- a/doc/informe.lyx +++ b/doc/informe.lyx @@ -756,7 +756,8 @@ Inicializaci \begin_inset Graphics filename graphics/Emufsinit.png - scale 80 + scale 75 + keepAspectRatio \end_inset @@ -1088,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 @@ -1429,17 +1430,27 @@ B \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 @@ -1730,7 +1741,7 @@ archivo +-----------+-----------+------------------------//-+ \layout LyX-Code -| tipo | tam bloque| Cero o más bloques ... +| tipo | tam_bloque| Cero o más bloques ... \backslash @@ -1842,7 +1853,7 @@ tama Podemos ver gráficamente como se se compone un registro: \layout LyX-Code -registro id +registro [id] \layout LyX-Code +-----------+-----------+------------------+ @@ -1961,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 @@ -2005,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 @@ -3387,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 @@ -3408,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 @@ -3423,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 @@ -3440,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 @@ -3460,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 . @@ -3482,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 @@ -3521,7 +3674,7 @@ Ver: 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 @@ -3550,7 +3703,7 @@ Ver: 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, @@ -3573,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