Se cuenta con un sistema operativo tradicional multiproceso con

Anuncio
E.U. de Informática
Departamento de Informática Aplicada
Examen final de Sistemas Operativos I
10 de septiembre de 2003
EJERCICIO 2 (puntuación 3´5 puntos) Solución
Tiempo Estimado 60 m
1) Dibuje el cronograma relativo a los procesos P1, P2 y el proceso ocioso para los casos siguientes:
Preparado
Ejecutándose
Bloqueado
a) El proceso P1 es monohilo.
70
Ocioso
30
P2
50
100
40
P1
0
50
100
150
200
250 (ms)
b) El proceso P1 tiene dos hilos: el hilo P1A ejecuta las tres primeras instrucciones (1, 2 y 3) y el hilo
P1B ejecuta la última (4). Se supone que P1A está antes que P1B en la cola de preparados.
70
Ocioso
30
P2
30
P1B
50
100
10
P1A
0
50
100
150
200
250 (ms)
Obsérvese que el sistema operativo bloquea al proceso P1 cuando el thread de usuario P1A
realiza una llamada al sistema bloqueante. Como el thread P1B forma parte del proceso P1 no podrá
ejecutarse hasta que P1A complete esta llamada, cuya consecuencia será que el sistema operativo ponga
en la cola de preparados al proceso P1. La biblioteca del usuario elegirá según la política de planificación
local el thread a ejecutar.
2)
a) Indique todos los campos de las estructuras que introduciría o modificaría para que el
núcleo pueda soportar threads.
Dentro de cada BCP hay que añadir un campo ThreadInicial que referencie una entrada de la
tabla de BCT´s. Este campo indicará cual es el primer thread creado por un proceso. Además,
como la planificación se hace sobre threads, la información relativa a la planificación de procesos
hay que eliminarla.
Por su parte, la tabla de BCT´s contendrá un bloque para cada thread con los siguientes campos:
Nombre
IdThread
Estado
PP
SiguienteThread
Tipo del dato que contiene
Entero
Preparado, Ejecutandose, bloqueado
Dirección de memoria virtual del proceso
Puntero a una entrada del BCT
ProcesoPadre
ThreadHermano
Puntero a un elemento del BCP
Puntero a una entrada del BCT
Utilidad
Identificador del thread
Indica el estado del proceso
Puntero de pila
Para
implementar
colas
(preparados, bloqueados)
Puntero a la entrada del padre
Apunta al sgte. thread del
mismo proceso padre.
Ficheros
abiertos
Puntero a una tabla local de ficheros Control de los ficheros
abiertos por el thead
abiertos localmente.
b) Proponga las especificaciones de las llamadas al sistema que permitan crear y destruir
threads.
identificador CrearThread( direcciónDeComienzoDelProcedimiento)
Esta llamada permite crear un nuevo thread cuyo identificador se devolverá como resultado de la
llamada. Este thread ejecutará el código de la rutina cuya dirección de comienzo se especifica
como parámetro.
DestruirThread()
Permite que el thread que invoca la llamada acabe su ejecución.
No se ha tenido en cuenta que se produzcan errores de ejecución en las llamadas, ni tampoco que
al morir un thread indique las circunstancias en las que muere (por ejemplo, mediante un
parámetro de estado). Normalmente, el estado suele interesar al thread padre del thread que acaba,
por lo que el sistema operativo ofrece una llamada que permita al proceso padre recoger dicho
estado.
c) Repita el cronograma para el proceso P1 multihilo y P2, siendo el orden inicial en la cola de
preparados P1A, P1B y P2.
40
Ocioso
30
P2
30
P1B
50
100
10
P1A
0
50
100
150
200
250 (ms)
3) Explique razonadamente qué ventajas e inconvenientes ve en el uso de los threads:
a) Implementados en el espacio de usuario.
En cuanto a las ventajas, el tiempo empleado para la creación de nuevos threads, para el cambio de
contexto y sincronización es menor que si se utilizasen threads del sistema, ya que en este modelo
se utilizan llamadas a procedimiento en vez de llamadas al sistema.
Por otra parte, la biblioteca de threads permite al usuario establecer una política planificación
específica al margen de la usada por el sistema operativo.
En cuanto a los inconvenientes, el más destacable es que al ser los threads de usuario invisibles al
sistema operativo, puede que éste no haga la planificación más adecuada. Por ejemplo, bloqueando
a un proceso que tenga un thread que haya iniciado una llamada al sistema bloqueante aunque
tenga otros threads listos (cronograma apartado 1.b), o planificando threads ociosos de procesos de
usuario.
b) Implementados dentro del sistema operativo.
Las ventajas que presentan los threads de usuario se vuelven desventajas si se implementan como
threads del sistema operativo y viceversa. Las operaciones sobre threads se realizan ahora
mediante llamadas al sistema, que son mucho más costosas en tiempo que una llamada a
procedimiento. Los cambios de contexto también son más costosos.
Al estar bajo control del sistema operativo la política de planificación es más eficaz y se
aprovechan mejor todos los recursos del sistema, pero ya no se permite que el usuario decida la
política a utilizar.
Descargar