Está en la página 1de 17

SOLUCION A EJERCICIOS Ctedra Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional

COMUNICACIN ENTRE PROCESOS.

Ejercicio N 1 Existe un mecanismo de comunicacin y sincronizacin entre procesos ligeros utilizado en Win32 denominado mutex y variables condicionales; el mecanismo es similar al concepto de monitor. a) Los mutex se emplean para asegurar la exclusin mutua sobre secciones crticas. Sobre un mutex se pueden realizar dos operaciones atmicas bsicas: lock(m), intenta bloquear el mutex m. Si el mutex ya est bloqueado por otro proceso, el proceso que realiza la operacin se bloquea. En caso contrario, se bloquea al mutex sin bloquear al proceso. unlock(m), desbloquea el mutex m. Si existen procesos bloqueados en l, se desbloquear a uno de ellos que ser el nuevo proceso que adquiera el mutex. lock(m); /* solicita la entrada en la seccin crtica */ <seccin crtica> unlock(m); /* salida de la seccin crtica */ Implemente tal mecanismo (operaciones lock y unlock) utilizando semforos. Solucin Ej. 1 caso a) Alternativa 1: Representacin de mutex por medio de un array, donde la variable m es el ndice del vector. typedef int mutex; semaforo mutexs[NmaxMutex]= {1, 1, ..., 1}; /* NmaxMutex es el valor mximo de mutexs definidos, todos los semforos se inicializan en 1*/ lock(mutex m) { down(mutexs[m]); } unlock(mutex m) { up(mutexs[m]); } Alternativa 2: Representacin de mutex por medio de una estructura compuesta de una variable de tipo semforo, la variable m es un puntero a dicha estructura. struct { semaforo s=1: } mutex; lock(mutex &m) { down(m->s); } unlock(mutex &m) { up(m->s); }

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional b) Una variable condicional es una variable de sincronizacin asociada a un mutex que se utiliza para bloquear a un proceso hasta que ocurra algn suceso. Las variables condicionales tienen dos operaciones atmicas para esperar y sealizar: c_wait(c, m), bloquea al proceso que ejecuta la llamada y lo expulsa del mutex m dentro del cual se ejecuta y al que est asociado la variable condicional c, permitiendo que algn otro proceso adquiera el mutex. c_signal(c), desbloquea a un proceso suspendido en la variable condicional c. El proceso que se despierta debe competir nuevamente por el mutex. Por ejemplo, en el siguiente fragmento de cdigo si cierta condicin no es vlida, el proceso se bloquea mediante la operacin c_wait(c, m) y libera el mutex permitiendo que otro proceso entre en ella. lock(m); /* solicita la entrada en la seccin crtica */ /* cdigo de la seccin crtica */ while (condicion == FALSE) c_wait(c, m); /* resto de la seccin crtica */ unlock(m); /* salida de la seccin crtica */ Luego, un proceso que hace cierta la condicin, ejecuta la operacin c_signal(c) despertando a un proceso bloqueado en la variable condicional c. Cuando el proceso ligero que espera en la variable condicional c se desbloquea, vuelve a competir por el mutex. lock(m); /* solicita la entrada en la seccin crtica */ /* cdigo de la seccin crtica */ /* se modifica la condicin y sta se hace TRUE */ condicion = TRUE c_signal(c); unlock(m); /* salida de la seccin crtica */ Implemente tal mecanismo (operaciones c_wait y c_signal) utilizando semforos. Solucin Ej. 1 caso b) Alternativa 1: Representacin de las variables condicionales por medio de un array, donde la variable c es el ndice del vector. typedef int variableCondicional; semaforo varconds[NmaxVarCond]= {0, 0, ..., 0}; /* NmaxVarCond es el valor mximo de variables condicionales definidas */ /* Todos los semforos se inicializan en 0*/ c_wait(variableCondicional c, mutex m) { up(mutexs[m]); down(varconds[c]); down(mutexs[m]); } c_signal(variableCondicional c) { up(varconds[c]); } Alternativa 2: Representacin de variable condicional por medio de una estructura compuesta de una variable de tipo semforo, la variable c es un puntero a dicha estructura. struct { semaforo vc=0: } variableCondicional;

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional c_wait(variableCondicional &c, mutex &m) { up(m->s); down(c->vc); down(m->s); } c_signal(variableCondicional &c) { up(c->vc); } Ejercicio N 2 En un sistema cuando un proceso debe leer o escribir en un archivo primero cierra un candado asociado al archivo por medio de la funcin cerrarCandado(candado, acceso). Un candado cerrado para lectura permite que se realice otras operaciones de lectura, pero ninguna de escritura. En cambio, un candado cerrado para escritura s impide otras operaciones (de lectura o escritura). Escribir el pseudocdigo utilizando mensajes con buzones de la funciones cerrarCandado y abrirCandado, y del administrador de los candados en los archivos. cerrarCandado(candado, acceso); donde: candado: identificador del candado que se realiza la operacin acceso: puede ser READ: se desea cerrar el candado para lectura WRITE: se desea cerrar el candado para escritura. abrirCandado(candado); donde: candado: identificador del candado que se libera Solucin Ej. 2 cerrarCandado(candado, acceso) { mensage msg, rsp; msg.rte = crearBuzon(); msg.candado = candado; msg.acceso = acceso; msg.operacion = CERRAR; send(buzonADM_CANDADO, &msg); receive(msg.rte, &rsp); /* la respuesta no interesa, es para desbloquear al proceso */ cerrarBuzon(msg.rte); } abrirCandado(candado) { mensage msg, rsp; msg.rte = crearBuzon(); msg.candado = candado; msg.operacion = ABRIR; send(buzonADM_CANDADO, &msg); receive(msg.rte, &respuesta); /* la respuesta no interesa, es para desbloquear al proceso */ cerrarBuzon(msg.rte); } Administrador_Candados() { mensage pedido, rsp; while(TRUE) { 3

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional responder = SI; receive(buzonADM_CANDADO, &pedido); switch(pedido.operacion) { case CERRAR: switch( pedido.acceso) { case READ: if(lock[pedido.candado].write != 0 ) { responder = NO; lock[pedido.candado].espread++; send(bEsperaR[pedido.candado], pedido); } else lock[pedido.candado].read++; break; case WRITE: if(lock[pedido.candado].write != 0 || lock[pedido.candado].read != 0) { responder = NO; lock[pedido.candado].espwrite++; send(bEsperaW[pedido.candado], pedido); } else lock[pedido.candado].write++; break; default: panic("Acceso Invlido"); break; } break; case ABRIR: If(lock[pedido.candado].write != 0) { /* estaba cerrado como Write */ lock[pedido.candado].write--; if(lock[pedido.candado].espwrite > 0) { lock[pedido.candado].espwrite--; emisor= receive(bEsperaW[pedido.candado], pedido); lock[pedido.candado].write++; send(pedido.rte, &rsp); } else while (lock[pedido.candado].espread > 0) { lock[pedido.candado].espread--; emisor= receive(bEsperaR[pedido.candado]); lock[pedido.candado].read++; send(pedido.rte, &rsp); } } else { /* estaba cerrado como Read */ lock[pedido.candado].read--; if(lock[pedido.candado].read == 0) { if(lock[pedido.candado].espwrite > 0) { lock[pedido.candado].espwrite--; emisor= receive(bEsperaW[pedido.candado], pedido); lock[pedido.candado].write++; 4

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional send(pedido.rte, &rsp); } } } break; default: panic("Operacin Invlida"); break; } if( responder = SI) send(pedido.rte, &rsp); } } Ejercicio N 3 Desarrolle en forma de pseudocdigo, la estructura interna general de las primitivas Up() y Down() que se utilizan en el esquema de semforos. Considerar que se dispone de las funciones: o Enable(): habilita las interrupciones en la CPU o Disable(): deshabilita las interrupciones en la CPU o sleep_enable(): le dice al Sistema operativo que bloquee al proceso que invoca la funcin y luego habilite las interrupciones. o wakeup(): Desbloquea a un proceso que se pasa como parmetro. Se pide: Pseudocdigo de las primitivas para semforos de exclusin. Solucin Ej. 3 Solucin con Semforos que van desde valores positivos hasta Cero: Up(S) { Disable() IF (S <> 0) THEN S++ ELSE IF (Existen procesos en cola(S)) THEN Wakeup(seleccin de proceso en cola(S)) ELSE S++ Enable() } Down(S) { Disable() IF (S == 0 ) THEN Poner proceso en cola(esteProceso, S) sleep_enable() ELSE S-Enable() }

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional Solucin con Semforos que van desde valores positivos a valores negativos: Up(S) { Disable() S++ IF (S <= 0) THEN Wakeup(Primer proceso de cola(S)) Enable() } Down(S) { Disable() S-IF (S < 0) THEN Poner proceso en cola(esteProceso, S) sleep_enable() Enable() } Ejercicio N 4 Ejecutar de forma concurrente cuatro procesos que se comunican mediante un buffer circular de n bytes. Cada uno de estos procesos realiza las siguientes operaciones: P1: Genera datos de dos bytes de longitud que almacena en forma consecutiva en el buffer P2: Genera datos de cuatro bytes de longitud que almacena en forma consecutiva en el buffer P3: Recoge byte a byte los datos almacenados por P1 y P2, transforma cada byte obtenido y lo vuelve a almacenar en esa misma posicin. Cabe destacar que no recorre los datos byte a byte hasta que P1 o P2 no los hayan almacenado en forma completa. P4: Recoge los datos transformados por P3 y los procesa. Resolver el problema utilizando semforos. Solucin Ej. 4 semforo mutex=1; semforo s1, s2, s3, s4= 0; byte buffer[N]; P1(){ byte item[2]; while(true) { item= generaDatos(); envio= false; repeat { down(mutex); if( (libres + 2) <= N) { for i=0 to 1 do { buffer[prod]= item[i]; prod= prod + 1; libres = libres 1; up(mutex); envio= true; } } else {

integer libres= N; integer prod, transf, cons=0; integer esp1, esp2=0; P2(){ byte item[4]; while(true) { item= generaDatos(); envio= false; repeat { down(mutex); if( (libres + 4) <= N) { for i=0 to 3 do { buffer[prod]= item[i]; prod= prod + 1; libres = libres 1; up(mutex); envio= true; } } else { 6

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional esp1= esp1 + 1; up(mutex); down(s1); } } until (envio); for i=0 to 1 do up(s3); } } P3(){ byte item; while(true) { down(s3); down(mutex); item= buffer[transf]; up(mutex); item=transformar(item); down(mutex); buffer[transf]=item; transf= transf + 1; up(mutex); up(s4); } } esp2= esp2 + 1; up(mutex); down(s2); } } until (envio); for i=0 to 3 do up(s3); } } P4(){ byte item; while(true) { down(s4); down(mutex); item= buffer[cons]; libres= libres + 1; cons = cons + 1; if( libres >= 2) { if( esp1 > 0) { esp1 = esp1 - 1; up(s1); } else { if( libres >= 4 and esp2 > 0) { esp2 = esp2 - 1; up(s2); } } } up(mutex); procesa(item); } }

ADMINISTRACIN DE MEMORIA.
Ejercicio N 1 Una computadora tiene cuatro marcos de pginas. A continuacin se presenta una tabla con las pginas en cada uno de los marcos, el tiempo de carga, el tiempo del ltimo acceso y los bits R y M de cada pgina (los tiempos se expresan en pulsos de reloj).
Pgina 0 1 2 3 Tiempo de Carga 125 113 220 110 ltimo Acceso 279 215 281 285 R 1 0 1 1 M 0 1 0 1

Se necesita un marco libre para cargar una pgina. Indicar que pgina reemplazarn los algoritmos: a) NRU, b) FIFO, c) LRU y d) Segunda Oportunidad. Detallar para cada caso el motivo de la seleccin. Solucin Ej. 1 a) NRU En la siguiente tabla se presenta el estado de los bits R, M de cada una de las pginas asignadas a los distintos marcos en el momento en que se debe seleccionar que pgina desalojar: Marco Marco 0 R,M 1,0 7

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional Marco 1 0,1 Marco 2 1,0 Marco 3 1,1 De esta forma se decide desalojar la pgina alojada en el Marco 1, la cual pertenece a la menor clase no vaca. b) FIFO En la siguiente tabla se presenta la lista de pginas en funcin del algoritmo FIFO que estn asignadas a los marcos en el momento en que se debe seleccionar que pgina desalojar: Pgina 2 0 1 ms vieja 3 De esta forma se decide desalojar la pgina 3, la cual ha sido de las cuatro pginas en el sistema, la primera en ingresar (la ms vieja). c) LRU En la siguiente tabla se presenta la lista de pginas segn el algoritmo LRU que estn asignadas a los marcos en el momento en que se debe seleccionar que pgina desalojar: Pgina 3 2 0 ms vieja 1 De esta forma se decide desalojar la pgina 1, la cual ha sido de las cuatro pginas en el sistema, la menos recientemente referenciada (la ms vieja). d) Segunda Oportunidad En las siguientes tablas se presentan las posibles listas de pginas en funcin del algoritmo Segunda Oportunidad que estn asignadas a los marcos en el momento en que se debe seleccionar que pgina desalojar: Tiempo Pgina/R ms nueva 2,1 0,1 1,0 ms vieja 3,1 Tiempo Pgina/R ms nueva 3,0 2,1 0,1 ms vieja 1,0 La pgina 3 es la ms vieja con bit R = 1; al darle otra oportunidad se borra el bit R por lo tanto sube en la tabla pero como 3,0. Luego sigue la pgina 1,0 por lo tanto es la que se elige para desalojar. Ejercicio N 2 Considerar el siguiente arreglo bidimensional: int matriz[128][128]; donde un entero ocupa dos bytes y el arreglo est almacenado por filas. En un sistema de memoria paginada con pginas de tamao 256 bytes. Un proceso pequeo se encuentra en la pgina 0 (posiciones 0 a 255) y la matriz est localizada a partir de la posicin 256 (pgina 1). Con tres marcos de pginas, cuntos fallos de pginas se generan al ejecutarse los siguientes fragmento del proceso, utilizando LRU y suponiendo que el marco 1 contiene al proceso y que los otros dos estn inicialmente vacos? a) for (int j=0; j < 128; j++) 8 Tiempo ms nueva Tiempo ms nueva

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional for (int i=0; i < 128; i++) matriz[j][i]:= 0;

b) for (int j=0; j < 128; j++) for (int i=0; i < 128; i++) matriz[i][j]:= 0; Solucin Ej. 2 o Tamao de un elemento: 1 int = 2 bytes o Tamao total del arreglo: Cantidad de elementos * Tamao de un elemento ( 128 * 128) * 2 bytes = 32768 bytes o Tamao de un pgina: 256 bytes o Cantidad de pginas para alojar la matriz: Tamao total del arreglo / Tamao pg 32768 [bytes] / 256 [bytes/pgina] = 128 pginas o Cantidad de elementos por pgina: Tamao pgina / Tamao elemento 256 [bytes] / 2 [bytes/elementos] = 128 elementos Es decir, una fila (o columna) completa de la matriz. o Cantidad de pginas para alojar el proceso: 1 pgina o Marcos de pginas: 3 o Situacin inicial:
MARCOS

3 2 1

[vaco] [vaco] PROCESO [Pgina 0] ........................256 bytes......................

Estructura del arreglo en las pginas: En la figura se ilustra el arreglo almacenado por filas. En particular se ha pintado la primer pgina, la cual incluye a la primer fila del arreglo. Las flechas etiquetadas como Caso a y Caso b indican el sentido del recorrido del arreglo por los algoritmos a y b, respectivamente. caso a
[0,0] [0,1] [0,2] [0,127]

caso b
[1,0] [127,0] [127,1] [1,1] [1,2] [127,2] [1,127] [127,127]

Algoritmo de reemplazo de pginas: LRU (Menos recientemente usado) Al ocurrir un fallo de pgina se elimina la pgina que no haya sido utilizada durante el mayor tiempo

Dado que para este caso el proceso que se va a ejecutar se encuentra en la pgina 0 [0 255] alojada en el Marco 1, el primer fallo de pgina se producir cuando se inicie la asignacin del elemento 0 a la primera posicin de la matriz (para cualquiera de los dos casos -a) por filas, o b) por columnas). Una vez ocupados los dos marcos de pginas inicialmente vacos, la eleccin de la primera pgina a eliminar ser la menos recientemente usada es decir la pgina 1- como se ir alternando entre los marcos 2 y 3 el contador que indica la pgina a desalojar sealar a la pgina que se encuentra alojada en el marco de pgina que no tuvo sustitucin en el paso anterior. o Cantidad de fallos de pginas que se generan:

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional Caso a) Como el proceso va actualizando la matriz por filas, y sta se encuentra almacenada de esa manera (por filas), grficamente podemos ver en la tabla de pginas que se ir recorriendo cada una de las posiciones en forma consecutiva. Esto indica que: - en principio en el marco 2 se alojar la pgina 1 (1er fallo), - en el marco 3 la pgina 2 (2do fallo), - luego se deber alojar a la pgina 3 por lo que se eliminar la pgina 1 (3er fallo) - en total se tendr 1 fallo por la cantidad de pginas que ocupa la matriz. Total fallos de pgina caso a) = 128 fallos Caso b) Para este caso se va actualizando los elementos de la matriz por columnas, pero la matriz est alojada por filas, lo que implica: - la pgina 1 se alojar en el marco 2 (1er fallo), pero slo se actualizar el elementos matriz[0,0] - al pasar al prximo elemento matriz[1,0] sucede un nuevo fallo de pgina, requiriendo la pgina 2 (en el marco 3) (2do fallo) - en general se tendr un fallo de pgina por cada actualizacin, es decir Total fallos de pgina caso b) = 128 *128 fallos= 16384 fallos Ejercicio N 3 Para un proceso cuyo espacio de direccionamiento es de 8 pginas, resuelva usando el algoritmo de la segunda oportunidad o del reloj, pero con una variante. La variante sera de la tercera oportunidad que adems de brindarle una posibilidad ms a la pgina que fueron referenciadas, le otorga una nueva posibilidad a las pginas que fueron modificadas (pginas sucias). Cuntos fallos de pgina se producen utilizando 5 marcos de pgina. 12781 T 76385 T 73721 T 34257 Solucin Ej. 3 * Alg. Segunda Oportunidad (FIFO modificado) Inspecciona el bit R de la pgina ms antigua: R = 0 => pgina tanto antigua como no usada se reemplaza R = 1 => se limpia R y se coloca la pgina al final de la lista Si todas tienen referencia se transforma en FIFO limpiando el bit R X: pgina X accedida en modalidad escritura T : pulso de reloj Para simplificar la notacin se utilizarn las siguientes clases: R M 0 0 0 1 0 1 R: referenciada 2 1 0 M: modificada 3 1 1

M ARCO S

1
Pg + nueva

2
2,2 1,2

7
7,3 2,2 1,2

8
8,3 7,3 2,2 1,2

1T
8,3 7,3 2,2 1,2

7
8,3 7,3 2,2 1,2

6
6,2 8,3 7,3 2,2 1,2

3
3,3 6,0 8,1 7,1 2,0 F -

8
3,3 6,0 8,3 7,1 2,0 F

5T
5,2 3,3 6,0 8,3 7,1 -

7
5,2 3,3 6,0 8,3 7,3 -

3
5,2 3,3 6,0 8,3 7,3 -

7
5,2 3,3 6,0 8,3 7,3 F

2
2,3 8,1 7,1 5,0 3,3 F

1T
1,2 3,1 2,3 8,1 7,1 -

3
1,2 3,3 2,3 8,1 7,1 F

4
4,2 1,0 3,1 2,1 8,0 -

2
4,2 1,0 3,1 2,3 8,0 F

5
5,3 4,2 1,0 3,1 2,3 F

7
7,2 3,0 2,1 5,3 4,2

1 2 3 4

1,2

Pg + antigua

5 F F F F F

TO TAL FALLO S = 12

SISTEMA DE ARCHIVOS.
10

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional Ejercicio N 1 Un sistema de archivo de UNIX emplea bloques de 4 Kb y direcciones de discos de 16 bits. El nodo i contiene 7 entradas para bloques directos, 2 para bloques simplemente directos y una para bloques doblemente directos. Cul es el tamao mximo de archivo? Explicar los clculos realizados. Solucin Ej. 1 Tamao mximo de archivo: Un bloque es de 4kb y una direccin de disco utiliza 16 bits, es decir 2 bytes. En consecuencia, en un bloque se pueden almacenar (4 kb / 2 bytes/punteros) 2048 punteros a bloques. Un inodo posee 7 entradas para bloques directos, son 7 punteros a bloques 2 bloques simplemente directos, cada bloque puede almacenar 2048 punteros (2 * 2048) un bloque doblemente directo, el bloque doblemente directo puede almacenar 2048 punteros a bloques que contiene 2048 punteros (20482) Por otro lado las direcciones son de 16 bits. En consecuencia, no es posible tener ms de 216 punteros a bloques. Tamao mximo de archivo = cantidad de punteros * tamao bloque = = mnimo {216; 7 + 2 * 2048 + 20482}punteros * 4 kb/punteros = = mnimo {65536; 4198407}punteros * 4 kb/punteros = = 262144 kb = 256 Mb

Ejercicio N 2 En un sistema se cuenta con un disco de 40 GB con un filesystem tipo FAT32, y con bloques de 4 KB cada uno. a). Cuntas entradas posee la FAT para el sistema de archivo instalado en ese disco? Cul es el tamao de la FAT? b). Si se dispone de 12522 archivos, cul es el desperdicio esperado en disco? c). Qu informacin se almacena en la entrada de directorio? Si cada entrada de directorio utiliza 32 bytes, cuntas entradas de directorio puede tener un directorio. d). Si un archivo posee 12357222 bytes, cul es el desperdicio de ese archivo?, Cuntas entradas en la FAT estn asignadas a ese archivo?, cuntas veces se debe acceder a la FAT para realizar una lectura de su ltimo byte. e). La siguiente tabla muestra el tamao mximo de las particiones con tamao de bloque de x2 KB. Determinar el valor de las incgnitas x1, x2 y x3. Justificar los clculos realizados. Tamao del bloque FAT-x1 FAT-16 FAT-32
(slo se ocupan 28 bits)

x2 KB 16 MB 256 MB x3 MB f). Cuntas entradas posee la FAT en cada uno de los casos? Cul es el tamao de la FAT?. Justificar los clculos FAT-x1 FAT-16 FAT-32
(slo se ocupan 28 bits)

Entradas en la FAT Tamao de la FAT g). Escribir el pseudocdigo de la funcin obtenerNumeroBloque(entradaDirectorio, ordenBloque) que dada la entrada de directorio de MS-DOS de un archivo y el orden del bloque (primero, segundo, ..., ltimo) que se quiere obtener, retorna la posicin del bloque en el disco. Solucin Ej. 2 En un sistema se cuenta con un disco de 40 GB con un filesystem tipo FAT32 (que slo utiliza 28 bits para indicar el nmero de bloque), y con bloques de 4 KB cada uno. a) Entradas que posee la FAT para el sistema de archivo instalado en ese disco. Tamao de la FAT. El nmero de entradas que posee la FAT en ese disco es igual al tamao del disco dividido el tamao de un bloque, es decir la cantidad de bloques que posee el disco. La cantidad de bloques en el disco nunca puede ser 11

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional mayor que la cantidad mxima direccionable, en este caso se utilizan 28 bits para direccionar. El menor de esos dos valores ser el nmero de entradas que la FAT posee. Entradas = min(40GB / 4 KB, 228) = min(10485760, 268435456)= 10485760 entradas El tamao de la FAT es igual al nmero de entradas que posee por el tamao de cada entrada, por ser FAT32 cada entrada ocupa 32bits (4bytes). TamaoFAT = 1048576 entradas* 4 (Bytes/entradas) = 4 MBytes b) Si se dispone de 12522 archivos, cul es el desperdicio esperado en disco? Lo mejor que puede ocurrir es que el tamao del archivo sea mltiplo del tamao del bloque con lo cual el desperdicio es 0 (cero). Lo peor que puede ocurrir es que el tamao del archivo sea mltiplo del tamao de bloque ms 1 byte. Este ltimo byte del archivo ocupara un bloque completo, con lo cual se desperdiciara prcticamente todo el bloque. Por lo que se espera que en promedio cada archivo desperdicie medio bloque, por eso para obtener este valor slo debemos multiplicar el nmero de archivos por la mitad del tamao de bloque. 12522 (archivos) * 4 (KB desperdiciados/archivos) = 25044KB desperdiciados c) Qu informacin se almacena en la entrada de directorio? Si cada entrada de directorio utiliza 32 bytes, cuntas entradas de directorio puede tener un directorio? Entrada de directorio en FAT-32: typedef unsigned char u8; typedef unsigned short u16; /* Note: multi-byte values are little-endian */ typedef unsigned long u32; struct fat_dirent /* Warning: this struct must be packed */ { u8 name[8]; /* ALL-CAPS, pad right with spaces */ u8 ext[3]; /* ALL-CAPS, pad right with spaces */ u8 attrib; /* attribute byte */ u8 reserved; /* =0 */ u8 ctime_ms; /* file creation time, 10ms units */ u16 ctime; /* file creation time, in DOS format */ u16 cdate; /* file creation date, in DOS format */ u16 adate; /* DOS date of last file access */ u16 st_clust_msw; /* high 16 bits of starting cluster (FAT32) */ u16 mtime; /* DOS time of last file modification */ u16 mdate; /* DOS date of last file modification */ u16 st_clust; /* starting cluster */ u32 file_size; /* in bytes */ }; /* 32 bytes total */ Cantidad de entradas de un directorio: Los directorios son archivos con uso especfico por parte del sistema. Por ser archivos pueden tener una longitud solo limitada al tamao del FileSystem, Disco o Archivo. En forma prctica los directorios NO tienen lmite en el nmero de entradas que pueden contener. Una excepcin es el directorio raz de los sistemas FAT que tiene tamao fijo determinado en el momento del formateo del disco o particin. En ste directorio la cantidad de entradas estar limitada a este tamao. d) Si un archivo posee 12357222 bytes, cul es el desperdicio de ese archivo?, cuntas entradas en la FAT estn asignadas a ese archivo?, cuntas veces se debe acceder a la FAT para realizar una lectura de su ltimo byte?. Para saber el nmero de entradas que le fueron asignadas al archivo slo debemos dividir el tamao del archivo por el tamao de bloque y redondear hacia arriba. Si el archivo emplea 12357222 bytes, ocupa (12357222/4096= 3016,89990234375) 3017 bloques (entradas en la fat, una entrada por bloque) Entradas asignadas = 12357222 / 4096 (redondeado hacia arriba) = 3017 El desperdicio de ese archivo ser el espacio que no est utilizando en los bloques que le fueron asignados. Podemos obtener el espacio desperdiciado restando al espacio asignado el espacio real. El espacio asignado se obtiene multiplicando la cantidad de bloques que posee el archivo por el tamao del bloque. Desperdicio = (3017 bloques) * 4096 (bytes/bloques) 12357222 bytes = 401 bytes 12

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional Por ser el ltimo byte, ste debe estar localizado en el ltimo bloque asignado. Luego, debemos acceder a todas las entradas que le fueron asignadas al archivo. Cabe considerar que para conocer la posicin del bloque n se debe acceder a la entrada n-1 en la FAT. Accesos: por ser el ltimo byte debemos acceder a 3017 1= 3016 veces e) La siguiente tabla muestra el tamao mximo de las particiones con tamao de bloque de x2 KB. Determinar el valor de las incgnitas x1, x2 y x3. Justificar los clculos realizados. FAT-16 FAT-32 Tamao del bloque FAT-x1 (slo se ocupan 28 bits) x2 KB 16 MB 256 MB x3 MB Obtencin de x2: El primer valor a hallar es el tamao de bloque (x2), para ello nos valemos de un dato conocido, en este caso en particular sabemos que una particin con FAT16 puede tener un tamao mximo de 256MB. Sabemos que el tamao de la particin esta dado como la mxima cantidad de entradas por el tamao de bloque, y por ser FAT16 la mxima cantidad de entradas deber ser 216, luego podemos hallar el tamao de bloque como el tamao mximo de la particin dividido la cantidad mxima de entradas (256MB / 216) FAT-16 tiene como mximo 216 entradas, luego: 256 MB = 216 * x2 bytes 256*1024*1024 bytes = 65536 * x2 bytes despejando x2 256*1024*1024 bytes / 65536 = x2 x2 = 4096 bytes Obtencin de x3: Siguiendo con la lgica anterior resulta sencillo hallar x3, ya que ahora conocemos el tamao de bloque. Lo nico que debemos hacer para hallar el tamao de la particin es multiplicar el tamao del bloque por la cantidad mxima de entradas de la FAT32 (notar que slo se ocupan 28 bits para direccionar, luego la cantidad mxima de entradas es: 228). x3 = 228 * 4KB = 268435456 * 4* 1024 bytes = 1099511627776 bytes x3 = 10244 = 1 Terabyte Obtencin de x1: Por ltimo con la misma frmula resulta sencillo hallar x1 16 Mb = 2X1 * x2 bytes 16*1024*1024 bytes = 2X1 * 4096 bytes X1 = 16*1024*1024 bytes / 4096 bytes 2 luego x1 = log2 4096 = 12 f) Cuntas entradas cmo mximo posee la FAT en cada uno de los casos? Cul es el tamao mximo de la FAT?. Justificar los clculos. FAT-x1 FAT-16 FAT-32 (slo se ocupan 28 bits) Nmero mximo (65536,216) (268435456,228) (4096,212) Entradas en la FAT Tamao mximo de la 6KB(212 * 1.5 bytes) 128KB (216 * 2 bytes) 1GB (228 * 4 bytes) FAT Para saber el nmero de entradas de la FAT solamente debemos realizar el clculo 2x, donde x representa el tamao en bits de una entrada FAT. La razn es que este es el valor mximo que se puede direccionar con x bits. Para hallar el tamao de la FAT en cada caso slo debemos multiplicar las entradas de la FAT por el tamao que ocupa cada entrada. Por ejemplo en FAT-12, la mxima cantidad de entradas es 212 y el tamao mximo de la FAT ser 212 * 1,5 bytes (que representan 12bits). g) Escribir el pseudocdigo de la funcin obtenerNumeroBloque(entradaDirectorio, ordenBloque) que dada la entrada de directorio de MS-DOS de un archivo y el orden del bloque (primero, segundo, ..., ltimo) que se quiere obtener, retorna la posicin del bloque en el disco. 13

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional u32 : unsigned integer 32 bits OrdenBloque : puede tomar valores desde 1 a N, siendo N el nmero de bloques de los que dispone el archivo. u32 FAT[MAXFAT] u32 obtenerNumeroBloque(EntradaDirectorio, OrdenBloque) { u32 NextBlock, counter; counter = OrdenBloque - 1; NextBlock = EntradaDirectorio. st_clust; /* bloqueInicial */ while(counter > 0) { NextBlock = FAT[NextBlock]; if (NextBlock = FIN_DE_ARCHIVO) exception_launch(); counter--; } return NextBlock; } La entrada de directorio del archivo contiene el nmero del primer bloque del archivo y de la primera posicin a buscar en la FAT, por lo que lo nico que debemos hacer es ir recorriendo la FAT OrdenBloque-1 veces y devolver el valor de la FAT en esa posicin.

Ejercicio N 3 Se dispone de un disco de 64 GB. Se espera instalar un sistema de archivos tipo UNIX con las siguientes caractersticas: Bloques de Datos de 4 Kb Mapa de bits de inode de 4 Kb Punteros a Bloques de 32 bits Tamao de I-node de 128 bytes Directorio Raz de 4 Kb Entrada de Directorio de 16 bytes El i-node contiene 10 punteros a bloques directos, 2 a bloques simplemente, 1 a doblemente indirecto, 1 a triplemente indirecto. a) Cul es el tamao mximo del sistema de archivo en ese disco? b) Cuntos discos de 64 Gb ms se pueden incorporar al sistema de archivo y que tamao resultara ser el mismo? c) Cuntos archivos puede contener el disco de 64 Gb? d) Cunto espacio se desperdicia en i-nodes?. Solucin Ej. 3 a) Cul es el tamao mximo del sistema de archivo en ese disco? El sistema de archivo en ese disco est limitado por la estructura del sistema de archivo, cuyas direcciones son de 32 bits, lo cual limita a un mximo de 232 bloques de datos. Adicionalmente, el sistema se montar sobre un disco de 64 Gb, no pudiendo superar este tamao. En consecuencia, el tamao del sistema de archivo es el mnimo entre: Tamao del Disco (64 Gb) Tamao segn la estructura del Filesystem (4 Kb * 232 ) = 16 Tb Por lo tanto es 64 Gb b) Cuntos discos de 64 GB ms se pueden incorporar al sistema de archivo y que tamao resultara ser el mismo?

14

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional Como se analiz en el punto anterior, el sistema de archivo podra crecer hasta 16 Tb (4 Kb * 232 ), para esto necesita de lugar fsico donde almacenar los datos. Si cada disco ocupa 64 Gb, con 256 discos se podra obtener un sistema de archivo del tamao mencionado. c) Cuntos archivos puede contener el disco de 64 GB? Se debe comparar 2 valores: 1- mxima cantidad de archivos que el sistema puede direccionar. 2- mxima cantidad de archivos que entran en el disco asignndole tan slo 1 bloque a cada uno. El mnimo de esos valores ser la cantidad de archivos que el disco puede contener. Para hallar 1 calculamos el tamao del mapa de bits de inode en bits (4KB -> 4*1024*8bits) Para hallar 2 calculamos cuntos bloques posee el disco (tamao disco/tamao bloque) (64GB/4KB -> 16777216 bloques). mnimo{4*1024*8 archivos, 64GB/4KB} = mnimo{32768, 16777216} = 32768 archivos. d) Cunto espacio se desperdicia en i-nodes?. Como cada inodo ocupa 128bytes, Espacio_inodes = 128 bytes/inodo * 32768 inodos = 4194304 bytes = 4 Mbytes Ejercicio N 4 Un sistema de archivos es de tipo FAT16, con bloques de 8kb y se disponen dos marcos de 8 kb para almacenar la FAT. El mecanismo de gestin de memoria emplea el algoritmo LRU para el desalojo de pginas. FAT (a) Cul es el tamao mximo de ese sistema de archivo? Justificar (b) Cul es el tamao de la FAT? Justificar 234 52000 (c) Cuntos accesos al disco se realizan para hacer una lectura secuencial del archivo ARCHIVO1.DAT: 17000 28000 ARCHIVO1 DAT 17000
20000 25000 28000 34000 35000 36000 45000 45001 46000 52000 53000 53001 57000 62000 65000 EOF 62000 57000 46000 34000 65000 53000 36000 EOF 20000 53001 234 25000 EOF 35000

(d) Cuntos accesos al disco se realizan para realizar una escritura secuencial del archivo ARCHIVO2: ARCHIVO2 DAT 45000 (e) Cuntos accesos al disco se realizan para realizar una escritura en el 4 bloque del archivo ARCHIVO3: ARCHIVO3 DAT 45001

15

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional Solucin Ej. 4 a) El tamao mximo del sistema de archivo es limitado por la cantidad mxima de bloques. La cantidad mxima de bloques direccionables en un sistema de archivo FAT16 es de 216 bloques. Siendo el tamao de un bloque 8 kb, el tamao mximo de archivo es 216 bloque * 8 kb/bloque = 524288 kb= 512 Mb. b) El tamao de la FAT es igual a la cantidad de entradas en la FAT por el tamao de cada entrada. Una entrada en FAT16 ocupa 16 bits, por lo tanto su tamao es de 2 bytes. La cantidad de entradas en una FAT16 es igual a la cantidad de bloques direccionables, es decir, 216 bloques. En consecuencia, el tamao de la FAT es de 216 entrada * 2 bytes/entrada= 131072 bytes= 128 kbytes. c) Los bloques del ARCHIVO1.DAT son 17000, 28000, 57000, 25000, 62000, EOF Por lo obtenido en el punto b) el tamao de la FAT es 128 kb, tamao que resulta mayor a los 16 kb disponibles para almacenar la FAT (dos marcos de 8 kb). Por lo tanto la FAT reside en memoria virtual. Si un marco es de 8 kb, entonces una pgina es de 8 kb. Si la FAT utiliza 128 kb y una pgina ocupa 8 kb, entonces la FAT es almacenada en 128 kb / 8 kb/pgina = 16 pginas. Una pgina abarca 8 kb (8 * 1024 bytes), y una entrada de la FAT ocupa 2 bytes, entonces en cada pgina se alojan 8 * 1024 bytes/pgina / 2 bytes/entrada = 4096 entradas/pgina A partir del ltimo clculo se puede obtener la cadena de referencia para recorrer la FAT segn los bloques requeridos del ARCHIVO1.DAT. Entrada 17000 se aloja en 17000 entrada / 4096 entrada/pgina = 4,15 pgina. Si enumeramos las 16 pginas de 0 a 15 la entrada 17000 se aloja en la pgina 4. Se realizan los clculos para las otras entradas, la ltima fila contiene la cadena de referencias: 17000 28000 57000 25000 62000 17000/4096= 4,15 28000/4096= 6,836 57000/4096= 13,9 25000/4096= 6,1 62000/4096= 15,1 4 6 13 6 15 Aplicando LRU, con dos marcos de pginas cadena ref. 4 6 ms nueva 4 6 ms vieja 4 fallos F F

13 13 6 F

6 6 13

15 15 6 F

Se obtiene un total de 4 fallos de pginas para leer secuencialmente el archivo ARCHIVO1.DAT Cada fallo requiere una lectura al disco, adicionalmente, cada bloque del archivo requiere un acceso (para leer el bloque solicitado). En consecuencia se tienen 4 lecturas + 5 lecturas = 9 lecturas, es decir 9 accesos a disco. d) Los bloques del ARCHIVO2.DAT son 45000, 53000, 53001, 234, 52000, 20000 En forma anloga al item c, se realizan los clculos para las otras entradas, y se resuelve aplicando LRU. La cadena de referencias es: 10, 12, 12, 0, 12, 4 Se producen 4 fallos, que implican 4 lecturas. Adems la escritura del archivo requiere 6 escrituras. En consecuencia se realizan 10 operaciones de acceso a disco e) Los bloques del ARCHIVO3.DAT son 45001, 36000, 65000, 35000, 34000, 46000 En forma anloga al item c, se realizan los clculos para las otras entradas, y se resuelve aplicando LRU. Cabe destacar que para la resolucin de este tem, no se necesita recorrer todas las entradas del archivo 16

Ejercicios de Exmenes Sistemas Operativos Facultad Regional Santa Fe Universidad Tecnolgica Nacional ARCHIVO3.DAT en la FAT, simplemente sus primeras tres entradas, a partir de la cual se conocer la posicin del cuarto bloque. La cadena de referencia es: 10, 8, 15. Se producen 3 fallos de pgina, que implican 3 lecturas. Adems hay un acceso para escribir el cuarto bloque. En consecuencia se realizan 4 accesos a disco.

17

También podría gustarte