Download fork() - dia/UPM

Document related concepts

MINIX wikipedia , lookup

Sistema operativo wikipedia , lookup

Tomsrtbt wikipedia , lookup

Registro de arranque principal wikipedia , lookup

Midnight Commander wikipedia , lookup

Transcript
A
Apellidos:
Nombre:
Puntuación total: 6 puntos.
DNI:
Nº Matrícula:
Tiempo estimado: 45 minutos.
Cada respuesta correcta puntúa 0.6 sobre la nota del ejercicio. Cada respuesta errónea quita 0.15 a la nota
del ejercicio. Cada pregunta tiene una única respuesta correcta.
1) En MINIX:
a) Cualquier proceso puede enviar un mensaje a cualquier otro proceso, sin ningún tipo de
restricción.
b) Las rutinas de tratamiento de interrupción siempre envían un mensaje a las tareas de E/S y
con seguridad éstas lo reciben y lo procesan.
c) Lo único que hacen todas las rutinas que implementan las llamadas al sistema es montar un
mensaje, cuyo contenido depende del tipo de llamada al sistema, y enviárselo al Gestor de
Memoria o al Gestor de Ficheros usando la primitiva send-rec.
d) Las tareas de E/S se ejecutan con la CPU en modo supervisor. Por esta razón, cuando una
tarea de E/S necesita un trabajo de otra tarea de E/S, se lo pide usando un mecanismo
distinto al de paso de mensajes.
e) ninguna de las anteriores.
2) En MINIX:
a) La tarea de reloj mantiene la fecha y hora de la máquina usando un único registro en el que
almacena el número de segundos transcurridos desde el 1-1-1970 a las 00:00 horas..
b) Cuando un proceso de usuario solicita leer caracteres de teclado, el proceso de MINIX
encargado de copiar la información solicitada a espacio de usuario es la tarea del sistema.
c) Las tareas de floppy y de disco RAM gestionan dispositivos de tipo bloque. Por esta razón,
ambas tareas implementan funciones básicas, como traducir una petición de bloque lógico a
cilindro, pista y sectores que componen dicho bloque.
d) La tarea de tty implementa el almacenamiento temporal de caracteres usando buffers
dedicados.
e) ninguna de las anteriores.
3) En MINIX:
a) La llamada al sistema fork es la única que permite que dos procesos de usuario se
comuniquen a través de un pipe.
b) La llamada al sistema pipe asigna dos descriptores de fichero libres, pero un único puntero
de L/E.
c) Siempre que un proceso de usuario solicite leer caracteres de un pipe que se encuentre vacío,
la llamada al sistema fallará.
d) Para cerrar ficheros normales se utiliza la llamada al sistema close, pero para cerrar pipes se
debe usar la llamada al sistema unlink.
e) ninguna de las anteriores.
4) En MINIX, durante la ejecución de la llamada al sistema fork, el Gestor de Memoria:
a) busca en la lista de huecos el hueco de memoria que mejor se ajuste a la cantidad de
memoria necesaria para crear la imagen de memoria del nuevo proceso.
b) le pide al Gestor de Ficheros que copie de disco a memoria los segmentos de código y datos
del nuevo proceso.
c) busca un pid (identificador de proceso) para el nuevo proceso y le pide a la Tarea del
Sistema que busque una entrada libre en la tabla de procesos del Kernel.
d) modifica los valores de las direcciones físicas de los tres segmentos del nuevo proceso.
e) ninguna de las anteriores.
5) Desde que un proceso de usuario invoca la llamada al sistema exit(0) hasta que ésta
termina, ¿cuál de las siguientes secuencias de activación de procesos del sistema
operativo MINIX se puede llegar a producir?:
a) Gestor de Memoria, Tarea del Sistema, Gestor de Ficheros, Gestor de Memoria
b) Gestor de Memoria, Tarea del Sistema, Gestor de Memoria
c) Gestor de Memoria, Tarea de reloj, Gestor de Memoria, Tarea del sistema, Gestor de
Ficheros,
d) Gestor de Memoria, Gestor de Ficheros, Gestor de Memoria
e) ninguna de las anteriores.
6) Sobre el sistema operativo MINIX se está ejecutando un proceso P1 cuyo directorio de
trabajo es “/pepe”. En un momento dado, en la tabla de i-nodos del Gestor de Ficheros
de MINIX sólo están cargados el i-nodo del directorio raíz (“/”) y del directorio de
trabajo del proceso P1, así como el del fichero “/pepe/f1”. En esa situación, el proceso
P1 ejecuta la llamada al sistema chmod(“/pepe/f1”, 0700). Indicar cuál de las siguientes
afirmaciones es cierta respecto a la resolución del nombre del fichero (suponer que no
falla por cuestiones de protección):
a) Con toda seguridad, el Gestor de Ficheros NO realiza peticiones de lectura de bloques a la
Tarea de Floppy y/o a la Tarea de disco RAM, ya que el i-nodo de “/pepe/f1” ya está en la
tabla de i-nodos.
b) Con toda seguridad, el Gestor de Ficheros SÍ realiza peticiones de lectura de bloques a la
Tarea de Floppy y/o a la Tarea de disco RAM.
c) Puede que el Gestor de Ficheros realice peticiones de lectura de bloques a la Tarea de Floppy
y/o a la Tarea de disco RAM.
d) El Gestor de Ficheros sólo realizará peticiones de lectura si el primer bloque de datos de
“/pepe/f1” no se encuentra en la cache de bloques.
e) ninguna de las anteriores.
7) La Tarea de Reloj de MINIX:
a) Se ejecuta siempre que se produce una interrupción de reloj.
b) En el procesamiento del mensaje que le envía la rutina de tratamiento de interrupción de
reloj siempre llama al planificador del sistema operativo para que éste seleccione cuál será el
siguiente proceso a ejecutarse.
c) Cuando verifica que ha expirado una alarma de un proceso de usuario, se encarga de
comprobar cuál es el tratamiento que tiene el proceso para la señal de alarma y, a
continuación envía un mensaje al Gestor de Memoria indicándole el tratamiento obtenido
para que éste realice la acción oportuna.
d) Cuando verifica que ha expirado un watchdog (alarma de un proceso del sistema operativo),
envía un mensaje al proceso cuya alarma ha expirado para que éste ejecute el procedimiento
que considere oportuno.
e) ninguna de las anteriores.
8) Se desea instalar un disco duro en un PC cuyo sistema operativo es MINIX. Para ello:
a) Sería necesario crear una nueva llamada al sistema para leer y otra para escribir en los
ficheros almacenados en este disco.
b) En el Gestor de Ficheros se debería definir una nueva cache de bloques para almacenar los
últimos bloques de disco duro a los que se haya accedido.
c) Bastaría con añadir una nueva tarea (en el nivel de tareas de MINIX) que gestionase el disco
duro.
d) Además de añadir una tarea que gestionase el disco duro sería necesario realizar algunas
modificaciones en el Gestor de Ficheros, pero el nivel 1 de MINIX se quedaría tal cual está.
e) ninguna de las anteriores.
9) Dado el siguiente programa:
int pid, df;
char car;
main ()
{
df = open (“/f1”, O_RDWR, 0700);
pid = fork();
if (pid == 0)
{
read(df, &car, 1);
write(df, &car, 1);
}
else
{
car = ‘b’;
write(df, &car, 1);
}
close(df);
}
Suponiendo que el fichero “/f1” existe, que su contenido es “acd” y que las llamadas al
sistema (POSIX) no fallan por razones no controladas en el programa, indicar cuál es el
posible contenido del fichero f1 al finalizar la ejecución del programa:
a)
b)
c)
d)
e)
acd
bcc
aabd
abad
ninguna de las anteriores.
10) Indicar cuál de las siguientes afirmaciones relativas al nivel 1 de MINIX es la correcta:
a) La rutina de tratamiento de interrupción de teclado simplemente avisa a la Tarea de tty que
se ha pulsado/soltado una tecla, de forma que la Tarea de tty será la encargada de obtener el
número de tecla accediendo a algún registro del controlador de teclado.
b) La rutina de tratamiento de interrupción de reloj incrementa en 1 el contenido de la variable
que almacena el tiempo transcurrido desde que se arrancó la máquina (realtime) y avisa a la
Tarea de reloj.
c) La rutina de tratamiento de interrupción de floppy se encarga de realizar la transferencia de
datos desde el controlador de floppy hasta memoria usando DMA y, cuando termina, avisa a
la Tarea de floppy del fin de la transferencia.
d) La rutina de tratamiento de interrupción de disco RAM avisa a la Tarea de disco RAM del
fin de la transferencia de datos.
e) ninguna de las anteriores.