]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - doc/informe.lyx
Commit preventivo.
[z.facultad/75.06/emufs.git] / doc / informe.lyx
index f61d2586458fc901df576ca4d04731d863f2feb9..8f32d425b5c843b094d58d614e1d91a9d4abd82f 100644 (file)
@@ -40,6 +40,14 @@ Alan Kennedy
 Leandro Lucarella
 \newline 
 Ricardo Markiewicz
 Leandro Lucarella
 \newline 
 Ricardo Markiewicz
+\layout Standard
+
+
+\begin_inset LatexCommand \tableofcontents{}
+
+\end_inset 
+
+
 \layout Chapter
 
 Introducción
 \layout Chapter
 
 Introducción
@@ -51,6 +59,11 @@ Estructura com
 Tipos
 \layout Subsection
 
 Tipos
 \layout Subsection
 
+
+\begin_inset LatexCommand \label{sub:EMUFS}
+
+\end_inset 
+
 EMUFS
 \layout Standard
 
 EMUFS
 \layout Standard
 
@@ -79,19 +92,36 @@ EMUFS_Tipo
 \family typewriter 
 EMUFS_BLOCK_SIZE
 \family default 
 \family typewriter 
 EMUFS_BLOCK_SIZE
 \family default 
- indica el tamaño del bloque para los tipos 1 y 3.
+ indica el tamaño del bloque para los tipos de archivo con bloques (ver
+ capítulos 
+\begin_inset LatexCommand \ref{cha:tipo1}
+
+\end_inset 
+
+ y 
+\begin_inset LatexCommand \ref{cha:tipo3}
+
+\end_inset 
+
+).
 \layout Enumerate
 
 
 \family typewriter 
 EMUFS_REG_SIZE
 \family default 
 \layout Enumerate
 
 
 \family typewriter 
 EMUFS_REG_SIZE
 \family default 
- indica el tamaño del registro, para el tipo 3 que posee tamaño constante.
+ indica el tamaño del registro, para el tipo de archivo con tamaño de registro
+ parametrizado (ver capítulo 
+\begin_inset LatexCommand \ref{cha:tipo3}
+
+\end_inset 
+
+).
 \layout Enumerate
 
 
 \family typewriter 
 \layout Enumerate
 
 
 \family typewriter 
-void **leer_bloque() 
+void*leer_bloque() 
 \family default 
 puntero a la función para leer un bloque.
 \layout Enumerate
 \family default 
 puntero a la función para leer un bloque.
 \layout Enumerate
@@ -105,14 +135,14 @@ void *leer_bloque_raw()
 
 
 \family typewriter 
 
 
 \family typewriter 
-void **leer_registro()
+void*leer_registro()
 \family default 
  puntero a la función para leer un registro.
 \layout Enumerate
 
 
 \family typewriter 
 \family default 
  puntero a la función para leer un registro.
 \layout Enumerate
 
 
 \family typewriter 
-void **leer_registro_raw()
+void*leer_registro_raw()
 \family default 
  puntero a la función para leer un registro con su encabezado.
 \layout Enumerate
 \family default 
  puntero a la función para leer un registro con su encabezado.
 \layout Enumerate
@@ -154,7 +184,7 @@ void *compactar()
 
 
 \family typewriter 
 
 
 \family typewriter 
-char *nombre
+charnombre
 \family default 
  almacena el nombre del archivo sin extensión.
 \layout Standard
 \family default 
  almacena el nombre del archivo sin extensión.
 \layout Standard
@@ -421,16 +451,17 @@ typedef struct emufs_idx_t {
 \layout Standard
 
 
 \layout Standard
 
 
-\series bold 
-\emph on 
-Ejemplo de registro en archivo índice (.idx), para un archivo de organizacion
- Tipo 1 y 3:
-\newline 
+\begin_inset Float table
+placement H
+wide false
+collapsed true
 
 
-\series default 
-\emph default 
+\layout Caption
+
+Ejemplo de registro en archivo índice (.idx), para un archivo de organizacion
+ Tipo 1 y 3
+\layout Standard
 
 
-\newline 
 
 \begin_inset  Tabular
 <lyxtabular version="3" rows="2" columns="3">
 
 \begin_inset  Tabular
 <lyxtabular version="3" rows="2" columns="3">
@@ -494,22 +525,20 @@ Indica que el registro de id_reg = 5, se encuentra en el bloque 54
 \end_inset 
 
 
 \end_inset 
 
 
-\layout Standard
+\end_inset 
 
 
-\SpecialChar ~
+\begin_inset Float table
+placement H
+wide false
+collapsed true
 
 
-\newline 
+\layout Caption
 
 
-\series bold 
-\emph on 
 Ejemplo de registro en archivo índice (.idx), para un archivo de organizacion
 Ejemplo de registro en archivo índice (.idx), para un archivo de organizacion
- Tipo 2:
-\series default 
-\emph default 
-\newline 
-\newline 
+ Tipo 2
+\layout Standard
+
 
 \begin_inset  Tabular
 <lyxtabular version="3" rows="2" columns="3">
 
 \begin_inset  Tabular
 <lyxtabular version="3" rows="2" columns="3">
@@ -573,14 +602,14 @@ Indica que el registro de id_reg = 5, se encuentra en el bloque 54
 \end_inset 
 
 
 \end_inset 
 
 
+\end_inset 
+
+
 \layout Standard
 
 
 \series bold 
 \emph on 
 \layout Standard
 
 
 \series bold 
 \emph on 
-\SpecialChar ~
-
-\newline 
 Nota: 
 \series default 
 \emph default 
 Nota: 
 \series default 
 \emph default 
@@ -634,11 +663,12 @@ id_reg
 .dat
 \series default 
 ).
 .dat
 \series default 
 ).
 \newline 
 
 \newline 
 
-\newline 
-NOTA: Cabe aclarar que por si bien el indice se encuentra ordenado por 
+\series bold 
+NOTA:
+\series default 
+ Cabe aclarar que por si bien el indice se encuentra ordenado por 
 \family typewriter 
 id_reg
 \family default 
 \family typewriter 
 id_reg
 \family default 
@@ -732,8 +762,6 @@ Para el caso de una organizaci
 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).
 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
 
 
 \layout Standard
 
 
@@ -772,14 +800,18 @@ typedef struct emufs_fsc_t {
 
 \series bold 
 \emph on 
 
 \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 
+\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
 
 
-\newline 
 
 \begin_inset  Tabular
 <lyxtabular version="3" rows="2" columns="3">
 
 \begin_inset  Tabular
 <lyxtabular version="3" rows="2" columns="3">
@@ -843,22 +875,23 @@ Indica que en el bloque 12, hay 120 bytes libres al final del mismo.
 \end_inset 
 
 
 \end_inset 
 
 
-\layout Standard
+\end_inset 
 
 
-\SpecialChar ~
+\begin_inset Float table
+placement H
+wide false
+collapsed true
 
 
-\newline 
+\layout Caption
 
 
-\series bold 
+Ejemplo de registro en archivo de 
 \emph on 
 \emph on 
-Ejemplo de registro en archivo de gaps o espacios libres en archivo (.fsc),
- para un archivo de organizacion Tipo 2:
-\series default 
+gaps
 \emph default 
 \emph default 
-\newline 
-\newline 
+ para un archivo sin bloques
+\layout Standard
+
 
 \begin_inset  Tabular
 <lyxtabular version="3" rows="2" columns="3">
 
 \begin_inset  Tabular
 <lyxtabular version="3" rows="2" columns="3">
@@ -922,14 +955,14 @@ Indica que a partir del byte 12 del archivo de datos, hay 120 bytes libres.
 \end_inset 
 
 
 \end_inset 
 
 
+\end_inset 
+
+
 \layout Standard
 
 
 \series bold 
 \emph on 
 \layout Standard
 
 
 \series bold 
 \emph on 
-\SpecialChar ~
-
-\newline 
 Nota: 
 \series default 
 \emph default 
 Nota: 
 \series default 
 \emph default 
@@ -938,7 +971,7 @@ Como se puede observar, para distintas organizaciones el significado de
  en consecuencia.
 \layout Subsection
 
  en consecuencia.
 \layout Subsection
 
-Comportamiento
+Funciones principales
 \layout Standard
 
 Las declaraciones e implementación se pueden encontrar en 
 \layout Standard
 
 Las declaraciones e implementación se pueden encontrar en 
@@ -1119,7 +1152,7 @@ EMUFS_REG_ID
  el cual simboliza al id que fue liberado en un proceso de baja de registros.
 \layout Subsection
 
  el cual simboliza al id que fue liberado en un proceso de baja de registros.
 \layout Subsection
 
-Comportamiento
+Funciones principales
 \layout Standard
 
 Las declaraciones e implementación se pueden encontrar en 
 \layout Standard
 
 Las declaraciones e implementación se pueden encontrar en 
@@ -1290,31 +1323,42 @@ Cada bloque no guarda informaci
 
 \end_inset 
 
 
 \end_inset 
 
-), que almacena pares (identificador de registro, número de bloque).
+), que almacena pares [identificador de registro, número de bloque].
  Para que sea suficiente este único índice para hallar un registro (siendo
  que puede haber más de un registro por bloque), es necesario 
 \emph on 
 alinear los registros a izquierda
 \emph default 
 .
  Para que sea suficiente este único índice para hallar un registro (siendo
  que puede haber más de un registro por bloque), es necesario 
 \emph on 
 alinear los registros a izquierda
 \emph default 
 .
+ Esto significa que hay que asegurar que siempre los registros en un bloque
+ se presenten de forma consecutiva, jamás permitiendo que haya un espacio
+ libre entre registros (en un mismo bloque).
+\layout Standard
+
+Podemos ver un ejemplo de esto en forma gráfica:
 \layout LyX-Code
 
 \layout LyX-Code
 
-bloque N-1 | bloque N                                    | bloque N+1
+bloque N-1 | bloque N                                | bloque N+1
 \layout LyX-Code
 
 \layout LyX-Code
 
-/----------+------------+------------+-------------------+-----------/
+/----------+------------+------------+---------------+-----------/
 \layout LyX-Code
 
 
 \backslash 
 \layout LyX-Code
 
 
 \backslash 
-          | registro 1 | registro 2 | espacio libre ...
- |           
+          | registro 1 | registro 2 | espacio libre |           
 \backslash 
 \backslash 
- /----------+------------+------------+-------------------+-----------/
+
+\layout LyX-Code
+
+/----------+------------+------------+---------------+-----------/
+\layout LyX-Code
+
+           /------------- tamaño del bloque ---------/
 \layout Standard
 
 \layout Standard
 
-De forma tal que una vez obtenido el número de bloque se pueda recorrer
- secuencialmente hasta encontrar el registro deseado.
+De esta forma, una vez obtenido el número de bloque, se pueda recorrer secuencia
+lmente hasta encontrar el registro deseado.
  A fin de llevar el conteo de espacio libre se utiliza el archivo de control
  de espacio libre (ver página 
 \begin_inset LatexCommand \ref{sec:fsc}
  A fin de llevar el conteo de espacio libre se utiliza el archivo de control
  de espacio libre (ver página 
 \begin_inset LatexCommand \ref{sec:fsc}
@@ -1330,9 +1374,364 @@ Puede darse un caso excepcional en el que un registro sea m
  (siendo N la cantidad de bloques que necesita el registro), ocupando completos
  los todos los bloques a excepción del último, en el que posteriormente
  se pueden agregar más registros.
  (siendo N la cantidad de bloques que necesita el registro), ocupando completos
  los todos los bloques a excepción del último, en el que posteriormente
  se pueden agregar más registros.
+\layout Subsubsection
+
+
+\begin_inset LatexCommand \label{sub:tipo1_reg}
+
+\end_inset 
+
+Organización física de un registro.
+\layout Standard
+
+El registro es el que representa al dato realmente que se quiere almacenar.
+ Para representar ese dato se necesita una determinada información de control,
+ tanto para poder identificar el registro en un bloque (en búsquedas secuenciale
+s dentro del bloque) como para saber su longitud (dado que este tipo de
+ archivo utiliza registros de tamaño variable).
+\layout Standard
+
+Siguiendo la metodología general de E
+\begin_inset Formula $\mu$
+\end_inset 
+
+FS, se optó por incluir esta información de control como una cabecera al
+ comienzo del registro, siguiendo a esta los datos en sí.
+ La cabecera está compuesta por un identificador (
+\family typewriter 
+id
+\family default 
+) de registro (EMUFS_REG_ID, 4 bytes) seguido por el tamaño (
+\family typewriter 
+tamaño
+\family default 
+) del registros (EMUFS_REG_SIZE, 4 bytes).
+ Podemos ver gráficamente como se se compone un registro:
+\layout LyX-Code
+
+registro id
+\layout LyX-Code
+
++-----------+-----------+------------------+
+\layout LyX-Code
+
+|     id    |   tamaño  |   datos ...
+      |
+\layout LyX-Code
+
++-----------+-----------+------------------+
+\layout LyX-Code
+
+/- 4 bytes -/- 4 bytes -/- [tamaño] bytes -/
+\layout Subsubsection
+
+
+\begin_inset LatexCommand \label{sub:tipo1_reg_multi}
+
+\end_inset 
+
+Organización física de un registro más grande que un bloque (registro 
+\emph on 
+multibloque
+\emph default 
+).
+\layout Standard
+
+Puede darse el caso excepcional en que un registro sea de mayor longitud
+ que un bloque.
+ Al ser una situación excepcional, no siempre se resuelve de la forma más
+ eficiente ni se mínimiza el espacio ocupado por datos de control (como
+ se dijo anteriormente, se prefirió conservar la simpleza del código, adoptando
+ algoritmos generales aunque no sea de la forma más eficiente o maximizando
+ el uso del espacio para no perjudicar la mantenibilidad).
+\layout Standard
+
+Para menejar un registro 
+\emph on 
+multibloque 
+\emph default 
+se optó por limitarlo a la siguiente estructura (suponiendo que el registro
+ ocupa N bloques, con N > 1 y que un 
+\emph on 
+fragmento
+\emph default 
+ es una porción del registro que entra en un bloque):
+\layout Itemize
+
+Los primeros N-1 
+\emph on 
+fragmentos
+\emph default 
+ se almacenan en bloques completos consecutivos.
+\layout Itemize
+
+El último fragmento se almacena al comienzo del bloque inmediatamente posterior
+ al penúltimo.
+\layout Itemize
+
+Cada framento posee las cabeceras mencionadas en la sección 
+\begin_inset LatexCommand \ref{sub:tipo1_reg}
+
+\end_inset 
+
+, cuyo contenido es el siguiente:
+\begin_deeper 
+\layout Itemize
+
+En 
+\family typewriter 
+id
+\family default 
+ se almacena el identificador único obtenido al hacer el alta.
+\layout Itemize
+
+En 
+\family typewriter 
+tamaño
+\family default 
+ se almacena el tamaño del 
+\emph on 
+fragmento
+\emph default 
+ actual más los tamaños de los 
+\emph on 
+fragmentos
+\emph default 
+ posteriores, quedando en el primer 
+\emph on 
+fragmento
+\emph default 
+ el tamaño completo del registro y en el último sólo el tamaño del 
+\emph on 
+fragmento
+\emph default 
+ final.
+\end_deeper 
+\layout Standard
+
+Como puede observarse, la información de control en los 
+\emph on 
+fragmentos
+\emph default 
+ intermedios puede ser redundante, pero se conserva para poder realizar
+ algoritmos genéricos (que se basan en que al principio de un bloque, si
+ no está vacío, hay una cabecera de un registro) y para facilitar chequeos
+ de integridad del archivo.
+\layout Standard
+
+A continuación se presenta un ejemplo gráfico de un registro multibloque
+ de 10 bytes (de contenido 
+\begin_inset Quotes eld
+\end_inset 
+
+1234567890
+\begin_inset Quotes erd
+\end_inset 
+
+) almacenado en un archivo con bloques de 4 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 | tam | datos||| id | tam | datos||| id | tam |dato|..| 
+\backslash 
+
+\backslash 
+ |
+\layout LyX-Code
+
+||----+-----+------+||----+-----+------+||----+-----+----+..| // |
+\layout LyX-Code
+
+||  0 |  10 | 1234 |||  0 |  6  | 5678 |||  0 |  2  | 90 |..| 
+\backslash 
+
+\backslash 
+ |
+\layout LyX-Code
+
+|+----+-----+------+|+----+-----+------+|+----+-----+----+..| // |
+\layout LyX-Code
+
++-------------------+-------------------+-------------------+-
+\backslash 
+
+\backslash 
+-+
 \layout Section
 
 \layout Section
 
-Comportamiento (funciones de la interfáz)
+Funciones principales
+\layout Standard
+
+Las funciones principales son las necesarias para completar la estructura
+ EMUFS (ver página 
+\begin_inset LatexCommand \pageref{sub:EMUFS}
+
+\end_inset 
+
+).
+\layout Subsection
+
+Lectura de registros
+\layout Standard
+
+Para leer un registro se hace uso del archivo de índice (ver página 
+\begin_inset LatexCommand \pageref{sec:idx}
+
+\end_inset 
+
+), obteniéndose el número de bloque en donde está almacenado el registro
+ a buscar.
+ Una vez obtenido, se carga en memoria el bloque entero y se busca secuencialmen
+te en él (leyendo la cabecera de cada registro y salteando los datos) hasta
+ encontrar el registro pedido.
+ Una vez encontrado se lo copia y devuelve.
+\layout Standard
+
+Si se tratara de un registro 
+\emph on 
+multibloque
+\emph default 
+ (ver sección 
+\begin_inset LatexCommand \ref{sub:tipo1_reg_multi}
+
+\end_inset 
+
+), se procede forma similar, sólo que se cargan en memoria uno a uno los
+ bloques que componen el registro y se van copiando (y uniendo) los 
+\emph on 
+fragmentos
+\emph default 
+ hasta completarlo.
+\layout Standard
+
+Ver: 
+\family typewriter 
+emufs_tipo1_leer_registro()
+\layout Subsection
+
+Altas de registros
+\layout Standard
+
+Para realizar el alta de un registro, lo primero que se obtiene es un identifica
+dor, buscando primero en el archivo de identificadores recuperables (pág.
+\begin_inset LatexCommand \ref{sec:did}
+
+\end_inset 
+
+) y de no haber ninguno, buscando el mayor identificador presente en el
+ archivo de índice (pág.
+\begin_inset LatexCommand \ref{sec:idx}
+
+\end_inset 
+
+) y sumándole uno.
+ El paso siguiente es buscar un bloque con espacio libre suficiente como
+ para almacenar el registro (y su cabecera) en el archivo de control de
+ espacio libre (pág.
+\begin_inset LatexCommand \ref{sec:fsc}
+
+\end_inset 
+
+) y cargarlo completo en memoria.
+ De no encontrarse, se crea un bloque nuevo al final de archivo.
+ En el bloque cargado en memoria, se agrega el registro nuevo (con su cabecera)
+ al comienzo del espacio libre (calculado a partir del tamaño del bloque
+ y el espacio libre en bloque) y se lo graba en disco.
+ Finalmente se agrega (o actualiza) el identificador al archivo índice y
+ el espacio libre en el bloque.
+\layout Standard
+
+Si el registro ocupara más de un bloque (ver sección 
+\begin_inset LatexCommand \ref{sub:tipo1_reg_multi}
+
+\end_inset 
+
+), se buscan N bloques consecutivos (todos los que necesite el registro)
+ absolutamente libres
+\begin_inset Foot
+collapsed true
+
+\layout Standard
+
+Incluso el último bloque debe estar absolutamente libre para cumplir con
+ las condiciones presentadas en la sección 
+\begin_inset LatexCommand \ref{sub:tipo1_reg_multi}
+
+\end_inset 
+
+.
+\end_inset 
+
+ y graba bloque a bloque cada 
+\emph on 
+fragmento
+\emph default 
+ del registro (con sus cabeceras intermedias), al último 
+\emph on 
+fragmento
+\emph default 
+ se lo trata de forma análoga a un registro 
+\emph on 
+simple
+\emph default 
+.
+ Por cada bloque utilizado se actualiza el archivo de control de espacio
+ libre.
+\layout Standard
+
+Ver: 
+\family typewriter 
+emufs_tipo1_agregar_registro()
+\layout Subsection
+
+Bajas de registros
+\layout Standard
+
+Ver: 
+\family typewriter 
+emufs_tipo1_borrar_registro()
+\layout Subsection
+
+Modificación de registros
+\layout Standard
+
+Ver: 
+\family typewriter 
+emufs_tipo1_modificar_registro()
+\layout Subsection
+
+Obtención de estadísticas
+\layout Standard
+
+Ver: 
+\family typewriter 
+emufs_tipo1_leer_estadisticas()
+\layout Subsection
+
+Compactación del archivo de datos
+\layout Standard
+
+Ver:
+\family typewriter 
+ emufs_tipo1_compactar()
 \layout Section
 
 Detalles de implementación (funciones internas, ver si lo ponemos o no)
 \layout Section
 
 Detalles de implementación (funciones internas, ver si lo ponemos o no)
@@ -1491,9 +1890,15 @@ As
 \series bold 
 .idx
 \series default 
 \series bold 
 .idx
 \series default 
- :
-\newline 
+: 
+\begin_inset Float table
+placement H
+wide false
+collapsed true
+
+\layout Caption
 
 
+Organización física del archivo de índice o posiciones relativas.
 \layout Standard
 
 
 \layout Standard
 
 
@@ -1595,14 +2000,14 @@ El segundo registro (reg1) comienza en el byte 60
 \end_inset 
 
 
 \end_inset 
 
 
+\end_inset 
+
+
 \layout Standard
 
 
 \series bold 
 \emph on 
 \layout Standard
 
 
 \series bold 
 \emph on 
-\SpecialChar ~
-
-\newline 
 Observación:
 \series default 
 \emph default 
 Observación:
 \series default 
 \emph default 
@@ -1627,10 +2032,21 @@ As
 \series bold 
 .fsc
 \series default 
 \series bold 
 .fsc
 \series default 
- : 
-\newline 
+: 
+\begin_inset Float table
+placement H
+wide false
+collapsed true
+
+\layout Caption
+
+Organización física del archivo de 
+\emph on 
+gaps 
+\emph default 
+o control de espacio libre.
+\layout Standard
 
 
-\newline 
 
 \begin_inset  Tabular
 <lyxtabular version="3" rows="2" columns="3">
 
 \begin_inset  Tabular
 <lyxtabular version="3" rows="2" columns="3">
@@ -1702,14 +2118,14 @@ FREESPACE
 \end_inset 
 
 
 \end_inset 
 
 
+\end_inset 
+
+
 \layout Standard
 
 
 \series bold 
 \emph on 
 \layout Standard
 
 
 \series bold 
 \emph on 
-\SpecialChar ~
-
-\newline 
 Nota:
 \series default 
 \emph default 
 Nota:
 \series default 
 \emph default 
@@ -1749,7 +2165,7 @@ El archivo de ID's liberados no presenta ning
  su estructura y funcionamiento.
 \layout Section
 
  su estructura y funcionamiento.
 \layout Section
 
-Comportamiento (funciones de la interfaz)
+Funciones Principales
 \layout Standard
 
 Dentro de 
 \layout Standard
 
 Dentro de 
@@ -2258,9 +2674,9 @@ Damos por terminada as
  para el caso del tipo 2, es realmente bastante sencillo.
 \layout Standard
 
  para el caso del tipo 2, es realmente bastante sencillo.
 \layout Standard
 
-Ver: 
+Ver:
 \family typewriter 
 \family typewriter 
-void emufs_tipo2_compactar()
+ emufs_tipo2_compactar()
 \layout Section
 
 Consideraciones y Políticas de Diseño
 \layout Section
 
 Consideraciones y Políticas de Diseño
@@ -2397,9 +2813,6 @@ El comportamiento de este archivo, es com
 \layout Section
 
 Funciones Principales
 \layout Section
 
 Funciones Principales
-\layout Subsection
-
-EMUFS Tipo 3
 \layout Standard
 
 Dento de 
 \layout Standard
 
 Dento de 
@@ -2415,7 +2828,7 @@ tipo3.c
 \layout Standard
 
 A continuación se comentará la descripción de algunas acciones importantes.
 \layout Standard
 
 A continuación se comentará la descripción de algunas acciones importantes.
-\layout Subsubsection
+\layout Subsection
 
 Leer Registro
 \layout Standard
 
 Leer Registro
 \layout Standard
@@ -2437,7 +2850,7 @@ ID
 Ver: 
 \family typewriter 
 emufs_tipo3_leer_registro()
 Ver: 
 \family typewriter 
 emufs_tipo3_leer_registro()
-\layout Subsubsection
+\layout Subsection
 
 Grabar Registro
 \layout Standard
 
 Grabar Registro
 \layout Standard
@@ -2453,7 +2866,7 @@ Luego de grabar un registro, actualiza los archivos de 
 Ver: 
 \family typewriter 
 emufs_tipo3_grabar_registro()
 Ver: 
 \family typewriter 
 emufs_tipo3_grabar_registro()
-\layout Subsubsection
+\layout Subsection
 
 Borrar Registro
 \layout Standard
 
 Borrar Registro
 \layout Standard
@@ -2472,7 +2885,12 @@ Cabe destacar que para dar de baja un registro no hace falta borrarlo del
  presente en el archivo de datos.
  Esto es una consecuencia del ajuste al borrar un registro, pudiendo no
  ser así, si no se realizara el mismo.
  presente en el archivo de datos.
  Esto es una consecuencia del ajuste al borrar un registro, pudiendo no
  ser así, si no se realizara el mismo.
-\layout Subsubsection
+\layout Standard
+
+Ver: 
+\family typewriter 
+emufs_tipo3_borrar_registro()
+\layout Subsection
 
 Leer Estadísticas
 \layout Standard
 
 Leer Estadísticas
 \layout Standard
@@ -2495,7 +2913,7 @@ Completa una estructura del tipo EMUFS_Estadisticas con las estad
 Ver: 
 \family typewriter 
 emufs_tipo3_leer_estadisticas()
 Ver: 
 \family typewriter 
 emufs_tipo3_leer_estadisticas()
-\layout Subsubsection
+\layout Subsection
 
 Compactar el Archivo
 \layout Standard
 
 Compactar el Archivo
 \layout Standard