Subido por todamimierda

Examen ASO AMPLIACIÓN DE SISTEMAS OPERATIVOS (71023016) 202009 uned

Anuncio
AMPLIACIÓN DE SISTEMAS OPERATIVOS (71023016)
Material permitido: Ninguno
Tiempo: 90 minutos
N
Septiembre 2020
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/
1. Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas:
I) (1 p) En Windows, todas las regiones del espacio de direcciones virtuales de un
proceso se generan a partir del mapeado en memoria de un archivo.
II) (1 p) El núcleo de Linux no distingue de forma clara entre proceso, proceso ligero
(hilo de usuario) e hilo del núcleo.
III) (1 p) Una página anónima es aquella que no está asociada a un proceso concreto.
IV) (1 p) Si dos procesos A y B abren el mismo archivo existirán dos descriptores de
archivos, dos estructuras de objeto abierto y dos estructuras nodos-v.
2. (2 p) Explicar razonadamente las características generales de la planificación de procesos multihilos en los SOBUNIX.
3. En un SOBUNIX la máscara de modo del archivo ordinario d1423 expresada en octal
es 6074:
a) (1 p) Escriba la máscara de modo simbólica asociada a este archivo.
b) (1 p) ¿Qué orden se debe escribir en un intérprete de comandos para que la máscara
simbólica del archivo pasase a ser -r-sr---wt?
4. En un SOBUNIX, explique razonadamente el significado de las siguientes llamadas al
sistema:
a) (0.5 p) execv("prog3",0);
b) (0.5 p) signal(SIGUSR1,0);
c) (0.5 p) kill(-1,SIGUSR1);
d) (0.5 p) d=semget(a,b,c);
UNED - Ampliación de Sistemas Operativos (Cód. 71023016)
Solución Examen Septiembre 2020
AMPLIACIÓN DE SISTEMAS OPERATIVOS (Cód. 71023016)
Solución Examen Septiembre 2020
Solución Ejercicio 1
a) En Windows, el espacio de direcciones virtuales de un proceso, consta entre otras, de las siguientes
regiones: código, datos inicializados, montículo y pila. Las regiones de código y datos inicializados
son generadas mediante el mapeado de un determinado archivo. Por su parte, el montículo y la
pila son regiones anónimas que no se generan mediante el mapeo de un archivo. Por lo tanto, la
afirmación es FALSA.
b) Esta afirmación es VERDADERA. En Linux no existe una distinción clara entre las abstracciones
de proceso, proceso ligero (hilo de usuario) e hilo del núcleo. De hecho en varías partes del código
del núcleo se utilizan los términos procesos, hilos y tareas de forma sinónima; debido seguramente
a que en las primeras versiones del núcleo utilizaban como unidad de planificación y ejecución al
proceso y no soportaban procesos ligeros ni hilos del núcleo.
Para el núcleo de Linux un proceso monohilo, un proceso ligero o un hilo del núcleo es simplemente un flujo de ejecución independiente o tarea (task) que debe ser planificada y ejecutada.
Linux considera a un proceso monohilo como una única tarea. Mientras que un proceso multihilo
constará de un número de tareas igual al número de procesos ligeros (hilos de usuario) en que se
descomponga. También cada hilo del núcleo asociado a un proceso del sistema o utilizado para
ejecutar una determinada función del núcleo es considerado como una única tarea.
c) Una página anónima es una página que antes de su creación no dispone de un almacenamiento
persistente de respaldo en memoria secundaria. Las páginas anónimas son utilizadas para implementar la región de datos no inicializados, el montículo y la región de pila de un proceso. Una
página anónima solo se crea cuando se accede a ella por primera vez durante una operación de
escritura. Al conjunto de páginas anónimas utilizadas por un proceso se le denomina memoria
anónima del proceso. De acuerdo con lo anterior, una determinada página anónima estará asociada a un determinado proceso. Por lo tanto, la afirmación es FALSA.
d) Para que un proceso pueda poder operar sobre un archivo, éste primero tiene que ser abierto mediante la invocación de la llamada al sistema open. La rutina del núcleo del sistema operativo que
trata esta llamada al sistema crea en la memoria principal una estructura de datos denominada objeto de archivo abierto y asigna a dicha estructura un número entero positivo pequeño denominado
descriptor de archivo para identificarla.
Si un proceso abre el mismo archivo dos veces, o si dos procesos abren el mismo archivo, el núcleo
creará una estructura de objeto abierto y un descriptor de archivo en cada invocación de la llamada
al sistema open. Luego se tendrían dos objetos de archivo abierto, cada una con su correspondiente
descriptor de archivo.
Entre otros datos, un objeto de archivo abierto contiene un puntero al nodo virtual del archivo.
Un nodo virtual, o más abreviadamente nodo-v, es una estructura de datos que el núcleo crea en
memoria principal para cada archivo activo.
De acuerdo con lo anterior, al abrir dos procesos el mismo archivo, se crean dos descriptores de
archivo, dos objetos de archivo abierto y un nodo-v, no dos. Por lo tanto, la afirmación es FALSA,
1
UNED - Ampliación de Sistemas Operativos (Cód. 71023016)
Solución Examen Septiembre 2020
Solución Ejercicio 2
En la mayoría de los SOBUNIX, el planificador implementa una planificación global basada en múltiples colas de prioridad y realimentación. En este tipo de planificación, cada unidad planificable (proceso
o hilo del núcleo) tiene asignada una determinada prioridad, que es un número entero positivo comprendido entre 0 y un cierto valor máximo. En algunos SOBUNIX el valor 0 corresponde a la máxima
prioridad posible, mientras que en otros la máxima prioridad corresponde a Pmax. El planificador siempre intenta que se ejecute la unidad planificable de mayor prioridad, aunque esto no siempre es posible
si el núcleo es no expropiable.
El valor de la prioridad de una unidad planificable se establece en función de diferentes criterios: el
modo de ejecución (modo usuario o en modo núcleo), el tipo de trabajo (trabajo interactivo, trabajo por
lotes, trabajo en tiempo real, trabajo del sistema operativo e interrupciones), el tiempo de procesador
consumido, el tiempo de espera en las colas, etc. El valor de la prioridad puede variar o no con el tiempo
de vida de la unidad planificable, es decir, la prioridad puede ser estática o dinámica. Por ejemplo, la
prioridad de las unidades planificables asociadas a las interrupciones suele ser alta y estática. Mientras
que la prioridad de las unidades planificables asociadas a trabajos por lotes suele ser baja y dinámica.
En función del valor de su prioridad cada unidad planificable en el estado preparado forma parte de una
determinada cola de unidades planificables en el estado preparado o cola de prioridad. Las unidades
planificables que poseen una prioridad dinámica pueden pasar durante su tiempo de vida por diferentes
colas. El planificador establece una determinada planificación local para cada cola, como por ejemplo:
planificación FIFO, planificación de tiempo compartido, planificación basada en prioridades, etc.
Algunos SOBUNIX, como SVR4 o Solaris, para dotar de mayor flexibilidad al planificador definen
clases de planificación cada una de los cuales tiene asociada un rango de valores de prioridad y un
mecanismo de cálculo de la prioridad. Cada unidad planificable pertenece a una determinada clase de
planificación. Normalmente se dispone de una clase de planificación por cada tipo de trabajo soportado
en el sistema: clase de trabajos en tiempo real, clase de trabajos de tiempo compartido o interactivos, etc.
Solución Ejercicio 3
a) Si pasamos la máscara octal 6074 a binario se obtiene: 110 000 111 100 y a partir de ella
podemos establecer que la máscara de modo simbólica asociada a este archivo es:
- -ws -wS - w -
b) La máscara de modo simbólica - r-s r- - - wt es equivalente a la máscara de modo binaria
101 101 100 011
que en octal es 5543. Luego un posible comando a utilizar es:
chmod 5543 d1423
2
UNED - Ampliación de Sistemas Operativos (Cód. 71023016)
Solución Examen Septiembre 2020
Solución Ejercicio 4
a) Esta llamada al sistema reemplaza las regiones del espacio de direcciones del proceso que invoca la
llamada por las regiones del programa prog3 pasado como argumento. Cuando finaliza la llamada
al sistema exec el proceso invocador pasa a ejecutar el código del programa invocado.
b) Esta llamada al sistema especifica al núcleo la acción que debe realizar cuando el proceso que
invoca la llamada reciba una señal tipo SIGUSR1, en este caso se indica que la acción que debe
realizar el núcleo es ejecutar la acción por defecto asociada a esta señal, que para la señal SIGUSR1
es terminar el proceso.
c) Esta llamada al sistema envía la señal SIGUSR1 a todos los procesos cuyo UID sea igual al EUID
del proceso que invoca la llamada.
d) Esta llamada al sistema permite crear un conjunto de semáforos u obtener el uso de un conjunto ya
creado. Requiere como argumentos de entrada la llave numérica a que se quiere asociar al conjunto
de semáforos o que ya tiene asociada (si ya está creado), el número b de semáforos que tendrá el
conjunto y una serie de indicadores c que permiten especificar, entre otras cosas, los permisos de
acceso al conjunto de semáforos. Un indicador utilizado frecuentemente es IPC_CREAT que fuerza
a crear un conjunto nuevo si no existe uno ya creado. Si la llamada al sistema se ejecuta con éxito
entonces guarda en d el identificador del conjunto de semáforos. En caso contrario almacena en d
el valor -1.
3
Descargar