Sistemas Operativos I Relación de problemas Relación de problemas - Sistemas Operativos I Temas 1 y 2: Introducción a los sistemas operativos, y Procesos y hebras 1. Diga cuales de las siguientes operaciones pueden realizarse únicamente en modo supervisor, o modo kernel: a) Consultar la hora del sistema. b) Cambiar la fecha del sistema. c) Leer una pista/sector de un disco magnético. d) Generar una interrupción software. e) Generar una interrupción. f) Modificar la dirección de un vector de la tabla de vectores de interrupción. g) Deshabilitar las interrupciones. 2. En el caso de un ordenador que se vaya a usar únicamente para un único usuario, ¿qué interés puede tener la existencia de los modos de funcionamiento supervisor/usuario? 3. ¿Cuál de las siguientes combinaciones no es factible? Justifíquelo detalladamente. a) Spooling en un sistema monousuario. b) Procesamiento por lotes (batch) con multiprogramación. c) Tiempo compartido sin multiprogramación. d) Multiprogramación en un sistema monousuario. 4. Cuestiones sobre procesos, y asignación de CPU: a) ¿Es necesario que lo último que haga todo proceso antes de finalizar sea una llamada al sistema para finalizar? ¿Sigue siendo esto cierto en sistemas monoprogramados? b) Cuando el controlador de un dispositivo produce una interrupción ¿se produce necesariamente un cambio de contexto?, ¿y cuando se produce una llamada al sistema? c) Cuando un proceso se bloquea, ¿deberá encargarse él directamente de cambiar el valor de su estado en el descriptor de proceso o PCB? d) Sea un proceso que cambia de Ejecutándose a Bloqueado, ¿puede este cambio provocar un cambio de estado en otros procesos? Si es así, ¿en qué casos? e) Idem para el cambio de estado Bloqueado a Ejecutable. 5. ¿Qué debería hacer el planificador a corto plazo cuando es invocado pero no hay ningún proceso en la cola de ejecutables? 6. ¿Qué algoritmos de planificación quedan descartados para ser utilizados en sistemas de tiempo compartido? 7. La representación gráfica del cociente [(tiempo_en_cola_ejecutables + tiempo_de_CPU) / tiempo_de_CPU ] frente a tiempo_de_CPU suele mostrar valores muy altos para ráfagas muy cortas en casi todos los algoritmos de asignación de CPU. ¿Por qué? 8. En los primeros ordenadores, cada byte de datos leído o escrito, era manejado directamente por la CPU (es decir, no existía DMA - Acceso Directo a Memoria). ¿Qué implicaciones tenía esta organización para la multiprogramación? 9. ¿Por qué no es el intérprete de órdenes (shell) parte del propio sistema operativo? 10. El modelo cliente-servidor es muy utilizado en sistemas distribuidos, ¿puede utilizarse este modelo en sistemas de un único computador? Pág. 1 Sistemas Operativos I Relación de problemas 11. Para cada una de las llamadas al sistema siguientes, especificar y explicar si su procesamiento por el sistema operativo requiere la invocación del planificador a corto plazo: a) Crear un proceso. b) Abortar un proceso, es decir, terminarlo forzosamente. c) Suspender o bloquear un proceso. d) Reanudar un proceso (inversa al caso anterior). e) Modificar la prioridad de un proceso. 12. Sea un sistema multiprogramado que utiliza el algoritmo Por Turnos (Round-Robin). Sea S el tiempo que tarda el despachador en cada cambio de contexto. ¿Cuál debe ser el valor de quantum Q para que el porcentaje de uso de la CPU por los procesos de usuario sea del 80%? 13. Sea un sistema multiprogramado que utiliza el algoritmo Por Turnos (Round-Robin). Sea S el tiempo que tarda el despachador en cada cambio de contexto, y N el número de procesos existente. ¿Cuál debe ser el valor de quantum Q para que se asegure que cada proceso “ve” la CPU al menos cada T segundos? 14. ¿Tiene sentido mantener ordenada por prioridades la cola de procesos bloqueados? Si lo tuviera, ¿en qué casos sería útil hacerlo? 15. ¿Puede el procesador manejar una interrupción mientras esta ejecutando un proceso si la política de planificación que utilizamos es no apropiativa (sin desplazamiento)? 16. Suponga que es responsable de diseñar e implementar un sistema operativo que va a utilizar una política de planificación apropiativa (con desplazamiento). Suponiendo que tenemos desarrollado el algoritmo de planificación a tal efecto, ¿qué otras partes del sistema operativo habría que modificar para implementar tal sistema? y ¿cuales serían tales modificaciones? 17. En el algoritmo de planificación FCFS, la penalización ( (t + tº de espera) / t ), ¿es creciente, decreciente o constante respecto a t (tiempo de servicio de CPU requerido por un proceso)? Justifique su respuesta. 18. Suponga que es el propietario de un kiosco de helados denominado Bola de Nieve. El kiosco es atendido por un solo dependiente. La persona que desea un helado se dirige al kiosco, solicita un único helado que cuesta 3 Ptas., espera que lo despache, paga y se marcha. Cuando hay más de un cliente, se forma una cola, que la experiencia nos dice que nunca esta compuesta por más de tres personas (cuando alguien se acerca y ve más de tres personas en la cola se marcha a un competidor próximo). Un estudio de mercado indica que en media se acercan al mostrador una persona por minuto. Supón que realizas una prueba para contratar un dependiente y se presentan dos candidatos, Pepe y Juan. Tras la prueba, descubres que Pepe atiende a un cliente en 20 segundos de media, mientras que Juan lo hace en 30 segundos, pero mientras que Pepe te pide un sueldo de 12 Ptas./hora Juan lo hará por 6 Ptas./hora. Teniendo todos estos factores en cuenta, ¿qué persona te trae más cuenta contratar si te interesa obtener los mejores beneficios? 19. En la tabla siguiente se describen cinco procesos: Proceso Tiempo de creación Tiempo de CPU A B C D E 4 0 1 8 12 1 5 4 3 2 Pág. 2 Sistemas Operativos I Relación de problemas Si suponemos que tenemos un algoritmo de planificación que utiliza una política FIFO (primero en llegar, primero en ser servido), calcula: a) Tiempo medio de respuesta b) Tiempo medio de espera c) La penalización, es decir, el cociente entre el tiempo de respuesta y el tiempo de CPU. 20. Utilizando los valores de la tabla del problema anterior, calcula los tiempos medios de espera y respuesta para los siguientes algoritmos: a) Por Turnos con quantum q=1 b) Por Turnos con quantum q=4 c) El más corto primero (SJF). Suponga que se estima una ráfaga igual a la real. 21. Calcula el tiempo de espera medio para los procesos de la tabla utilizando el algoritmo: el primero más corto apropiativo (o primero el de tiempo restante menor, SRTF). Proceso Tiempo de creación Tiempo de CPU A B C D E 0 1 3 9 12 3 1 12 5 5 22. Utilizando la tabla del ejercicio anterior, dibuja el diagrama de ocupación de CPU para el caso de un sistema que utiliza un algoritmo de colas múltiples con realimentación con las siguientes colas: Cola Prioridad Quantum 1 2 3 1 2 3 1 2 4 y suponiendo que: (a) los procesos entran en la cola de mayor prioridad (menor valor numérico). Cada cola se gestiona mediante la política Por Turnos. (b) la política de planificación entre colas es por prioridades no apropiativo. (c) un proceso en la cola i pasa a la cola i+1 si consume un quantum completo sin bloquearse. (d) cuando un proceso llega a la cola de menor prioridad, permanece en ella hasta que finalice. 23. Consideremos los procesos cuyo comportamiento se recoge en la tabla siguiente Proceso A B C D Tiempo creación 0 1 2 4 CPU 1 1 2 4 Comportamiento Bloqueo CPU Bloqueo CPU Bloqueo 1 2 1 2 1 2 1 1 1 1 1 2 1 - CPU 1 - Dibuja el diagrama de ocupación de la CPU para los siguientes algoritmos: a) FIFO b) Por Turnos (Round-Robin), con q=1 c) Prioridades, suponiendo que las prioridades son 3 para A y B, 2 para C, y 1 para D (mayor número = menor prioridad). Pág. 3 Sistemas Operativos I Relación de problemas d) Primero el más corto, suponiendo que la estimación de cada ráfaga coincide con la duración de la ráfaga anterior. La estimación para la primera ráfaga es su valor real. 24. Suponga que debe maximizar la eficiencia de un sistema multiusuario y que está recibiendo quejas de muchos usuarios sobre los pobres tiempos de respuesta (o tiempos de vuelta) de sus procesos. Los resultados obtenidos con una herramienta de monitorización del sistema nos muestran que la CPU se utiliza al 99'9% de su tiempo y que los procesadores de E/S están activos solo un 10% de su tiempo. ¿Cuales pueden ser las razones de estos tiempos de respuesta pobres y por qué? a) El quantum en la planificación Round-Robin es muy pequeño. b) La memoria principal es insuficiente. c) El sistema operativo tiene que manejar mucha memoria principal por lo que las rutinas de gestión de memoria están consumiendo todos los ciclos de CPU. d) La CPU es muy lenta. e) El quantum en la planificación Round-Robin es muy grande. 25. Compare el rendimiento ofrecido al planificar el conjunto de tareas multi-hebras descrito en la tabla y bajo las siguientes configuraciones: a) Sistema operativo multiprogramado con hebras de usuario. En este sistema se dispone de una biblioteca para la programación con hebras en el espacio de usuario. El algoritmo de planificación de CPU utilizado por el SO es Round-Robin con un quantum de 50 u.t. (unidades de tiempo). El planificador de la biblioteca de hebras reparte el quantum del proceso (tarea) entre las hebras utilizando Round-Robin con un quantum para cada hebra de 10 u.t. Suponga que no existe coste en el cambio de contexto entre hebras ni entre procesos. b) Sistema operativo multiprogramado con hebras kernel. El SO planifica las hebras usando Round-Robin con un quantum de 10 u.t. Como en el apartado anterior, suponga que no existe coste en la operación de cambio de contexto. Considere además que las operaciones de E/S de un proceso únicamente bloquean a la hebra que las solicita. Suponga en ambos casos que los dos procesos están disponibles y que el planificador entrega la CPU al proceso P1. Para realizar la comparación represente en cada caso el diagrama de ocupación de CPU y calcule el grado de ocupación de la CPU (tiempo CPU ocupada \ tiempo total). Proceso Hebras Ráfaga de CPU Hebra 1 20 Hebra 2 30 P1 Hebra 3 10 P2 Hebra 1 Hebra 2 30 40 Comportamiento Tiempo de E/S Ráfaga de CPU 30 10 30 - 10 - Pág. 4 Sistemas Operativos I Relación de problemas Tema 3: Sincronización y comunicación entre procesos 1. Cuando ocurre el evento por el cual un proceso está bloqueado, se invoca a un procedimiento, que denominaremos Desbloquear, para colocar el proceso en la cola de planificación correcta. Antes de realizar ninguna otra acción este procedimiento deshabilita (desactiva) las interrupciones. Explique por qué. 2. Para calcular el número combinatorio (n k) = n(n-1)(n-2)...(n-k+1)/k!, creamos un programa con dos procesos. El proceso P1 calcula el numerador y deposita el resultado en una variable compartida, denominada x, mientras que P2 calcula el factorial y deposita el valor en la variable y. Sincroniza los procesos P1 y P2, utilizando semáforos, para que el proceso P2 realice correctamente la división x/y. Declaración-inicialización de variables globales y semáforos n, k, x=1, i=1: enteros : semáforos P1 P2 for i = n-k+1 to n do begin y:=1 for j=2 to k do begin y:=y * j; x:=x * i; end end escribir (x/y); Nota: 3. En los primeros problemas propuestos, vamos a dibujar una caja en la que aparece: (a) el recuadro superior contiene la declaración-inicialización de variables globales y semáforos necesarias para el ejercicio, (b) dos o más recuadros verticales que contienen fragmentos del código de los procesos. Se deja al lector la tarea de completar tanto las declaraciones-inicializaciones necesarias como el código necesario para resolver el ejercicio. Sean los procesos P1, P2 y P3, cuyas secuencias de instrucciones son las que se muestran en el cuadro. Resuelva los siguientes problemas de sincronización (son independientes unos de otros): a) P2 podrá pasar a ejecutar e solo si P1 ha ejecutado a o P3 ha ejecutado g. b) P2 podrá pasar a ejecutar e solo si P1 ha ejecutado a y P3 ha ejecutado g. c) Solo cuando P1 haya ejecutado b, podrá pasar P2 a ejecutar e y P3 a ejecutar h. d) Sincroniza los procesos de forma que las secuencias b en P1, f en P2, y h en P3, sean ejecutadas como mucho por dos procesos simultáneamente. Pág. 5 Sistemas Operativos I Relación de problemas Declaración-inicialización de variables y semáforos P1 while true do begin P3 while true do begin a d g b e h c f i end end end 4. P2 while true do begin Dos procesos P1 y P2 se pasan información a través de una estructura de datos, ED. Sea un entero, n, que indica en todo momento el número de elementos útiles en ED y cuyo valor inicial es 0. El proceso P2 retira de ED en cada ejecución el último elemento depositado por P1, y espera si no hay elementos a que P2 ponga más. Supón que ED tiene un tamaño ilimitado, es decir, es lo suficientemente grande para que nunca se llene. Declaración-inicialización de variables y semáforos P1 while true do P2 while true do dato:=ED[n]; dato_calculado:= calcular_dato(); n:=n-1 n:=n+1; operar_dato(dato); ED[n]:=dato_calculado; end 5. end El cuadro que sigue nos muestra dos procesos concurrentes, P1 y P2, que comparten una variable global x (las restantes variables son locales a los procesos). a) Sincronizar los procesos para que P1 use todos los valores x suministrados por P2. b) Sincronizar los procesos para que P1 utilice un valor sí y otro no de la variable x, es decir, utilice los valores primero, tercero, quinto, etc. Pág. 6 Sistemas Operativos I Relación de problemas Declaración-inicialización de variables y semáforos var x: entero P1 while true do begin P2 while true do begin m:=2*x-n; leer_teclado (d); imprimir (m); x:=d-c*5 end end 6. En la fábrica de bicicletas MountanenBike, tenemos tres operarios que denominaremos OP1, OP2 y OP3. OP1 construye ruedas, OP2 construye cuadros de bicicletas, y OP3, manillares. Un cuarto operario, el Montador, se encarga de tomar dos ruedas, un cuadro y un manillar, y de montar la bicicleta. Sincroniza las acciones de los tres operarios y el Montador en los siguientes casos: a) Los operarios no tienen ningún espacio para almacenar los componentes producidos, y el Montador no podrá coger ninguna pieza si ésta no ha sido fabricada previamente por el correspondiente operario. b) Los operarios OP2 y OP3 tienen espacio para almacenar 10 piezas de las que producen, por tanto, deben esperar si habiendo producido 10 piezas no es retirada ninguna por el Montador. El operador OP1 tiene espacio para 20 piezas. Declaración-inicialización de variables y semáforos OP1 while true do begin OP2 While true do begin OP3 while true do begin Montador While true do Begin Coge_rueda(); Coge_rueda(); Hacer_rueda(); Hacer_cuadro(); Hacer_manillar(); Coge_cuadro(); Coge_manillar(); Montar_bici(); end end end end Pág. 7 Sistemas Operativos I 7. Relación de problemas Sentados en una mesa del Restaurante Atreveteacomer, están dos personas, cada una de las cuales esta tomando un plato de sopa, y entre las dos comparten una fuente de ensalada. Estas dos personas no tienen mucha confianza y no pueden comer las dos simultáneamente del plato de ensalada. Se pide: a) Diseñar un programa que resuelva el problema. b) Ahora, supón que existe un camarero encargado de retirar los platos de sopa cuando éstos están vacíos, es decir, cuando cada una de las personas ha tomado diez cucharadas. Soluciona esta variante teniendo en cuenta que el camarero debe cambiar los platos a las dos personas a la vez. Declaración-inicialización de variables y semáforos Comensal-1 while true { } Comensal-2 while true { Camarero (Apartado b) while true { tomar_una_cucharada; tomar_una_cucharada; quitar_sopa(); comer_ensalada(); comer_ensalada(); poner_sopa(); } } 8. Resuelva el problema del Productor-Consumidor con y sin buffer limitado utilizando semáforos binarios. 9. Esboce una solución de cómo un sistema operativo puede implementar las operaciones de semáforos con el mecanismo de habilitar/deshabilitar (activar/desactivar) interrupciones. 10. No es infrecuente encontrar un computador que utiliza tanto la instrucción TestAndSet como otra primitiva de sincronización, como los semáforos. Los dos tipos juegan dos papeles diferentes que no compiten entre sí. Explica por qué. 11. Problema de los filósofos-comensales. Sentados a una mesa están cinco filósofos. La actividad de cada filósofo es un ciclo sin fin de las operaciones de pensar y comer. Entre cada dos filósofos hay un tenedor. Para comer, un filósofo necesita obligatoriamente dos tenedores: el de su derecha y el de su izquierda. Necesitamos cinco procesos concurrentes, cada uno de ellos describe la actividad de un filósofo. Incluye las operaciones sobre semáforos necesarias para implementar el hecho de que antes de comer hay que disponer del tenedor de la derecha y el de la izquierda, y que cuando se termine la actividad de comer, hay que liberar ambos tenedores. El filósofo i alude al tenedor de su derecha como el número i, y al de su izquierda como el número (i+1) mod 5. Diseña una solución a este problema. Pág. 8 Sistemas Operativos I Declaración-inicialización de variables y semáforos tenedori : semaforo (para acceder al tenedor i) := 1 Relación de problemas i=(1..5) Filosofoi While (true) { comer (); pensar (); } 12. Resuelva el problema de los Lectores-Escritores que se detalla a continuación utilizando semáforos. Suponemos un sistema de base de datos que es compartido por varios procesos. Estos procesos se dividen en dos clases distintas según el tipo de acceso a la base de datos: Procesos Lectores que leen información y Procesos Escritores que leen y modifican información de la base de datos común. Los objetivos propuestos son: 1) Asegurar la consistencia de la base de datos y 2) Procurar la máxima concurrencia en el acceso a la base de datos. Y tenemos las siguientes situaciones: a) Varios Lectores pueden acceder simultáneamente a la base de datos. b) Cuando un Escritor está accediendo a la base de datos, ningún otro proceso puede acceder a la base de datos, ni Lector ni Escritor. En teoría se ha resuelto dando más prioridad a los lectores, resolverlo dando más prioridad a los escritores. 13. La vida real esta llena de problemas de sincronización. Uno de estos casos se da en las barberías. Suponga una barbería con un barbero, una silla para cortar el pelo y N sillas para que los clientes esperen sentados a que les toque su turno. Si no hay clientes, el barbero, que es bastante vago, duerme en su silla. Cuando llega un cliente debe despertar al barbero. Si llegan más clientes mientras que el barbero esta pelando y hay sillas libres, se sientan y esperan su turno. Si no hay sillas libres se van. Programa una solución para el Barbero y los Clientes. 14. A partir de un mecanismo de semáforos deseamos construir las rutinas enviar(buzon, mensaje) y recibir(buzon, mensaje) para implementar un mecanismo de paso de mensajes con buzones. Para ello, disponemos de una matriz BUZON de 10 elementos, cada elemento es una cadena de m caracteres, donde se almacenan los mensajes. Tenemos una variable compartida, n, que indica el número de mensajes que hay en cada momento en el buzón. Implementa: a) Un mecanismo de designación indirecta asíncrono. b) Un mecanismo de designación indirecta síncrono. Pág. 9 Sistemas Operativos I Relación de problemas Declaraciones-inicializaciones Funcion enviar(buzon, mensaje) { funcion recibir(buzon, mensaje) { n:=n+1; mensaje:= buzon(n); buzon(n):= mensaje; n:=n-1; } } 15. Discute la viabilidad de utilizar la instrucción TestAndSet suministrada por el repertorio de instrucciones de un procesador para obtener exclusión mutua en los siguientes casos: a) Como mecanismo para ser utilizado en programas de usuario. b) En las rutinas de tratamiento de interrupción como método deshabilitar/habilitar las interrupciones total o parcialmente. c) Para implementar las operaciones wait() y signal() de los semáforos. alternativo a 16. Considere un ordenador que no posee la instrucción Test-and-Set, pero sí tiene una instrucción Swap(a,b) que intercambia el contenido de dos palabras de memoria (a y b) en una sola acción individual. Muestre cómo se puede utilizar esta instrucción para resolver el problema de la exclusión mutua, es decir, diseñar el protocolo de entrada y el protocolo de salida a la sección crítica. procedure var temp: begin temp a := b := end Swap (var a,b: boolean) boolean := a; b; temp 17. Utilizando la instrucción Test_and_Set, hemos desarrollado el siguiente fragmento de código para resolver el problema de la exclusión mutua: (inicialmente la variable cerrojo = false) repeat while TestAndSet(cerrojo) do no-op; SecciónCrítica; cerrojo:= false; RestoSección; until false; ¿Cuál(es) de la(s) propiedad(es) que debe satisfacer una solución del problema de exclusión mutua no se satisface(n) con el código anterior? Justifique la respuesta. 18. La exclusión mutua utilizando semáforos se logra inicializando un semáforo a 1 (llamémoslo mutex), comenzando todas las secciones críticas con una operación wait(mutex) y finalizando todas las secciones críticas con una operación signal(mutex) ¿Qué ocurre si un proceso que está dentro de una sección crítica realiza una operación wait(mutex)? Pág. 10 Sistemas Operativos I Relación de problemas 19. Supongamos uno de los puntos de la vía ferroviaria donde dos vías (vía_1, vía_2) se unen en una sola (vía_3). El problema que se plantea es controlar dicho punto para que cuando lleguen los trenes no se produzcan problemas. Para modelar dicho problema suponemos que tenemos los siguientes procesos: Tren_vía_1(i), Tren_vía_2(j) y Controlador Considera la siguiente situación : Tren_vía_1(i), Tren_vía_2(j): representan a los trenes que llega por la vía_1, y a los que llegan por la vía_2 respectivamente. Si llegan dos trenes a la vez (uno por la vía_1 y otro por la vía_2) pasará a la vía_3 el primero que llegue, pero antes de pasar debe recibir el permiso del controlador. Controlador: está en un ciclo infinito esperando que llegue un tren, cuando llega un tren realiza las acciones adecuadas y le da paso. Declaración e inicialización de variables globales y semáforos Tren_via_1(i) Tren_via_2(j) pasar pasar Controlador While(true) { acciones_adecuadas(); sigue su viaje sigue su viaje } A continuación se presentan tres soluciones no validas, descubra el por qué Solución 1 Inicialización de variables globales y semáforos Semáforos: paso=0, S=1, Tren_via_1(i) Tren_via_2(j) wait(paso) pasar signal(S) wait(paso) pasar signal(S) sigue su viaje sigue su viaje Controlador While(true) { wait(S) acciones adecuadas signal (paso) } En las siguientes soluciones, al lado de cada sentencia se tiene un número entre paréntesis que se puede utilizar para encontrar una o más secuencias de ejecución que no respondan a la solución pedida. Pág. 11 Sistemas Operativos I Relación de problemas Solución 2 Inicialización de variables globales y semáforos Semáforos: tren=0, paso=0 Tren_via_1(i) Tren_via_2(j) (11) signal(tren) (12) wait(paso) (13) pasar (21)signal(tren) (22) wait(paso) (23) pasar Controlador While(true) { (31) wait(tren) (32) acciones adecuadas (33) signal (paso) sigue su viaje sigue su viaje } Solución 3 Inicialización de variables globales y semáforos Semáforos: contolador=1, pasado2=0, pasado1=0 Tren_via_1(i) Tren_via_2(j) (11)wait(controlador) (12) pasar (13) signal(pasado1) (21) wait(controlador) (22) pasar (23) signal(pasado2) sigue su viaje sigue su viaje Controlador While(true) { (31)signal(controlador) (32) acciones adecuadas (33) wait (pasado1) (34) wait(pasado2) } 20. Dos procesos A y B se pasan información a través de una estructura de datos formada por un entero N y una matriz MA (de 10 elementos). El valor de N debe ser en cada momento el número de datos útiles en la matriz; su valor inicial es 0. El proceso A coloca un dato en el elemento siguiente al N. El proceso B retira cada vez el último elemento colocado por A. Para conseguir que B no retire elementos si el número de elementos existentes es 0, se ha programado lo siguiente: Inicialización y declaración: eltos: semaforo = 0; N : entero = 0 Proceso A Proceso B while (TRUE) { (a1) calcular dato (a2) N := N + 1 (a3) MA [N] := dato (a4) SIGNAL (eltos) } while (TRUE) { (b0) if N=0 then WAIT (eltos); (b1) VALOR := MA [N]; (b2) N := N-1; (b3) hacer calculos sobre VALOR; } ¿Se consigue que B espere antes de (b1) si el número de elementos existentes es 0? Si la respuesta es afirmativa, justifícalo y en caso contrario indica un posible intercalado de instrucciones que justifique tu respuesta 21. En un sistema electrónico de transferencia de fondos, existen miles de procesos idénticos que funcionan como sigue. Cada proceso lee en una línea la cantidad de dinero a transferir, el número de cuenta destinataria y el número de cuenta de origen de la transferencia. Entonces, bloquea las dos cuentas, transfiere el dinero, y libera las cuentas. Con muchos procesos así, existe un peligro real de interbloqueo (un proceso puede bloquear la cuenta x pero no puede bloquear la cuenta y porque otro proceso la tiene bloqueada y ese proceso esta directa o indirectamente esperando la cuenta x). Describa un esquema que evite el peligro de interbloqueo. No esta permitido desbloquear una cuenta una vez que se ha bloqueado hasta que la transacción se complete. Pág. 12 Sistemas Operativos I Relación de problemas 22. En 1910, tres fumadores empedernidos entraron en un estanco para comprar los materiales que necesitaban para hacerse un cigarro. Para fabricar y fumar un cigarro cada fumador necesitaba tres elementos: tabaco, papel y cerillas. El estanquero tenía existencias ilimitadas. El primer fumador, F1, tenía su propio tabaco, el segundo, F2, su propio papel, y el tercero, F3, sus propias cerillas. La acción comienza cuando el estanquero colocó dos de los elementos necesarios en el mostrador con el fin de permitir que sólo uno de los fumadores liara el cigarro y fumara. Cuando el fumador terminaba, se lo notificaba al estanquero, quien colocaba otros dos elementos de forma aleatoria. Se propone la siguiente solución ¿es correcta? Razónelo. Declaración-inicialización de semáforos: Estanquero While true { wait(trabajo); n := random(3); case n of 0: {poner en la mesa tabaco y papel} signal(t); signal(p); 1: {poner en la mesa tabaco y cerillas} signal(t); signal(c); 2: {poner en la mesa papel y cerillas} signal(p); signal(c); } trabajo ← 1, t ← 0, p ← 0, c ← 0 F1 F2 F3 while true { While true { While true { wait(p); wait(t); wait(t); wait(c); wait(c); wait(p); fumar; fumar; fumar; signal(trabajo); signal(trabajo); signal(trabajo); } } } 23. Se pretende modelar parte del funcionamiento de una secretaría de un centro de estudiantes. En este sistema tenemos dos ventanillas para atender las peticiones de los estudiantes. Un estudiante solicita un certificado de notas y recibe un carta de pago. Una vez pagado el importe correspondiente, vuelve con la carta de pago sellada (resguardo), lo presenta en ventanilla y obtiene su certificado de notas. El encargado de la ventanilla debe saber si la petición del estudiante es: a) la solicitud del certificado: en este caso le dará al estudiante la carta de pago. b) la carta de pago sellada: en este caso le dará al estudiante el certificado de notas. Aunque existen dos ventanillas (y dos encargados), sólo hay una cola de estudiantes que esperan ser atendidos. Implemente los procesos Estudiante y Encargado utilizando semáforos y las variables que crea oportunas. 24. El código de la figura es una propuesta de solución al problema de lectores-escritores. Se asume que inicialmente todos los semáforos valen 1 y la variable nlec vale 0. Indicar, y justificar, si son verdaderas o falsas las siguientes afirmaciones relativas a la solución: a) Garantiza la exclusión Procesos escritores Procesos lectores mutua en el acceso a la … … variable nlec. wait(sem1); wait(sem1); b) Existe prioridad para los wait(sem2); wait(sem3)); escritores. nlec:=nlec+1; escribir; c) El objetivo de sem3 es signal(sem2); if (nlec=1) then wait(sem2); conseguir que no haya más signal(sem1); signal(sem3); de un lector leyendo … signal(sem1) simultáneamente. leer; d) En esta solución se da wait(sem3); inanición para los lectores. nlec:=nlec-1; if (nlec=0) signal(sem2); e) Permite la inanición de los signal(sem3); escritores. … f) La solución no es correcta porque sem2 debería valer 0 inicialmente. Pág. 13 Sistemas Operativos I Relación de problemas 25. Suponga que tiene que implementar el siguiente sistema: - Tenemos N procesos de tipo Cliente y tres procesos de tipo Servidor. - Hay dos variables globales, X e Y, que sirven de comunicación entre los procesos Cliente y los procesos Servidor. - Cada proceso Cliente lee desde teclado una variable que deposita en la variable compartida X. - El valor almacenado en la variable X se utiliza por uno de los tres procesos Servidores, el primero que esté libre, para calcular su logaritmo. - El Servidor calcula el logaritmo de X y lo deposita en la variable compartida Y para que finalmente el Cliente visualice el resultado del cálculo. - Se debe calcular el logaritmo (una única vez) de cada valor almacenado en X por cada uno de los procesos Cliente. - Nótese que los procesos Servidor son ciclos infinitos y los procesos Cliente no. Cliente i i = 1, … N X=Leer-delteclado(); Mostrar-enpantalla(Y); Servidor1 Servidor2 Servidor3 While (1){ While (1) { While (1) { Y = logaritmo(X); Y = logaritmo(X); Y = logaritmo(X); } } } b) Modifique el problema anterior suponiendo que cuando un Cliente almacena el valor 0 en la variable X, además de que un Servidor ha de proporcionar el correspondiente cálculo, todos los servidores han de terminar y ningún otro Cliente más pedirá realizar el cálculo. Es decir, los procesos servidores son ciclos infinitos hasta que un cliente lee el valor 0. Pág. 14 Sistemas Operativos I Relación de problemas Tema 4: Organización y gestión de memoria 1. Supongamos un gestor de memoria que utiliza una estrategia de particiones de tamaño variable y que tenemos los siguientes bloques de espacio libre (huecos): 600 bytes, 400 bytes, 1600 bytes, 2200 bytes, 1000 bytes, y 1050 bytes. a) ¿Qué bloque se seleccionará para satisfacer una solicitud de 1003 bytes utilizando una política de el mejor ajuste? b) Idem utilizando el peor ajuste. c) Suponiendo que la lista esta ordenada como aparece en el enunciado del problema, ¿qué bloque se seleccionará para satisfacer una solicitud de 1003 bytes utilizando la política de el primer ajuste? 2. Considere que se tiene una gestión de la memoria de un S.O. basada en particiones variables (en un entorno de multiprogramación). En un determinado instante de la ejecución, la lista de bloques libres (huecos) disponible contiene tres bloques (no contiguos) con un tamaño de 200, 400 y 2000 KB respectivamente y han de atenderse las siguientes peticiones de memoria para los siguientes procesos: P1 necesita 200KB, P2 necesita 300KB, P3 necesita 200KB, P4 necesita 1300KB, P5 necesita 400KB y P6 necesita 150KB. Complete la siguiente figura, indicando en cada casilla el contenido de la lista de bloques libres disponibles después de atender la petición de cada proceso y para cada algoritmo de asignación de memoria (si alguna petición no se puede atender, indíquelo en la casilla correspondiente) ¿A que conclusión llega? Algoritmo del peor ajuste Petición Bloques-libres Petición Bloq-libres Algoritmo del mejor ajuste Petición Bloques-libres Petición P1-200 P4-1300 P1-200 P4-1300 P2-300 P5-400 P2-300 P5-400 P3-200 P6-150 P3-200 P6-150 Bloq-libres 3. Si un computador no posee hardware de reubicación, e implementa intercambio (swapping), entonces el gestor de memoria necesita utilizar un cargador para recalcular las direcciones físicas de un proceso. ¿Sería posible para el sistema de intercambio reubicar los segmentos de datos y pila? Explica cómo funcionaría este sistema, o si es imposible que funcione. 4. ¿Por qué se utilizan potencias de dos para los tamaños de página, número de páginas en el espacio virtual de un proceso, y números de marcos de página? 5. Considere un sistema con un espacio lógico de memoria de 128K páginas con 8 KB cada una, una memoria física de 64 MB y direccionamiento al nivel de byte. ¿Cuántos bits hay en la dirección lógica? ¿Y en la física? 6. Considérese un sistema con memoria virtual en el que el procesador tiene una tasa de utilización del 15% y el dispositivo de paginación está ocupado el 97% del tiempo, ¿qué indican estas medidas? ¿Y si con el mismo porcentaje de uso del procesador el porcentaje de uso del dispositivo de paginación fuera del 15%? Pág. 15 Sistemas Operativos I 7. Relación de problemas Sitúese en un sistema paginado con memoria virtual, en donde: - la memoria real tiene un tamaño de 16 Mbytes - una dirección virtual ocupa 32 bits, de los cuales los 22 de la izquierda constituyen el número de página, y los 10 de la derecha el desplazamiento dentro de la página. Según lo anterior, a) ¿Qué tamaño tiene cada página? b) ¿Cuál es el tamaño del espacio de direccionamiento virtual? c) ¿En cuántos marcos de página se divide la memoria física? d) ¿Qué tamaño deberá tener el campo Número de Marco de la Tabla de Páginas? e) Además de dicho campo, suponga que la Tabla de Páginas tiene los siguientes campos con los siguientes valores: * Presencia: 1 bit (1= Presente en memoria fisica, 0= ausente) * Modificación: 1 bit (1= Ha sufrido modificación desde que se cargó en memoria) * Protección: 1 bit (1= Sólo se permite leer; 0= Cualquier tipo de acceso). f) ¿Cuál es el tamaño de la Tabla de Páginas para un proceso cuyo espacio de memoria virtual es de 103K bytes? 8. Sea un sistema de memoria virtual paginada con direcciones lógicas de 32 bits que proporciona un espacio virtual de 220 páginas y con una memoria física de 32 Mbytes ¿cuánta memoria requiere en total un proceso que tenga 453Kbytes, incluida su tabla de páginas cuyas entradas son de 32 bits? 9. Un ordenador tiene 4 marcos de página. En la siguiente tabla se muestran: el tiempo de carga, el tiempo del último acceso y los bits R y M para cada página (los tiempos están en tics de reloj). Responda a las siguientes cuestiones justificando su respuesta. Página 0 1 2 3 Tiempo Tiempo ultima de carga Referencia 126 279 230 235 120 272 160 200 Bit de Referencia 1 1 1 1 Bit de Modificación 0 0 1 1 a) ¿ Qué página se sustituye si se usa el algoritmo FIFO? b) ¿ Qué página se sustituye si se usa el algoritmo LRU? 10. ¿Depende el tamaño del conjunto de trabajo de un proceso directamente del tamaño del programa ejecutable asociado a él? Justifique su respuesta. 11. ¿Por qué una cache (o la TLB) que se accede con direcciones virtuales puede producir incoherencias y requiere que el sistema operativo la invalide en cada cambio de contexto y, en cambio, una que se accede con direcciones físicas no lo requiere? 12. Un ordenador proporciona un espacio de direccionamiento lógico (virtual) a cada proceso de 65.536 bytes de espacio dividido en páginas de 4096 bytes. Cierto programa tiene un tamaño de región de texto de 32768 bytes, un tamaño de región de datos de 16386 bytes y tamaño de región de pila de 15878. ¿Cabría este programa en el espacio de direcciones? (Una página no puede ser utilizada por regiones distintas). Si no es así, ¿cómo podríamos conseguirlo, dentro del esquema de paginación? 13. Analice qué puede ocurrir en un sistema que usa paginación por demanda si se recompila un programa mientras se está ejecutando. Proponga soluciones a los problemas que pueden surgir en esta situación. Pág. 16 Sistemas Operativos I Relación de problemas 14. Para cada uno de los siguientes campos de la tabla de páginas, se debe explicar si es la MMU o el sistema quién los lee y escribe (en éste último caso si se activa o desactiva), y en qué momentos: a) b) c) d) e) Número de marco. Bit de presencia Bit de protección Bit de modificación Bit de referencia 15. Suponga que la tabla de páginas para el proceso actual se parece a la de la figura. Todos los números son decimales, la numeración comienza en todos los casos desde cero, y todas las direcciones de memoria son direcciones en bytes. El tamaño de página es de 1024 bytes. Número de Bit de validez página virtual o presencia 0 0 1 1 1 2 1 3 0 4 1 5 Bit de referencia 1 1 0 0 0 0 Bit de modificación 0 1 0 0 0 1 Número de marco de página 4 7 1 2 0 ¿Qué direcciones físicas, si existen, corresponderán con cada una de las siguientes direcciones virtuales? (no intente manejar ninguna falta de página, si las hubiese) a) 999 b) 2121 c) 5400 16. Sea la siguiente secuencia de números de página referenciados: 1,2,3,4,1,2,5,1,2,3,4,5 Calcula el número de faltas de página que se producen utilizando el algoritmo FIFO y considerando que el número de marcos de página de que disfruta nuestro proceso es de a) 3 marcos b) 4 marcos ¿Se corresponde esto con el comportamiento intuitivo de que disminuirá el número de faltas de página al aumentar el tamaño de memoria de que disfruta el proceso? 17. ¿Qué tipo de fragmentación se produce en un sistema de gestión de memoria virtual paginado? ¿Qué decisiones de diseño se pueden tomar para minimizar dicho problema, y cómo afectan estas decisiones al comportamiento del sistema? 18. Suponga que un proceso emite una dirección lógica igual a 2453 y que se utiliza la técnica de paginación, con páginas de 1024 palabras a) Indique el par de valores (número de página, desplazamiento) que corresponde a dicha dirección. b) ¿Es posible que dicha dirección lógica se traduzca en la dirección física 9322? Razónelo. 19. El tiempo medio de ejecución de una instrucción en un procesador es de 30 nsg. Tras diversas medidas se ha comprobado que: a) El 0.001% de las instrucciones producen falta de página. b) El 30% de las ocasiones en que se produce la falta de página, la página que hay que sustituir está “sucia”. c) La velocidad de transferencia al dispositivo de disco es de 2MB/sg. El tamaño de cada página es de 4 KB. Calcule el tiempo efectivo de una instrucción (el tº que tarda en ejecutarse). Pág. 17 Sistemas Operativos I Relación de problemas 20. En general, cuando se utiliza un algoritmo de sustitución de páginas LRU se producen menos faltas de página que cuando usamos un FIFO, para la misma cadena de referencia. Sin embargo, existen cadenas para las que FIFO produce menos faltas de página. Da un ejemplo de una de estas cadenas. Consejo: la cadena de referencia no debe ser larga; una solución a este problema puede ser una cadena de longitud seis. 21. ¿Por qué la localidad no es un factor que se tiene en cuenta en los sistemas con segmentación? 22. Suponga que tenemos 3 procesos ejecutándose concurrentemente en un determinado instante y que todas sus páginas deben estar en memoria principal. El sistema operativo utiliza un sistema de memoria con paginación. Se dispone de una memoria física de 131072 bytes (128K). Sabemos que nuestros procesos al ser ejecutados tienen los siguientes parámetros: Los datos indican el tamaño en bytes de cada uno de los segmentos que Proceso código pila datos forman parte de la imagen del proceso. A 20480 14288 10240 Sabiendo que una página no puede B 16384 8200 8192 contener partes de dos segmentos C 18432 13288 9216 diferentes (pila, código o datos), hemos de determinar el tamaño de página que debería utilizar nuestro sistema y se barajan dos opciones: páginas de 4096 bytes (4K) o páginas de 512 bytes (1/2K). Se pide: a) ¿Cuál sería la opción más apropiada, 4096 bytes o 512 bytes?. Justifica totalmente la respuesta mostrando todos los cálculos que has necesitado para llegar a dicha conclusión. b) ¿Cuál es el formato de cada entrada de la Tabla de Páginas con el tamaño de página elegido? Justifica el tamaño de los campos con direcciones. Puedes añadir los bits que consideres necesarios para el buen funcionamiento del sistema indicando para que van a ser utilizados. c) ¿Cuántas Tablas de Páginas habrá en este sistema?¿Cuántas entradas hay en cada tabla de páginas (filas)? 23. En la gestión de memoria en un sistema paginado, ¿qué estructura/s de datos necesitará mantener el Sistema Operativo para administrar el espacio libre? 24. Situándonos en un sistema paginado, donde cada proceso tiene asignado un número fijo de marcos de páginas. Supongamos la siguiente situación: existe un proceso con 7 páginas y tiene asignados 5 marcos de página. Indica el contenido de la memoria después de cada referencia a una página si como algoritmo de sustitución de página utilizamos el LRU (la página no referenciada hace más tiempo). La secuencia de referencias es la indicada en la figura. Referencias 2 1 3 4 1 5 6 4 5 7 4 2 Marcos de página ¿Cuantas faltas de página se producen? _______ 25. ¿Cuál es la ventaja del algoritmo de faltas de página sobre el algoritmo basado en el modelo del conjunto de trabajo utilizando el tamaño de ventana w? ¿Cuál es la desventaja? Pág. 18 Sistemas Operativos I Relación de problemas 26. ¿Cuánto puede avanzar como máximo la aguja del algoritmo de reemplazo de páginas del reloj durante la selección de una página? 27. Supongamos que tenemos un proceso ejecutándose en un sistema paginado, con gestión de memoria basada en el algoritmo de sustitución frecuencia de faltas de página. El proceso tiene 5 páginas ( 0, 1, 2, 3, 4 ). Represente el contenido de la memoria real para ese proceso (es decir, indique que páginas tiene cargadas en cada momento) y cuándo se produce una falta de página. Suponga que, inicialmente, está cargada la página 2, el resto de páginas están en memoria secundaria y que no hay restricciones en cuanto al número de marcos de página disponibles. La cadena de referencias a página es: 0 3 1 1 1 3 4 4 2 2 4 0 0 0 0 3 y el parámetro es τ=3. 28. Describa el funcionamiento del algoritmo de sustitución basado en la frecuencia de faltas de página, con los siguientes datos: 4 marcos de página, en t = 0 la memoria contiene a la página 2. El tamaño de la ventana es τ= 3 y se produce la secuencia de referencias de páginas, 1 4 2 2 2 4 5 5 3 3 5 1 1 1 1 4 2 29. Describa el funcionamiento del algoritmo de sustitución global basado en el algoritmo basado en el modelo del conjunto de trabajo, con los siguientes datos: 4 marcos de página, en t= 0 la memoria contiene a la página 2 que se referenció en dicho instante de tiempo. El tamaño de la ventana es τ= 3 y se produce la secuencia de referencias de páginas, 1 4 4 4 2 4 1 1 3 3 5 5 5 5 1 4 2 30. Una computadora con memoria virtual paginada tiene un bit U por página virtual, que se pone automáticamente a 1 cuando se realiza un acceso a la página. Existe una instrucción limpiar_U (dir_base_tabla) que permite poner a 0 el conjunto de los bits U de todas las páginas de la tabla de páginas cuya dirección de comienzo pasamos como argumento. Explica cómo puede utilizarse este mecanismo para la implementación de un algoritmo de sustitución basado en el modelo del conjunto de trabajo. 31. Un Sistema Operativo con memoria virtual paginada tiene el mecanismo fijar_página(np) cuyo efecto es proteger contra la sustitución al marco de página en que se ubica la página virtual np. El mecanismo des_fijar (np) suprime esta protección. a) ¿Qué estructura/s de datos son necesarias para la realización de estos mecanismos? b) ¿En qué caso puede ser de utilidad estas primitivas? c) ¿Qué riesgos presentan y qué restricciones deben aportarse a su empleo? Pág. 19 Sistemas Operativos I Relación de problemas 32. Implemente la política de sustitución global basada en la medida de la tasa de faltas de página de un proceso; es decir, dé respuestas a las siguientes cuestiones: a) ¿Qué parte del Sistema Operativo deberá tomar parte? b) ¿Cuándo entra en ejecución dicho módulo del S.O.? c) ¿Qué estructuras de datos será necesario mantener? d) ¿Qué decisiones podría adoptar? 33. Disponemos de un ordenador que cuenta con las siguientes características: tiene una memoria RAM de 4KBytes, permite usar memoria virtual paginada, las páginas son de 1KBytes de tamaño y las direcciones virtuales son de 16 bits. El primer marco de página (marco 0) se usa únicamente por el Kernel y los demás marcos están disponibles para su uso por los procesos que se ejecutan en el sistema. Supongamos que tenemos sólo dos procesos, P1 y P2, y que utilizan las siguientes direcciones de memoria virtual y en el siguiente orden: Proceso P1 P2 P1 P2 P1 P2 P1 Direcciones virtuales 0-99 0-500 100-500 501-1500 3500-3700 1501-2100 501-600 a) ¿Cuántos marcos de página tiene la memoria RAM de este ordenador? b) ¿Cuántos bits necesitamos para identificar los marcos de página? c) Describe los fallos de página que tendrán lugar para cada intervalo de ejecución de los procesos, si la política de sustitución de páginas utilizada es LRU. Suponga que se dicho algoritmo es de asignación variable y sustitución global. 34. Estamos trabajando con un sistema operativo que emplea una gestión de memoria paginada sin memoria virtual. Cada página tiene un tamaño de 2.048 bytes. La memoria física disponible para los procesos es de 8 MBytes. Suponga que primero llega un proceso que necesita 31.566 posiciones de memoria (o bytes) y, después, llega otro proceso que consume 18.432 posiciones cuando se carga en memoria. Se pide: a) ¿Qué fragmentación interna provoca cada proceso? b) ¿Qué fragmentación externa provoca cada proceso? 35. Se tiene un sistema de memoria virtual con paginación a dos niveles que permite agrupar las páginas en “directorios de páginas”. Cada directorio de páginas puede contener hasta 256 páginas. Los espacios de direcciones lógicas de este sistema son de 4Gbytes y el tamaño de página es de 4Kbytes. El espacio de direcciones físicas puede tener hasta 1Gb. Describa la estructura de las direcciones lógicas y de las direcciones físicas de este sistema de memoria virtual. 36. Considere un sistema con paginación por demanda con los siguientes tiempos de utilización: utilización de CPU utilización disco de paginación utilización otros dispositivos de E/S 20% 97'7% 5% ¿Cuáles de los siguientes aspectos mejorarán (probablemente) el aprovechamiento de la CPU? Explique para cada uno de ellos si lo mejorarían o no y el por qué. a) Instalar una CPU más rápida b) Aumentar el grado de multiprogramación c) Reducir el grado de multiprogramación d) Instalar un disco duro más rápido Pág. 20 Sistemas Operativos I Relación de problemas 37. Suponga un sistema que utiliza paginación a dos niveles. Las direcciones son de 8 bits con la siguiente estructura: 2 bits en la tabla de páginas de primer nivel, 2 bits en la tabla de páginas de segundo nivel y 4 bits para el desplazamiento). El espacio de direccionamiento virtual de un proceso tiene la estructura del dibujo. Represente gráficamente las tablas de páginas y sus contenidos, suponiendo que cada entrada de la tabla de páginas ocupa 8 bits y que todas las páginas están cargadas en memoria principal (elige tú mismo la ubicación en memoria principal de dichas páginas, suponiendo que la memoria principal es de 160 Bytes). Dada esa asignación traduce la dirección virtual 47. 0 Texto 16B Datos 48B sin usar 224B Pila 256B 38. Considere la siguiente tabla de segmentos: Segmento Presencia o validez Dirección base Longitud 0 1 2 3 4 0 1 1 0 1 219 2300 90 1327 1952 600 14 100 580 96 ¿Qué direcciones físicas corresponden a las direcciones lógicas (nº_segmento, desplazamiento) siguientes? Si no puede traducir alguna dirección lógica a física, explique el por qué. a) b) c) d) 0, 430 1, 10 3, 400 4, 112 39. Sea un sistema de memoria virtual segmentado-paginado. Los espacios de direcciones lógicas son de 8Gbytes y el tamaño de página es de 2Kbytes. Un espacio de direcciones puede tener hasta 256 segmentos y las entradas de la tabla de página tienen 4 bytes. Diga cuál será el tamaño de la tabla de páginas de un segmento. Pág. 21