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
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.
\begin_inset Float figure
placement H
wide false
-collapsed false
+collapsed true
\layout Caption
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
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
Ver:
\family typewriter
emufs_tipo1_compactar()
+\layout Section
+
+Detalles de implementación (funciones internas, ver si lo ponemos o no)
\layout Chapter
\begin_inset Float figure
placement H
wide false
-collapsed true
+collapsed false
\layout Caption
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()
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()