Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Material permitido: Ninguno Aviso 1: Todas las respuestas deben estar debida-
mente razonadas.
Tiempo: 90 minutos Aviso 2: Escriba con buena letra y evite los tachones.
N1 Aviso 3: Solución del examen y fecha de revisión en
http://www.uned.es/71023016/
a) (0.5 p) c=fork();
b) (0.5 p) signal(SIGUSR2,SIG_DFL);
c) (0.5 p) var=wait(&dat);
d) (0.5 p) r=shmat(a,b,c,d);
UNED - Ampliación de Sistemas Operativos (Cód. 71023016) Solución Examen Enero 2021
Solución Ejercicio 1
a) Windows mantiene una tabla de descriptores de objetos (handle table) local a cada proceso. De esta
forma un mismo descriptor puede hacer referencia en dos procesos distintos a objetos distintos.
Por lo tanto, la afirmación es FALSA.
d) Usadas como mecanismo IPC las tuberías resultan bastante eficientes aunque presentan los si-
guientes inconvenientes:
– No permiten el envío de información a varios receptores, ya que cuando se lee los datos de
la tubería estos son borrados de la misma.
– Un proceso que escribe en la tubería no puede especificar que receptor debe leer los datos.
– Si un proceso emisor transmite por la tubería varios mensajes de diferente longitud, como los
datos en la tubería son un flujo de bytes no estructurado, el proceso receptor no puede saber
donde termina un mensaje y donde empieza otro.
1
UNED - Ampliación de Sistemas Operativos (Cód. 71023016) Solución Examen Enero 2021
Solución Ejercicio 2
Un archivo mapeado en memoria es una región del espacio de direcciones virtuales de un proceso en
la que se establece una correspondencia byte a byte con parte o con la totalidad de un archivo. Para
establecer esta correspondencia el núcleo debe configurar las estructuras de datos que mantiene para
gestionar el espacio de direcciones de memoria virtual de un proceso. Una vez mapeado en memoria
el acceso a un determinado byte del archivo puede ser realizado como a cualquier otro contenido del
espacio de direcciones virtuales, es decir, indicando la dirección virtual oportuna. Se evita así tener que
realizar llamadas al sistema.
Aparte del ahorro de memoria principal y de la rapidez de los accesos, otra de las ventajas de lo archivos
mapeados en memoria es que se pueden usar como mecanismo IPC ya que los cambios que realice un
proceso en el archivo mapeado son visibles por todos los procesos que mapeen dicho archivo en sus
espacios de direcciones.
El uso de archivos mapeados también presenta algunos inconvenientes. En primer lugar el tamaño de
los archivos que se pueden mapear por completo queda limitado por el tamaño del espacio de direccio-
nes virtuales del proceso, el cual suele menor de 4 GiB en arquitecturas de 32 bits. Para archivos que
superan dicho tamaño, el archivo debe ser dividido en trozos cuyo mapeado debe irse alternando en me-
moria principal. También el tamaño del espacio de direcciones virtuales limita el número de archivos que
pueden estar mapeados total o parcialmente simultáneamente en memoria.
Otro inconveniente está relacionado al uso del mapeo de archivos como mecanismos IPC ya que al igual
que sucedía con las regiones de memoria compartida es necesario utilizar algún mecanismo IPC adicional
(semáforos o cola de mensajes) para sincronizar el acceso de los diferentes procesos al archivo mapeado.
Solución Ejercicio 3
a) Esta orden muestra en la pantalla el mensaje VAR=$(wc -w data), es decir, el argumento del
comando echo. Esto es así porque dicho argumento está entrecomillado con comillas simples lo
que indica al intérprete que no debe analizarlo.
b) Esta orden ordena por orden alfabético las líneas del archivo f1 y escribe el resultado en el archivo
f2.
c) Esta orden almacena en la variable X la salida del comando date el cual muestra la fecha y la
hora.
d) Esta orden carga el shell script p4567 en el espacio de direcciones del intérprete de comandos
y lo ejecuta. Nótese que en este caso la ejecución del shell script es similar a la de un comando
interno, por lo que no hay que crear un nuevo proceso.
2
UNED - Ampliación de Sistemas Operativos (Cód. 71023016) Solución Examen Enero 2021
Solución Ejercicio 4
a) Esta llamada al sistema crea un nuevo proceso. Al proceso que invoca a fork se le denomina
proceso padre y al nuevo proceso que se crea se le denomina proceso hijo. Si se ejecuta con éxito
esta llamada al sistema devuelve en c el PID del proceso hijo para el proceso padre y 0 para el
proceso hijo. En caso de error devuelve -1.
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 SIGUSR2, en este caso se indica que la acción que debe
realizar es ejecutar la acción establecida por defecto (SIG_DFL), que en el caso de este señal es
finalizar al proceso.
c) Esta llamada al sistema suspende la ejecución del proceso A que la invoca hasta que alguno de
sus procesos hijos entre en estado zombi. Esta llamada si se ejecuta con éxito devuelve en dat el
PID del primer hijo de A en estado zombi que encuentra. Además almacena los ocho bits menos
significativos del estatus de salida en la dirección asociada a la variable var. Si el proceso A no
tiene procesos hijos o si wait es interrumpida por una señal, entonces se considera que se ha
producido un error en la ejecución y la llamada devuelve en c el valor -1.
d) NOTA: En el enunciado hay una errata, ya que esta llamada al sistema solo puede tener tres
argumentos de entrada, donde pone r=shmat(a,b,c,d) debe poner r=shmat(a,b,c).
Esta llamada al sistema permite adjuntar una región de memoria compartida en el espacio de
direcciones virtuales del proceso invocante. Requiere como argumentos de entrada: el identificador
a de la región de memoria compartida, la dirección virtual del espacio del proceso b a partir de la
cual se desearía que la región de memoria compartida fuese adjuntada, y una serie de indicadores
c que permiten establecer el modo de acceso del proceso a la región de memoria. Si la llamada se
ejecuta con éxito devuelve en r un puntero a la dirección virtual de inicio de la región de memoria
compartida. En caso de error devuelve en r el valor -1.