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) ...

un extrait du 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:

Un proceso creado por otro mediante “fork”, no hereda la posible alarma que pudiera tener establecida el proceso creador.

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.

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)

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.

Un proceso creado por otro mediante “fork”, sí hereda la posible alarma que pudiera tener establecida el proceso creador.

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.

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

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”.

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..

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.



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.

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 ….

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.

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.

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

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.

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.

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.

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.

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.

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.

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.




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.

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.

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.

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.

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.

Relacionado con las señales existen tres campos en la tabla de procesos: mp_ignore, mp_catch y mp_func. Este último sirve para poder llegar a ejecutar las funciones de tratamiento que se pueden asociar a la recepción de una señal, sin embargo no es una tabla de punteros a función, sino simplemente un puntero a función.

En la llamada “kill” se puede producir la siguiente secuencia de mensajes:
proc_usrX ’! GM ’! proc_usrY GM ’! GF ’! GM ’! TS ’! GM
donde la flecha ’! significa que se envía un mensaje.

Relacionado con la caché de bloques del Gestor de Ficheros, cuando un bloque acaba de ser accedido, se inserta al final de la lista LRU (menos recie+HI¤·¾ÂÃÍãõ ( + , - . 1 8 f g h ðéâéÞéØÑõªÃµÃµœµŠzhd]d]WQ
háHCJ
hT ^CJ hT ^hT ^hT ^"jh–
½CJUmHnHsH
uhB3Ÿh[VCJmHnHsH
u"jháHCJUmHnHsH
uhT ^h¾xRmHnHsH
uh+mHnHsH
uhT ^hLmHnHsH
uhT ^h[VmHnHsH
u hT ^hL
h[VCJh–
½ hT ^hçÀ hT ^h[Vjhd†UmHnHsH
uHI( , f h ã å •
—
‚ Ù Ú ”
ê
ë
./÷òêêââ×ËÃË÷¯×··§§$a$gd >$a$gd¯oR $„-^„-a$gdÊ*$
& Fa$ $„Å^„Åa$gdB3Ÿ $
& Fa$gd¯oR$a$gdáH$a$gdL$a$$a$gd–
½YT¼T/Uýýýh i j k “ ” ã ä å ç è ò 




1
4
;
H
K
”
•
–
—
™
š
¬
²
¿
À
Á
Â
ü
   € ‚ Ø Ù îèâÜÖÜîоèи²¸Ð¸Ð²Ð²¬²ÐîКè֔֔֔֎֎֎ˆ|ph%4h[V6CJaJh%4hÊ*6CJaJ
hÊ*CJ
h>^!CJ
h+CJ"jhßm–CJUmHnHsH
u
h‡ÔCJ
hàQCJ
hqSÝCJ"jhB3ŸCJUmHnHsH
u
hB3ŸCJ
hI?&CJ
ha%ŸCJ
h4{ŸCJ
hT ^CJ"jh¶CJUmHnHsH
u*Ù Ú Û Ý ç è ï ð 
   e l Ž – ™ ¤ · ù ú T
U
”
™
é
ê
ë
ø
-./02_`¢«¬­úèÖÐÊÐÊÐÄÐÄÐÄÐÄÐÄÐÊоиЬ ¬–’‹„~èl~Ê~f~è
hf?¨CJ"jhT ^CJUmHnHsH
u
hT ^CJ hT ^h > hT ^hT ^hT ^hÊ*hT ^6CJh%4h%46CJaJh%4hÊ*6CJaJ
hÓ6ºCJ
hÊ/CJ
h
I&CJ
h+CJ
h >CJ"jhßm–CJUmHnHsH
u"jh¶CJUmHnHsH
u
h¯oRCJ(/¬®_`‚öø®°§"#õPQRV7ôìôìôàìÕÍÕàźಪªÕ$a$gdàqÉ$a$gd cö $
& Fa$gd cö$a$gdf $a$gdªtJ $
& Fa$gd¯oR $„-^„-a$gd%4$a$gdT ^ $
& Fa$gdT ^­®°ïðB^`acorÓÔ€‚åæö÷øú‘­®¯°²Ö×ÚÛŠ¦§ª«¬!"#$&1BúèúâúÜúʸú²ú²ú²ú¦¦Êú藲—ܑʗ苲‹…‹Ü—¦¦¦‹Êèy
há3åCJ
hàqÉCJ
h$CJ
hf CJ
hÓM@CJ
hªtJCJh%46CJaJh%4h%46CJaJ
h+CJ"jhT ^CJUmHnHsH
u"jh¶CJUmHnHsH
u
hf?¨CJ
hÓ6ºCJ"jhâK9CJUmHnHsH
u
hT ^CJ/BKLZ[€“”ÚÞäåéíôõú34OPQRSTUVXàçðñü67q|„”›®úôúôúîúîúôúôúôèúÜÓÊÓÜľ¬¤œúŠô„ô„ôîô~rÊrÊrÊrhâ2íhâ2í6CJaJ
hâ2íCJ
hCbVCJ"jhâK9CJUmHnHsH
ujhÐe;Ujhâ2íU"jhâ2íCJUmHnHsH
u
hÐe;CJ
h cöCJhâ2í6CJaJh%46CJaJh%4h%46CJaJ
hf?¨CJ
h+CJ
há3åCJ
hàqÉCJ+®¯°±²´½Ãqrtz‡ˆ¦¬ÅÆÇÉÊ°±ùqrstv—óçáϽ·±·±·±·«Ÿ‘Ÿ‹Ïysm±mgsŸ^ŸÏmyX
hÄ^CJhâ2í6CJaJ
hP( CJ
hgÊCJ
hÙ8CJ"jhâK9CJUmHnHsH
u
há3åCJhâ2íhâ2í6>*CJaJhâ2íhâ2í6CJaJ
hâ2íCJ
h+CJ
hCbVCJ"jhÐe;CJUmHnHsH
u"jh¶CJUmHnHsH
u
hf?¨CJhâ2íhf 6CJaJhâ2íhP( 6CJaJ 7°±ÆÊrt
 ³¹ÒÔæ;?df óëàØàóÐàÈàÈàÀà´¬à¤à$a$gd÷fÜ$a$gd¿t¨ $„-^„-a$gdZ~O$a$gddÎ$a$gd{ß$a$gdgÊ$a$gdÙ8 $
& Fa$gd¯oR$a$gdá3å $„-^„-a$gdâ2í—˜KLþ 
  %)2^gjsx–—˜²³´¸Ë×á÷QSabcostuw•žúôúôîôèÖúÄú¾ú¾ú¸ú¾ú¾²¦‘ÖÄú‹¾‹ú…‹…ú…ú…ú…ú…ú…úy
hZ~OCJ
hP( CJ
hdÎCJ
h
L×CJhâ2íh{ß6CJaJhâ2í6CJaJhâ2íhâ2í6CJaJ
hâ2íCJ
h¸o´CJ
híCJ"jhâK9CJUmHnHsH
u"jh¶CJUmHnHsH
u
hgÊCJ
h+CJ
hÄ^CJ
h{ßCJ/ž£ÑÒÓÔó$%*QRÉåæë:;?\cvã56>Fcdefjƒ„ºæò 
óêÞÌÆÀºÀºÀºÀº´º®Æóêó̜º–Š–Š®„óêóºÌœ´~~x~x
hÆCJ
h)üCJ
hZ~OCJ
h$CJ
h÷fÜCJ
h3|CJ"jhâK9CJUmHnHsH
u
hP( CJ
híCJ
h¿t¨CJ
h
L×CJ
hdÎCJ"jh¶CJUmHnHsH
uhZ~Oh{ß6CJaJhZ~O6CJaJhZ~OhZ~O6CJaJ/klš›§¨¶    / E [ f r z | } … † ˆ ‰ Š ‹ ˜ ™ Ÿ ¡ ¢ ª « ¬ ¯ ° º » ¼ ½ ¾ À Ò Ó Ô Õ D!`!a!úôúôîèÜÓôÁú»µ»µ»µ»¯»¯»¯»¯»¯»©»©îèÜÓÜӝÁ—…µ¯µ¯µîÜ"jhâK9CJUmHnHsH
u
h\1áCJhZ~Oh)ü6CJaJ
hÓ6ºCJ
hÆCJ
hW(åCJ
h¸o´CJ"jh¶CJUmHnHsH
uhZ~O6CJaJhZ~OhZ~O6CJaJ
hZ~OCJ
hP( CJ
h÷fÜCJ
h)üCJ0  ¼ ¾ b!Ë!Í!ï#ð#ñ#õ#ù#(%,%é%ë%¢&ä&å&(y(÷ìäìØÐìÈÈÈÈìÀì¸ì¬¸ì¬ $„-^„-a$gdZjd$a$gd X%$a$gd±+ž$a$gdÓ6º$a$gdW(å $„Å^„Åa$gdZ~O$a$gd\1á $
& Fa$gd¯oR$a$gd)üa!b!j!o!Ê!Ë!Ì!Í!Ï!â!ã!ä!å!""9":"†"‡"ˆ"‰"##!#"#$#,#-#.#1#2#3#î#ï#ð#ñ#ò#÷îâîÜÊIJ¬¦¬¦¬¦¬¦¬¦¬¦¬ ¬ ¬ š”ˆˆĬyg"jhd†CJUmHnHsH
u
h cöCJhZjd6CJaJhZjdhZjd6CJaJ
hZjdCJ
hP( CJ
h’9FCJ
hÆCJ
hÓ6ºCJ"jhâK9CJUmHnHsH
u
hW(åCJ"jh¶CJUmHnHsH
u
h\1áCJhZ~OhZ~O6CJaJhZ~O6CJaJhZ~OhZ~OCJ$ò#ô#õ#ö#ø#ù#ü#$ $$$V$W$}$ˆ$‰$$˜$š$º$»$¼$¾$À$Å$&%'%(%)%+%,%¼%½%¾%Á%Â%Ã%È%Ð%×%Þ%ß%è%é%ê%ë%í%ý%&îèÖîèÐÊÄÊÐÊÐÊÐÊÐÊÐÊÄʼÄÊÐʶÖîèаªž•žŒ•Œ•Œ•€ÖzîzÄ
h X%CJhZjdh±+ž6CJaJhè6CJaJhZjd6CJaJhZjdhZjd6CJaJ
hZjdCJ
hP( CJ
hÓ6ºCJjh cöU
hÆCJ
h’9FCJ
h±+žCJ"jhlväCJUmHnHsH
u
h cöCJ"jh cöCJUmHnHsH
u0&8&9&K&L&M&N&ƒ&¡&¢&¨&ã&ä&å&æ&è&$'%'&'(';'