+Archivo índice
+\layout Standard
+
+El archivo índice (.idx), permite la localización de los registros en el
+ .DAT de forma directa, mediante la obtención de su offset respecto del inicio
+ del .dat, o nro bloque (segun el tipo de organización física) en donde se
+ encuentra un registro dado, indicado por su
+\emph on
+id_reg.
+\layout Standard
+
+Los registros de este archivo se encuentran representados una estructura
+ que indica un número de registro y el bloque u offset en donde se encuentra
+ el mísmo.
+\layout Standard
+
+Es necesario que este archivo esté ordenado por
+\emph on
+id_reg
+\emph default
+, ya que esto permitirá el acceso directo al mismo, para la rápida obtención
+ del nro de bloque u offset y posterior búsqueda de un registro en el archivo
+ de datos.
+\layout Subsection
+
+Organización física
+\layout Standard
+
+Los registros de este archivo se encuentran representados a nivel codigo
+ por el siguiente tipo de dato interno (
+\family typewriter
+EMUFS_IDX
+\family default
+):
+\layout LyX-Code
+
+typedef unsigned long EMUFS_REG_ID;
+\layout LyX-Code
+
+typedef unsigned long EMUFS_OFFSET;
+\layout LyX-Code
+
+typedef struct emufs_idx_t {
+\layout LyX-Code
+
+ EMUFS_REG_ID id_reg;
+\layout LyX-Code
+
+ EMUFS_OFFSET location;
+\layout LyX-Code
+
+} EMUFS_IDX;
+\layout Standard
+
+
+\series bold
+\emph on
+Ejemplo de registro en archivo índice (.idx), para un archivo de organizacion
+ Tipo 1 y 3:
+\newline
+
+\series default
+\emph default
+
+\newline
+
+\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
+
+id_reg
+\end_inset
+</cell>
+<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" 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
+
+5
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+54
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+Indica que el registro de id_reg = 5, se encuentra en el bloque 54
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\layout Standard
+
+\SpecialChar ~
+
+\newline
+
+\series bold
+\emph on
+Ejemplo de registro en archivo índice (.idx), para un archivo de organizacion
+ Tipo 2:
+\series default
+\emph default
+
+\newline
+
+\newline
+
+\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
+
+id_reg
+\end_inset
+</cell>
+<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" 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
+
+5
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+54
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\layout Standard
+
+Indica que el registro de id_reg = 5, se encuentra en el bloque 54
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\layout Standard
+
+
+\series bold
+\emph on
+\SpecialChar ~
+
+\newline
+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
+
+Comportamiento
+\layout Standard
+
+Las declaraciones e implementación se pueden encontrar en
+\series bold
+\emph on
+idx.h
+\series default
+\emph default
+ y
+\series bold
+\emph on
+idx.c
+\series default
+\emph default
+ respectivamente:
+\layout List
+\labelwidthstring 00.00.0000
+
+
+\series bold
+\emph on
+Búsqueda:
+\series default
+\emph default
+ Los registros del archivo indice (
+\series bold
+.idx
+\series default
+), poseen una correspondencia 1 a 1, con los Id's de los registros en el
+ archivo de datos (
+\series bold
+.dat
+\series default
+).
+ Con esto, queremos decir que el N-ésimo registro del archivo índice, será
+ aquél que posea la información para localizar al registro cuyo
+\family typewriter
+id_reg
+\family default
+ es N, dentro del archivo de datos (
+\series bold
+.dat
+\series default
+).
+
+\newline
+
+\newline
+NOTA: 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).
+
+\newline
+Ver:
+\family typewriter
+emufs_idx_buscar_registro()
+\layout List
+\labelwidthstring 00.00.0000
+
+
+\series bold
+Alta:
+\series default
+ Ante la alta de un registro en el archivo de datos, se insetará un nuevo
+ registro en el archivo índice, con el id_reg del registro en cuestion,
+ y el offset u bloque donde se lo haya grabado en disco.
+\newline
+Ver:
+\family typewriter
+emufs_idx_agregar()
+\layout List
+\labelwidthstring 00.00.0000
+
+
+\series bold
+Baja:
+\series default
+ Ante el borrado de un registro del archivo de datos, se accederá el registro
+ correspondiente en el índice, y se actualizara su LOCATION, estableciendolo
+ en el valor -1 UL, el cual indica que ese registro ha sido eliminado y
+ por ende no se lo podrá localizar en el futuro.
+ Como se verá mas adelante, según el tipo de organización física, el registro
+ puede ser borrado concretamente del .
+\series bold
+dat
+\series default
+ o nó.
+
+\newline
+Ver:
+\family typewriter
+emufs_idx_borrar()
+\layout List
+\labelwidthstring 00.00.0000
+
+
+\series bold
+Modificación:
+\series default
+ Ante la modificación en la posición física de un registro dentro del archivo
+ de datos (por ejemplo luego del proceso de recompactación, se realizará
+ la modificación respectiva del campo
+\family typewriter
+location
+\family default
+.
+\newline
+Ver:
+\family typewriter
+emufs_idx_actualizar()
+\layout Section
+
+
+\begin_inset LatexCommand \label{sec:fsc}
+
+\end_inset
+
+Archivo de control de espacio libre
+\layout Standard
+
+El archivo de espacio libre (
+\series bold
+.fsc
+\series default
+) (espacio por bloque o gaps en archivo, según el tipo de organización física),
+ tiene como función la administración del espacio libre, generado por previas
+ eliminaciones de registros en el archivo de datos.
+ El mismo, nos indicará donde hay lugar para insertar un nuevo registro.
+\layout Standard
+
+Para el caso de una organización por bloque, nos dirá en que bloque o si
+ se debe generar un nuevo bloque.
+ En el caso de la organización sin bloques, nos indicará en que gap o si
+ al final del archivo.
+\layout Standard
+
+Los registros de este archivo se encuentran representados una estructura
+ que indica un número de bloque u offset y el espacio libre disponible en
+ el mismo (o apartir del mismo en el caso del offset).
+\newline
+
+\layout Standard
+
+
+\series bold
+Nota
+\series default
+: Por requerimiento del algoritmo de compactación el tipo de organización
+ física con reg long var, sin bloques, los gaps se graban en forma ordenada
+ en el (.fsc).
+ (El orden se corresponde con lo que hay en el .dat).
+\layout Subsection
+
+Organización Física
+\layout Standard
+
+Los registros de este archivo se encuentran representados a nivel codigo
+ por el siguiente tipo de dato interno (
+\family typewriter
+EMUFS_FSC
+\family default
+):
+\layout LyX-Code
+
+typedef struct emufs_fsc_t {
+\layout LyX-Code
+
+ unsigned long int marker;
+\layout LyX-Code
+
+ unsigned long int freespace;
+\layout LyX-Code
+
+} EMUFS_FSC;
+\layout Standard
+
+
+\series bold
+\emph on
+Ejemplo de registro en archivo de espacio libre en bloque (.fsc), para un
+ archivo de organizacion Tipo 1 y 3:
+\newline
+
+\series default
+\emph default
+
+\newline
+
+\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
+