03.09.2015 Views

PDF segundo parcial

PDF segundo parcial

PDF segundo parcial

SHOW MORE
SHOW LESS
  • 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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!