Parcial II de Sistema de Operación – Semestre 201415
1. Universidad Católica Andrés Bello
Facultad de Ingeniería
Escuela de Ingeniería Informática
Sistemas de Operación
Prof. Viviana Trujillo
Parcial II
1
De tín marín
En cada uno de las siguientes preguntas, señale cuál opción es correcta. Señale sus respuestas rodeando con un círculo
la opción correcta. Si se equivoca, tache la respuesta incorrecta y rodee la opción que considere correcta. Escriba con
tinta. Las preguntas respondidas con lápiz o con varios círculos no tachados se considerarán no contestadas.
Factor de corrección: 1 mala elimina una buena.
1. Dentro de una región crítica:
(a) Todo proceso que se ejecute fuera de su región crítica puede bloquear otros procesos.
(b) Un proceso tiene que esperar para siempre para entrar a su región crítica.
(c) Puede haber dos procesos de manera simultánea dentro de las regiones críticas.
(d) No pueden hacerse suposiciones acerca de las velocidades o el número de CPUs.
2. Tenemos varios procesos que intentan acceder a secciones críticas sobre una zona de datos, y observamos que el
algoritmo sólo funciona bien cuando hay tres o más procesos interesados en entrar en su sección crítica al mismo
tiempo: si sólo hay dos procesos intentando entrar en la sección crítica, el algoritmo los deja esperando hasta
que se incorpora un tercero. En este caso, este algoritmo es:
(a) Válido, suponiendo que aparte de esta incidencia, cumple con la exclusión mutua, progreso y espera indefinida.
(b) Inválido, no cumple la condición de progreso.
(c) Inválido, no cumple la condición de espera indefinida.
(d) Inválido, no cumple la condición de exclusión mutual.
3. Indique que opción es falsa en relación con los pipes.
(a) Si el pipe está vacío, el lector se queda bloqueado hasta que algún escritor escriba en la misma.
(b) Las operaciones de lectura pueden tener tamaños distintos a las operaciones de escritura.
(c) Dos procesos que quieren comunicarse ejecutan ambos la llamada pipe.
(d) El escritor puede escribir en el pipe aunque el lector no haya ejecutado una lectura del mismo.
1
2. 4. ¿El problema de la sección crítica puede ser resuelto con semáforos?
(a) Depende de cómo estén implementados los semáforos.
(b) Nunca.
(c) Siempre.
(d) Todas las anteriores son falsas.
5. Si una solución al problema de la sección crítica da lugar a inanición, entonces no cumple la condición:
(a) Exclusión mutua.
(b) Espera limitada.
(c) Progreso.
(d) Todas las anteriores son falsas.
6. En un sistema multihilo,
(a) Los cambios de contexto entre hilos de un mismo proceso pesado son en general más costosos que los
cambios de contexto entre hilos de diferentes procesos pesados.
(b) Los hilos pueden estar soportados e implementados por el propio sistema operativo o bien pueden ser
implementados a nivel de usuario.
(c) Los hilos de un mismo proceso pesado comparten las variables globales y por tanto la comunicación entre
ellos se puede realizar mediante la pila.
(d) Todas las anteriores son ciertas.
7. ¿El problema de la sección crítica puede ser resuelto con semáforos?
(a) Depende de cómo estén implementados los semáforos.
(b) Nunca.
(c) Siempre.
(d) Todas las anteriores son falsas.
8. El bloque de control de proceso (BCP) contiene, al menos:
(a) El grado de multiprogramación de un proceso.
(b) El código, los datos y la pila de un proceso.
(c) El estado y el identificador de un proceso.
(d) Todas las afirmaciones anteriores son correctas.
9. Indique las opción que considere verdadera acerca de los mecanismos de sincronización de procesos.
(a) Cualquier mecanismo es válido sobre cualquier plataforma.
(b) La espera activa es el mecanismo más ineficiente en el uso de la CPU.
(c) Con semáforos nunca se puede dar un interbloqueo.
10. Se ejecutan consecutivamente dos operaciones P o WAIT sobre un semáforo. ¿ Es esto posible?
(a) Si.
(b) No, si las ha realizado un solo proceso.
2
3. (c) No.
(d) Si, siempre que no hayan sido procesos diferentes.
11. Un FIFO:
(a) No existen en el Filesystem.
(b) Sirve sólo para intercambio entre procesos relacionados entre sí.
(c) Es equivalente a un archivo.
(d) Es un Inode en memoria.
12. ¿Qué cambio de contexto tardará menos?
(a) El producido entre dos hilos del mismo proceso implementados en el espacio de usuario.
(b) El producido entre dos hilos de procesos distintos implementados en el espacio de usuario.
(c) el producido por dos hilos del mismo proceso implementados en el núcleo.
(d) El producido por dos hilos de distintos procesos implementados en el núcleo.
13. Cuando realizamos una operación V sobre un semáforo:
(a) Se despertará siempre al primer proceso que realizó una operación P.
(b) Ningún otro proceso puede estar en mitad de la ejecución de otra operación V sobre dicho semáforo, aunque
si es posible que exista otro proceso en mitad de la ejecución de una operación P sobre el mismo semáforo.
(c) En caso de existir algún proceso bloqueado, se despertará a uno de ellos según la política definida en la
implementación del semáforo.
(d) Todas las anteriores son ciertas.
14. ¿Cuál de las siguientes afirmaciones acerca de la llamada al sistema exec es falsa?
(a) Permite ejecutar instrucciones con cualquier número de argumentos.
(b) Si funciona bien, devuelve 0.
(c) Puede cambiar el identificador efectivo de usuario.
(d) Solo retorna si da error.
15. Las llamadas “instrucciones atómicas” del hardware:
(a) Facilitan la implementación de algoritmos de sección crítica y de sincronización entre procesos.
(b) Dependen del Opo de procesador, ya que hay instrucciones Opo Mesa y otras Opo Hoare.
(c) Permiten soluciones universales a los problemas de sincronización, ya que están disponibles en cualquier
procesador.
(d) Evitan que exista interbloqueo en los algoritmos de sección crítica.
16. Cuando se crea un nuevo hilo, éste tiene acceso a:
(a) Una copia del segmento de datos del proceso.
(b) No tiene acceso al segmento de datos del proceso.
(c) El segmento de datos del proceso.
(d) El segmento de datos del proceso pero marcándolo preciamente como copy-on-write.
17. Cuál de los siguientes atributos es compartido entre todos los hilos de un mismo proceso:
3
4. (a) Una pila de ejecución.
(b) Un estado de ejecución.
(c) Un contexto de ejecución donde salvar cuando no se esté en ejecución.
(d) Un código ejecutable.
2
Conciso pero profundo
Responda con brevedad y precisión a las siguientes preguntas.
1. ¿Qué es la espera activa?
2. ¿Qué tipo de información guarda un semáforo, si es que guarda alguna? ¿Por qué cree que se estudian los
semáforos en la asignatura de Sistemas Operativos?
3. ¿Qué ventajas tiene poder declarar hilos dentro de un proceso pesado?
4. Estamos desarrollando un shell. Necesitamos escribir el código que lanza el programa que el usuario le encarga
ejecutar al shell. Para ello podemos elegir entre lanzar un nuevo hilo, o bien lanzar un nuevo proceso pesado.
¿Cuál de las dos opciones le parece más adecuada?
5. Cuando un proceso ejecuta una operación V sobre un semáforo y hay varios procesos esperando por ese semáforo,
¿Cuál o cuáles de los procesos en espera se desbloquea? ¿Uno al azar? ¿El más antiguo? ¿El de más prioridad?
¿Todos los procesos?
6. ¿Es un proceso un archivo ejecutable?
7. ¿Qué información, entre otras cosas, comparten un proceso A y su hijo B después de ejecutar el siguiente código?
Proceso A
if (fork() != 0)
wait (&status);
else
execve (B, parámetros, 0);
8. Dados los siguientes procesos y sus respectivas secuencias de código, indica si existiría o no situación de interbloqueo y explica por qué. En cualquier caso, indica también la salida por pantalla y el valor final de los semáforos.
Supón que inicialmente todos los semáforos tienen valor cero.
9. A continuación se muestra una propuesta de solución al problema de la sección crítica. ¿Crees que es una
propuesta válida? Justifica tu respuesta.
4
5. //Variables globales e inicializaciones
var
esperando: array[0..n-1] of boolean; //inicializada en false
m: boolean; //inicializada a false
Proceso Pi
llave: boolean; //inicializada en false
j: integer;
begin
repeat
SECCION NO CRITICA
esperando[i]:= true;
llave:= false;
repeat
llave:= Test_and_Set(m);
until (not esperando[i] or llave);
esperando[i]:= false;
SECCION CRITICA
j:= (i+1) mod n;
while (j<> I and not esperando[j]) do
j:= (j+1) mod n;
if (j=i) then
m:= false;
else
esperando[j]:= false;
until false
end.
10. A continuación se muestra una propuesta de solución al problema de la sección crítica para n procesos. ¿Crees
que es una propuesta válida? Justifica tu respuesta.
var
eleccion: array [0..n-1] of boolean
numero: array [0..n-1] of integer
j: 0..n
repeat
eleccion[i] = true;
numero[i] = min(numero[0],numero[1],...,numero[n-1])+1;
eleccion[i] = false;
for j:=0 to n-1 do
begin
while eleccion[j] do no-operar;
while numero[j] !=0 and (numero[j],j)<(numero[i],i) do no-operar
end;
SECCION CRITICA
numero[i] := 0;
SECCION RESTANTE
until false
5
6. 3
Bono
Explicar de que se trata el problema de los filósofos comensales y dar una solución con monitores.
4
Nota
27 Preguntas = 0,74 c/u.
Bono = 2 ptos.
6