PDF segundo parcial
PDF segundo parcial
PDF segundo parcial
- No tags were found...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Segundo <strong>parcial</strong> de Sistemas Operativos. 24/6/2008. Ejercicios. 5 puntos. Duración 2h.<br />
Nombre DNI Especialidad<br />
1. (1.5 p)Tenemos dos discos duros (D0 y D1) con la misma geometría (4 cabezas, 8192<br />
cilindros y 128 sectores por pista de 512 bytes girando a 7200 RPM) funcionando en<br />
RAID 1. El planificador de disco es muy sencillo, utiliza el algoritmo C-SCAN pero<br />
enviando alternativamente las peticiones a un disco y a otro, comenzando por D0. Se<br />
solicitan para lectura los siguientes bloques de 2048 bytes: 130, 2566, 1294, 535,<br />
12844, 6423, 25666, 393, 717 y 100. Inicialmente las cabezas se encuentran<br />
respectivamente en el cilindro 20 de D0 y en el 40 del D1.<br />
a) (0.4 p) Indique el tamaño del disco D0 en bytes y el número de bloques que hay en<br />
un cilindro.<br />
b) (0.4 p) Calcule el tiempo medio de latencia, y el tiempo de transferencia del disco D0<br />
para leer un bloque.<br />
c) (0.7 p) Calcule el tiempo que se tarda en servir las peticiones de lectura en el RAID si<br />
cada cilindro recorrido por el brazo cuesta 0.1 ms.<br />
2. (2 p) Tenemos un disco duro con 8 cabezas, 8192 cilindros y 128 sectores de 512<br />
bytes por pista, formateado con un sistema de ficheros con bloque de 2048 bytes y<br />
número de bloque de 4 bytes, con bloque de arranque, superbloque, mapa de bits de<br />
nodos-i, espacio para 2.097.152 nodos-i de 64 bytes, mapa de bits de bloques de datos,<br />
y zona de bloques de datos. El SF está basado en nodo-i pero sin BSI, BDI y BTI. En su<br />
lugar vamos a usar una lista simplemente enlazada de BSI's donde el último número de<br />
bloque se usa para apuntar al siguiente BSI. De esta manera en el nodo-i nos caben 12<br />
números de bloque, en lugar de los 10 habituales y sólo se usa un último puntero para<br />
indicar dónde se encuentra el primer BSI de la lista. Queremos comparar su<br />
funcionamiento con el clásico (nodo-i, BSI, BDI y BTI), para lo cual se pide lo siguiente:<br />
a) (0.25 p) Calcule el tamaño de la zona de datos del disco.<br />
b) (0.75 p) Calcule cuántos accesos a disco hacen falta para traer a memoria el bloque<br />
262666 de un fichero en cada una de las dos configuraciones. Recuerde que los bloques<br />
se numeran desde 0.<br />
c) (0.5 p) Calcule el tamaño máximo que puede tener un fichero con el nodo-i clásico.<br />
d) (0.5 p) Calcule el tamaño máximo que puede tener un fichero con el nuevo tipo de<br />
nodo-i.<br />
3. (0.75 p) Tenemos un reloj con un valor R= 133000. A las 16 horas 2 mseg del día 24<br />
de junio de 2008 el registro contador de marcas del sistema operativo almacenaba el<br />
valor 928800 y el registro C (contador interno del reloj) almacenaba el valor 115843. A<br />
las 16 horas 15 minutos 6 mseg del mismo día el registro contador de marcas almacena<br />
ahora el valor 986850 y el registro C el valor 81529. Calcule la frecuencia de entrada<br />
del reloj en Mhz.
4. (0.75 p) Tenemos los siguientes ficheros y directorios en un directorio. Los ficheros S1<br />
y S2 son shells y el D1 es un directorio. En el sistema hay 3 usuarios (U1, U2 y U3) que<br />
pertenecen a los grupos G1, G2 y G3 respectivamente. Nos encontramos en el<br />
directorio en cuestión y los ficheros cp y mv son ejecutables que copian y mueven<br />
respectivamente ficheros (igual que las órdenes de UNIX)<br />
. U2 G2 rwx rwx r-x<br />
S1 U1 G2 rws r-- r-x<br />
S2 U2 G3 rwx r-s ---<br />
cp U1 G1 rwx rw- ---<br />
mv U1 G2 r-- r-- r-x<br />
D1 U1 G1 drwx --- rwx<br />
F1 U3 G3 rw- r-- r--<br />
F2 U1 G2 rw- -w- ---<br />
F3 U3 G2 r-- r-- rw-<br />
Dibuje la matriz de cambio de dominio y la matriz de acceso, mostrando en ésta última<br />
los permisos habituales (rwx) más un nuevo permiso b que indicará que se tiene<br />
permiso para borrar ese fichero.
1. Tenemos un RAID 1, es decir, los dos discos contienen la misma información y por<br />
tanto se pueden leer en paralelo. El tiempo que se tarde en servir las peticiones será el<br />
mayor de los tiempos respectivos de cada disco.<br />
a) Para calcular el tamaño de cada disco simplemente multiplicamos las cabezas por las<br />
pistas que tiene el disco y por los sectores por pista y nos dará el tamaño en sectores,<br />
dividiendo entre 2 en este caso, nos dará los kilobytes que tiene el disco: 4 * 8192 * 128<br />
/ 2 = 2.097.152 kbytes.<br />
El número de bloques que tiene un cilindro es el número de cabezas por el número de<br />
bloques de una pista: 4 * 128/4 = 128 bloques.<br />
b) El tiempo medio de latencia es el tiempo que tarda el disco en dar media vuelta. Al<br />
girar a 7200 RPM, da 7200 vueltas por 60 s, y por tanto 120 vueltas por <strong>segundo</strong>. El<br />
tiempo de una vuelta será 1/120 s y el de media vuelta 1/240 s = 4,17ms.<br />
El tiempo de transferencia de un bloque es el tiempo que tarda un bloque en pasar por<br />
debajo de la cabeza del disco, así que como una pista tiene 128 sectores y un bloque<br />
está compuesto de 4 sectores, tenemos 32 bloques por pista. Dividiendo el tiempo de<br />
una vuelta entre 32 tendremos el tiempo de transferencia: (1/32)*(1/120) = 0,26ms<br />
c) Si dividimos los números de bloque entre el número de bloques por cilindro,<br />
obtendremos el número de cilindro en el que se encuentra cada bloque: 1, 20, 10, 4,<br />
100, 50, 200, 3, 5, 0. Al llegar alternativamente las peticiones a cada disco, D0 tiene las<br />
siguientes: 1, 10, 100, 200, 5 y D1 las siguientes: 20, 4, 50, 3, 0.<br />
Aplicando el algoritmo de planificación C-SCAN a cada uno, sabiendo que D0 tiene su<br />
cabeza de lectura en el cilindro 20 y D1 en el 40 y que en C-SCAN siempre las cabezas<br />
sirven peticiones desplazándose hacia arriba, tenemos para cada disco la siguiente<br />
secuencia:<br />
D0: 20-100-200-1-5-10 → 180+199+9 = 388 cilindros recorridos<br />
D1: 40-50-0-3-4-20 → 10+50+20=80 cilindros recorridos<br />
Al ser un RAID 1 se tardará en servir todas las peticiones el mayor de los dos tiempos,<br />
que en este caso es obviamente el D0. El tiempo por tanto será la suma de los<br />
desplazamientos de la cabeza a través de los cilindros más el tiempo de latencia y el de<br />
transferencia en cada lectura, resultando: 388*0,1+5*(0,26+4,17)=60,95ms<br />
2.<br />
a) Para calcular el tamaño de la zona de datos del disco, debemos quitar al tamaño<br />
total del disco (2.097.152 bloques) el espacio destinado a metadatos. Por los datos que<br />
nos dan tendremos 1 bloque de arranque y 1 superbloque, 2.097.152*64/2048 =<br />
65536 bloques de nodos-i, 2.097.152/(8*2048)=128 bloques de mapa de bits de nodosi,<br />
y nos falta por saber el número de bloques que ocupa el mapa de bits de datos. Como<br />
no nos dan más información habrá un bit por cada bloque de datos, y no un bit por cada<br />
bloque de disco (como sucedía en Ext2), así que la ecuación queda:<br />
212865536x 8⋅2048⋅x=2097152 x= 2031486<br />
16385 =123,98=124<br />
y por tanto quedan 2.031.362 bloques para la zona de datos.
) En la configuración clásica tenemos 10 números de bloque en el nodo-i, y<br />
2048/4=512 en cada BSI, BDI y BTI. Para llegar al bloque 262.666, descontamos 10 y<br />
tenemos 262656 números de bloque que estarán en BSIs en la estructura, así que<br />
dividimos entre 512 para saber en qué BSI estará: 262.656/512 = 513. La división da un<br />
número exacto, así que el resto es 0. Esto nos indica que el número de bloque está<br />
almacenado en la posición 0 del bloque 513, es decir, justo al comienzo de ese bloque.<br />
Recordemos que los bloques comienzan a numerarse desde 0, así que realmente<br />
tenemos 514 bloques (0-513). Hay un BSI colgando del nodo-i (el BSI 0), así que nos<br />
quedan 513 BSI (1-513), de los cuales 512 (1-512) están en el BDI y el último, el 513,<br />
será el primer BSI del primer BDI del BTI. Por tanto para traer a memoria el bloque que<br />
nos piden tendremos que leer el BTI, el BDI y el BSI para obtener el número de bloque<br />
de disco, que también tendremos que leer a continuación. En total 4 accesos. Todo esto<br />
suponiendo que el nodo-i se encuentre en memoria. Si no fuese así, necesitaríamos un<br />
acceso más para leer el nodo-i.<br />
En la nueva configuración, tenemos 12 números de bloque en el nodo-i y 511<br />
elementos utilizables en cada BSI, ya que el último número de bloque se usa para<br />
formar la lista enlazada. Tenemos por tanto 262.666 – 12 = 262654/511=514. Esto nos<br />
indica que el número de bloque que andamos buscando está en el BSI número 514,<br />
pero como se numeran desde 0, realmente son 515 BSI los que hay que recorrer (0-<br />
514). De esta manera, para leer el número de bloque que nos piden, hay que recorrer<br />
515 nodos de la lista y coger el puntero número 0 del último (el nodo 514). Por tanto el<br />
número de accesos es 515 para obtener el puntero más 1 acceso más para leer el<br />
bloque, en total 516.<br />
c) Para calcular el tamaño máximo de un fichero en el nodo-i clásico lo haremos como<br />
de costumbre, suponiendo un tamaño de fichero, calculando los bloques de metadatos<br />
que necesita, restándoselos y refinando el tamaño de fichero.<br />
Partimos de la suposición de que el fichero tiene un tamaño del total de la zona de<br />
datos, es decir, de 2.031.362 bloques. Como cada BSI tiene espacio para 512 números<br />
de bloque, necesitaremos (2.031.361-10)/512=3.967,48=3.968 BSIs para almacenarlos.<br />
Estos BSIs necesitarán BDIs y BTI, así que calculamos cuántos hacen falta, sabiendo que<br />
el primer BSI está colgando del nodo-i pero cada 512 BSIs restantes cuelgan de un BDI.<br />
Tenemos entonces (3968-1)/512 = 7,75 = 8 BDIs. Como sólo hay un BDI colgando del<br />
nodo-i, los 7 restantes cuelgan de un BTI, y tenemos en total: 3968 BSI + 8 BDI + 1 BTI<br />
= 3.977 bloques de metadatos. Pero entonces la suposición inicial del tamaño del<br />
fichero es falsa, y la reajustamos a 2.031.362-3.977 = 2.027.385 bloques.<br />
Recalculando con la nueva aproximación, tenemos: (2.027.385-10)/512=3.960/512=8,<br />
dando 3.960+8+1= 3.969 bloques de metadatos y quedando como tamaño del fichero:<br />
2.031.362- 3.969=2.027.393 bloques. Si refinamos de nuevo ya obtenemos la misma<br />
cantidad.<br />
Con la nueva configuración los cálculos pueden simplificarse al no haber BDI ni BTI,<br />
planteando una única ecuación parecida a la que se usa para calcular el tamaño de los<br />
mapas de bits.<br />
Tenemos 2.031.362 bloques de datos, así que 2.031.352 números de bloque ocuparán<br />
bloques de datos, por tanto la ecuación queda:<br />
x511 x=2031350 x= 2031350 =3967,48=3968 bloques<br />
512
y por tanto el número de bloques máximo que puede tener el fichero sería: 2.031.362-<br />
3.968 = 2.027.394 bloques.<br />
3. Nos dan las marcas transcurridas entre los dos instantes de tiempo, el valor de los<br />
contadores internos y nos piden la frecuencia del reloj. Lo primero que debemos tener<br />
claro es que no hay nada que nos permita deducir que el número de marcas por segudo<br />
es un valor entero, así que no podemos hacer ninguna simplificación a la hora de<br />
calcular la frecuencia.<br />
Partiendo de los instantes dados, han transcurrido 15 min y 4 ms y tenemos 928800<br />
marcas y 133000-115843 decrementos en el primer instante, y 986850 marcas y<br />
133000-81529 decrementos en el <strong>segundo</strong> instante. Restando nos salen 58050 marcas<br />
y 34314 decrementos, con lo que podemos plantear la siguiente ecuación:<br />
F⋅900.004= 58050⋅13300034314 F = 7720684314 =8,5785 MHz<br />
900.004<br />
4. La matriz de cambio de dominio es la que sigue:<br />
U1,G1 U2,G2 U3,G3 U1,G3 U2,G3<br />
U1,G1 -<br />
U2,G2 - S2<br />
U3,G3 - S1<br />
U1,G3 -<br />
U2,G3 S1 -<br />
Y la de acceso:<br />
. S1 S2 cp mv D1 F1 F2 F3<br />
U1,G1 rx rwx rwx r rwx r rw rw<br />
U2,G2 rwx rb rwxb b rb rwxb rb wb rb<br />
U3,G3 rx rx rx rx rwx rw r<br />
U1,G3 rx rwx rx rwx r rwx r rw rw<br />
U2,G3 rwx rxb rwxb b rxb rwxb rb b rwb