Universidad de Las Palmas de Gran Canaria Escuela Universitaria de Informática Sistemas Operativos Examen final, segunda parte, 2 de julio de 1993 Apellidos Nombre Grupo 1 Responda a las siguientes cuestiones sobre sincronización y comunicación entre procesos: a) ¿Qué desventajas ofrece un sistema de paso de mensajes con canales de capacidad no nula respecto a otro sistema con canales que emplee sólo canales de capacidad nula? b) Ésta es la solución de Peterson al problema de la sección crítica para dos procesos: /* código de entrada */ flag[yo] := cierto; turno := otro; mientras flag[yo]=cierto y turno=otro haz SKIP; ... sección crítica ... /* código de salida */ flag[yo] := falso; La variable flag es un vector de dos booleanos, inicializados a falso. turno es un entero; yo y otro son constantes con valores diferentes y complementarios para cada proceso; en concreto para un proceso yo=0, otro=1, mientras que para el otro proceso yo=1, otro=0. Comente la filosofía y funcionamiento de esta solución, haciendo énfasis en la verificación de la exclusión mutua y la posible existencia de inanición. ¿Qué dificultades entrañaría extender esta solución a un mayor número de procesos? c) Implemente las operaciones sobre un semáforo entero haciendo uso de regiones críticas condicionales como herramienta de sincronización. d) ¿En qué se parece y en qué se diferencia un monitor de un tipo abstracto de datos? ¿Cuál es la ventaja de los monitores sobre las regiones críticas condicionales? 2 Desarrolle algoritmicamente un programa que compare físicamente dos disquetes. Para ello asuma que los disquetes para comparar se encuentran en dos unidades distintas. - Función ROM-BIOS de lectura de sectores desde disquete: AH 2 DL Número de unidad DH Cara CH Número de pista CL Número de sector AL Número de sectores que leer. ES:BX Dirección del búfer de transferencia. Esta función retorna en CF 0 si no ha habido error, y 1 si ha ocurrido alguno. 3 Conteste las siguientes cuestiones sobre UNIX: a) Suponga que dispone de dos programas fuentes que hacen uso del mismo archivo. ¿Qué se debe hacer para que compartan el puntero de fichero de ese archivo? b) ¿Qué es un proceso zombie? ¿Consume recursos del sistema? c) ¿Toda llamada open realizada dará lugar a un nuevo incore i-node? d) ¿De qué forma se gestiona el área de swap? e) ¿De qué manera podría un proceso enviar un mensaje a cualquier terminal del sistema? NOTA: todas las preguntas valen 3'333... puntos sobre 10 Justifique adecuadamente sus respuestas. Dispone de dos horas para completar esta prueba. Administre su tiempo.