0% encontró este documento útil (0 votos)
23 vistas8 páginas

Pec2 Sol

Este documento detalla una serie de actividades para estudiantes de Ingeniería Informática, enfocándose en los módulos de Sistemas Operativos. Se abordan temas como el sistema de archivos, la gestión de procesos y la concurrencia, con preguntas específicas y soluciones propuestas. Además, se incluyen criterios de evaluación y requisitos de entrega para la actividad.

Cargado por

neapovea
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
23 vistas8 páginas

Pec2 Sol

Este documento detalla una serie de actividades para estudiantes de Ingeniería Informática, enfocándose en los módulos de Sistemas Operativos. Se abordan temas como el sistema de archivos, la gestión de procesos y la concurrencia, con preguntas específicas y soluciones propuestas. Además, se incluyen criterios de evaluación y requisitos de entrega para la actividad.

Cargado por

neapovea
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

75.

566 Sistemas Operativos PAC2 20242· Ingeniería Informática Estudios de Informática, Multimedia I Telecomunicación

Presentación
Esta PEC plantea una serie de actividades con el objetivo de que el estudiante se
familiarice con la temática de los últimos módulos (Módulos 5, 6 y 7) de la asignatura. En
cada pregunta/apartado se indica el peso para calcular la evaluación final de este entrega

Competencias
Transversales:
-​ Capacidad para adaptarse a las tecnologías ya los futuros entornos, actualizando las
competencias profesionales

Específicas:
-​ Capacidad de analizar un problema en el nivel de abstracción adecuado a cada
situación y aplicar las habilidades y conocimientos adquiridos para abordar y
resolver
-​ Capacidad de diseñar y construir aplicaciones informáticas mediante técnicas de
desarrollo, integración y reutilización

​ ​1
75.566 Sistemas Operativos PAC2 20242· Ingeniería Informática Estudios de Informática, Multimedia I Telecomunicación

Enunciado

1.​ Módulo 5: El Sistema de Archivos.(Peso 30%). Responded justificadamente las


siguientes preguntas:

a)​ ¿Existe una posibilidad de poder ejecutar un fichero ejecutable que se encuentre
en un directorio sobre el que no tengáis permiso de lectura?

​ Solución:
Sí, para poder ejecutar el programa necesitamos poder acceder al
directorio (bit x), y que el fichero tenga el bit de ejecución activo,
pero no es preciso poder leer el directorio. Será preciso conocer el nombre
del fichero.

b)​ ¿Es posible eliminar un fichero sobre el que no tenéis permiso de escritura? ¿Y
en el caso de modificar su contenido, sería posible?

​ Solución:

Sí, para borrar un fichero solo necesitamos poder acceder al directorio


(bit x) y modificar su contenido (bit w), independientemente de las
protecciones del fichero a borrar. En cambio, no será posible modificar
el contenido del fichero sin el permiso w sobre el fichero.

c)​ El sistema de protecciones de los sistemas de ficheros de Unix (bits rwx), ¿utiliza
listas de control de acceso o listas de capabilities?

Solución:
Utiliza listas de control de acceso porque son una lista de parejas de
derechos (lectura, escritura, ejecución) y dominios (propietario, miembros
del grupo, resto de usuarios) asociados a un objeto -fichero-. Una vez
abierto el fichero, se utiliza una capability.

d)​ Experimentar como un sistema Linux interpreta los bits de protección rwx sobre
un fichero directorio
Pensad en las operaciones típicas sobre un directorio (posicionarnos, listar el
contenido, crear un fichero, borrar un fichero, leer un fichero, ver los atributos de
un fichero) y deducid los mínimos bits necesarios para poder realizar cada
operación.​

Solución:

El bit x indica que es posible posicionarse sobre el directorio (hacer un cd).

Para obtener la lista de ficheros de un directorio (ejecutar ls) necesitamos


los bits rx (para posicionarnos y leer el contenido).

​ ​2
75.566 Sistemas Operativos PAC2 20242· Ingeniería Informática Estudios de Informática, Multimedia I Telecomunicación

El bit w nos permite modificar el directorio, es decir, crear o borrar


(orden rm) ficheros. También necesitamos el x para posicionarnos.

Para leer un fichero (del que conocemos su nombre) que se encuentre


en el directorio necesitamos el bit x sobre el directorio y el bit r sobre
el fichero.

Para ver los atributos de un fichero (del que conocemos su nombre) solo
necesitamos el bit x sobre el directorio, independientemente de los bits
sobre el fichero.

2.​ Módulo 6: La Gestión de Procesos. (Peso: 35%:15%+10+10%%)


a)​ Indicar justificadamente cuál será el resultado de ejecutar el siguiente programa
(número de procesos creados, parentesco entre ellos, información mostrada por
la salida estándar). Podéis asumir que las llamadas al sistema nunca devolverán
error.

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <sys/wait.h>

int main(int argc, char * argv[]) {


if (fork()) {
if (!fork()) {
fork();
write(0, “1“, 1);
} else {
write(0, “2“, 1);
}
} else {
write(0, “3“, 1);
}
write(0, “4“, 1);
return 0;
}

​ ​3
75.566 Sistemas Operativos PAC2 20242· Ingeniería Informática Estudios de Informática, Multimedia I Telecomunicación

​ Solución:
Cuando indicamos if fork() es el proceso padre y cuando es if !fork()
nos referimos al proceso hijo

b)​ ¿Por qué creéis que se ha de evitar la acumulación de los procesos Zombie , en la
medida de lo posible, en términos de eficiencia de un Sistema Operativo? El uso
de la llamada de sistema Wait(), evita la proliferación de este tipo de proceso.
¿Por qué?

​ Solución:
Hay una tabla que almacena los procesos del sistema con capacidad​
limitada. Si se generan demasiados procesos Zombie conseguiremos que
esta tabla se complete totalmente. Es decir, el sistema no permitirá la
creación de nuevos procesos, provocando el bloqueo del mismo sistema.
Con la llamada al sistema Wait, podemos evitar la proliferación de los
procesos Zombie. Cuando el proceso principal ejecuta la llamada de
sistema wait después de la creación de un proceso hijo, indica que se
esperará hasta la finalización de este mismo y obtendrá el estado de salida
del proceso hijo. Se entiende que durante el proceso de espera, el padre no
realizará ninguna acción más.

c)​ Indicad justificadamente si las siguientes afirmaciones son ciertas o falsas:


i.​ Las llamadas de la familia exec crean un nuevo proceso.
ii.​ Un proceso que invoque diversas veces a la llamada getpid() puede
obtener resultados distintos.
iii.​ Cuando un proceso invoca a una llamada de la familia exec, desaparecen
del sistema los hijos en estado zombie que pudiera tener.
iv.​ La llamada exit() nunca devolverá error.

​ ​4
75.566 Sistemas Operativos PAC2 20242· Ingeniería Informática Estudios de Informática, Multimedia I Telecomunicación

Solución:
i.​ Falso. Las llamadas exec cargan un nuevo programa en el espacio de
memoria del proceso e inician su ejecución, pero el pid el proceso
no cambia.

ii.​ Falso. En ningún escenario la llamada al getpid() puede generar


resultados diferentes.

iii.​ Falso. Las relaciones paterno-filiales entre los procesos del sistema
no cambian al hacer una llamada exec. Solo pueden cambiar con
las llamadas wait, exit y similares.

iv.​ ​Cierto. Consultando el manual se puede comprobar que es una


de las pocas llamadas al sistema que el SO garantiza que siempre
podrá realizarse y nunca devolverá error.

3.​ Módulo 7: La Concurrencia y la Comunicación.(Peso: 35%:10%+25%)

a.​ Como ya sabéis, la comunicación entre procesos por memoria compartida puede
provocar problemas de consistencia de datos. Dado el siguiente programa en
UNIX standard, ¿crees que se podrían dar problemas de este tipo? Justifica la
respuesta y posible solución.

#include <stdio.h>
#include <stdlib.h>
main() {
​ ​ int pid, ArrayFd[2];
​ ​ char buff;
​ ​ pipe(ArrayFd);
​ ​ pid = fork();
​ ​ if(pid == 0) {
​ ​ ​ close(ArrayFd[1]);
​ ​ ​ buff = ‘A’;
​ ​ ​ while(buff != “X”) {
​ ​ ​ ​ read(ArrayFd[0], & buff, 1);
​ ​ ​ ​ write(1, & buff, 1);
​ ​ ​ }
​ ​ ​ close(ArrayFd[0]);
​ ​ } else {
​ ​ ​ close(ArrayFd[0]);
​ ​ ​ while(read(0, & buff, 1) > 0) {
​ ​ ​ ​ write(ArrayFd[1], &buff, 1);
​ ​ ​ }
close(ArrayFd[1]);
​ ​ }

​ ​5
75.566 Sistemas Operativos PAC2 20242· Ingeniería Informática Estudios de Informática, Multimedia I Telecomunicación

Solución:
No hay ningún problema de exclusión mutua porque la llamada de
sistema fork() duplica todo el proceso. Cada proceso tendrá sus
variables ArrayFd, de forma independiente. Los canales que
se cierran en cada proceso y no afectan al otro.

b.​ Queremos conocer el número de personas que entran en una via peatonal. Para
esto tenemos un sistema de medición que consiste en dos sensores (sensorA,
sensorB) para poder detectar a las personas en los dos sentidos de la marcha.
Estos dos sensores indican, cada cierto tiempo, el número de personas que han
entrado en una calle en cada uno de los sentidos.

Cada sensor tiene su correspondiente rutina leersensorA y leersensorB .


Adicionalmente, tenemos una pantalla en un lugar de la calle donde se muestra la
siguiente información: Número de Personas por cada uno de los dos sentidos y
también la media total de personas que han entrado en ambos sentidos en la
última actualización de los sensores. Hasta que no se actualiza los datos de los
sensores no se actualiza la información de la pantalla. Podemos decir que
tenemos un programa multiflujo con 3 flujos: Uno por cada sensor y otro que se
encarga de mostrar la información por pantalla.

Añadir en el siguiente código, las instrucciones que faltan (entre los comentarios
/* Inicio Código para Rellenar */ y /*Fin Código para rellenar*/) para que los
datos mostrados por la pantalla sean coherentes y que la media solo se calcule
cuando ya han actualizado datos nuevos en los dos sentidos. Tal como veis en el
código, hay 3 rutinas: código del sensorA (Recopilar_Informacion_SentidoA),
código del sensorB (Recolpilar_Informacion_SentidoB) y el código que
implementará la visualización de resultados en la pantalla
(Mostrar_informacion_Pantalla). Se puntuará que la solución tenga el máximo de
paralelismo

​ ​6
75.566 Sistemas Operativos PAC2 20242· Ingeniería Informática Estudios de Informática, Multimedia I Telecomunicación

​ Solución:
long DatosPersonas[2];
/* Inicio Código por Rellenar*/
sem_init(sem_sentidoA,1);
sem_init(sem_sentidoB,1);
sem_init(sincro,0);
/* Fin Código por Rellenar */
Recopilar_Informacion_SentidoA() {
​ long dato0;
​ while(true) {
​ ​ dato0 = leersensorA();
​ ​ /* Inicio Código por Rellenar*/
​ ​ sem_wait(sem_sentidoA);
​ ​ /* Fin Código por Rellenar */
​ ​ DatosPersonas[0] = dato0;
​ ​ /* Inicio Código por Rellenar */
​ ​ sem_signal(sincro);
​ ​ /* Fin Código por Rellenar */
​ }
}

Recopilar_Informacion_SentidoB() {
​ long dato1;
​ while(true) {
​ ​ dato1 = leersensorB();
​ ​ /* Inicio Codigo por Rellenar*/
​ ​ sem_wait(sem_sentidoB);
​ ​ /* Fin Codigo por Rellenar*/
​ ​ DatosPersonas[1] = dato1;
​ ​ /* Inicio Código por Rellenar */
​ ​ sem_signal(sincro);
​ ​ /* Fin Código por Rellenar */
​ }
}

Mostrar_Informacion_Pantalla() {
long media;
while(true) {
​ /* Inicio Código por Rellenar*/
​ sem_wait(sincro);
​ sem_wait(sincro);
​ /* Fin Código por Rellenar */
​ MostrarPantalla(DatosPersona[0]);
​ MostrarPantalla(DatosPersona[1]);

media=(DatosPersonas[0]+DatosPersonas[1])/2;
​ MostrarPantalla(media);
​ /* Inicio Código por Rellenar*/
​ sem_signal(sem_sentidoA);
​ sem_signal(sem_sentidoB);
​ /* Fin Código por Rellenar*/
}
}

​ ​7
75.566 Sistemas Operativos PAC2 20242· Ingeniería Informática Estudios de Informática, Multimedia I Telecomunicación

Recursos
-​ Módulos 5, 6 y 7 de la asignatura.
-​ Documento”Introducción a la programación de Unix” (disponible en el aula) o
cualquier otro manual similar.
-​ El aula”Laboratorio de Sistemas Operativos” (puede plantear sus dudas relativas al
entorno UNIX, programación...).

Criterios de evaluación
Se valorará la justificación de las respuestas presentadas.
El peso de cada pregunta está indicado en el enunciado.

Formato y fecha de entrega


Se entregará un archivo .ZIP que contendrá un archivo .PDF con la respuesta a las
preguntas y, si fuera necesario, los archivos adicionales que desean entregar.
Límite de entrega: 4 de junio a las 23:59.

​ ​8

También podría gustarte