Sistemas Operativos Ejercicios Mario Medina C. mariomedina@udec.cl Versión 0.4 1er. Semestre 2009 Introducción Este documento reúne ejercicios de sistemas operativos asignados en el curso de Sistemas Operativos de la carrera de Ingeniería Civil Electrónica, entre los años 2004 y 2009, muchos de ellos incluyendo un esbozo de solución. Se hacen públicos en la esperanza que sean una ayuda para el estudio de la asignatura. Se agradece la colaboración de todos aquellos alumnos que hicieron notar errores y realizaron comentarios a los ejercicios y soluciones dadas. Asimismo, en caso de detectarse algún error en los ejercicios ó sus soluciones, se ruega contactar al autor via su e-mail, mariomedina@udec.cl. Buen provecho. Mario Medina C. Concepción, 8 de abril de 2009. i Índice general Introducción i 1. Concurrencia de procesos 1 2. Bloqueos mortales 9 3. Planificación de procesos 12 4. Administración de memoria 18 5. Administración de entrada/salida 30 6. Miscelánea 37 ii 1 Concurrencia de procesos 1. Una cadena de montaje utiliza una correa transportadora por donde circulan tres productos: A, B y C. En un extremo de la cadena, existen tres robots, R1 , R2 y R3 . El robot R1 retira de la cinta los productos A y B y los empaqueta juntos. Los robots R2 y R3 realizan la misma acción para los productos B y C, y A y C, respectivamente. Estas son las únicas combinaciones de productos válidas. El proceso generador de productos llama a la función InsertaProductos(P1, P2), mientras que los robots llaman a las funciones RetiraProductos(P1, P2) y EmpaquetaProductos(P1, P2). Escriba código que sincronice el proceso generador y los procesos robot de manera que el proceso generador no pueda agregar elementos a la cinta si éstos no han sido retirados por un robot, y además que sólo un robot retire productos de la cinta a la vez. Use las primitivas de paso de mensajes send(destino, mensaje} y receive(destino, mensaje}. Solución Se presenta el código del proceso generador y del robot R1 . El código de los robots R2 y R3 es similar. receive(ANY) indica que cualquier proceso puede escribir en esta casilla. Alternativamente, se realiza una llamada a receive () por cada send(). Generador ( ) { Message mensaje ; while ( t r u e ) { I n s e r t a P r o d u c t o s ( prod1 , i f ( prod1 == A && prod2 send ( R1 , &mensaje ) ; } i f ( prod1 == B && prod2 send ( R2 , &mensaje ) ; } i f ( prod1 == A && prod2 send ( R3 , &mensaje ) ; } r e c e i v e (ANY, mensaje ) ; } prod2 ) ; == B ) { == C) { == C) { } R1 ( ) { Message mensaje ; while ( t r u e ) { 1 r e c e i v e ( Generador , &mensaje ) ; R e t i r a P r o d u c t o s (A, B ) ; EmpaquetaProductos (A, B ) ; send ( Generador , &mensaje ) ; } } 2. Un sistema multiprocesador tiene 8 procesadores y 20 unidades lectoras de cinta. Hay un gran número de trabajos en el sistema, y ellos necesitan como máximo 4 lectoras de cinta para completar su ejecución. Cada trabajo comienza su ejecución usando sólo 3 unidades lectoras de cinta, las que retiene durante un largo período antes de requerir la cuarta unidad por un período corto, para después terminar su ejecución. a) Supóngase que el sistema operativo no activa un trabajo hasta que estén disponibles las 4 unidades de cinta requeridas. Al comenzar la ejecución del trabajo, se le asignan las 4 unidades y éstas no se liberan hasta que el trabajo ha terminado. 1) Cuál es el número máximo de trabajos que pueden avanzar al mismo tiempo? 2) Cuál es el número máximo y mínimo de unidades lectoras de cinta que pueden estar desocupadas con esta estrategia? b) Sugiera una táctica alternativa para incrementar la utilización de los recursos y al mismo tiempo, evitar los bloqueos mortales. 1) Cuál es el número máximo de trabajos que pueden avanzar al mismo tiempo? 2) Cuál es el número máximo y mínimo de unidades lectoras de cinta que pueden estar desocupadas con esta nueva estrategia? Solución a) Si se usa una política conservadora, a lo más 20 4 = 5 procesos pueden estar activos en un instante dado. Ya que una de la unidades de cinta asignadas a cada proceso estará ociosa la mayor parte del tiempo, a lo más 5 unidades lectoras de cinta estarán desocupadas con esta estrategia. En el mejor caso, cada proceso estará usando las 4 unidades de cinta asignadas y 0 unidades de cinta están desocupadas. b) Para mejorar la utilización de los recursos, cada proceso tendrá asignado inicialmente 3 unidades lectoras de cinta. La cuarta unidad será asignada cuando el proceso lo demande. Con esta política, a lo más ⌊ 20 3 ⌋ = 6 procesos pueden estar activos simultáneamente. Entonces, el número mínimo de unidades lectoras desocupadas es 0, y el máximo es 2. Como 6 procesos activos utilizan en total 18 unidades, siempre habrá 2 unidades libres para ser asignadas al proceso que las requiera, y no habrá entonces bloqueos mortales. 3. Considere el algoritmo de Dekker, extendido para asegurar exclusión mutua a un número arbitrario de procesos. Para ello, se modifica la línea de código a ejecutar cuando se abandona la sección crítica a turno = (turno + 1) %n. Evaluar este algoritmo extendido cuando el número de procesos que se ejecutan concurrentemente n es mayor que 2. 2 Solución La solución propuesta asegura exclusión mutua y evita los bloqueos mortales. Sin embargo, puede ocurrir que el turno sea asignado a un proceso que no está interesado en entrar a su sección crítica, con lo que se produce inanición. 4. Un estudiante aventajado de Sistemas Operativos propone la siguiente solución al problema de exclusión mutua. Búsque un contraejemplo que demuestre que esta solución es incorrecta. Nota: la función cobegin(P(0), P(1)) indica la ejecución paralela de dos instancias del proceso P, con argumentos 0 y 1. boolean blocked [ 2 ] ; i n t turno ; void P ( i n t i d ) { while ( t r u e ) { blocked [ i d ] = t r u e ; while ( turno != i d ) { while ( blocked [ 1 − i d ] ) { / * No h a c e r nada * / ; } turno = i d ; } /* Seccion Critica */ blocked [ i d ] = f a l s e ; / * R e s t o d e l programa * / } } void main ( ) { blocked [ 0 ] = f a l s e ; blocked [ 1 ] = f a l s e ; turno = 0 ; cobegin ( P ( 0 ) , P ( 1 ) ) ; } Solución Considere el caso en que inicialmente turno = 0. El proceso P(1) hace blocked[1] = true y luego halla blocked[0] = false . En ese momento, es intercambiado por el proceso P(0), que hace blocked[0] = true, verifica que turno = 0 e ingresa a su sección crítica. En ese momento, el sistema operativo vuelve a ejecutar P(1), que hace turno = 1 y también entra en su sección crítica. Por ende, como ambos procesos están en su sección crítica al mismo tiempo, esta solución no asegura exclusión mutua. 3 5. Considere el siguiente programa: const i n t n = 5 0 ; i n t cuenta ; void t o t a l ( ) { i n t cont ; f o r ( cont = 1 ; cont <= n ; cont ++) { cuenta ++; } } void main ( ) { cuenta = 0 ; cobegin ( ( t o t a l ( ) , t o t a l ( ) ) ; w r i t e ( cuenta ) ; } a) Determine los límites inferior y superior para el valor final de la variable compartida cuenta. No realice ninguna suposición sobre la velocidad relativa de los procesos. Suponga además que el programa se ejecuta sobre una arquitectura RISC. b) Suponga que se ejecutan n copias de la función total () . Cuáles serán ahora los límites para cuenta? Nota: la función cobegin(P(0), P(1)) indica la ejecución paralela de dos instancias de P, con argumentos 0 y 1. Solución a) El límite superior es trivial: si no hay problemas de concurrencia, cuenta debiera ser igual a 100. Para obtener el límite inferior, analicemos el peor caso: 1) Proceso A lee cuenta a un registro, lo incrementa a 1, y pierde el procesador. 2) Proceso B lee cuenta (que aún es 0), lo incrementa 49 veces, y pierde el procesador después de escribir el valor 49 en cuenta. 3) Proceso A recupera el procesador, escribe el valor 1 en cuenta, y pierde el procesador nuevamente. 4) Proceso B lee cuenta (que tiene el valor 1) a un registro, incrementa el registro a 2 y pierde el procesador. 5) Proceso A recupera el procesador, incrementa cuenta 49 veces, por lo que cuenta toma el valor 50. 6) Proceso B se reactiva por última vez, y almacena el valor 2 en cuenta. Por lo tanto, el límite inferior de cuenta es 2. b) En el caso de n procesos, los límites de cuenta serán 2 y 50n. 4 6. Sea la siguiente implementación de las operaciones wait() y signal () sobre un semáforo s: wait ( s ) { while ( TestAndSet ( l o c k ) ) { ; / * No h a c e r nada * / } while ( s <= 0 ) { ; / * No h a c e r nada * / } s = s − 1; lock = 0; } signal ( s ) { while ( TestAndSet ( l o c k ) ) { ; / * No h a c e r nada * / } s = s + 1; lock = 0; } Suponiendo que lock tiene un valor inicial de 0 y s un valor inicial de 1, indique si la implementación mostrada es correcta. En caso contrario, presente un caso donde se ilustra el problema con esta implementación. Solución Primero, recordemos la implementación de la instrucción TestAndSet(&i) vista en clases. i f ( i == 0 ) { i = 1; return 1 ; } else { return 0 ; } /* 0 es f a l s o */ /* 1 es verdadero */ Considere tres procesos, A, B y C. Suponga que A ejecuta la función wait() y por ende la función TestAndSet(). Entonces, la variable lock tomará el valor 1, TestAndSet() retorna 1, y el ciclo while se repite. Esta vez TestAndSet() retorna 0 y el proceso A decrementa en 1 el semáforo s, haciéndolo igual a 0. Por último, el proceso A hace lock igual a false . Luego, el proceso B ejecuta la función wait() , nuevamente ejecuta TestAndSet() dos veces, dejando al final la variable lock igual a 1. Esta vez, el proceso B se queda esperando en el segundo lazo ya que el semáforo s tiene valor 0. Ahora, el proceso C ejecuta la función wait() . C ejecuta TestAndSet() una vez, y queda esperando en el segundo lazo ya que s tiene valor 0. El proceso A ejecuta signal () , hace s igual a 1 y lock igual a 0. El proceso B verifica el valor de s, y sale del lazo. En ese momento, el proceso B es suspendido y se ejecuta el proceso C. C verifica el valor de s, y sale del lazo. En ese momento es suspendido, y se vuelve a ejecutar 5 el proceso B. Tenemos entonces dos procesos, B y C, que están ejecutando código crítico (el decremento del semáforo s). En resumen, el problema con esta solución es que los dos procesos pueden quedar en un lazo de espera dentro de la sección crítica de la función, antes de incrementar el semáforo. 7. Indique cuáles de las siguientes transiciones no se puede producir en un sistema operativo con un algoritmo de planificación no expropiativo. a) Bloqueado a listo b) Ejecutando a listo c) Ejecutando a bloqueado d) Listo a ejecutando Solución Un algoritmo de planificación no expropiativo es aquel donde, una vez asignada la CPU a un proceso, éste no pierde la CPU por acciones externas a él. Es decir, el proceso puede pasar de listo a ejecutando a bloqueado a listo otra vez, pero el sistema operativo no puede obligar a un proceso en ejecución a liberar la CPU y retornar a la cola de procesos en espera. Por ello, la alternativa correcta es b). 8. Considere las siguientes funciones, incrementa() y decrementa(), las cuales son compartidas por varios procesos: s t a t i c i n t contador = 0 ; i n t incrementa ( void ) { contador ++; i f ( contador > 5 ) { p r i n t f ( ‘ ‘ contador v a l e %N\n’’ , contador ) ; return 0 ; } return 1 ; } i n t decrement ( void ) { while ( contador > 5 ) { p r i n t f ( ‘ ‘ contador v a l e % d\n’’ , contador ) ; contador − −; } i f ( contador == 0 ) return 0 ; else return 1 ; } Utilice primitivas mutex de la biblioteca Pthreads para hacer que ambas funciones sean atómicas. 6 Solución El siguiente código muestra una posible solución. # include <pthread . h> pthread_mutex_t cuentaLock = PTHREAD_MUTEX_INITIALIZER ; s t a t i c i n t count = 0 ; i n t incrementa ( void ) { pthread_mutex_lock (& cuentaLock ) ; contador ++; i f ( contador > 5 ) { p r i n t f ( ‘ ‘ contador % d t i e n e v a l o r > 5\n’’ , contador ) ; pthread_mutex_unlock (& cuentaLock ) ; return 0 ; } pthread_mutex_unlock (& cuentaLock ) ; return 1 ; } i n t decrement ( void ) { pthread_mutex_lock (& cuentaLock ) ; while ( contador > 5 ) { p r i n t f ( ‘ ‘ contador % d e s mayor que 5\n’’ , contador ) ; count − −; } i f ( count == 0 ) { pthread_mutex_unlock (& cuentaLock ) ; return 0 ; } else { pthread_mutex_unlock (& cuentaLock ) ; return 1 ; } } 9. Otra solución software al problema de exclusión mutua es el algoritmo de la panadería de Lamport, el cual, como su nombre lo dice, está modelado en el sistema de turnos de las panaderías y otros establecimientos comerciales. En este algoritmo, cada cliente recibe un ticket numerado cuando llega, que le permite ser servido por turno. El algoritmo es como sigue: boolean e l i g i e n d o [ n ] ; i n t numero [ n ] ; int j ; while (TRUE) { 7 e l i g i e n d o [ i ] = TRUE ; numero [ i ] = 1 + maximo ( numero [ ] ) ; e l i g i e n d o [ i ] = FALSE ; f o r ( j = 0 ; j < n ; j ++) { while ( e l i g i e n d o [ j ] ) continue ; while ( ( numero [ j ] != 0 ) && ( numero [ j ] , j ) < ( numero [ i ] , i ) ) continue ; } /* Seccion c r i t i c a */ numero [ i ] = 0 ; } donde la notación (a, b) < (c, d) se define como (a < c) OR (a = c AND b < d). Los vectores eligiendo[] y numero[] son inicializados a los valores FALSE y 0, respectivamente. la función maximo(numero[]) retorna el máximo valor almacenado en el vector numero. El elemento iésimo de cada vector puede ser leído y escrito por el proceso i solamente pero puede ser leído por otros procesos. a) Describa el algoritmo en palabras b) Demuestre que el algoritmo evita los bloqueos mortales c) Demuestre que el algoritmo asegura exclusión mutua 8 2 Bloqueos mortales 1. Suponga un sistema computacional que consta de múltiples unidades del recurso R. En este sistema se ejecutan p procesos, tal que cada uno de ellos puede necesitar hasta k unidades del recurso R. Cuántas unidades del recurso R deben existir como mínimo para asegurar la ausencia de bloqueos mortales? Solución Es claro que si hay pk unidades del recurso R, no habrá bloqueos mortales en el sistema. Asimismo, si sólo hay p(k − 1) unidades, es posible que cada proceso adquiera k − 1 unidades del recurso R y que todos los procesos queden bloqueados esperando adquirir el último recurso. Si se agrega una unidad más, entonces uno de los procesos tendrá k recursos asignados y podrá terminar. Es decir, habrá p − 1 procesos con k − 1 recursos asignados, y un proceso dueño de k recursos. Por lo tanto, el número mínimo de unidades necesarias para asegurar la ausencia de bloqueos mortales es p(k − 1) + 1. 2. Sea el siguiente estado de asignación de recursos 1 1 0 3 0 2 h i Asignación = 0 1 2 , Demanda = 2 2 0 , Disponible = 2 1 2 1 0 0 1 1 2 a) Utilice el algoritmo del banquero para determinar si éste es un estado seguro. b) Supóngase que en ese instante llega una solicitud de P3 por una unidad de R3 . Se concedería esta solicitud en un sistema que utilice un algoritmo de predicción? c) Supóngase que al instante siguiente llega una solicitud de P2 por una unidad de R1 . Se concedería esta solicitud en un sistema que utilice un algoritmo de predicción? Solución a) El algoritmo del banquero dice que éste es un estado seguro, ya que los tres procesos pueden ejecutarse con los recursos disponibles, en la secuencia P3 → P1 → P2 . b) Sí, porque la secuencia aún puede completarse. Las nuevas matrices serían: 1 1 0 3 0 2 h i Asignación = 0 1 2 , Demanda = 2 2 0 , Disponible = 2 1 1 1 0 1 1 1 1 c) No, porque se llega a un estado inseguro. Las matrices después de asignado el recurso serían: 9 3 0 2 1 1 0 h i Asignación = 1 1 2 , Demanda = 1 2 0 , Disponible = 1 1 1 1 1 1 1 0 1 P3 es el único proceso que puede ejecutarse hasta terminar, lo que dejaría el sistema en la siguiente situación: 3 0 2 1 1 0 h i Asignación = 1 1 2 , Demanda = 1 2 0 , Disponible = 2 1 2 0 0 0 0 0 0 Claramente, ninguno de los otros procesos puede satisfacer su demanda de recursos con los recursos disponibles. 3. Sea la siguiente solución al problema de los filósofos comensales: int estado [ 5 ] ; / * E s t a d o de l o s f i l ó s o f o s * / semaforo sem [ 5 ] = { 0 , 0 , 0 , 0 , 0 } ; semaforo mutex = 1 ; / * Asegura e x c l u s i ó n mutua * / tomaTenedores ( i ) { wait ( mutex ) ; e s t a d o [ i ] = HAMBRIENTO; test ( i ); s i g n a l ( mutex ) ; wait ( sem [ i ] ) ; } liberaTenedores ( i ) { wait ( mutex ) ; e s t a d o [ i ] = PENSANDO; t e s t ( ( i + 1) %N ) ; t e s t ( ( i − 1) %N ) ; s i g n a l ( mutex ) ; } test ( i ) { i f ( e s t a d o [ i ] == HAMBRIENTO && e s t a d o [ ( i − 1) %N] != COMIENDO && e s t a d o [ ( i + 1) %N] != COMIENDO) { e s t a d o [ i ] = COMIENDO; s i g n a l ( sem [ i ] ) ; } } a) Demuestre que esta solución previene los bloqueos mortales. b) Demuestre que esta solución puede dejar a un filósofo morirse de hambre. 10 Solución a) El filósofo Fi puede pasar al estado COMIENDO sólo si ninguno de sus vecinos filósofos está comiendo. Si, mientras Fi cena, su vecino F(i−1) %N ó su vecino F(i+1) %N intentan coger los tenedores, estos filósofos quedarán bloqueados al ejecutar sem[i] en la función tomaTenedores(). Una vez que Fi termine con su spaghetti, cederá sus tenedores primero a su vecino a mano izquierda F(i−1) %N , y luego a su vecino a mano derecha F(i+1) %N , mediante la ejecución de signal(sem[i]) . El semáforo mutex controla el acceso a las variables compartidas estado[] y sem[]. Al bloquear a un filósofo que intenta coger un tenedor que está siendo usado, este método asegura la exclusión mutua entre filósofos. b) Suponga que, inicialmente, los filósofos F2 y F4 están deleitandose con un rico spaghetti, mientras que los filósofos F0 , F1 y F3 están mirándolos hambrientos. Suponga, además, que en cuanto un filósofo comienza a pensar, le da hambre (pensar es un trabajo que consume mucha energía!). Imagine, entonces, que se da la siguiente secuencia de eventos: F4 termina de cenar. F0 comienza a comer, pues F1 y F3 están bloqueados por F2 . F2 termina de cenar. F3 comienza a comer, pues F1 y F4 están bloqueados por F0 . F3 termina de cenar. F2 comienza a comer, pues F1 y F4 están bloqueados por F0 . F0 termina de cenar. F4 comienza a comer, pues F1 y F3 están bloqueados por F2 . Esta secuencia se puede repetir indefinidamente, y condena al pobre filósofo F1 a morirse de inanición. 11 3 Planificación de procesos 1. En un centro de cómputo se reciben cinco trabajos, detallados en la siguiente tabla: Nombre Duración Prioridad tllegada 7 8 3 6 5 A B C D E 6 3 7 9 4 0 2 3 5 6 Se considera que, a menor valor, mayor es la prioridad. Determine el tiempo medio de retorno Tr para cada uno de los siguientes algoritmos de planificación. a) Turno rotatorio con quantum = 3 b) Planificación por prioridades c) Shortest Remaining Time (SRT) d) Highest Response Ratio Next (HRRN) Solución Las figuras 3.1, 3.2, 3.3 y 3.4 muestran los diagramas de tiempo para los algoritmos de planificación especificados. Se aplicaron los siguientes criterios: Para el algoritmo de planificación via turno rotatorio, se supone que la cola de procesos en espera es una cola FIFO que da preferencia a los procesos nuevos. El algoritmo de planificación HRRN es no expropiativo, mientras que los algoritmos de planificación mediante turno rotatorio, prioridades y SRT son expropiativos. A B C D E 0 3 6 9 12 15 18 21 24 27 Figura 3.1: Diagrama de tiempo, planificación via turno rotatorio, quantum = 3 12 A B C D E 0 3 6 9 12 15 18 21 24 27 Figura 3.2: Diagrama de tiempo, planificación via prioridades A B C D E 0 3 6 9 12 15 18 21 24 27 Figura 3.3: Diagrama de tiempo, planificación via algoritmo Shortest Remaining Time A B C D E 0 3 6 9 12 15 18 21 24 27 Figura 3.4: Diagrama de tiempo, planificación via algoritmo Highest Response Ratio Next 13 El cuadro 3.1 muestra los tiempos de retorno para cada proceso y el tiempo medio de retorno para cada algoritmo de planificación. Cuadro 3.1: Tiempos medios de retorno para los algoritmos enumerados Proceso Turno rotatorio Prioridades SRT HRRN Tr (A) Tr (B) Tr (C) Tr (D) Tr (E) Tr 22 27 6 20 21 20 8 20 24 9 10 27 3 16 9 7 16 7 24 17 19,2 16,2 13 14,2 2. Suponga que dispone de un sistema operativo de propósito general que realiza planificación de procesos via prioridades. Se tiene, entonces, que en cada activación del sistema operativo puede ocurrir una de las siguientes alternativas: a) No cambia el estado de ningún proceso b) Cambia el estado de un proceso pero no hay cambio de contexto c) Hay un cambio de contexto voluntario (causado por el proceso) d) Hay un cambio de contexto involuntario (causado por el sistema operativo) Analice cuáles de estas alternativas pueden ocurrir para cada uno de los siguientes casos, planteando en cada caso una situación que sirva como ejemplo. a) Se produce una interrupción de reloj b) Se produce una interrupción del disco c) Se produce una llamada al sistema Solución Se puede indicar a priori que una interrupción nunca puede causar un cambio de contexto voluntario. Este tipo de cambio de contexto sólo puede ocurrir por una llamada al sistema operativo que cause el bloqueo del proceso que la invocó. a) Al ocurrir una interrupción de reloj, pueden ocurrir los casos a, b y d. Puede ocurrir que el sistema operativo procese la interrupción y determine que no es necesario cambiar el estado de ningún proceso. Este es el caso de la mayoría de las interrupciones de reloj, que simplemente realizan las labores típicas asociadas como actualizar la hora del sistema, labores de contabilidad, etc. Una interrupción de reloj puede despertar a algún proceso bloqueado que haya ejecutado la función del sistema sleep () para dormir un período determinado. Si 14 la prioridad de este proceso es menor que la del proceso en ejecución, sólo hay un cambio de estado y el proceso desbloqueado entra en la cola de procesos listos. En cambio, si la prioridad del proceso despertado es mayor que la del proceso en ejecución, el sistema operativo expropiará la CPU del proceso en ejecución y habra un cambio de contexto involuntario. b) En caso de una interrupción de disco, ésta siempre está ligada al proceso que solicitó el acceso a disco. Por ello, no puede ocurrir el caso que no se produzca al menos un cambio de estado. Entonces, pueden ocurrir las alternativas b y d. Puede ocurrir que la interrupción de disco desbloquee algún proceso que esté esperando por los datos. Si la prioridad de este proceso es menor que la del proceso en ejecución, sólo hay un cambio de estado y el proceso desbloqueado entra en la cola de procesos listos. En cambio, si la prioridad del proceso desbloqueado es mayor que la del proceso en ejecución, el sistema operativo expropiará la CPU del proceso en ejecución y habra un cambio de contexto involuntario. c) En cuanto a las llamadas al sistema, se pueden presentar todas las alternativas. Una llamada al sistema puede no producir ningún cambio de estado. Por ejemplo, una llamada que lea la posición actual del mouse. Una llamada al sistema puede producir un cambio de estado pero no un cambio de proceso. Por ejemplo, una llamada al sistema para incrementar un semáforo puede desbloquear algún proceso que esté bloqueado en ese semáforo. Si este proceso es de prioridad menor que el proceso en ejecución, sólo hay un cambio de estado y el proceso desbloqueado entra en la cola de procesos listos. En cambio, si la prioridad del proceso desbloqueado es mayor que la del proceso en ejecución, el sistema operativo expropiará la CPU del proceso en ejecución y habra un cambio de contexto involuntario. También puede producirse un cambio de contexto voluntario si la llamada bloquea al proceso que la realiza. Por ejemplo, una llamada al sistema para leer datos de un archivo puede bloquear al proceso que la invoca. 3. En un sistema operativo hay tres procesos en ejecución, P0 , P1 y P2 . Todos estos procesos tienen el mismo comportamiento: usan la CPU por un tiempo T , luego solicitan E/S y se bloquean por un tiempo B, luego usan la CPU por un tiempo T , luego solicitan E/S y se bloquean por un tiempo B y finalmente usan la CPU por un tiempo T . Todos estos procesos arriban al mismo tiempo t = 0 en el orden P0 , P1 , P2 y sus solicitudes de CPU y E/S son planificadas usando el algoritmo FCFS. Los valores de T y B se muestran en la siguiente tabla. a) Suponga primero que los tres procesos requieren acceder al mismo dispositivo de entrada/salida, y que las solicitudes por el dispositivo son atendidas en orden FCFS. Realice un diagrama de tiempo que muestre la ejecución de estos procesos. Calcule el tiempo de espera y de respuesta promedio para estos procesos y el porcentaje de utilización de la CPU. Ignore la sobrecarga debida al proceso despachador. 15 Proceso T 7 1 1 P0 P1 P2 B 4 2 2 b) Suponga ahora que los tres procesos acceden a dispositivos de entrada/salida diferentes y que las solicitudes por el dispositivo son atendidas en orden FCFS. Realice un diagrama de tiempo que muestre la ejecución de estos procesos. Calcule el tiempo de respuesta promedio para estos procesos y el porcentaje de utilización de la CPU. Ignore la sobrecarga debida al proceso despachador. c) Suponga ahora que se agrega una nueva CPU al sistema, idéntica a la anterior, y que un proceso puede ser ejecutado indistintamente en cualquiera de las 2 CPUs. Repita el análisis anterior, calculando el porcentaje de utilización de ambas CPUs. Solución La realización de los diagramas de tiempo se deja de ejercicio al lector. De ellas, se pueden extraer los resultados que se muestran a continuación. a) El tiempo de espera promedio es 0+23+24 = 15,6 y el tiempo de respuesta promedio es 3 29+30+31 = 30. El porcentaje de utilización del procesador es 27 3 31 = 87 %. b) El tiempo de espera promedio es 0+13+15 = 9,3 y el tiempo de respuesta promedio es 3 29+20+22 = 23,6. El porcentaje de utilización del procesador es 93,5 %. 3 = 0,3 y el tiempo de respuesta promedio es c) El tiempo de espera promedio es 0+0+1 3 29+7+8 = 14,6. El porcentaje de utilización del primer procesador es 72,4 % y el porcen3 taje de utilización del segundo procesador es 20,6 %. 4. Considere el conjunto de procesos mostrados en la siguiente tabla. Nombre Llegada Duración A B C D E 0 1 3 9 12 3 5 2 5 5 Calcule el tiempo de finalización, el tiempo de retorno y el tiempo de retorno normalizado para cada proceso para las siguientes políticas de planificación: First-Come, First-Served (FCFS) Round-Robin, q = 1 (RR) 16 Shortest Process First (SPF) Highest Response Ratio Next (HRRN) 5. Qué tipo de proceso se ve favorecido por un sistema de planificación de procesos que utiliza colas multinivel con realimentación: un proceso que hace uso intensivo de la CPU, o un proceso que se ve dominado por el costo de realizar E/S? Explique brevemente por qué. 6. En un sistema operativo arriban simultáneamente 4 trabajos de la duración y prioridades indicadas en el siguiente cuadro, pero en el orden A, B, C, D. Proceso Duración Prioridad 8 5 3 7 A B C D 2 4 2 3 Para los siguientes algoritmos de planificación, realice un diagrama que muestre el orden de ejecución de estos trabajos, e identifique el algoritmo con menor tiempo de respuesta. Suponga que, a mayor valor, menor prioridad. a) Planificación por prioridades no expropiativa b) Planificación cíclica con un quantum de 2 unidades de tiempo c) FIFO 7. Supóngase un conjunto de tres tareas periódicas con los perfiles que se indican en el siguiente cuadro. Nombre 1ra Ejecución Período Duración A B C 0 0 0 20 50 50 10 10 15 Es decir, la tarea A se ejecuta cada 20 ciclos, demora 10 ciclos en ejecutarse, y su primera ejecución ocurre al tiempo t = 0. Realice un diagrama de tiempo que muestre cómo se planifican estas tareas para una política de planificación por plazos de término. 17 4 Administración de memoria 1. Sea un computador que dispone de 36 MiB de memoria principal, y cuyo sistema operativo ocupa 4 MiB sin incluir las estructuras necesarias para la administración de la memoria. En este computador, se prevé la ejecución de aplicaciones con un espacio de direcciones compuesto por 3 segmentos, código, datos y pila, con tamaños promedio de 264 KiB, 124 KiB y 124 KiB, respectivamente. Se desea implementar un sistema de administración de memoria, siendo los posibles esquemas a seguir los siguientes: Asignación contigua con particiones dinámicas, tal que cada proceso ocupa una única partición. Paginación simple. Segmentación simple. Memoria virtual paginada. Memoria virtual segmentada. Para los sistemas basados en páginas, considere que el tamaño de la página es de 4 KiB y que cada entrada en la tabla de páginas es de 4 bytes. Para los sistemas basados en segmentos, el tamaño máximo de un segmento es 16 MiB. Suponga que los esquemas con memoria virtual usan una política de asignación fija que otorga a cada proceso 16 marcos de página. Para cada uno de los esquemas anteriores, se pide analizar lo siguiente: a) La memoria utilizada por el sistema de gestión de memoria para las estructuras de datos que Ud. determine son necesarias. b) La memoria perdida debido al esquema usado, indicando la razón de dicha pérdida. En los casos que no disponga de otros datos, y sea aplicable, considere que la memoria perdida debido al esquema de administración de memoria utilizada es de un 25 %. c) El grado de multiprogramación posible de alcanzar en este sistema, para el tamaño promedio de procesos dado. d) El tamaño máximo del proceso que se puede ejecutar. Solución Dado el espacio ocupado por el sistema operativo, quedan 32 MiB disponibles para la ejecución de programas y para las estructuras de datos necesarias para la administración de memoria. 18 Asignación Contigua En este esquema de administración de memoria, la memoria es dividida dinámicamente tanto en número como en tamaño de acuerdo a las características de los procesos a ejecutar. Un proceso es asignado exactamente la memoria que necesita y nada más. a) En este caso, basta con un par de palabras por proceso que indiquen la dirección de memoria donde comienza el proceso (registro base) y la longitud del mismo (registro límite). Estas palabras, que pueden almacenarse en memoria o en registros dedicados del procesaor, solucionan los problemas de reubicación y protección. Aparte de estas dos palabras por proceso, el sistema de administración de memoria requiere saber en todo momento qué secciones de la memoria están disponibles. Esto puede implementarse como una lista encadenada de punteros a las áreas de memoria libre, junto con información sobre su tamaño. Para calcular las dimensiones de esta lista, es necesario saber el grado de multiprogramación. b) En este esquema de administración de memoria se produce fragmentación externa. Según el enunciado, supondremos que la memoria que se pierde como consecuencia de la fragmentación externa es un 25 % de la memoria disponible, es decir, 8 MiB. c) El tamaño promedio de un proceso es de 512 KiB. Dado que se pierden 8 MiB de memoria, sólo 24 MiB de memoria están disponibles para almacenar procesos. Por ende, sólo 48 procesos pueden estar residentes en memoria a la vez. d) El tamaño máximo del proceso que se puede ejecutar bajo este esquema de administración de memoria está dado por la memoria disponible. Si suponemos que hay sólo un proceso en memoria, no habrá fragmentación externa y la memoria disponible será 32 MiB, menos la memoria necesaria para almacenar las estructuras detalladas en la primera parte de esta pregunta. Paginación Simple En este esquema, tanto el proceso como la memoria están divididos en páginas y marcos de páginas de 4 KiB de tamaño. En un esquema de paginación simple (no hay memoria virtual), todas las páginas del proceso deben estar residentes en memoria durante su ejecución. a) En este caso, se necesita una tabla de páginas por cada proceso, cuyo tamaño varía en el tiempo de acuerdo con el comportamiento de cada proceso. Asimismo, se necesita una lista encadenada de los marcos de página libres. La memoria disponible para procesos de usuario (32 MiB) está dividida entonces en 8192 marcos de página. Dado que cada entrada en una tabla de páginas es de 4 bytes, una tabla de páginas direcciona a lo más 1024 páginas, y son necesarias como máximo 8 tablas de página y una tabla de páginas maestra por cada proceso. b) Este esquema de administración de memoria presenta fragmentación interna. Ésta se presenta en la última página de un proceso y su tamaño es, en promedio, la mitad de un página, es decir, 2 KiB por proceso. Para calcular cuánta memoria se pierde en total, es necesario conocer el grado de multiprogramación. Si hay sólo un proceso gigante en ejecución, la memoria perdida por fragmentación será de 2 KiB. Por el contrario, si 19 hay 8192 procesos en ejecución, ocupando un marco de página cada uno, la memoria promedio perdida por fragmentación será de 16 MiB. Este último caso no considera la memoria necesaria para almacenar las estructuras detalladas en el punto anterior. c) Dado que el tamaño promedio de un proceso es 512 KiB, éste ocupa 128 marcos de página y su tabla de páginas cabe en una página. Por ende, un proceso ocupa 129 marcos. Dado que la memoria total es de 8192 marcos de página, es posible tener como máximo 63 procesos en ejecución en forma simultánea. En este caso, la memoria perdida por fragmentación interna es de 63 × 2 KiB = 126 KiB. Esto representa menos del 1 % de la memoria disponible para los programas de usuario. d) Como se mencionó, el tamaño máximo del proceso está dado por la memoria disponible (32 MiB) menos las 9 páginas necesarias para almacenar su tabla de páginas. Entonces, el tamaño máximo está dado por (8192 − 9) × 4 KiB = 32732 KiB. Segmentación Simple Cada programa está dividido en un conjunto de segmentos, no siendo necesario que éstos estén contiguos en memoria ni que tengan el mismo tamaño. En nuestro caso, cada programa consta de un segmento de código, uno de datos y uno de pila. En un esquema de segmentación simple (no hay memoria virtual), todos los segmentos del proceso deben estar residentes en memoria durante su ejecución. a) La administración de memoria en este caso es similar al esquema de asignación contigua. Además de la lista encadenada de áreas libres de memoria, es necesario disponer de registros base y límite para cada segmento del proceso, es decir, 6 registros en total por cada proceso. b) En este caso, supondremos que la fragmentación externa es de 8 MiB (el 25 % de la memoria disponible para programas). c) El grado de multiprogramación que se puede alcanzar es equivalente al primer caso, es decir, 48 procesos, con la diferencia que los procesos no se encuentran contiguos en memoria. d) El tamaño máximo de un proceso está determinado por la memoria física disponible, es decir, será de 32 MiB, menos el espacio ocupado por la lista encadenada de punteros a áreas libres. Cada segmento no puede ser mayor a 16 MiB. Memoria Virtual Paginada A diferencia del caso de paginación simple, no es necesario que todas las páginas del proceso estén en memoria principal para su ejecución. a) Se necesita una tabla de páginas por proceso. Dado que cada proceso tiene asignadas sólo 16 páginas, son necesarios sólo 64 bytes para almacenarla. Sin embargo, podemos suponer que la tabla de páginas ocupa 1 página. b) En este caso, la memoria que se pierde por fragmentación interna se produce en la última página del espacio de direcciones virtuales del proceso. Dado que el administrador de memoria otorga un número fijo de 16 marcos de página a cada proceso, la probabilidad que la última página del proceso se encuentre en memoria principal en 20 16 un momento determinado está dada por 128 , es decir, el número de páginas asignadas al proceso dividido por el número de páginas total del proceso. Si sabemos el grado de multiprogramación, podremos determinar la memoria perdida. c) El tamaño que ocupa cada proceso en memoria principal está dado por los 16 marcos de páginas del proceso, y la página que ocupa su tabla, es decir, ocupa 17 × 4 = 68 KiB. Luego, es posible tener hasta 481 procesos en memoria. La memoria usada por todas las tablas de página es de 481 páginas ó 1924 KiB, y la memoria total perdida debido a 16 × 481 × 2 = 120,25 KiB, prácticamente igual a lo que la fragmentación interna será 128 se pierde si se usa paginación simple. Memoria Virtual Segmentada Este caso es similar a la segmentación simple, excepto que no es necesario que todos los segmentos del proceso estén en memoria simultáneamente. a) En forma similar al caso de segmentación simple, se requieren 3 registros por proceso, uno para cada segmento. Además, se requiere de una estructura de datos que lleve el control de los espacios de memoria disponibles. b) Nuevamente, tendremos fragmentación externa de 8 MiB. c) En este caso, no sabemos cuánta memoria física es reservada para cada proceso por el sistema operativo. Si suponemos, por ejemplo, que es necesario que el segmento de código de un proceso permanezca en memoria todo el tiempo, entonces el grado de multiprogramación estará dado por ⌈ 32768 264 ⌉ = 124 procesos. d) El tamaño máximo de un proceso está determinado por la memoria física disponible, es decir, será de 32 MiB, menos el espacio ocupado por la lista encadenada de punteros a áreas libres. Cada segmento no puede ser mayor a 16 MiB. 2. Considérese un tamaño de página de 4 KiB y una entrada en la tabla de páginas de 4 bytes. Cuántos niveles de tablas de página serían necesarios para la traducción de un espacio de direcciones de 64 bits, si el tamaño de la tabla de páginas maestra es una página? Solución Dado que cada página tiene 4 KiB, y cada entrada en una tabla de páginas ocupa 4 bytes, entonces una tabla de páginas tiene a lo más 210 = 1024 entradas. Como cada página contiene 212 bytes, un sistema de un nivel de tablas de página puede direccionar a lo más 210 × 212 = 222 = 4 MiB. Un sistema de dos niveles de tablas de páginas puede direccionar a lo más 232 = 4 GiB. Un sistema de 5 niveles puede direccionar 262 = 4 EiB, mientras que un sistema de 6 niveles puede direccionar 272 = 4 ZiB. Dado que el espacio de direcciones es de 64 bits, se requieren 6 niveles de tablas de página. La tabla de páginas maestra tendrá sólo 4 entradas en uso. (Recuerde que los prefijos son: Kilo, Mega, Giga, Tera, Peta, Eta, Zetta, Yotta) 21 3. Un proceso tiene 8 páginas virtuales en el disco, y se asignan con una ubicación fija de 4 marcos de página en la memoria principal. Se produce la siguiente secuencia de accesos a páginas: 1 0 2 2 1 7 6 7 0 1 2 0 3 0 4 5 1 5 2 4 5 6 7 6 7 2 4 2 7 3 3 2 3 Considere que los marcos están inicialmente vacíos. Muestre la secuencia de páginas residentes en los 4 marcos y calcule la tasa de aciertos en la memoria principal, si se utilizan políticas de reemplazo: a) LRU b) FIFO c) MRU d) OPT Solución A continuación, se muestran el contenido de los 4 marcos de página para cada política de reemplazo, indicando las faltas de páginas asociadas. 16 33 a) La tasa de aciertos para la política LRU es = 48 % 1 0 2 2 1 7 6 7 0 1 2 0 3 0 4 5 1 5 2 4 5 6 7 6 7 2 4 2 7 3 3 2 3 1 − − − F 1 0 − − F 1 0 2 − F 1 0 2 − 1 0 2 − 1 0 2 7 F 1 6 2 7 F 1 6 2 7 1 6 0 7 F 1 6 0 7 1 2 0 7 F 1 2 0 7 1 2 0 3 F 1 2 0 3 4 2 0 3 F 4 5 0 3 F 4 5 0 1 F 4 5 0 1 b) La tasa de aciertos para la política FIFO es 4 5 2 1 F 16 33 4 5 2 1 4 5 2 1 4 5 2 6 F 4 5 7 6 F 4 5 7 6 4 5 7 6 2 5 7 6 F 2 4 7 6 F 2 4 7 6 2 4 7 6 2 4 7 3 F 2 4 7 3 2 4 7 3 2 4 7 3 = 48 % 1 0 2 2 1 7 6 7 0 1 2 0 3 0 4 5 1 5 2 4 5 6 7 6 7 2 4 2 7 3 3 2 3 1 − − − F 1 0 − − F 1 0 2 − F 1 0 2 − 1 0 2 − 1 0 2 7 F 6 0 2 7 F 6 0 2 7 6 0 2 7 6 1 2 7 F 6 1 2 7 6 1 0 7 F 6 1 0 3 F 6 1 0 3 4 1 0 3 F 4 5 0 3 F 4 5 1 3 F 4 5 1 3 c) La tasa de aciertos para la política MRU es 4 5 1 2 F 16 33 4 5 1 2 4 5 1 2 6 5 1 2 F 6 7 1 2 F 6 7 1 2 6 7 1 2 6 7 1 2 6 7 4 2 F 6 7 4 2 6 7 4 2 6 7 4 3 F 6 7 4 3 2 7 4 3 F 2 7 4 3 = 48 % 1 0 2 2 1 7 6 7 0 1 2 0 3 0 4 5 1 5 2 4 5 6 7 6 7 2 4 2 7 3 3 2 3 1 − − − F 1 0 − − F 1 0 2 − F 1 0 2 − 1 0 2 − 1 0 2 7 F 1 0 2 6 F 1 0 2 7 F 1 0 2 7 1 0 2 7 1 0 2 7 1 0 2 7 1 3 2 7 F 1 0 2 7 F 1 4 2 7 F 1 5 2 7 F 22 1 5 2 7 1 5 2 7 1 5 2 7 1 5 4 7 F 1 5 4 7 1 6 4 7 F 1 6 4 7 1 6 4 7 1 6 4 7 1 6 4 2 F 1 6 4 2 1 6 4 2 1 6 4 7 F 1 6 4 3 F 1 6 4 3 1 6 4 2 F 1 6 4 3 F d) La tasa de aciertos para la política OPT es 21 33 = 64 % 1 0 2 2 1 7 6 7 0 1 2 0 3 0 4 5 1 5 2 4 5 6 7 6 7 2 4 2 7 3 3 2 3 1 − − − F 1 0 − − F 1 0 2 − F 1 0 2 − 1 0 2 − 1 0 2 7 F 1 0 6 7 F 1 0 6 7 1 0 6 7 1 0 6 7 1 0 6 2 F 1 0 6 2 1 0 3 2 F 1 0 3 2 1 4 3 2 F 1 4 5 2 F 1 4 5 2 1 4 5 2 1 4 5 2 1 4 5 2 1 4 5 2 6 4 5 2 F 6 4 7 2 F 6 4 7 2 6 4 7 2 6 4 7 2 6 4 7 2 6 4 7 2 6 4 7 2 3 4 7 2 F 3 4 7 2 3 4 7 2 3 4 7 2 4. Considere un sistema de memoria virtual en el que existen 4 marcos de página inicialmente vacíos. Un proceso genera la siguiente secuencia de referencias a páginas: 8, 1, 3, 1, 4, 5, 2, 3, 4, 5, 1, 2, 3, 6, 1, 8, 4, 1, 3. a) Indique el número de faltas de página que ocurren si se utiliza un algoritmo de reemplazo LRU. b) Indique el número de faltas de página que ocurren si se utiliza un algoritmo FIFO. c) Un compañero suyo dice que ha inventado un algoritmo de reemplazo muy sencillo que incurre en sólo 8 faltas de página en las condiciones descritas. Qué opinión le merece este algoritmo? Solución a) Usando la política LRU, se producen 14 faltas de página. Referencia Falta 8 1 3 1 4 5 2 3 4 5 1 2 3 6 1 8 4 1 3 8 8 1 8 1 3 8 1 3 8 1 3 4 5 1 3 4 5 1 2 4 5 3 2 4 5 3 2 4 5 3 2 4 5 3 1 4 5 2 1 4 5 2 1 3 6 2 1 3 6 2 1 3 6 8 1 3 6 8 1 4 6 8 1 4 3 8 1 4 F F F F F F F F F F F F F F b) En el caso FIFO, se producen 13 faltas de página. Referencia Falta 8 1 3 1 4 5 2 3 4 5 1 2 3 6 1 8 4 1 3 8 8 1 8 1 3 8 1 3 8 1 3 4 5 1 3 4 5 2 3 4 5 2 3 4 5 2 3 4 5 2 3 4 5 2 1 4 5 2 1 4 5 2 1 3 6 2 1 3 6 2 1 3 6 8 1 3 6 8 4 3 6 8 4 1 3 8 4 1 F F F F F F F F F F F F F c) Si se usa la política OPT, se producen 9 faltas de página. Por lo tanto, no es posible diseñar una política que produzca sólo 8 faltas de página con la secuencia dada. 23 Referencia Falta 8 1 3 1 4 5 2 3 4 5 1 2 3 6 1 8 4 1 3 8 8 1 8 1 3 8 1 3 8 1 3 4 5 1 3 4 5 2 3 4 5 2 3 4 5 2 3 4 5 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 6 3 4 1 6 3 4 1 8 3 4 1 8 3 4 1 8 3 4 1 8 3 4 F F F F F F F F F 5. Un computador tiene una cache, una memoria principal y un disco usado para memoria virtual. Si una palabra referenciada está en la cache, se necesitan 20ns para acceder a ella. Si está en memoria principal pero no en la cache, se necesitan 60ns para cargarla en la cache, y entonces la referencia comienza de nuevo. Si la palabra no está en la memoria principal, se necesitan 12ms para cargar la palabra desde el disco, seguidos de 60ns para copiarla en la cache, y entonces se realiza de nuevo la referencia. La tasa de aciertos en la cache es 90 %, y la tasa de aciertos en memoria principal es de 60 %. Cuál es el tiempo promedio de acceso a una palabra, en ns? Solución Hay tres casos a considerar, los que se muestran en el cuadro 4.1. Cuadro 4.1: Tiempo de acceso en función de la ubicación del dato Ubicación del dato Probabilidad Tiempo de acceso (ns) Presente en cache Presente en memoria principal Ni en cache ni en memoria 0,90 0,1 × 0,6 = 0,06 0,1 × 0,4 = 0,04 20 60 + 20 = 80 80 + 12 × 106 = 12000080 Por lo tanto, el tiempo de acceso promedio en ns es: Tavg = 0,90 × 20 + 0,06 × 80 + 0,04 × 12000080 = 480026 6. Considere un sistema de almacenamiento de memoria que almacena segmentos en forma contigua en el orden de su creación, como se muestra en la siguiente figura: S1 S2 ... Sn−1 Sn espacio libre Al crearse el segmento Sn+1 , éste se almacena inmediatamente después del segmento Sn , aun cuando puedan haberse eliminado ya de memoria alguno de los segmentos S1 , . . . , Sn−1 . Si el segmento a almacenar es mayor que el espacio libre, se compactan los segmentos en uso, copiándolos de manera de que nuevamente estén contiguos en memoria. Suponga: Cada ciclo hay una referencia a memoria 24 Cada t referencias se elimina un segmento El largo promedio de un segmento en bytes es s El sistema está en equilibrio El tamaño de la memoria es de m bytes Copiar un byte de una parte de memoria a otra requiere de dos referencias a memoria Calcule la fracción de tiempo F consumida en la compactación de memoria. Pista: calcule la velocidad de movimiento de la frontera entre el último segmento y el espacio libre. Solución Si el sistema está en equilibrio y cada t referencias se elimina un segmento, entonces cada t referencias se añade un nuevo segmento. Si el tamaño promedio de un segmento es s bytes, tenemos que la frontera entre el último segmento y el espacio libre se mueve a una velocidad de st bytes por ciclo. Sea f la fracción de la memoria que está libre después del último segmento en un instante cualquiera. Entonces, el tiempo que demorará llenar esa fracción de memoria con segmentos f mt será t0 = s . Una vez llena la memoria, es necesario compactar ésta. En el peor caso, es necesario mover todos los bytes de la fracción de memoria ocupada, es decir, (1 − f )m bytes. En ese caso, el tiempo de compactación es tc = 2(1 − f )m y la fracción F es: F ≥ ≥ ≥ tc t0 + tc 2(1 − f )m f mt s + 2(1 − f )m 2s(1 − f ) f t + 2s(1 − f ) 7. En un sistema computacional con memoria virtual paginada, la asignación de marcos es realizada en forma global, bajo un esquema de paginación por demanda. Suponga que existen 5 marcos de página y sólo 2 procesos en ejecución, A y B. El proceso A hace referencias a sus páginas 7, 15, 17, 13, 15, 11, 15, 11, 9 y 9, mientras que el proceso B hace referencias a sus páginas 3, 7, 8, 6, 7, 5, 7, 5, 5 y 5, donde el sistema de memoria recibe estas referencias en forma alternada, comenzando por el proceso A. Indique qué referencias a páginas generan una falta de página si el algoritmo de reemplazo es LRU. Solución La siguiente tabla muestra el estado de la memoria paso a paso. La primera columna indica la página accesada, las siguientes 5 columnas muestran el contenido de los marcos de página, y la última columna indica la ocurrencia de una falta de página. 25 7A 3B 15A 7B 17A 8B 13A 6B 15A 7B 11A 5B 15A 7B 11A 5B 9A 5B 9A 5B 7A 7A 7A 7A 7A 8B 8B 8B 8B 8B 11A 11A 11A 11A 11A 11A 11A 11A 11A 11A 3B 3B 3B 3B 3B 13A 13A 13A 13A 13A 5B 5B 5B 5B 5B 5B 5B 5B 5B 15A 15A 15A 15A 15A 6B 6B 6B 6B 6B 6B 6B 6B 6B 9A 9A 9A 9A 7B 7B 7B 7B 7B 15A 15A 15A 15A 15A 15A 15A 15A 15A 15A 15A 15A F F F F F F F F F F F F 17A 17A 17A 17A 17A 7B 7B 7B 7B 7B 7B 7B 7B F 7B 7B 7B 8. Considere un sistema basado en páginas que usa un solo nivel de tabla de páginas, la que está siempre en memoria a) Si una referencia a memoria demora 200ns, cuánto tiempo lleva una referencia a memoria paginada, en promedio? b) Ahora, se agrega hardware en forma de una TLB, que demora 20ns en realizar su traducción. Si este TLB tiene una tasa de aciertos de 85 %, cuál es el tiempo de acceso efectivo? Solución a) Una referencia a memoria paginada requiere, en promedio, dos accesos a memoria, uno para la tabla de páginas y otro para acceder al datos propiamente tal. Por ello, se requieren 400ns. b) Tenemos dos casos: si el TLB contiene la dirección buscada, el tiempo de acceso será de 200 + 20 = 220ns. Si dicha dirección no se encuentra en el TLB, hay un costo adicional de 200ns para acceder a la tabla de páginas. Entonces, el tiempo de acceso efectivo será 220 × 0,85 + 420 × 0,15 = 250ns. 9. Considere una tarea dividida en 4 segmentos de igual tamaño, y un sistema con segmentación y paginación que implementa una tabla de páginas con 8 entradas por cada segmento. Suponga que el tamaño de cada página es de 2 KiB. a) Cuál es el tamaño máximo que puede tener un segmento? b) Cuál es el máximo espacio de direcciones lógicas para una tarea? 26 c) Suponga que la tarea accede a la dirección fisica 00021ABC. Cuál es el formato de la dirección lógica generada por la tarea? Solución a) Dado que un segmento puede tener sólo 8 páginas de 2 KiB cada una, el tamaño máximo de un segmento es 16 KiB. b) Dado que una tarea puede tener a lo más 4 segmentos, el máximo espacio de direcciones lógicas es 64 KiB. c) El formato de la dirección lógica estará definido por el número de segmentos por proceso, el número de páginas por segmentos y el espacio máximo de direcciones lógicas. Como éste es de 64 KiB, las direcciones lógicas tendrán 16 bits. 2 bits Segmento 3 bits Página 11 bits Desplazamiento De la información dada, no se puede obtener los números de segmento ó página, pero el desplazamiento puede obtenerse de la dirección física de 32 bits 00021ABC, dividiéndola de la forma indicada abajo. De la figura, el desplazamiento es 2BC. 21 bits 0000 0000 0000 0010 0001 1 Marco de página 11 bits 010 1011 1100 Desplazamiento 10. Suponga que Ud. tiene un sistema operativo que utiliza segmentación en un computador con 1 MiB de memoria física. Sobre este sistema, se ejecuta una secuencia de aplicaciones, las que realizan las siguientes operaciones: Proceso A solicita 512 KiB de memoria Proceso B solicita 256 KiB de memoria Proceso C solicita 64 KiB de memoria Proceso B termina Proceso D solicita 186 KiB de memoria Proceso E solicita 190 KiB de memoria a) Indique el estado final de la memoria si se usa una política de asignación de memoria first-fit b) Indique el estado final de la memoria si se usa una política de asignación de memoria best-fit c) Suponga ahora que el sistema operativo combina paginación y segmentación, con páginas de 4 KiB. Indique ahora cuánta memoria se pierde por fragmentación interna y externa en los dos casos anteriores. 27 Solución a) En caso de usarse una política de asignación de memoria first-fit, el estado final de la memoria es: 512 KiB A 186 KiB D 70 KiB libre 64 KiB C 190 KiB E 2 KiB libre b) En caso de usarse una política de asignación de memoria best-fit, el estado final de la memoria es: 512 KiB A 190 KiB E 66 KiB libre 64 KiB C 186 KiB D 6 KiB libre c) En caso de usarse memoria segmentada y paginada con páginas de 4 KiB, es fácil ver que sólo existe fragmentación interna en los procesos D y E, pues la memoria asignada a estos procesos no es múltiplo de 4 KiB. Entonces, la fragmentación interna total es de 4 KiB. Además, por ser éste un sistema de memoria paginada, no existe fragmentación externa. 11. Suponga un sistema operativo con memoria virtual paginada, donde la tabla de página está residente en registros internos a la CPU. El tiempo de acceso a memoria es de 100ns. Suponga además que leer una página de disco a memoria demora 8ms sin reemplazo y 20ms con reemplazo, y que el 70 % de las veces es necesario reemplazar una página. Cuál es la máxima tasa de faltas de páginas aceptable para tener un tiempo de acceso promedio de 200ns? Solución El tiempo de acceso efectivo a disco en ns es: Tdisco = 0,3 × 8 × 106 + 0,7 × 20 × 106 = 16,4 × 106 Se pide calcular P tal que 200 = 100(1 − P) + 16,4 × 106 P De donde la tasa de faltas de página debe ser P ≤ 0,0000061. 12. Uno de sus amigos quiere actualizar su computador y le ha solicitado su ayuda. Ud., como buen ingeniero, decide primero medir el desempeño actual del computador, para determinar dónde está el cuello de botella. Ud. descubre los siguientes datos: La probabilidad de un fallo en el TLB es de 10 % La probabilidad de una falta de página cuando hay un fallo en el TLB es de 0,02 % Tiempo de acceso al TLB: 10ns Tiempo de acceso a memoria: 1µs Tiempo de transferencia de una página: 10ms 28 Probabilidad de reemplazar una página modificada: 50 % El computador en cuestión usa un sistema de memoria virtual paginada con sólo un nivel de tablas de página. El TLB es actualizado automáticamente por el hardware en caso de fallo. Las tablas de página residen en memoria principal, así que un acceso a una tabla de página demora 1µs. a) Calcule el tiempo promedio de acceso a memoria b) Luego de hacer estas mediciones, Ud. consulta con el fabricante del computador, quien le da la siguiente lista de precios: Aumento de TLB: Reduce probabilidad de fallo en TLB a 5 %. Actualización de disco: transfiere una página en 8ms. Aumento de memoria RAM: reduce la probabilidad de falta de página en caso de fallo de TLB a 0,01 % Cada una de estas alternativas cuesta $100,000. Su amigo tiene $200,000 para gastar. Qué opciones le recomienda Ud.? Justifique su respuesta. Solución a) Supondremos que el acceso al TLB ocurre en paralelo con el acceso a las tablas de página en memoria. Entonces, un 90 % de las veces el acceso a un dato o instrucción involucra un acceso al TLB y otro acceso a memoria. El 10 % restante, debe hacerse un acceso a memoria para acceder a la tabla de páginas y otro para acceder al dato o instruccíón. En un 0,02 % de estos casos, hay una falta de página. Tacceso Tacceso Tacceso Tacceso = = = = 0,9 ∗ (10 + 1000) + 0,1 ∗ (2000 + 0,0002 ∗ (10000000 + 0,5 ∗ 10000000)) 0,9 ∗ 1010 + 0,1 ∗ (2000 + 3000) 909 + 500 1409 b) Veamos el efecto de cada modificación. 1) Aumento de TLB: 0,95 ∗ 1010 + 0,05 ∗ 500 = 1209,5 2) Actualización de disco: 909 + 0,1 ∗ 4400 = 1349 3) Aumento de memoria RAM: 909 + 0,1 ∗ 3500 = 1259 Estos resultados ya nos dicen que probablemente le conviene aumentar la memoria RAM y aumentar el tamaño del TLB. El efecto combinado de ambos es: T+T LB,+RAM = 0,95 ∗ 1010 + 0,05 ∗ 3500 = 1134,5 29 5 Administración de entrada/salida 1. Un disco magnético tiene una velocidad de rotación de 7200 RPM, y está organizado en 5000 cilindros, numerados del 0 al 4999. El disco está actualmente atendiendo una solicitud por el cilindro 143, y la solicitud anterior fue para el cilindro 125. La cola de solicitudes pendientes contiene los cilindros 86, 1470, 913, 1774, 948, 1509, 1022, 1750 y 130. El controlador de disco implementa una política C-LOOK. Suponga que el disco puede realizar una búsqueda a un cilindro adyacente en 1 ms, y que mover el brazo de un extremo del disco al otro demora 18 ms. a) Calcule el número total de cilindros recorridos b) La física elemental nos dice que un objeto sometido a una aceleración constante a recorre una distancia d en el tiempo t, donde estas variables están gobernadas por la ecuación d = 12 at 2 . Entonces, mover el brazo a través de L pistas involucra acelerar el brazo a una tasa constante a por la primera mitad del movimiento, y luego decelerar el brazo a la misma tasa a por la segunda mitad del movimiento. La siguiente figura ilustra la velocidad del brazo en función del tiempo. Velocidad Tiempo Calcule el tiempo t necesario para recorrer L pistas en función de L y a. c) En realidad, existen constantes de tiempo asociadas a vencer la inercia inicial del movimiento del brazo y a cambiar su dirección de movimiento. El modelo √ presentado en el punto anterior puede ser mejorado. Por ejemplo, la ecuación t = x + y L es una buena aproximación al tiempo t necesario para mover el brazo a través de L pistas. En base a la información que Ud. conoce para el disco, calcule x e y. d) En base a sus resultados para los puntos anteriores, calcule el tiempo total de búsqueda para la secuencia de solicitudes dada. Sugerencia: las partes c) y d) no requieren del resultado de la parte b) Solución a) Del enunciado, el brazo lector se está moviendo hacia las pistas de número superior. El algoritmo C-LOOK determina que el brazo viaja de la pista 143 a la pista 1774, luego cambia su dirección de movimiento y visita la pista 86, para terminar en la pista 130. Por lo tanto, recorre (1774 − 143) + (1774 − 86) + (130 − 86) = 3363 pistas. 30 b) Ya que el brazo se mueve a una aceleración y deceleración constantes, q el tiempo neL cesario para acelerar hasta la mitad del recorrido ( 2 pistas) será t1 = La , y el tiempo q necesario para desacelerar el brazo será también t2 = La . Entonces, el tiempo necesario q para recorrer L pistas es t1 + t2 = 2 La . c) Del enunciado, sabemos que mover el brazo la distancia de 1 cilindro demora 1 ms, y que recorrer 4999 pistas demora 18 ms. Eso nos da dos ecuaciones: 1 = x+y √ 18 = x + 4999y Despejando para x e y, se obtiene x = 0,7561 e y = 0,2439 d) El tiempo total de búsqueda se calcula aplicando la ecuación obtenida en c) a las distancias entre las pistas visitadas por el brazo lector. La tabla 5.1 muestra los recorridos del brazo, la distancia entre las pistas visitadas y el tiempo de búsqueda entre ellas, √ calculado como tBusq = 0,7561 + 0,2439 y. De esta tabla, el tiempo total de búsqueda es 40,42 ms. Comienzo Final Distancia 143 913 948 1022 1470 1509 1750 1774 86 Total 913 948 1022 1470 1509 1750 1774 86 130 tBusq 770 7,52 35 2,20 74 2,85 448 5,92 39 2,28 241 4,54 24 1,95 1688 10,78 44 2,37 3363 40,42 Cuadro 5.1: Tiempo de búsqueda entre pistas 2. En un sistema computacional basado en memoria virtual se hacen mediciones de tiempo de utilización de recursos, con los siguientes resultados: Utilización de la CPU: 20 % Utilización del disco: 97,7 % Utilización de otros dispositivos de E/S: 5 % Un compañero suyo propone una lista de posibles acciones a tomar para mejorar la utilización de la CPU. Para cada acción, indique su efecto sobre los parámetros anteriores. 31 a) Reemplazar la CPU por otra 2,5 veces más rápida b) Instalar otra CPU idéntica en paralelo c) Reemplazar el disco magnético por uno 2,5 veces más grande d) Reemplazar el disco magnético por uno 2,5 veces más rápido e) Reemplazar el disco magnético por una configuración RAID-0 f ) Reemplazar el disco magnético por una configuración RAID-1 g) Instalar más memoria RAM h) Reducir el grado de multiprogramación i) Configurar el sistema operativo para realizar paginación previa j) Configurar el sistema operativo para aumentar el tamaño de la página Solución El sistema está hiperpaginando, es decir, pasa la mayor parte del tiempo esperando por el disco, lo que indica que se ha sobreasignado la memoria física disponible. Reducir el número de procesos presentes en memoria reducirá el número de faltas de página y mejorará la utilización de la CPU. En forma alternativa, se puede mejorar el desempeño reemplazando el disco magnético por un disco más rápido, o instalando más memoria RAM. La utilización de los otros dispositivos de entrada/salida no se verá afectada. Entonces, a) Reemplazar la CPU por una 2,5 veces más rápida No afecta mayormente la utilización del disco. Puede reducir la utilización de la CPU. b) Instalar otra CPU idéntica en paralelo No afecta mayormente la utilización de la memoria ni del disco. c) Reemplazar el disco magnético por uno 2,5 veces más grande No afecta la utilización del disco. d) Reemplazar el disco magnético por uno 2,5 veces más rápido Instalar un disco más rápido permite servir páginas más rapidamente, aumentando la tasa de transferencia a memoria. Esto aumenta la utilización de la CPU y puede disminuir la utilización del disco. e) Reemplazar el disco magnético por una configuración RAID-0 RAID 0 distribuye los datos a través de varios discos independientes. Esto es visto por el sistema como un disco más rápido, por lo que aumenta la utilización de la CPU y puede disminuir la utilización del disco. f ) Reemplazar el disco magnético por una configuración RAID-1 RAID 1 mantiene dos copias de los datos, pero desde el punto de vista del sistema aparece como un solo disco del mismo tamaño y aproximadamente el mismo tiempo de acceso. Por ello, no afecta la utilización de la CPU. 32 g) Instalar más memoria RAM Reduce la paginación, aumenta la utilización de la CPU y disminuye la utilización del disco. h) Reducir el grado de multiprogramación Reduce la paginación, por lo que aumenta la utilización de la CPU y disminuye la utilización del disco. i) Configurar el sistema operativo para realizar paginación previa Transfiere más páginas de disco a memoria en caso de una falta de página. Esto no alivia al disco, e incrementa la utilización de la CPU sólo si las aplicaciones acceden secuencialmente a memoria. j) Configurar el sistema operativo para aumentar el tamaño de la página Aumentar el tamaño de la página reduce el número de páginas residentes en memoria y aumenta la hiperpaginación. Puede ser beneficioso sólo en caso que las aplicaciones accedan secuencialmente a memoria, ya que reduce las faltas de página. 3. Considere un sistema de archivos que utiliza dos niveles de tablas para almacenar los bloques de disco asignados a un archivo. Suponga que el tamaño del bloque de este sistema de archivos es de 512 bytes. Suponga además que el tamaño de una entrada en tabla es de 32 bits. a) Cuál es el tamaño máximo de un archivo en este sistema de archivos? b) Cuál es el espacio total ocupado en disco por un archivo de tamaño máximo? c) Existe algún límite a la suma total del tamaño de todos los archivos en el sistema de archivos? Solución a) Cada tabla tiene 512 bytes, es decir, almacena 128 entradas de 4 bytes cada una. Entonces, el tamaño máximo de un archivo es 128 × 128 × 512 = 8 MiB. b) Además del espacio ocupado por los datos, se deben almacenar 1 + 128 tablas de 512 bytes cada una, que ocupan en total 129 × 512 = 64,5 KiB. Entonces, el espacio total ocupado en disco por un archivo de tamaño máximo es 8 MiB + 64,5 KiB. c) En este caso, la principal limitación al tamaño total del sistema de archivos está dado por la representación del índice de un bloque en 4 bytes, es decir, 32 bits. Entonces, el sistema de archivos puede almacenar a lo más 232 × 27 = 2 TiB de datos. 4. Suponga que Ud. tiene un disco magnético compuesto por 4 platos y 8 superficies de almacenamiento de datos, que rota a 12000 RPM. El disco está dividido en 3 zonas: La zona externa posee 400 sectores por pista La zona intermedia tiene 320 sectores por pista La zona interna tiene 240 sectores por pista 33 Además, considere que un sector en disco almacena 512 bytes, que el tiempo para mover la cabeza lectora de un cilindro a otro es de 3,2 ms, y que el tiempo de conmutación entre pistas de un mismo cilindro es de 2,4 ms. a) Calcule la tasa ideal de transferencia de datos para las 3 zonas del disco (no considere los tiempos de conmutación entre pistas ni entre cilindros). b) Calcule la tasa máxima de transferencia de datos para las 3 zonas del disco, considerando los tiempos de conmutación entre pistas y entre cilindros (suponga que se desea transferir una gran cantidad de datos que abarca muchos cilindros). c) Suponga que se desea transferir un archivo de datos de 1,5 MiB que está almacenado en forma contigua en alguna parte del disco. Calcule la tasa mínima de transferencia de datos para las tres zonas del disco, considerando los tiempos de conmutación entre pistas y entre cilindros. (Pista: póngase en el peor caso posible) Solución El disco rota a 12000 RPM o 200 RPS. Es decir, realiza una rotación cada 5 ms. En la zona externa, una pista almacena 200 KiB. En la zona intermedia, una pista almacena 160 KiB. En la zona interna, una pista almacena 120 KiB. a) En el caso ideal, las tasas de transferencia son: Texterna = 200 ∗ 200 KiB = 40000 KiB/s Tintermedia = 200 ∗ 160 KiB = 32000 KiB/s Tinterna = 200 ∗ 120 KiB = 24000 KiB/s b) Se consideran ahora los tiempos de conmutación entre pistas y entre cilindros. El mejor caso a considerar es el acceso secuencial a una gran cantidad de datos que abarca muchos cilindros. Examinemos el tiempo necesario para leer completamente un cilindro. Se requieren 8 revoluciones, mas 7 cambios de pista mas un cambio de cilindro. En ese tiempo se transfieren 8 pistas de datos. Entonces, se tiene Texterna = (8 ∗ 200 KiB)/(5 ∗ 8 + 7 ∗ 2,4 + 3,2) ms = 26666 KiB/s Tintermedia = (8 ∗ 160 KiB)/0,06s = 21333 KiB/s Tinterna = (8 ∗ 120 KiB)/0,06s = 16000 KiB/s c) Un archivo secuencial de 1,5 MiB se almacena en 3000 sectores consecutivos. En caso de almacenarse éste en la zona externa del disco, el archivo ocupará como mínimo 8 pistas, o, como máximo, 9. El peor caso, entonces, es si el primer sector del archivo se almacena en el último sector de un cilindro y los 2999 sectores restantes ocupan 7 pistas y fracción del cilindro siguiente. Entonces, el tiempo total de lectura del archivo secuencial es el tiempo necesario para leer 3000 sectores a 40000 KiB/s, que es 38,4 ms, mas el tiempo para cambiar de un cilindro a otro (3,2 ms) y 7 veces el tiempo de conmutación (2,4 ms). Para la zona intermedia, es fácil ver que 3000 sectores consecutivos ocupan 10 pistas o, como máximo, 11. El peor caso nuevamente corresponde al primer sector del archivo almacenado como el último sector de un cilindro, 2560 sectores se almacenan en el cilindro siguiente y los 439 sectores finales se almacenan en las dos primeras pistas del 34 cilindro subsiguiente. Entonces, el tiempo total de lectura del archivo secuencial es el tiempo necesario para leer 3000 sectores a 32000 KiB/s, que es 48 ms, mas dos veces el tiempo para cambiar de un cilindro a otro (3,2 ms) y 8 veces el tiempo de conmutación (2,4 ms). Para la zona interna, se puede calcular que 3000 sectores consecutivos ocupan 13 pistas o, como máximo, 14. El peor caso nuevamente corresponde al primer sector del archivo almacenado como el último sector de un cilindro, 1920 sectores se almacenan en el cilindro siguiente y los 1079 sectores finales se almacenan en las cinco primeras pistas del cilindro subsiguiente. Entonces, el tiempo total de lectura del archivo secuencial es el tiempo necesario para leer 3000 sectores a 24000 KiB/s, que es 64 ms, mas dos veces el tiempo para cambiar de un cilindro a otro (3,2 ms) y 11 veces el tiempo de conmutación (2,4 ms). En resumen, las tasas de transferencias son Texterna = 1536 KiB/(38,4 + 7 ∗ 2,4 + 3,2) ms = 26199 KiB/s Tintermedia = 1536 KiB/(48 + 8 ∗ 2,4 + 2 ∗ 3,2) ms = 20869 KiB/s Tinterna = 1536 KiB/(64 + 11 ∗ 2,4 + 2 ∗ 3,2) ms = 15867 KiB/s 5. Un sistema de almacenamiento magnético en disco recibe solicitudes de acceso a las siguientes pistas: 27, 129, 110, 186, 147, 41, 10, 64, 120. Supóngase que la cabeza del disco está ubicada inicialmente sobre la pista 100 y se está moviendo hacia la pista 0. Analice el tiempo medio de búsqueda para los algoritmos de planificación First-In First-Out (FIFO), Shortest Seek Time First (SSTF), y SCAN. 6. El algoritmo de planificación de disco C-SCAN es una variante del algoritmo SCAN que recorre el disco atendiendo solicitudes en una sola dirección hasta un extremo del disco, para luego reubicar la cabeza lectora al otro extremo del disco antes de continuar atendiendo solicitudes. Un sistema de almacenamiento magnético recibe solicitudes de acceso a las pistas 42, 23, 139, 89, 71, 2, 61 y 112. Inicialmente la cabeza lectora está en la pista 80, atendiendo solicitudes mientras se mueve hacia las pistas de número superior. Suponga que el disco tiene 140 pistas en total, numeradas de 0 a 139, y que el movimiento de la cabeza entre pistas contiguas demora 2 ms, mientras que mover la cabeza de un extremo a otro del disco demora 21 ms (Valores promedio para un disco Western Digital Caviar SE120). Usando estos valores, calcule el tiempo medio de búsqueda para los algoritmos SCAN y C-SCAN. 7. El tiempo de transferencia total de datos desde un disco magnético depende de tres factores: El tiempo de búsqueda de la pista El tiempo de rotación del disco El tiempo de transferencia de los datos Supóngase que es necesario escribir k bytes a un disco duro de 7200 RPM que tiene 1000 pistas, y un tiempo de búsqueda de pista promedio de 6 ms. Para acelerar el desempeño del sistema de disco, Ud. propone una estructura de tipo RAID-0, donde los datos serán escritos en paralelo a dos discos magnéticos independientes de iguales características. Este nuevo esquema puede ser visto como un solo disco magnético de mayor capacidad. En este 35 caso, cómo variarán los 3 factores del tiempo de transferencia total? Indique si los factores aumentan o disminuyen, y porqué. 8. Considere la organización de un archivo en UNIX. Suponga que hay 12 punteros a bloques directos almacenados en el nodo-i del archivo, además de punteros a tablas de primer, segundo, y tercer nivel, respectivamente. Suponga además que el tamaño del bloque en disco es de 8 KiB, y que cada puntero a un bloque de disco ocupa 32 bits. a) Cuál es el tamaño máximo de un archivo? b) Cuál es el tamaño máximo de los metadatos del archivo? 9. Aumentar el tamaño del bloque de disco en un sistema de archivos tipo UNIX implica: a) Disminuir la fragmentación interna b) Aumentar la fragmentación externa c) Disminuir el tamaño del bitmap de bloques libres d) Disminuir el tamaño máximo posible para un archivo de texto Explique su respuesta. 36 6 Miscelánea 1. El profesor le entrega a un estudiante dos cajas negras de idéntico aspecto. El profesor le dice al estudiante que una de ellas es una fuente de corriente, y la otra una fuente de voltaje. El estudiante inmediatamente identifica cuál es cuál. Cómo lo hizo? 2. A continuación encontrará una lista de medallistas olímpicos chilenos. Identifique la especialidad en la cual recibieron sus medallas. a) Marlene Ahrens b) Óscar Cristi c) Ramón Tapia d) Manuel Plaza e) César Mendoza 3. Cuál es el siguiente número en la secuencia? 1 11 21 1211 111221 4. Este problema es un clásico: Un estudiante universitario norteamericano que está de intercambio en la Universidad de Concepción envía un mensaje a su padre pidiendo dinero. El mensaje dice: SEND +MORE ---MONEY donde cada letra corresponde a un dígito diferente. Cuánto dinero necesita el estudiante? 5. Ud. tiene dos mechas, de 1 metro de largo cada una. Si enciende una mecha, ésta se consume en una hora exacta. Sin embargo, el cortarla por la mitad no genera dos mechas de 30 minutos cada una, pues la velocidad de consumo es no uniforme y desconocida. Cómo usaría estas mechas para medir un período de 45 minutos? 37 6. Un grupo de peregrinos debe llevar un mensaje por el desierto desde Casablanca hasta Marrakech. El viaje demora 6 días, pero cada peregrino puede llevar agua y comida sólo para 4 días. Cuál es el número mínimo de peregrinos que deben dejar Casablanca para asegurar que al menos uno de ellos llegará a Marrakech? Por supuesto que su solución no debe dejar peregrinos muriéndose de hambre y sed en la mitad del desierto. 7. Los señores Fulano, Zutano y Mengano se odian a muerte. Deciden resolver sus diferencias con un duelo a tres bandas, donde cada uno disparará una bala hacia alguno de los otros dos por turnos, hasta que sólo quede uno vivo. El Sr. Fulano tiene mala puntería: acierta 1/3 de las veces. El Sr. Zutano tiene mejor puntería: acierta 2/3 de las veces. El Sr. Mengano es un as: siempre acierta sus disparos. En compensación, se acuerda que el orden de los disparos será: Sr. Fulano, Sr. Zutano, Sr. Mengano. Qué estrategia debe seguir el Sr. Fulano para maximizar sus chances de sobrevivir al duelo? 8. Hace unos pocos años, en Suecia decidieron cambiar el sentido de circulación de todo el país: de manejar por la mano izquierda (como en Gran Bretaña y Japón), a manejar por la mano derecha (como en todo el resto del mundo). Para definir cuándo hacer el cambio, un grupo de ingenieros de transporte decidió estudiar las estadísticas de tránsito de los 5 años anteriores para determinar a qué día y hora el tránsito en todo el país era el mínimo. Los ingenieros encontraron una cosa curiosa: si analizaban las 8760 horas del año, siempre había una hora en el año en que no ocurrían accidentes automovilísticos. A qué se debe este interesante fenómeno? 9. Todos los autos tienen uno. Algunos tienen 2. Unos pocos tienen 4. Ninguno tiene 3. Qué es? 38