Antes de pasar a su descripción, notamos la invocación general para comprimir
y descomprimir un archivo como se pidió en el enunciado
\begin_inset Foot
-collapsed true
+collapsed false
\layout Standard
-t
\family default
opcional que permite generar un archivo comprimido multivolumen, donde
- volsize será el tamaño en kbytes de cada volúmen, excepto el último que
+ volsize será el tamaño en kbytes de cada volumen, excepto el último que
podrá ser menor.
\layout Subsection
Opciones adicionales
\layout Standard
-Ademas de los flags standards que hemos visto recién, nuestro compresor
- cuenta con otra serie de ellos para la utilización de los features especiales
+Además de los flags estándar que hemos visto recién, nuestro compresor cuenta
+ con otra serie de ellos para la utilización de los características especiales
que veremos más adelante.
A fines de documentar la totalidad de los flags de ejecución, detallamos
los anteriores y los adicionales a continuación:
\family typewriter
-c
\family default
- Indica que se desea comprimir un archivo (mutualmente exclusivo con
+ Indica que se desea comprimir un archivo (mutuamente exclusivo con
\family typewriter
-d
\family default
\family typewriter
-d
\family default
- Indica que se desea descomprimir un archivo (mutualmente exclusivo con
-
+ Indica que se desea descomprimir un archivo (mutuamente exclusivo con
\family typewriter
-c
\family default
La técnica de Block Sorting
\begin_inset Foot
-collapsed true
+collapsed false
\layout Standard
El otro problema es el tiempo de ordenamiento de los desplazamientos, que
debe ser lo menor posible.
- Una posibiliad es utilizar un método de ordenamiento de bajo órden, como
+ Una posibilidad es utilizar un método de ordenamiento de bajo orden, como
el Quick Sort
\begin_inset Foot
-collapsed true
+collapsed false
\layout Standard
\begin_inset Foot
-collapsed true
+collapsed false
\layout Standard
\series bold
HUFF_STATE
\series default
-, en la cual se especificarán cosas tales como si el compresor actua sobre
- archivos o chunks de datos, si es un huffman canonico o standard, archivo
+, en la cual se especificarán cosas tales como si el compresor actúa sobre
+ archivos o chunks de datos, si es un huffman canónico o estándar, archivo
a comprimir, archivo destino, etc.
\layout Paragraph
\series medium
A fines de poder grabar o cargar un modelo de orden-0 el cual simplemente
- consiste en una tabla de frecuencias/probabilidades de los 255 symbolos
+ consiste en una tabla de frecuencias/probabilidades de los 255 símbolos
posibles en un archivo, dando lugar al Huffman Canónico que será explicado
posteriormente, se cuenta con dos funciones:
\family typewriter
, y
\family typewriter
shuff_load_model()
+\layout Subsection
+
+Virtual File
+\layout Standard
+
+Uno de los problemas que teníamos al principio era que las tareas estaban
+ mezcladas, entonces donde se estaba comprimiendo, se estaba guardando también
+ en un archivo y manejando la lógica de hacer los splits de los archivos.
+\layout Standard
+
+Obviamente como eso resultaba muy molesto planteamos un modelo más abstracto
+ al que llamamos Virtual File, que es una API escrita sobre la API ANSI-C
+ de Input/Output que maneja de manera transparente este tema.
+\layout Standard
+
+Utilizar la API esta tan simple como agregar una
+\begin_inset Quotes eld
+\end_inset
+
+v
+\begin_inset Quotes erd
+\end_inset
+
+ delante de las funciones fopen, fclose, fread, etc y reemplazar la estructura
+ FILE por VFILE.
+\layout Standard
+
+Cuando se abre un archivo para escritura a medida que se van escribiendo
+ bytes se va incrementando un contador.
+ Si el contador llega al limite pedido, se cierra el archivo actual, se
+ abre el siguiente y se sigue escribiendo en éste, de manera totalmente
+ transparente para el usuario/programador.
+\layout Standard
+
+La lectura es similar.
+ Cada vez que se llega al EOF de un archivo, si éste no es el último volumen,
+ se cierra el archivo actual y se abre el siguiente hasta llegar al EOF
+ del último volumen.
\layout Section
Prueba Calgary Corpus
\layout Standard
-El set de prueba Calgary Corpus Test es utilizado internacionalmente para
- la prueba y comparación de compresores, contando con archivos diseñados
- especificamente para estos fines.
- Es por ello que hemos utilizado dicho set y a continuación exponemos los
- resultados:
+El conjunto de prueba Calgary Corpus Test es utilizado internacionalmente
+ para la prueba y comparación de compresores, contando con archivos diseñados
+ específicamente para estos fines.
+ Es por ello que hemos utilizado dicho conjunto y a continuación exponemos
+ los resultados:
\layout Standard