+ unsigned long int freespace;
+\layout LyX-Code
+
+} EMUFS_FSC;
+\layout Standard
+
+
+\series bold
+\emph on
+
+\begin_inset Float table
+placement H
+wide false
+collapsed true
+
+\layout Caption
+
+Ejemplo de registro en archivo de control de espacio libre para un archivo
+ con bloques
+\layout Standard
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="2" columns="3">
+<features>
+<column alignment="center" valignment="top" leftline="true" width="0">
+<column alignment="center" valignment="top" leftline="true" width="0">
+<column alignment="center" valignment="top" leftline="true" rightline="true" width="0">
+<row topline="true" bottomline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+nro_bloque
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+freespace
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+</cell>
+</row>
+<row topline="true" bottomline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+12
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+120
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+Indica que en el bloque 12, hay 120 bytes libres al final del mismo.
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_inset
+
+
+\begin_inset Float table
+placement H
+wide false
+collapsed true
+
+\layout Caption
+
+Ejemplo de registro en archivo de
+\emph on
+gaps
+\emph default
+ para un archivo sin bloques
+\layout Standard
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="2" columns="3">
+<features>
+<column alignment="center" valignment="top" leftline="true" width="0">
+<column alignment="center" valignment="top" leftline="true" width="0">
+<column alignment="center" valignment="top" leftline="true" rightline="true" width="0">
+<row topline="true" bottomline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+offset
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+freespace
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+</cell>
+</row>
+<row topline="true" bottomline="true">
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+12
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+120
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+Indica que a partir del byte 12 del archivo de datos, hay 120 bytes libres.
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_inset
+
+
+\layout Standard
+
+
+\series bold
+\emph on
+Nota:
+\series default
+\emph default
+Como se puede observar, para distintas organizaciones el significado de
+ los registros en este archivo es diferente y se utilizará de distinta manera
+ en consecuencia.
+\layout Subsection
+
+Funciones principales
+\layout Standard
+
+Las declaraciones e implementación se pueden encontrar en
+\series bold
+\emph on
+fsc.h
+\series default
+\emph default
+ y
+\series bold
+\emph on
+fsc.c
+\series default
+\emph default
+ respectivamente:
+\layout List
+\labelwidthstring 00.00.0000
+
+
+\series bold
+Búsqueda:
+\series default
+ Ante la operación de alta de un registro en el archivo de datos, se realizará
+ la búsqueda de espacio libre donde este podrá ser insertado.
+ En el caso de organizaciones con bloques, se buscará en que
+\family typewriter
+nro_bloque
+\family default
+ se posee espacio suficiente para albergar el nuevo registro.
+ 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()
+\layout List
+\labelwidthstring 00.00.0000
+
+
+\series bold
+Alta/Mod:
+\series default
+ Luego de una operación de baja o alta de un registro en el archivo de datos
+ (
+\series bold
+.dat
+\series default
+), incrementará o decrementará respectivamente el espacio libre en el archivo
+ de datos, y esto deberá ser registrado, agregando un nuevo registro en
+ el archivo de espacios libres (
+\series bold
+.fsc
+\series default
+) o bien modificandoló.
+\newline
+
+\newline
+En el caso de organizaciónes con bloques, se actualizará el valor del espacio
+ libre
+\family typewriter
+freespace
+\family default
+ en el bloque (ya sea incrementandoló o decrementandoló) o bien se insertará
+ un nuevo registro en caso de que se esté creando un nuevo bloque en el
+ archivo de datos (en este caso no será debido a un alta o baja de registro
+ como se mencionó al principio).
+\newline
+
+\newline
+Para el caso de organización sin bloques, en el caso de baja de un registro
+ de datos (
+\series bold
+.dat
+\series default
+) se insertará un nuevo registro en el
+\series bold
+.fsc
+\series default
+ dando cuenta de la aparición de un nuevo gap en el archivo de datos (
+\series bold
+.dat
+\series default
+), y en caso de estar este lindante con otro gap, se realizará el merge
+ pertinente.
+ (esto esta explicado más en profundidad en los casos particulares de organizaci
+ón fisica, registros variables sin bloques).
+ Para el caso de una alta en el archivo de datos (
+\series bold
+.dat
+\series default
+), el valor del gap donde se haya insertado se actualizará.
+
+\newline
+Ver:
+\family typewriter
+emufs_fsc_agregar(), emufs_fsc_agregar_gap(), emufs_fsc_actualizar(), emufs_fsc_
+actualizar_gap().
+\layout List
+\labelwidthstring 00.00.0000
+
+
+\series bold
+Baja
+\series default
+: Unicamente para el caso de una organización que presente gaps en el archivo,
+ se podrá dar a lugar la eliminación de un registro del archivo de espacios
+ libres (
+\series bold
+.fsc)
+\series default
+.
+ Esta situación tendrá efecto cuando se inserte un registro que entre perfecto
+ en un gap disponible, y por ende el gap desaparecerá.
+\newline
+Ver:
+\family typewriter
+emufs_fsc_borrar_gap()
+\layout Section
+
+
+\begin_inset LatexCommand \label{sec:did}
+
+\end_inset
+
+Archivo de id's recuperables
+\layout Standard
+
+El archivo de Id's liberado (
+\series bold
+.did
+\series default
+) llevará cuenta de aquellos Id's de registros (
+\family typewriter
+id_reg
+\family default
+) que ya no se encuentran siendo utilizados y fueron liberados por registros
+ eliminados previamente.
+ A través del mismo, se podrá realizar la reutilización de Id's ante la
+ alta de nuevos registros.
+\layout Standard
+
+A nivel físico, este archivo poseerá una secuencia de datos del tipo EMUFS_REG_I
+D, y el comportamiento del sistema de recuperación de Id's será el de una
+ pila.
+ Es decir, ante el requerimiento de un
+\family typewriter
+reg_id
+\family default
+ libre por una función del sistema como por ejemplo la alta de un nuevo
+ registro, el API del archivo (
+\series bold
+.did
+\series default
+), obtendrá el último dato del mismo (el
+\emph on
+Id
+\emph default
+ que fue liberado mas recientemente), y truncará el archivo eliminando el
+
+\emph on
+Id
+\emph default
+ recuperado de la tabla.
+ (LIFO, Last in First Out).
+\layout Subsection
+
+Organización Física
+\layout Standard
+
+Este archivo tiene registros de un solo campo,
+\family typewriter
+EMUFS_REG_ID
+\family default
+ el cual simboliza al id que fue liberado en un proceso de baja de registros.
+\layout Subsection
+
+Funciones principales
+\layout Standard
+
+Las declaraciones e implementación se pueden encontrar en
+\series bold
+\emph on
+did.h
+\series default
+\emph default
+ y
+\series bold
+\emph on
+did.c
+\series default
+\emph default
+ respectivamente
+\layout List
+\labelwidthstring 00.00.0000
+
+
+\series bold
+Alta:
+\series default
+Ante la eliminación de un registro del archivo de datos (
+\series bold
+.dat
+\series default
+) se procederá al agregado del correspondiente
+\family typewriter
+id_reg
+\family default
+ que fue liberado por dicha operación, al archivo
+\series bold
+.did
+\series default
+.
+\family typewriter
+
+\newline
+
+\family default
+Ver:
+\family typewriter
+emufs_did_agregar()
+\layout List
+\labelwidthstring 00.00.0000
+
+Baja Cuando el sistema desee grabar un nuevo registro en el archivo de datos,
+ este pedirá un
+\family typewriter
+id_reg
+\family default
+ disponible para el mismo.
+ El sistema de administración de Id's libres, obtendrá el último
+\emph on
+id
+\emph default
+ que se guardó en el archivo (o se eliminó del archivo de datos), y truncará
+ el archivo eliminandolo.
+\family typewriter
+
+\newline
+
+\family default
+Ver:
+\family typewriter
+emufs_did_get_last()
+\layout Chapter
+
+
+\begin_inset LatexCommand \label{cha:tipo1}
+
+\end_inset
+
+Archivo con bloques parametrizados y registros de longitud variable
+\layout Standard
+
+Este tipo de archivo tiene varias complicaciones, al tratarse de un punto
+ intermedio entre el
+\begin_inset LatexCommand \ref{cha:tipo2}
+
+\end_inset
+
+ y el
+\begin_inset LatexCommand \ref{cha:tipo3}
+
+\end_inset
+
+ (cuenta tanto con bloques como con registros variables), hereda los inconvenien
+tes (y ventajas) de ambos, más los propios.
+ Al implementar este tipo de archivo se puso enfásis en la eficiencia mientras
+ esta no comprometa la mantenibilidad del código, es por esto que en algunas
+ circunstancias no se hace un uso óptimo del espacio.
+\layout Standard
+
+La implementación de este tipo de archivo puede ser encontrada en
+\family typewriter
+emufs/tipo1.c
+\family default
+ mientras que su interfaz pública está disponible en
+\family typewriter
+emufs/tipo1.h
+\family default
+.
+\layout Section
+
+Organización física
+\layout Standard
+
+El archivo está compuesto por la
+\emph on
+cabecera general
+\emph default
+ (ver página
+\begin_inset LatexCommand \pageref{sec:cabecera_gral}
+
+\end_inset
+
+).
+ El valor que toma en este tipo de archivo es 0 (o el valor simbólico
+\family typewriter
+T1
+\family default
+ del tipo
+\family typewriter
+EMUFS_Tipo
+\family default
+).
+ 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
+ en la cabecera antes mencionada.
+\layout LyX-Code
+
+archivo
+\layout LyX-Code
+
++-----------+-----------+------------------------//-+
+\layout LyX-Code
+
+| tipo | tam bloque| Cero o más bloques ...