prooverá una interfaz (funciones) para su manejo).
\layout Subsection
+Tipos Comunes
+\layout Standard
+
+En la implementación de cada tipo de organización física, así como tambien
+ en las API de los archivos auxiliares comunes a ellas, se da la utilización
+ de tipo definidos para una clara interfaz entre las mismas, los cuales
+ son brevemente descriptos a continuación y pueden ser hallados en el archivo
+
+\series bold
+emufs.h
+\series default
+:
+\layout Itemize
+
+
+\family typewriter
+EMUFS_REG_ID
+\family default
+: usado para representar un
+\emph on
+Id
+\emph default
+ de un registro.
+\layout Itemize
+
+
+\family typewriter
+EMUFS_REG_SIZE
+\family default
+: usado para representar el tamaño en bytes de un registro.
+\layout Itemize
+
+
+\family typewriter
+EMUFS_BLOCK_ID
+\family default
+: usado para representar un número de bloque.
+\layout Itemize
+
+
+\family typewriter
+EMUFS_BLOCK_SIZE
+\family default
+: usado para representar el tamaño en bytes de un bloque.
+\layout Itemize
+
+
+\family typewriter
+EMUFS_FREE
+\family default
+: usado para representar espacio libre en bytes.
+\layout Itemize
+
+
+\family typewriter
+EMUFS_OFFSET
+\family default
+: usado para representar un offset.
+\layout Standard
+
+Todos son del tipo
+\family typewriter
+unsigned long
+\family default
+.
+\layout Subsection
+
EMUFS
\layout Standard
\family typewriter
unsigned long
\family default
- tam_archivo: indica el tamaño del archivo de datos (.dat) en bytes.
+
+\family typewriter
+tam_archivo
+\family default
+: indica el tamaño del archivo de datos (.dat) en bytes.
\layout Itemize
\family typewriter
unsigned long
\family default
- tam_archivos_aux: indica el tamaño de los archivos auxiliares sumados en
- bytes.
+
+\family typewriter
+tam_archivos_aux
+\family default
+: indica el tamaño de los archivos auxiliares sumados en bytes.
\layout Itemize
\family typewriter
unsigned long
\family default
- tam_info_control_dat: indica la cantidad de bytes en información de control
- utilizados para el archivo.
+
+\family typewriter
+tam_info_control_dat
+\family default
+: indica la cantidad de bytes en información de control utilizados para
+ el archivo.
\layout Itemize
\family typewriter
unsigned long
\family default
- media_fs: promedio de espacio libre en el archivo de datos (por bloque
- o gap promedio segun la org)
+
+\family typewriter
+media_fs
+\family default
+: promedio de espacio libre en el archivo de datos (por bloque o gap promedio
+ segun la org)
\layout Itemize
\family typewriter
unsigned long
\family default
- total_fs: total de espacio libre en el archivo de datos.
+
+\family typewriter
+total_fs
+\family default
+: total de espacio libre en el archivo de datos.
\layout Itemize
\family typewriter
unsigned long
\family default
- max_fs: máximo espacio libre en el archivo de datos (en un bloque o máximo
- gap segun la org).
+
+\family typewriter
+max_fs
+\family default
+: máximo espacio libre en el archivo de datos (en un bloque o máximo gap
+ segun la org).
\layout Itemize
\family typewriter
unsigned long
\family default
- min_fs: idem pero mínimo.
+
+\family typewriter
+min_fs
+\family default
+: idem pero mínimo.
\layout Itemize
\family typewriter
unsigned long
\family default
- cant_bloques: cantidad de bloques en el archivo de datos (.
+
+\family typewriter
+cant_bloques
+\family default
+: cantidad de bloques en el archivo de datos (.
\series bold
dat
\series default
\family typewriter
unsigned long
\family default
- cant_registros: cantidad de registros en el archivo de datos (
+
+\family typewriter
+cant_registros
+\family default
+: cantidad de registros en el archivo de datos (
\series bold
.dat
\series default
Desviaciones extremas de espacio libre (máximo/mínimo espacio libre en bloque
o mayor/menor gap)
-\layout Subsection
-
-Tipos Comunes
-\layout Standard
-
-En la implementación de cada tipo de organización física, así como tambien
- en las API de los archivos auxiliares comunes a ellas, se da la utilización
- de tipo definidos para una clara interfaz entre las mismas, los cuales
- son brevemente descriptos a continuación y pueden ser hallados en el archivo
-
-\series bold
-emufs.h
-\series default
-:
-\layout Itemize
-
-
-\family typewriter
-EMUFS_REG_ID
-\family default
-: usado para representar un
-\emph on
-Id
-\emph default
- de un registro.
-\layout Itemize
-
-
-\family typewriter
-EMUFS_REG_SIZE
-\family default
-: usado para representar el tamaño en bytes de un registro.
-\layout Itemize
-
-
-\family typewriter
-EMUFS_BLOCK_ID
-\family default
-: usado para representar un número de bloque.
-\layout Itemize
-
-
-\family typewriter
-EMUFS_BLOCK_SIZE
-\family default
-: usado para representar el tamaño en bytes de un bloque.
-\layout Itemize
-
-
-\family typewriter
-EMUFS_FREE
-\family default
-: usado para representar espacio libre en bytes.
-\layout Itemize
-
-
-\family typewriter
-EMUFS_OFFSET
-\family default
-: usado para representar un offset.
-\layout Standard
-
-Todos son del tipo
-\family typewriter
-unsigned long
-\family default
-.
\layout Section
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.
+ 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).
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 true
+collapsed false
\layout Caption
sucedera lo siguiente:
\layout LyX-Code
-efs->leer_registro(params) -- calls --> emufs_tipo3_leer_registro(params)
+efs->leer_registro(params) -- llama a --> 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
):
\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
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.
+ correspondiente en el índice, y se actualizara su LOCATION, estableciendolo
+ en el valor especial
+\family typewriter
+EMUFS_NOT_FOUND
+\family default
+, 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
typedef struct emufs_fsc_t {
\layout LyX-Code
- unsigned long int marker;
+ EMUFS_BLOCK_ID marker;
\layout LyX-Code
- unsigned long int freespace;
+ EMUFS_FREE freespace;
\layout LyX-Code
} EMUFS_FSC;
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 false
+collapsed true
\layout Caption