]> git.llucax.com Git - z.facultad/75.06/emufs.git/blob - doc/informe.lyx
cambio los tipos de EMUFS_FSC y agrego doxycomentarios en tipo3.h
[z.facultad/75.06/emufs.git] / doc / informe.lyx
1 #LyX 1.3 created this file. For more info see http://www.lyx.org/
2 \lyxformat 221
3 \textclass book
4 \language spanish
5 \inputencoding auto
6 \fontscheme palatino
7 \graphics default
8 \paperfontsize default
9 \spacing single 
10 \papersize a4paper
11 \paperpackage widemarginsa4
12 \use_geometry 0
13 \use_amsmath 0
14 \use_natbib 0
15 \use_numerical_citations 0
16 \paperorientation portrait
17 \secnumdepth 3
18 \tocdepth 3
19 \paragraph_separation indent
20 \defskip medskip
21 \quotes_language english
22 \quotes_times 2
23 \papercolumns 1
24 \papersides 1
25 \paperpagestyle default
26
27 \layout Title
28
29 E
30 \begin_inset Formula $\mu$
31 \end_inset 
32
33 FS
34 \layout Author
35
36 Nicolás Dimov
37 \newline 
38 Alan Kennedy
39 \newline 
40 Leandro Lucarella
41 \newline 
42 Ricardo Markiewicz
43 \layout Chapter
44
45 Introducción
46 \layout Chapter
47
48 Estructura común
49 \layout Section
50
51 Tipos
52 \layout Subsection
53
54 EMUFS
55 \layout Standard
56
57
58 \emph on 
59 EMUFS 
60 \emph default 
61 es la estuctura principal que encapsula todas las funciones para el manejo
62  de un archivo de datos.
63 \layout Standard
64
65 Esta estructura consta de:
66 \layout Enumerate
67
68 EMUFS_Tipo que es un tipo enumerado que indica cual es la organización.
69 \layout Enumerate
70
71 EMUFS_BLOCK_SIZE indica el tamaño del bloque para los tipos 1 y 3.
72 \layout Enumerate
73
74 EMUFS_REG_SIZE indica el tamaño del registro, para el tipo 3 que posee tamaño
75  constante.
76 \layout Enumerate
77
78 void *leer_bloque()
79 \layout Comment
80
81 no me convence esta descripcion.
82  
83 \layout Subsection
84
85 EMUFS_Tipo
86 \layout Subsection
87
88 EMUFS_Estadisticas
89 \layout Subsection
90
91 EMUFS_BLOCK_ID
92 \layout Standard
93
94 etc
95 \layout Chapter
96
97 Archivos Auxiliares
98 \layout Comment
99
100 Por que los 3 tipos usan los mismo.
101  Ventajas y desventajas.
102 \layout Section
103
104 Archivo de índice (.idx)
105 \layout Standard
106
107 Con la ayuda de un archivo de bloques y registros (de extensión .idx), podremos
108  ubicar cualquier registro existente dentro del archivo.
109 \layout Standard
110
111 El archivo de índice contiene una estructura que contiene el id de un registro
112  y el número de bloque al que pertenece.
113  Este archivo esta ordenado por 
114 \emph on 
115 id
116 \emph default 
117 , de modo que incrementa su tamaño cada vez que se grabe en el archivo de
118  datos un nuevo registro, excepto que un registro haya sido borrado con
119  anterioridad lo cual produce que al guardar un nuevo registro se actualice
120  y no crezca.
121 \layout Standard
122
123 Si un registro es borrado del archivo de datos, debe actualizarse el índice,
124  esto se logra colocando un flag que indique que el id no pertenece a ningún
125  bloque, hemos adoptado poner -1 en el campo location de la estructura 
126 \emph on 
127 EMUFS_IDX
128 \emph default 
129 .
130 \layout Standard
131
132 Es necesario que este archivo esté ordenado por 
133 \emph on 
134 id
135 \emph default 
136  de registro, ya que esto permitirá el acceso directo para la búsqueda de
137  un registro en el archivo de datos.
138 \layout Subsection
139
140 Estructura física
141 \layout Standard
142
143 El tipo EMUFS_IDX define la estuctura de los registros de este archivo.
144 \layout Standard
145
146 Esta estructura está compuesta por don enteros (long).
147 \layout Itemize
148
149 EMUFS_REG_ID reg_id indica el 
150 \emph on 
151 id
152 \emph default 
153  del registro
154 \layout Itemize
155
156 EMUFS_BLOCK_ID location número de bloque donde se encuentra el registro.
157 \layout Standard
158
159 EMUFS_REG_ID y EMUFS_BLOCK_ID son 
160 \emph on 
161 unsigned long.
162 \layout Comment
163
164 ponerlo mas lindo...
165 \layout Subsection
166
167 Comportamiento (funciones generales)
168 \layout Section
169
170 Archivo de control de espacio libre (.fsc)
171 \layout Subsection
172
173 Estructura Física
174 \layout Standard
175
176 La estuctura que define este archivo es la siguiente:
177 \layout Standard
178
179 EMUFS_FSC que contiene
180 \layout Itemize
181
182 EMUFS_BLOCK_ID indica el número de bloque
183 \layout Itemize
184
185 EMUFS_FREE freespace indica la cantidad de espacio libre que queda en el
186  bloque.
187 \layout Section
188
189 Archivo de índices recuperables (.did)
190 \layout Standard
191
192 idem anterior
193 \layout Chapter
194
195 Archivo con bloques parametrizados y registros de longitud variable
196 \layout Standard
197
198 introduccion
199 \layout Section
200
201 Organización física
202 \layout Section
203
204 Comportamiento (funciones de la interfáz)
205 \layout Section
206
207 Detalles de implementación (funciones internas, ver si lo ponemos o no)
208 \layout Chapter
209
210 Archivo sin bloques y registros de longitud variable
211 \layout Standard
212
213 introduccion
214 \layout Section
215
216 Organización física
217 \layout Section
218
219 Comportamiento (funciones de la interfáz)
220 \layout Section
221
222 Detalles de implementación (funciones internas, ver si lo ponemos o no)
223 \layout Chapter
224
225 Archivo con bloques parametrizados y registros de longitud constante
226 \layout Standard
227
228 Las distintas organizaciones de archivos buscan aprovechar al máximo el
229  espacio del archivo.
230 \layout Standard
231
232 En este caso veremos que sucede luego de agregar y borrar una gran cantidad
233  de registros del archivo, lo que provoca como consecuencia directa la fragmenta
234 ción del archivo, es decir, quedan huecos entre un registro y otro, lo que
235  produce un desperdicio de espacio.
236 \layout Section
237
238 Organización Física
239 \layout Standard
240
241 Esta organización guarda los registros pertenecientes al archivo en bloques
242  de tamaño parametrizado, de modo que intentará guardar la mayor cantidad
243  de registros que quepan en un bloque.
244  
245 \layout Standard
246
247 Así como los graba, también tendrá la posibilidad de leer registros y borrarlos
248  del archivo.
249 \layout Subsection
250
251 Comportamiento Particular de los Archivos Auxiliares
252 \layout Subsubsection
253
254 Archivo de Bloques y Registros (.idx)
255 \layout Comment
256
257 buscar algun caso extraordinario.
258 \layout Subsubsection
259
260 Archivo de Bloques y Espacio Libre (.fsc)
261 \layout Standard
262
263 El archivo de de espacios libres permite decidir a la hora de guardar un
264  registro, donde será guardado.
265  
266 \layout Standard
267
268 La estructura de este archivo está formada por un número que indica el bloque
269  y otro que indica el espacio libre en él.
270 \layout Standard
271
272 De esta manera al querer guardar un registro este archivo informará donde
273  cabe el mismo, previa invocación al la función 
274 \emph on 
275 EMUFS_BLOCK_ID emufs_fsc_buscar_lugar(EMUFS *, EMUFS_FREE, EMUFS_FREE*)
276 \emph default 
277  perteneciente a fsc.h, la cual devuelve el número de bloque donde entra
278  el registro o -1 si no hay un bloque con lugar suficiente, y toma como
279  parámetros una estructura 
280 \emph on 
281 EMUFS
282 \emph default 
283 , y dos 
284 \emph on 
285 EMUFS_FREE
286 \emph default 
287  donde el segndo parámetro es el tamaño buscado, y el tercero devuelve el
288  tamaño disponible.
289 \layout Standard
290
291 De la misma manera, al borrar un registro este archivo debe ser actualizado
292  colocando el nuevo espacio libre en el bloque.
293 \layout Subsubsection
294
295 Archivo de Id`s Borrados (.did)
296 \layout Standard
297
298 Este archivo funciona como una pila de id`s borrados, es decir, cuando se
299  borra un registro el id se almacena en este archivo y será recuperado cuando
300  se desee grabar un registro nuevo, de esta manera se aprovechan todos los
301  id`s sin necesidad de crear uno nuevo cada vez que se borra y graba un
302  registro.
303 \layout Section
304
305 Funciones Principales
306 \layout Subsection
307
308 EMUFS Tipo 3
309 \layout Standard
310
311 Dento de 
312 \emph on 
313 tipo3.h
314 \emph default 
315  y 
316 \emph on 
317 tipo3.c
318 \emph default 
319  se encuentran las cabeceras y la implementación de las funciones principales
320  respectivamente, las cuales dan funcionalidad a esta organización.
321 \layout Standard
322
323 A continuación se comentará la descripción de algunas acciones importantes.
324 \layout Subsubsection
325
326 Leer Registro
327 \layout Standard
328
329 La lectura de un registro se realiza con la ayuda del archivo .
330 \emph on 
331 idx
332 \emph default 
333  el cual contiene la información de la posición del registro dentro del
334  archivo de datos.
335  Una vez leida esta información, se recupera el bloque (en su totalidad)
336  del archivo y se busca secuencialmente el registro con el 
337 \emph on 
338 ID
339 \emph default 
340  especificado.
341 \layout Standard
342
343
344 \emph on 
345 ver: void* emufs_tipo3_leer_registro(EMUFS *emu, EMUFS_REG_ID ID, EMUFS_REG_SIZE
346 * reg_size, int* err)
347 \layout Subsubsection
348
349 Grabar Registro
350 \layout Standard
351
352 Graba un registro en un bloque donde haya espacio suficiente, y si no crea
353  un nuevo bloque y lo agrega al final del archivo.
354 \layout Standard
355
356 Luego de grabar un registro, actualiza los archivos de índice .idx y .fsc
357  para mantener la coherencia.
358 \layout Standard
359
360
361 \emph on 
362 ver: EMUFS_REG_ID emufs_tipo3_grabar_registro(EMUFS *emu, void *ptr, EMUFS_REG_S
363 IZE tam, int* err)
364 \layout Subsubsection
365
366 Borrar Registro
367 \layout Standard
368
369 Borra un registro del archivo de datos, para esto levanta el bloque al que
370  pertenece el archivo y ajusta los demás registros justificandolos hacia
371  la izquierda.
372 \layout Standard
373
374 Cabe destacar que para dar de baja un registro no hace falta borrarlo del
375  archivo de datos, solo es necesario borrar las entradas en los archivos
376  de índice.
377 \layout Subsubsection
378
379 Leer Estadísticas
380 \layout Standard
381
382 Se puede tener acceso a las estadísticas generales del archivo, por ejemplo,
383  cantidad de bloques, cantidad de registros, espacio libre total, espacio
384  libre promedio, espacio libre máximo y mínimo, etc.
385 \layout Standard
386
387 Esta información es el resultado de ciertos cálculos realizados tanto en
388  el archivo de datos como en los archivos índice.
389 \layout Standard
390
391 Completa una estructura del tipo EMUFS_Estadisticas con las estadísticas
392  del archivo de datos, espacio libre total, cantidad de registros, cantidad
393  de bloques, tamaño del archivo en bytes, relaciones entre tamaños y espacios
394  libres, etc.
395 \layout Standard
396
397
398 \emph on 
399 ver: EMUFS_Estadisticas emufs_tipo3_leer_estadisticas(EMUFS *emu)
400 \layout Subsubsection
401
402 Compactar el Archivo
403 \layout Standard
404
405 Esta función intenta reorganizar el archivo de manera que el espacio libre
406  sea lo menor posible, recordando siempre que un registro no puede ser almacenad
407 o en mas de un bloque excepto que el tamaño del registro sea mayor que el
408  del bloque.
409 \layout Standard
410
411 Para realizar esto, se aprovecha la funcionalidad de 
412 \emph on 
413 emufs_tipo3_grabar_registro() 
414 \emph default 
415 ya que esta tiene la capacidad de determinar una posición mas eficiente
416  en el archivo para un registro.
417  Por esto lo que se hace es levantar uno por uno los registros y volverlos
418  a grabar, de ese modo todos los 
419 \emph on 
420 gaps 
421 \emph default 
422 que pudieron haberse formado por la eliminación de registros serán cubiertos
423  por otros.
424 \layout Standard
425
426 Al finalizar este proceso se verifica si existen bloques vacios para truncar
427  el archivo.
428  Lo mismo se debe hacer con el archivo de espacios libres .
429 \emph on 
430 fsc 
431 \emph default 
432 el cual disminuye su tamaño también.
433 \layout Standard
434
435
436 \emph on 
437 ver: void emufs_tipo3_compactar(EMUFS *emu)
438 \layout Section
439
440 Consideraciones y Políticas de Diseño
441 \layout Comment
442
443 Esto para mi va en organización física.
444 \layout Standard
445
446 Se han tomado ciertas consideraciones para algunos casos particulares que
447  se pueden presentar durante el uso/ejecución de la aplicación.
448 \layout Enumerate
449
450 Cada registro tiene un encabezado que indica el 
451 \emph on 
452 id 
453 \emph default 
454 del mismo.
455 \layout Enumerate
456
457 Si el tamaño del registro es mayor que el tamaño del bloque el registro
458  se particionará en la cantidad de bloques que sea necesario, pero siempre
459  se guardará desde el comienzo de un bloque, esto quiere decir que nunca
460  se podrá encontrar un comienzo de registro en algún lugar de un bloque
461  que no sea el comienzo del mismo.
462 \layout Enumerate
463
464 Si el registro se divide en mas de un bloque, se le coloca el id como encabezado
465  igualmente, pero en el archivo .
466 \emph on 
467 idx
468 \emph default 
469  solo se guarda el primer bloque.
470  En el 
471 \emph on 
472 .fsc
473 \emph default 
474  se actualizan todos los bloques con el espacio libre que realmente tienen.
475 \layout Chapter
476
477 Conclusiones
478 \layout Standard
479
480 Las comparaciones, pruebas, etc...
481 \the_end