Documente Academic
Documente Profesional
Documente Cultură
ORGANIZACIONES DE FICHEROS Y
ESTRUCTURAS DE ACCESO
1. Introducción
2. Conceptos fundamentales de organizaciones de ficheros
3. Dispositivos de almacenamiento secundario
4. Ficheros desordenados
5. Ficheros ordenados
6. Ficheros dispersos
7. Agrupamiento
8. Indices
1. Introducción
Es fundamental un buen diseño de la estructura de los ficheros para poder tener acceso a toda
la capacidad del disco sin hacer que las aplicaciones tengan que esperar mucho tiempo por los
datos.
Fichero de Plantilla
Enum Apellido Puesto DNI Onum campo
EL21 Pastor Director 39432212E O5
EG37 Cubedo Supervisor 38766623X O3 registro
EG14 Collado Administrativo 24391223L O3
EA9 Renau Supervisor 39233190F O7
EG5 Prats Director 25644309X O3 valor del campo Onum
EL41 Baeza Supervisor 39552133T O5 en un registro
Estructuras de ficheros
Discos
Las pistas se dividen en porciones, que son las unidades más pequeñas de espacio que se
pueden direccionar, y son:
O bien sectores: • Son divisiones físicas (tamaño fijo).
• Presentan problemas de fragmentación interna.
• Hay información invisible al programador al principio de cada sector (dirección de
sector, dirección de pista y condición).
O bien bloques: • Son divisiones lógicas (su tamaño es variable, definido por el usuario).
• El tamaño de bloque se puede fijar como un múltiplo del tamaño de registro: no
hay problemas de fragmentación.
• Los bloques contienen datos e información sobre los datos: tamaño en bytes y, a
veces, una clave.
• Hay información invisible al programador al principio de cada bloque (más que
con los sectores), pero también hay información que debe ser tenida en cuenta por
el programador.
Un cluster es una cantidad fija de sectores/bloques contiguos, la unidad de espacio más pequeña que se
puede asignar a un fichero; el gestor de ficheros ve un fichero como un conjunto de clusters (FAT).
En extent es un trozo de fichero formado por varios clusters contiguos.
write("texto",c,1) c: 'P'
1. El programa pide al SO que escriba el contenido de c en el fichero texto.
2. El SO pasa el trabajo al gestor de ficheros (GF).
3. El GF comprueba que las características lógicas del fichero son consistentes
con lo que se quiere hacer.
4. El GF busca en la FAT la posición física del sector que recibirá el sector/bloque donde se almacena
el byte.
5. El GF pide que el sector se lea y almacene en un buffer de E/S en RAM y escribe P
en la posición correspondiente en el buffer.
6. El GF dice al procesador de E/S dónde está el sector/bloque en RAM y dónde va en el disco.
7. El procesador de E/S espera a que el dispositivo esté disponible y pone los datos en
el formato del disco.
8. El procesador de E/S envía los datos al controlador del disco.
9. El controlador del disco indica al dispositivo que mueva la cabeza a la pista, espera hasta
que el sector esté bajo ella y le manda los datos, que son escritos bit a bit.
Los ficheros desordenados pueden tener registros de longitud fija o de longitud variable.
Se suelen utilizar con caminos de acceso adicionales (índices).
También se utilizan para almacenar datos que se van a procesar más tarde.
5. Ficheros ordenados
Los registros se encuentran ordenados físicamente en el fichero según el valor de un campo,
el campo de ordenación.
Buscar: Búsqueda binaria si es por el campo de ordenación,
sino búsqueda lineal.
Leer ordenadamente: Muy eficiente si es a través del campo de ordenación,
sino ordenación externa.
Insertar: Encontrar posición, hacer hueco y escribir. Se puede tener espacio vacío
en cada bloque para inserciones o bien tener un fichero de
desbordamiento (overflow).
Eliminar: Encontrar registro y borrarlo o marcarlo como borrado.
Cada cierto tiempo se debe hacer una reorganización.
Modificar: Encontrar y modificar en caso de que quepa (longitud variable).
Si no cabe hay que borrar, hacer hueco e insertar. Si se modifica el campo
de ordenación, hay que cambiar el registro de lugar (borrar, hacer hueco e
insertar).
Los ficheros ordenados se suelen utilizar para hacer índices.
La dirección de cada registro se calcula aplicando cierta función sobre uno de sus campos, el
campo de dispersión. El acceso a los datos es muy rápido sólo si se busca con la condición de
igualdad sobre dicho campo. A los ficheros que utilizan este tipo de organización se les suele
llamar también ficheros directos.
La dispersión se puede utilizar a nivel interno (RAM), como una estructura de datos de un
programa o bien a nivel externo para ficheros en disco.
Hay varios tipos de dispersión a nivel externo:
Estática.
Dinámica.
Extensible.
Lineal.
:
...
:
M-2
M-1
La función de dispersión produce un número de bloque relativo. En una tabla que se guarda en
la cabecera del fichero se convierte ese número relativo en una dirección efectiva del disco
(bloque o cluster).
Dispersión Estática
Manejo de colisiones mediante encadenamiento: cada bloque con colisiones tiene un puntero a
una lista de registros de desbordamiento (overflow). Los registros de esta lista están
encadenados (enlazados por punteros).
Bloques principales
Bloque 0 340
460
Bloques de desborde
Puntero a registros 981 Puntero a registros
Puntero a registros
Bloque 1 321 182 Puntero a registros
761 :
91
Puntero a registros 652 Puntero a registros
761 Puntero a registros
Bloque 2 22 91 Puntero a registros
72
522 (los punteros apuntan a registros
Puntero a registros dentro de los bloques de desborde)
Bloque 3 399
89
Puntero a registros
Dispersión Dinámica.
Dispersión Extensible.
Dispersión Lineal.
Las dos primeras técnicas necesitan almacenar una estructura de acceso o directorio además
del fichero. La tercera técnica no necesita directorio.
d'=3
Directorio
000
001
010 d'=2
011
100
101
110 d'=2
111
d'=3
d'=3
d'=1 0000
Directorio 0111
00
01
10 d'=2 1001
11 ¡lleno!
1000
d=2 1001
1010
d'=2 1101
1111
d'=2 1110
1101
1101
1111
7. Agrupamiento (clustering)
INMUEBLES y CONTRATOS
- Inmueble seguido de su grupo de
I IA14 En medio, 128 Centro Castellón 600
contratos (acceso frecuente a estos
C 10024 Q62 600 Visa 1200 S 1/6/99 31/5/00 12 datos "juntos").
I IL94 Riu Ebre, 24 Ronda Sur Castellón 350 - Contratos: no hace falta incluir el
C 10075 Q76 350 Efectivo 700 N 1/1/00 30/6/00 6 número del inmueble (hay referencia
física) -
I IG24 San Francisco, 10 Vinaroz 550
Indices Primarios
Indices de Agrupamiento
Aquí se ha reservado
un bloque para cada
valor distinto del campo
de agrupamiento.
Se van añadiendo y
enlazando bloques
conforme sea
necesario.
Indices Secundarios
Sobre este mismo fichero se define un índice sobre el campo de ordenación para acelerar el tiempo de acceso.
2. ¿Qué tipo de índice será?
3. ¿Cuántos accesos hay que realizar ahora para realizar la misma búsqueda?
Tamaño de las entradas del índice: 9 bytes del campo de indexación + 6 bytes del puntero al bloque que contiene el registro.
4. ¿Cuántos accesos hay que realizar para encontrar un registro en el mismo fichero a través de un campo clave que no es
el de ordenación?
5. Si se define un índice secundario sobre este campo para acelerar el tiempo de acceso ¿cuántos accesos hay que realizar
ahora para hacer la misma búsqueda?
Tamaño de las entradas del índice: 9 bytes del campo de indexación + 6 bytes del puntero al bloque que contiene el registro.
6. Si este índice secundario se utiliza como primer nivel para un índice multinivel ¿cuántos niveles son necesarios para
construirlo?
Arboles B y Arboles B+
Arboles B+ de orden p
Las entradas del índice (K, Pr) se pueden organizar como un fichero
disperso que va cambiando de tamaño mediante dispersión dinámica,
extensible o lineal.