Universidad de Las Palmas de Gran Canaria Escuela Universitaria de Informática Sistemas Operativos Convocatoria extraordinaria de diciembre 30 de noviembre de 1993 Apellidos Nombre Grupo 1 (1 punto) Responda brevemente a las siguientes cuestiones: a) ¿Qué significa y que implica la afirmación de que 'un sistema operativo no realiza trabajo productivo'? b) ¿Para qué sistema operativo considera usted que es más difícil construir un virus informático dañino, para el MS-DOS o para el Unix? c) ¿Qué sentido tiene un sistema informático uniusuario y multitarea? d) ¿Qué sentido tiene un sistema informático multiusuario y unitarea? 2 (1 punto) Discuta la veracidad o falsedad de las siguientes afirmaciones: Un sistema operativo, cuanto más complejo es, a) tiende a incrementar las prestaciones globales b) tiende a disminuir las prestaciones globales c) es más amigable d) más libera al usuario-programador de escribir código El tamaño de página suele ser una potencia de 2 porque e) se acelera el tiempo de traducción dinámica de direcciones f) se aprovecha más el espacio de direccionamiento g) disminuye la fragmentación interna h) el formato de las instrucciones de la máquina así lo exige El acceso directo a un fichero, si se emplea asignación enlazada de espacio, i) es imposible j) es implementable si el fichero tiene un tamaño múltiplo de la longitud del bloque físico k) posible, pero el tiempo de acceso es proporcional al tamaño total del fichero l) posible, pero el tiempo de acceso es superior que con la asignación indexada 3 (1 punto) ¿Qué relación existe entre la administración de la memoria y la integridad o seguridad del sistema operativo? ¿Cree usted que la paginación permite aumentar el grado de multiprogramación en mayor medida que el intercambio (swapping) de procesos? ¿Qué son las listas de control de acceso en sistemas de ficheros? En el marco de la asignación de espacio enlazada, ¿qué beneficio reporta el almacenar todos los encadenamientos en un área del disco aparte? 4 (0'85 puntos) Conteste razonadamente las siguientes cuestiones sobre gestión de CPU: a) Se sabe que un proceso está generando una gran cantidad de fallos de páginas. Exponga las ventajas e inconvenientes de otorgar a dicho proceso una prioridad alta de CPU. b) Si el tiempo promedio de intercambio de contexto es s, y el tiempo promedio que usa un proceso limitado por E/S antes de generar una petición de E/S es t (t>>s). Explicar que efectos sobre el rendimiento del sistema tendría si el cuanto de tiempo q es: a) q=infinito b) q es ligeramente mayor que cero c) q = s d) s < q < t e) q = t f) q > t 5 (0'85 puntos) El algoritmo del banquero expuesto en clase presenta algunos incon- venientes que impiden su uso en sistemas reales. Enumere al menos tres de estos inconvenientes. 6 (0'95 puntos) ¿Qué tipo de información contiene un semáforo, si es que contiene alguna? En un sistema que careciera de herramientas de sincronización, y suponiendo que los programadores fueran absolutamente infalibles y bienintencionados, ¿se podría solucionar satisfactoriamente el problema de la exclusión mutua? ¿Por qué la instrucción join ha de ser indivisible? 7 (1 punto) Implemente un canal de capacidad cero mediante un monitor, que deberá disponer de estos dos procedimientos públicos: procedure entry send (var M:mensaje); procedure entry receive (var M:mensaje); El tipo mensaje se supone ya creado, no tienen que definirlo. 8 (1'5 puntos) Desarrolle el algoritmo, para entorno MS-DOS, de una utilidad que informe del número de bytes disponibles en un disquete. Para acceder al disquete sólo podrá utilizar funciones BIOS, debiendo describir las estructuras de control del MS-DOS utilizadas. * Función BIOS de lectura desde disquete: AH 2 DH Número de unidad DL Número de 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 * Llamada a los servicios BIOS para disco: Int BIOS_DISC 9 (1 punto) Desarrolle una función en C, para entorno UNIX, que cree N procesos hijos y no retorne hasta que todos hayan finalizado. La función debe tener el prototipo int crea_hijos( int num_hijos ); donde num_hijos es el número de procesos hijos que se crearán. No es necesario tratar los posibles errores. 10 (0'85 puntos) Conteste justificadamente las siguientes cuestiones sobre UNIX: a) ¿Cómo se logra el tratamiento uniforme de ficheros y dispositivos? b) ¿Por qué dos procesos que abren el mismo fichero no comparten el puntero de acceso a ese fichero? ¿Qué cambio haría usted para permitirlo? c) ¿Qué es un proceso zombie? d) ¿Cómo se atienden las llamadas al sistema? Justifique razonada y razonablemente todas sus respuestas. Administre bien su tiempo; extenderse en exceso puede no serle de gran provecho. Dispone de 4 horas para conluir el examen. ¡Ánimo, suerte y valor!