AMPLIACIÓN DE SISTEMAS OPERATIVOS (Código: 71023016) Material permitido: Solo calculadora no programable Tiempo: 2 horas N2 Febrero 2016 Aviso 1: Todas las respuestas deben estar debidamente razonadas. Aviso 2: Escriba con buena letra y evite los tachones. Aviso 3: Solución del examen y fecha de revisión en http://www.uned.es/71023016/ ESTE EXAMEN CONSTA DE 5 PREGUNTAS Preguntas 1 a 4 1. Conteste razonadamente a las siguientes preguntas: a) (1 p) ¿Qué son los objetos del núcleo de Windows? ¿Cómo se implementan? ¿Quién se encarga de gestionarlos? b) (1 p) Explicar cómo se localizan los clusters de datos de un archivo en un sistema FAT. 2. Definir y comentar las características de los siguientes elementos asociados a la implementación de procesos multihilos en SOBUNIX: a) (0.6 p) Hilos del núcleo. b) (0.6 p) Hilos de usuario. c) (0.8 p) Procesos ligeros. 3. (2 p) ¿Qué estructuras mantiene el núcleo de un SOBUNIX para soportar los mecanismos IPC del System V? ¿Qué información contiene dichas estructuras por cada recurso IPC? 4. Explique razonadamente el significado de las siguientes órdenes en un SOBUNIX: a) (1 p) kill -SIGUSR2 1256 b) (1 p) ps -Al AMPLIACIÓN DE SISTEMAS OPERATIVOS (Código: 71023016) Material permitido: Solo calculadora no programable Tiempo: 2 horas N2 Febrero 2016 Aviso 1: Todas las respuestas deben estar debidamente razonadas. Aviso 2: Escriba con buena letra y evite los tachones. Aviso 3: Solución del examen y fecha de revisión en http://www.uned.es/71023016/ ESTE EXAMEN CONSTA DE 5 PREGUNTAS Pregunta 5 5. (2 p) La máscara de modo simbólica del archivo ejecutable f16 que resulta de compilar el programa que se muestra en la Figura 1 es -rwxrw-rwx y dicho archivo pertenece a Ana (UID=600, GID=705). Explique razonadamente el funcionamiento del programa en los siguientes casos: a) (1 p) El programa lo ejecuta Ana. b) (1 p) El programa lo ejecuta Maria (UID=620, GID=715). Nota importante: Al explicar el funcionamiento del programa no olvide escribir también el resultado que presenta en pantalla la ejecución de la instrucción printf. main() { int x[3]; x[0]=getuid(); x[1]=geteuid(); x[2]=setuid(x[1]); printf("\n[ %d, %d, %d]\n",x[0],x[1],x[2]); } Figura 1 – Código C del programa f16 UNED - Ampliación de Sistemas Operativos (Cód. 71023016) Solución Examen Febrero 2016 AMPLIACIÓN DE SISTEMAS OPERATIVOS (Cód. 71023016) Solución Examen Febrero 2016 Solución Ejercicio 1 a) Un objeto del núcleo es una estructura de datos mantenida en el espacio de direcciones del núcleo de Windows NT asociada a una determinada abstracción y gestionada por el administrador de objetos del ejecutivo. La abstracción a la que está asociado un objeto define el tipo del objeto. Por ejemplo, el núcleo asocia a un archivo abierto un objeto archivo, a un proceso un objeto proceso, a un hilo un objeto hilo, a un semáforo un objeto semáforo, a una clave del registro un objeto clave, a un driver instalado un objeto driver, etc. Cada objeto tiene asignado un nombre codificado en Unicode, el ejecutivo mantiene un espacio de nombres en memoria con una organización similar a una estructura de directorios de gráfica acíclica. Windows utiliza el nombre de un objeto para localizar el objeto. Un objeto implementado en Windows consta de dos partes: la cabecera y los datos específicos del objeto. La cabecera contiene la información necesaria para gestionar el objeto, como por ejemplo: su nombre y directorio en el espacio de nombres, su descriptor de seguridad y un puntero a la estructura que implementa el tipo de objeto. Esta información es común a todos los objetos e independiente de su tipo. Cada tipo de objeto definido se implementa mediante una estructura que contiene información dependiente del tipo de objeto, como por ejemplo: derechos de acceso, recursos de memoria que puede consumir y punteros a las funciones que se pueden invocar para operar (abrir, cerrar, borrar, etc) sobre este tipo de objeto. El administrador de objetos es el componente del ejecutivo encargado de gestionar (crear, configurar, borrar, etc) todos los objetos del núcleo. Además proporciona una interfaz a los restantes componentes del ejecutivo para crear y operar con los objetos. b) En un sistema FAT la entrada asociada a un archivo en un directorio contiene, entre otros datos, la dirección del primer cluster de datos del archivo. Para obtener la dirección del segundo cluster de datos del archivo hay que acceder a la entrada de la tabla de asignación de archivos asociada al primer cluster, la cual contiene la dirección del segundo cluster. Los restantes clusters del archivo se localizan de forma semejante ya que la entrada de la tabla de asignación de archivos asociada a un determinado cluster i de datos de un archivo contiene la dirección de siguiente cluster i + 1. En el caso de que el cluster i sea el último del archivo entonces su entrada de la tabla de asignación de archivos contiene el valor -1 (FFF en hexadecimal). 1 UNED - Ampliación de Sistemas Operativos (Cód. 71023016) Solución Examen Febrero 2016 Solución Ejercicio 2 • Hilos del núcleo (kernel threads). Son hilos asociados al código del núcleo del sistema operativo que son creados y gestionados por el propio núcleo para la realización de funciones especificas, como por ejemplo: dar soporte a procesos, atender operaciones de E/S, tratamiento de interrupciones, etc. Los hilos del núcleo no necesitan estar asociados a ningún proceso. • Hilos de usuario (user threads). Son parte del código de un determinado proceso de usuario. El programador al diseñar un programa es el encargado de establecer el número de hilos de usuario en que se va descomponer el código del programa. Si el código de un programa consta de un único hilo de usuario entonces al proceso asociado se le denomina proceso monohilo. Mientras que si se descompone en varios hilos de usuario se denomina proceso multihilo. Para la gestión de los hilos de usuario el programador utiliza una librería de hilos, como por ejemplo la librería Pthreads de POSIX. Una librería de hilos contiene funciones para la creación, destrucción, planificación y sincronización de los hilos de usuario, entre otras operaciones. • Procesos ligeros (lightweight processes). También denominados procesadores virtuales. Son hilos de usuario cuya gestión es realizada por el núcleo del sistema operativo. Un proceso ligero puede estar asociado a uno o varios hilos de usuario. Es la librería de hilos la que se encarga de multiplexar los hilos de usuario de un determinado proceso en un número menor o igual de procesos ligeros. Los procesos ligeros solo se pueden utilizar en aquellos sistemas operativos cuyo núcleo soporte hilos del núcleo, ya que cada proceso ligero tiene que tener asociado un hilo del núcleo para poder ser planificado y ejecutado. 2 UNED - Ampliación de Sistemas Operativos (Cód. 71023016) Solución Examen Febrero 2016 Solución Ejercicio 3 Los tres mecanismos IPC del System V: semáforos, colas de mensajes y memoria compartida, aunque son mecanismos distintos son soportados por el núcleo de forma muy similar. El núcleo mantiene una tabla por cada tipo de mecanismo IPC. Una entrada en una de estas tablas se implementa mediante una estructura de datos que contiene información de administración y control sobre un determinado recurso IPC, es decir, sobre una instancia de un determinado mecanismo IPC. Entre la información contenida en una entrada se encuentra la siguiente: • Creador del recurso IPC. El UID y el GID del proceso que solicita la creación el recurso. • Propietario del recurso IPC. El UID y el GID del proceso que actualmente es el propietario del recurso. Inicialmente, el creador es el propietario del recurso, aunque el mismo o el superusuario pueden transferir la propiedad del recurso a otro proceso. • Permisos del recurso IPC. Mascara de bits, similar a la máscara de modo de un archivo, que permite establecer los permisos de acceso (lectura y/o escritura) al recurso para el propietario del recurso, el grupo propietario y el resto de usuarios. • Llave o clave del recurso IPC. Número entero facilitado al núcleo por el proceso que solicita la creación o el acceso al recurso IPC. Solo los procesos que conozcan dicha llave podrán acceder al recurso. Luego se puede considerar como una especie de contraseña de acceso. La llamada al sistema ftok permite crear una llave de acceso. • Información propia de cada tipo de recurso IPC. Como por ejemplo punteros que permiten localizar a los diferentes componentes de un determinado recurso IPC. El número máximo de entradas que puede tener la tabla asociada a un determinado tipo de mecanismo IPC, o lo que es lo mismo el número de recursos IPC de un determinado tipo, es un parámetro que puede ser configurado por el superusuario. Por otra parte, el núcleo asigna a cada recurso IPC creado un determinado identificador numérico entero que lo identifica de manera unívoca. El núcleo usa este identificador para localizar la entrada asociada al recurso en la tabla correspondiente. La asignación del identificador se realiza en el momento de la creación o asignación del recurso. El núcleo devuelve este identificador al proceso para que lo utilice como argumento de entrada en las posteriores llamadas al sistema que vaya a realizar para operar sobre el recurso, y así agilizar su localización. Solución Ejercicio 4 a) Este comando envía la señal SIGUSR2 al proceso con PID=1256. b) Este comando muestra un listado con información sobre los procesos existentes en el sistema, la opción -A hace que se muestren todos los procesos existentes en el sistema, mientras que la opción -l hace que se muestre un listado con más información, es decir, un mayor número de columnas. 3 UNED - Ampliación de Sistemas Operativos (Cód. 71023016) Solución Examen Febrero 2016 Solución Ejercicio 5 El enunciado del problema afirma que f16 pertenece a la usuaria Ana (UID=600, GID=705). Asimismo su máscara de modo simbólica es -rwxrw-rwx, cuyo significado es el siguiente: • El propietario del archivo (Ana) puede leer, escribir y ejecutar el archivo. Además este archivo tiene su bit S_ISUID desactivado. • Los usuarios del grupo propietario del archivo, por defecto GID=705, pueden leer y escribir el archivo, pero no pueden ejecutarlo. Además este archivo tiene su bit S_ISGID desactivado. • El resto de usuarios pueden leer, escribir o ejecutar el archivo. Además este archivo tiene su bit S_ISVTX desactivado. Una vez explicado el significado de la máscara de modo simbólica es posible contestar a lo que pide en el enunciado: a) De acuerdo con la máscara de modo simbólica la propietaria del archivo (Ana) tiene permiso de ejecución sobre su archivo f16. Al proceso A que se crea en el sistema asociado a la ejecución de f16 se le asigna UID=600 y EUID=600. Al ejecutar el proceso A en primer lugar se invoca a la llamada al sistema getuid para asignar el valor del UID del proceso a la variable x[0], en este caso x[0]=600. Luego se invoca a la llamada al sistema geteuid para asignar el valor del EUID del proceso a la variable x[1], en este caso x[1]=600. A continuación se invoca a la llamada al sistema setuid para asignar al UID y al EUID del proceso el valor de x[1]. Como el EUID del proceso A no es el del superusuario y el valor de x[1] coincide con el valor del UID del proceso A entonces solamente el EUID del proceso A se configura con el valor de x[1]. En resumen el resultado de esta llamada al sistema es configurar el EUID del proceso A al valor EUID=600, valor que por otra parte ya tenía sin necesidad de haber ejecutado esta llamada al sistema. Cómo setuid se ha ejecutado con éxito entonces se asigna el valor 0 a la variable x[2]. Por último se imprime en pantalla el mensaje [600, 600, 0] y el proceso A finaliza su ejecución. b) La usuaria María no pertenece al grupo de Ana ya que sus GID son distintos. De acuerdo con la máscara de modo simbólica tiene permiso de ejecución sobre f16. Al proceso A que se crea en el sistema asociado a la ejecución de f16 se le asigna UID=620 y EUID=620. El funcionamiento del proceso A es similar al descrito en el caso anterior, con la diferencia de que en este caso el mensaje que aparece en pantalla es [620, 620, 0] 4