Download fork() - dia/UPM

Document related concepts

System V wikipedia , lookup

Llamada de interrupción del BIOS wikipedia , lookup

Tomsrtbt wikipedia , lookup

Mount Rainier (informática) wikipedia , lookup

Desfragmentación wikipedia , lookup

Transcript
Sistemas Operativos II
SOLUCIÓN
FEBRERO 2001
SOLUCIÓN PROBLEMA 2 (4 puntos; tiempo estimado: 1h. 10 min.)
Apellidos:
Nombre:
DNI:
Número de matrícula:
Cronograma de exit y wait (2.4 puntos)
8
11
1
2
9
3
7
10
12
13
4
6
5
16
14
15
Sistemas Operativos II
SOLUCIÓN
Apellidos:
Nombre:
FEBRERO 2001
DNI:
Número de matrícula:
Acciones de las llamadas exit y wait
1: El proceso de usuario hijo invoca la rutina de biblioteca exit(). Esta rutina construye un
mensaje especificando en el campo type que es exit e incluye el parámetro que indica el
estado de terminación (valor 0).
2: La rutina exit hace sendrec(MM,&m).
3: El MM recoge el mensaje e invoca a la rutina que soporta el exit. Esta rutina almacena el
estado de terminación del proceso hijo en la tabla de procesos del MM y comprueba que
el padre NO está bloqueado en una llamada al sistema wait. El MM anota en su tabla de
procesos que el proceso de usuario hijo pasa a estado zombie. El MM comprueba en su
tabla de procesos que el proceso de usuario hijo no tiene activa ninguna alarma.
4: El MM hace sendrec(TS,&m) para informa al núcleo de que el proceso de usuario hijo ya
no es ejecutable.
5: La tarea del sistema recibe el mensaje, lo decodifica y marca como libre la entrada de la
tabla de procesos del kernel asignada al proceso de usuario hijo.
6: La tarea del sistema hace send(MM,&m) para responder al MM.
7: El MM toma de nuevo el control. El MM se bloquea en un receive(ANY,&m).
8: El proceso de usuario padre invoca la rutina de biblioteca wait(). Esta rutina construye un
mensaje especificando en el campo type que es wait.
9: La rutina wait hace sendrec(MM,&m).
10: El MM recoge el mensaje e invoca a la rutina que soporta el wait. Esta rutina recorre la
tabla de procesos del MM buscando algún hijo del proceso de usuario que ejecutó el wait
que se encuentre en estado zombie. En este caso lo encuentra y crea un mensaje en el que
incluye el pid del hijo zombie y el estado de terminación de éste (en este caso el valor 0).
11: El MM hace send(padre,&m). El proceso de usuario padre pasa a preparado para
ejecutarse.
12: El MM crea un mensaje para indicarle al FS que libere la entrada del hijo en su tabla de
procesos.
13: El MM hace sendrec(FS,&m).
14: El FS marca como libre la entrada de su tabla de procesos asignada al proceso hijo.
15: El FS hace send(MM,&m) para responder al MM.
16: El MM libera la memoria ocupada por el proceso hijo y marca como libre la entrada de su
tabla de procesos asignada al proceso hijo. El MM comprueba si el proceso de usuario
hijo tenía algún hijo (no es el caso). El MM se bloquea en un receive(ANY,&m).
Sistemas Operativos II
SOLUCIÓN
Apellidos:
Nombre:
FEBRERO 2001
DNI:
Número de matrícula:
Lectura de pistas completas por software
2.2.1 Qué proceso o procesos del sistema operativo MINIX hay que modificar. (0.3 puntos)
Únicamente la tarea de floppy.
2.2.2 Qué modificaciones hay que realizar. (0.3 puntos)
Hay que incluir una nueva variable en la tarea de floppy (cache de una pista) con capacidad
para almacenar todos los sectores de una pista de floppy.
Cuando la tarea de floppy reciba una petición de lectura deberá comprobar si el sector
solicitado se encuentra en la cache de una pista. Si no es así, la tarea de floppy deberá
programar al controlador de disco para que éste transfiera a la cache de una pista (por DMA)
todos los sectores de la pista que contiene el sector solicitado. Cuando la tarea de floppy
dispone del sector solicitado en su cache de una pista, ésta lo copia a espacio de la cache de
bloques del gestor de ficheros (la copia se realiza por SW). Si el sector solicitado se encuentra
en la cache de una pista, la tarea de floppy simplemente lo copia desde la cache de una pista a
espacio de la cache de bloques del gestor de ficheros (la copia se realiza por SW).
Por último, se debería implementar alguna política relacionada con las operaciones de
escritura. Si a la tarea de floppy le llega una petición de escritura de un sector y éste se
encuentra en la cache de una pista, deberá decidirse si el sector se modifica sólo en disco
(anulando la información de la cache de una pista) o se modifica tanto en disco como en la
cache de una pista (permaneciendo como válida la información que ésta contiene).
2.2.3 Qué aspectos relacionados con la implementación de la llamada al sistema read (sobre
un fichero ubicado en floppy) varían respecto a la versión en la que no se incorpora la
lectura de pistas completas. (0.3 puntos)
Sólo varía lo relacionado con la tarea de floppy (tal y como se ha indicado en el apartado
anterior), ya que la lectura de pistas completas es transparente al resto del sistema operativo.
El aspecto más relevante que varía en la llamada read es el hecho de que la copia de la
información solicitada a espacio de la cache de bloques del gestor de ficheros se realiza por
SW (lo realiza la tarea de floppy) en vez de por HW (que es como se hace en la versión en la
que no se incorpora esta mejora).
2.2.4 Qué aspectos relacionados con la implementación de la llamada al sistema write (sobre
un fichero ubicado en floppy) varían respecto a la versión en la que no se incorpora la
lectura de pistas completas. (0.3 puntos)
De nuevo, sólo varía lo relacionado con la tarea de floppy. Si ésta implementa la política de
escritura tanto en disco como en la cache de una pista (si el sector a escribir está en la cache),
cabe destacar que la tarea de floppy deberá copiar (por SW) el bloque a escribir desde la
cache de bloques del gestor de ficheros a la cache de una pista y, posteriormente, ordenar que
se escriba (por DMA) a disco. Si la política implementada es la de anulación de la
información de la cache de una pista, la copia del bloque a escribir en disco se mantiene igual
que en la versión en la que no se incorpora esta mejora.
Sistemas Operativos II
SOLUCIÓN
Apellidos:
Nombre:
FEBRERO 2001
DNI:
Número de matrícula:
Lectura de pistas completas por hardware
2.2.5 Qué proceso o procesos del sistema operativo MINIX hay que modificar. (0.1 puntos)
Ninguno, ya que la mejora de lectura de pistas completas implementada por HW (en el
controlador de floppy) es transparente al sistema operativo.
2.2.6 Qué modificaciones hay que realizar. (0.1 puntos)
Ninguna, ya que no afecta a ningún proceso del sistema operativo.
2.2.7 Qué aspectos relacionados con la implementación de la llamada al sistema read (sobre
un fichero ubicado en floppy) varían respecto a la versión en la que no se incorpora la
lectura de pistas completas. (0.1 puntos)
Ninguno que afecte al sistema operativo.
2.2.8 Qué aspectos relacionados con la implementación de la llamada al sistema write (sobre
un fichero ubicado en floppy) varían respecto a la versión en la que no se incorpora la
lectura de pistas completas. (0.1 puntos)
Ninguno que afecte al sistema operativo.