1 - dia/UPM

El examen consta de 21 cuestiones, que valen 0.45 puntos cada una, excepto la
17, que vale 1 punto. ... 4. fork(). exec(nombre_fich_ejecutable, argumentos) ...

Part of the document


Puntuación total: 5 puntos. Tiempo
estimado: 45 minutos. Indicar cuáles de las siguientes afirmaciones son verdaderas (V) y cuáles
falsas (F). Cada respuesta correcta sumará 5/30 de punto a la nota del
ejercicio y recíprocamente cada respuesta errónea restará esa misma
cantidad. Las cuatro siguientes cuestiones son referentes a POSIX: 1) Un proceso creado por otro mediante "fork", no hereda la posible
alarma que pudiera tener establecida el proceso creador.
2) Un proceso que tiene establecida una alarma, al ejecutar "execv"
con éxito la pierde, por lo que no hay que prever que ésta venza
durante la ejecución de la imagen entrante.
3) Cuando un proceso ejecuta la llamada al sistema "kill"y el usuario
efectivo de dicho proceso no es "root" (superusuario) ni coincide
con el usuario real o efectivo del proceso al que se le envía la
señal, entonces la llamada falla.
Expl: Podría no fallar si el usuario real del que envía es el mismo
que el que recibe) 4) En general, en un sistema tipo UNIX el programa "login" es el
encargado de acceder al fichero de contraseñas para identificar al
usuario. Dado que dicho fichero es de acceso restringido a "root",
el proceso que ejecuta "login" tiene como usuario efectivo a
"root", el cual se establece con el mecanismo de cambio de usuario
efectivo de que dispone la llamada a Sistema "execve" mediante los
bits de atributo de fichero SET_UID y SET_GID.
Expl: login es un cambio de imagen de un hijo de Init que desde que
se crea es 'Root'
En adelante las siguientes cuestiones se refieren siempre a MINIX. 5) Un proceso creado por otro mediante "fork", sí hereda la posible
alarma que pudiera tener establecida el proceso creador. 6) Un proceso que tiene establecida una alarma, al ejecutar "execve"
con éxito no la pierde, por lo que hay que prever que ésta venza
durante la ejecución de la imagen entrante. 7) La llamada al sistema "write" puede devolver error (-1) o el número
de bytes realmente escritos. Si no hay error, el valor devuelto
debe ser igual al valor del parámetro de entrada que especifica el
número de bytes a escribir, siempre y cuando haya espacio libre
suficiente en el disco.
Expl:El valor devuelto puede no ser igual aunque haya espacio en el
disco si se alcanza el tamaño máximo de fichero 8) Todas las llamadas al sistema sin excepción, para comunicarse con
el Gestor de Memoria o Gestor de Ficheros, utilizan siempre y
únicamente la primitiva de comunicación "send_rec". 9) Dependiendo del contexto y de su uso, los mensajes tienen diferente
composición, en algunos casos tienen unos campos y en otros casos
tienen otros, por lo que las primitivas de comunicación tienen que
trabajar con mensajes de longitud variable.
Expl: El contenido de los mensajes es variable pero el tamaño es
siempre el mismo aunque a veces se desperdicie espacio.. 10) Durante la ejecución de la Rutina de Tratamiento de Interrupción
del reloj se lleva a cabo, entre otras cosas, la actualización de
la variable que controla el tiempo del Sistema y los tiempos de uso
de CPU.
Expl:Es durante la ejecución del tratamiento del mensaje Clock_Tick
de la Tarea de Reloj. 11) Durante la ejecución de la Rutina de Tratamiento de Interrupción de
reloj se intenta enviar el mensaje CLOCK_TICK a la Tarea de Reloj y
aunque se consiga el envío, ésta no ejecuta el código de
tratamiento de dicho mensaje.
Expl: La ejecución del código del tratamiento del mensaje
Clock_Tick se hace durante la ejecución de la Tarea de Reloj. 12) En cada entrada de la Tabla de Procesos del Kernel existe un campo
que es un puntero al comienzo de una lista de procesos que están
bloqueados intentando recibir del proceso relativo a dicha entrada
de la Tabla. Expl: ...bloqueados intentantdo enviar al proceso
relativo a .... 13) En la Tarea de Floppy, al final de una operación de
lectura/escritura se le envía un mensaje a la Tarea de Reloj para
programar un "watchdog" de 3 segundos. Transcurridos esos 3
segundos sin nuevas operaciones de lectura/escritura, la Tarea de
Reloj avisa a la Tarea de Floppy para que esta última apague el
motor de la disquetera.
Expl: La Tarea de Reloj no avisa; ejecuta ella misma el
procedimiento de apagado del motor. 14) La Tarea de Tty puede funcionar en modo crudo, elaborado y c-break.
En el modo crudo se devuelven los caracteres solicitados cuando
están disponibles sin procesar ninguno en especial, en el modo
elaborado se efectúa una edición de línea y para ello se tratan
algunos caracteres de forma especial y el modo c-break es como el
elaborado pero sólo procesa algunos de los caracteres especiales de
este modo. 15) La Tarea de Tty acepta los mensajes TTY_READ y TTY_WRITE del Gestor
de Ficheros pero hay un campo en estos mensajes que nunca se
utiliza. Expl: el campo m._POSITION 16) Cuando un proceso que no está en estado "WAITING" ni "PAUSED"
recibe una señal no ignorada, el Gestor de Memoria envía un mensaje
al Gestor de Ficheros y éste a su vez, si procede, envía el
mensaje TTY_CANCEL a la Tarea de Tty. Expl: Podría estar bloqueado
en un Read de teclado. 17) Cuando la Tarea de Tty detecta los suficientes caracteres pulsados
para completar una petición de entrada que tenía pendiente, copia
dichos caracteres a un buffer de memoria del Gestor de Ficheros y
además le envía un mensaje REVIVE para que responda al proceso de
usuario.
Expl: Copia los caracteres directamente a espacio de usuario, no a
un buffer del GF. 18) Cuando el Gestor de Ficheros atiende una llamada "READ" dirigida a
un dispositivo de bloques, no responde al proceso de usuario hasta
que la operación se satisface o da error, no pudiendo atender
mientras tanto otras peticiones de otros procesos. Exp.: No es así
si es un read sobre un pipe. 19) Cuando se pulsa una tecla, la Rutina de Tratamiento de Interrupción
del Teclado intenta enviar el mensaje TTY_CHAR_INT a la Tarea de
Tty y si no puede pone un bit de la variable BUSY_MAP a 1, para que
en cuanto pueda, la Tarea de Tty , examinando dicho bit, lea del
puerto la tecla y la meta en su buffer tty_inqueue. Exp.: La Tarea
de TTY no lee nunca del puerto del teclado, esto lo hace la RTI del
Teclado. 20) El mensaje SYS_NEWMAP se lo puede enviar el Gestor de Ficheros a la
Tarea de Sistema únicamente cuando éste atiende las llamadas al
sistema "fork", "execve" o "brk". Expl: Es el GM. 21) Cuando la Tarea del sistema recibe el mensaje SYS_NEWMAP extrae de
éste el nuevo mapa de memoria y actualiza el campo mp_seg en la
tabla de procesos del Kernel.
Expl: El nuevo mapa no se extrae del mensaje, sino de la
entrada de la tabla de procesos del GM. 22) Cuando la llamada al sistema "execve" tiene éxito, el Gestor de
Ficheros no responde al proceso de usuario, por lo que éste se
queda bloqueado; para salir de dicho bloqueo la Tarea del sistema
le envía un mensaje de respuesta durante el tratamiento del mensaje
SYS_EXEC, además de modificar el contador de programa, la pila y
realizar otras acciones. Expl: La TS no envía una respuesta para el
desbloqueo, simplemente actúa sobre el CP, pila, etc, quita al
proceso del estado "receiving", y pone al proceso al final de la
cola de preparados.
23) En la llamada al sistema "times" un proceso de usuario envía un
mensaje al Gestor de Ficheros, el cual al carecer de la información
solicitada, envía a su vez un mensaje SYS_TIMES a la Tarea del
sistema, la cual le responde con dicha información y por último
éste (GF) responde al proceso de usuario. 24) El Gestor de Memoria únicamente asigna memoria con las llamadas
"fork" y "execve" y únicamente libera memoria con las llamadas
"exit" y "execve". Expl: kill también puede liberar memoria. 25) Con la llamada al sistema "brk" se modifica el tamaño del segmento
de datos, con lo que se modifica el mapa de memoria del proceso y
la cantidad total de memoria asignada al mismo.
Exp.: La cantidad total de memoria asignada al proceso no cambia. 26) Cuando hay que añadir un nuevo hueco a la lista de huecos de la
memoria del Sistema, el Gestor de Memoria recorre el vector "hole"
(de 128 elementos) desde el principio hasta el final, buscando un
elemento libre para utilizarlo como "slot" y así poder enlazar el
nuevo hueco a la lista.
Exp.: No tiene que efectuar ningún recorrido porque para ello
dispone un puntero al primer elemento (slot) libre.
27) En la llamada "execve" el Gestor de Memoria llega a necesitar al
menos hasta tres veces el servicio SYS_COPY de la Tarea de Sistema
para acceder/manipular la pila del proceso de usuario.
Exp.: ver la transparencia donde se detalla y comenta el código, no
sólo la que muestra un resumen de mensajes. 28) Relacionado con l