Download fork() - dia/UPM
Document related concepts
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.