Solución Actividad 1: Sistemas de almacenamiento en disco

Anuncio
Solución Actividad 1: Sistemas de almacenamiento en disco
1 – ¿Cuál es la diferencia entre una organización de fichero y un método de acceso? Poner
ejemplos de cada caso.
Respuesta:
• La organización del fichero se refiere a la organización de los datos de un fichero en
registros, bloques y estructuras de acceso; esto incluye la forma en que los registros y
los bloques se colocan en el medio de almacenamiento y se interconectan. Los tipos de
organización de ficheros más habituales son los ficheros desordenados (heap),
ficheros ordenados, y basados en la dispersión (hash).
•
El método de acceso, en cambio, proporciona un grupo de operaciones (abrir, volver
al principio, buscar, leer, buscar siguiente, eliminar, modificar, insertar, cerrar,
escanear) que se pueden aplicar a un fichero.
En general, es posible aplicar varios métodos de acceso diferentes a una organización
de fichero, aunque algunos de estos métodos sólo pueden aplicarse a ficheros que
están organizados de cierta manera.
2 – ¿Cuál es la diferencia entre ficheros estáticos y dinámicos?
Respuesta:
• Ficheros estáticos son aquellos en que pocas veces se efectúan operaciones de
actualización.
• Los ficheros dinámicos pueden cambiar con frecuencia.
3 – Supongamos que una unidad de disco tiene los siguientes parámetros:
•
•
•
•
•
tiempo medio de búsqueda s = 30 mseg.;
tiempo de transferencia de bloque btt = 1 mseg.;
tamaño de bloque B = 512 bytes;
retardo rotacional medio rd = 12.5 mseg,
velocidad de transferencia btr = 409.6 bytes/mseg.
Un fichero ESTUDIANTE tiene r=20,000 registros de longitud fija. Cada registro tiene los
siguientes campos: NAME (30 bytes), SSN (9 bytes), ADDRESS (40 bytes), PHONE (9 bytes),
BIRTHDATE (8 bytes), SEX (1 byte), MAJORDEPTCODE (4 bytes), MINORDEPTCODE (4 bytes),
CLASSCODE (4 bytes), y DEGREEPROGRAM (3 bytes). Se utiliza un byte adicional como
marcador de eliminación.
(a) Calcular el tamaño de un registro R en bytes.
(b) Calcular el factor de bloqueo bfr y el número de bloques del fichero b suponiendo una
organización no extendida.
(c) Calcular el tiempo medio que tarda la búsqueda de un registro si se utiliza una búsqueda
lineal en el fichero y si
(i) los bloques del fichero se almacenan contiguamente y se utiliza doble búfer
(ii) los bloques del fichero no se almacenan contiguamente.
(d) Supongamos que el fichero está ordenado por SSN; calcular el tiempo que tarda la
búsqueda de un registro dado su valor de SSN, si se utiliza búsqueda binaria y los registros no
están almacenados contiguamente.
Solución Actividad 1: Sistemas de almacenamiento en disco
Respuesta:
(a) R = (30 + 9 + 40 + 9 + 8 + 1 + 4 + 4 + 4 + 3) + 1 = 113 bytes
(b) El factor de bloqueo bfr es el número de registros por bloque. Si el tamaño del bloque es de
B bytes, en caso de un fichero de registros de longitud fija de R bytes, podemos encajar
bfr = floor (B / R) = floor (512 / 113) = 4 registros por bloque
El número de bloques b necesario para un fichero de r registros, si la organización no es
extendida (i.e., los registros no pueden sobrepasar los límites de un bloque), se calcula como:
b = ceiling (r / bfr) = ceiling (20000 / 4) = 5000 bloques
(c) Para una búsqueda lineal, el número medio de bloques a los que se accede es la mitad. Por
lo tanto:
= 5000/2= 2500 bloques
(i) Si los bloques están almacenados consecutivamente y se emplea la técnica de doble
buffer, el tiempo para leer 2500 bloques consecutivos es la suma del tiempo de
búsqueda s y el retardo rotacional rd correspondiente al primer bloque, más el tiempo
de transferencia de dichos bloques
= s + rd + (2500 * (B / btr)) = 30 + 12.5 + (2500 * (512 / 409.6)) = 3167.5 mseg
siendo (B/btr) la velocidad de transferencia de un bloque
Se puede realizar una estimación menos precisa en función del tiempo de transferencia
del bloque, como en el caso de bloques no contiguos:
= la suma del tiempo de búsqueda s, el retardo rotacional rd y el tiempo de transferencia
del bloque btt
= s + rd + (2500 * btt) = 30 + 12.5 + 2500 * 1= 2542.5 mseg.
(ii) Si los bloques están dispersos en el disco, se precisa una búsqueda para cada
bloque, y por lo tanto el tiempo necesario es:
2500 * (s + rd + btt) = 2500 * (30 + 12.5 + (512/409.6)) = 109375 mseg
ó, con una aproximación menos exacta, se calcularía como
2500 * (s + rd + btt) = 2500 * (30 + 12.5 + 1) = 108750 mseg
(d) Para una búsqueda binaria, el tiempo de búsqueda de un registro se estima como:
= ceiling (log2 b) * (s + rd + btt)
= ceiling (log2 5000) * (30 + 12.5 + 1) = 13 * 43.5 = 565.5 mseg
Solución Actividad 1: Sistemas de almacenamiento en disco
4- Supongamos que solo el 80% de los registros anteriores tienen un valor en el campo
PHONE, el 85% en MAJORDEPTCODE, el 15% en MINORDEPTCODE, y el 90% en
DEGREEPROGRAM, y que se usa un fichero de registros de longitud variable. Cada registro
tiene un tipo de campo de 1 byte por cada campo incluido en el registro, más el marcador de
eliminación de 1 byte y un marcador de fin de registro de 1 byte.
Supongamos que se utiliza una organización extendida de registros, en la que cada bloque
tiene un puntero de 5 bytes al siguiente bloque (este espacio no se utiliza para almacenar
registros).
(a) Calcular el tamaño medio de un registro R en bytes.
(b) Calcular el número de bloques necesarios para el fichero.
Respuesta:
(a) Asumiendo que cada campo tiene un byte para indicar el tipo de campo, y que NAME, SSN,
ADDRESS, BIRTHDATE, SEX y CLASSCODE tienen valores para todos los registros, se
necesita el siguiente número de bytes para esos campos en cada registro, más 1 byte para
el marcador de eliminación, y 1 byte para el marcador de fin de registro:
R fijo = (30+1) + (9+1) + (40+1) + (8+1) + (1+1) + (4+1) + 1 + 1 = 100 bytes
Para los campos PHONE, MAJORDEPTCODE, MINORDEPTCODE y DEGREEPROGRAM, el
número medio de bytes por registro es:
R variable = ((9+1)*0.8) + ((4+1)*0.85) + ((4+1)*0.15) + ((3+1)*0.9)
= 8 + 4.25 + 0.75 + 3.6= 16.6 bytes
Por tanto, el tamaño medio del registro es:
R = R fijo + R variable = 100 + 16.6 = 116.6 bytes
(b) Los bytes totales para el fichero completo son:
r * R = 20000 * 116.6 = 2332000 bytes
Utilizando una organización de registros expandida con un puntero de 5 bytes al final de
cada bloque, los bytes disponibles en cada bloque son:
(B-5) = (512 - 5) = 507 bytes
Por lo tanto, el número de bloques necesario para el fichero es:
b = ceiling ((r * R) / (B - 5)) = ceiling (2332000 / 507) = 4600 bloques
Descargar