UTFSM - Sistemas Operativos. Procesos concurrentes Supongamos el siguiente código para la...

14
AYUDANTÍA 5: EXERCISES UTFSM - Sistemas Operativos

Transcript of UTFSM - Sistemas Operativos. Procesos concurrentes Supongamos el siguiente código para la...

Page 1: UTFSM - Sistemas Operativos. Procesos concurrentes  Supongamos el siguiente código para la ejecución concurrente de los procesos Proceso_A y Proceso_B:

AYUDANTÍA 5:EXERCISES

UTFSM - Sistemas Operativos

Page 2: UTFSM - Sistemas Operativos. Procesos concurrentes  Supongamos el siguiente código para la ejecución concurrente de los procesos Proceso_A y Proceso_B:

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com

2

Procesos concurrentes Supongamos el siguiente código para la ejecución

concurrente de los procesos Proceso_A y Proceso_B:

¿Qué función cumple cada uno de los semáforos? ¿En qué orden se ejecutan las secciones de los procesos

indicadas por A1,A2,B1,B2?

Page 3: UTFSM - Sistemas Operativos. Procesos concurrentes  Supongamos el siguiente código para la ejecución concurrente de los procesos Proceso_A y Proceso_B:

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com

3

Trenes

Una línea férrea une dos ciudades A y B, donde existe una sección del tramo que tiene una única vía, tal como se indica en la figura:

Existen trenes que viajan de A a B y de B a A. En la sección de vía única del tramo se deben coordinar los trenes para que en determinado instante sólo existan trenes viajando en un único sentido.Especifique en pseudo-código los procesos existentes y

cómo se coordinan.Ayuda: La solución debe tener un sólo semáforo.

Page 4: UTFSM - Sistemas Operativos. Procesos concurrentes  Supongamos el siguiente código para la ejecución concurrente de los procesos Proceso_A y Proceso_B:

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com

4

Verdadero/falso Soportar Interrupciones vectorizadas significa contar con una arquitectura que

tenga un registro especial (Status) que el sistema operativo debe leer para conocer la causa de la interrupción.En un sistema de interrupciones vectorizadas, la causa de la interrupción esta determinada por la dirección en el vector de interrupciones a la cual es transferido el control del programa

Los registros de trabajo del procesador constituyen la memoria mas rápida de un sistema computacional.Verdadero

API (Application Program Interface) es sinónimo de Llamada al Sistema (System Call).

Las llamadas al sistema son propias de cada sistema operativo. La API es una biblioteca con llamadas estándares que permite a las aplicaciones abstraer de como se generan las llamadas al sistema a través de interrupciones por software y de como se transfieren los parámetros y resultados entre el espacio de direcciones de los procesos y el núcleo, y viceversa.

Toda llamada al sistema se ejecuta en modo kernel.

Verdadero

Page 5: UTFSM - Sistemas Operativos. Procesos concurrentes  Supongamos el siguiente código para la ejecución concurrente de los procesos Proceso_A y Proceso_B:

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com

5

Verdadero/falso Multiprogramación es sinónimo de Multiprocesamiento.

Multiprogramación es la ejecución (pseudo‐) concurrente de varias aplicaciones, no siendo necesaria la existencia de múltiples procesadores. En cambio, el Multiprocesamiento requiere de la existencia de varios procesadores.

En términos generales, un sistema de IPC (Comunicación entre Procesos) basado en paso de mensajes es mas eficiente que uno basado en memoria compartida.Al contrario. Paso de mensajes requiere la intervención del kernel. Usar memoria compartida solo requiere el apoyo del kernel durante la creación

En un sistema operativo de un procesador, la utilización de threads no mejora ningún tiempo. Solo permite dar mayor orden lógico a los desarrolladores de aplicaciones.Al contrario. La utilización de threads permite crear más rápido y con menos recursos instancias de ejecución concurrente, siendo la sincronización y comunicación entre threads más ágil que entre los procesos.

Page 6: UTFSM - Sistemas Operativos. Procesos concurrentes  Supongamos el siguiente código para la ejecución concurrente de los procesos Proceso_A y Proceso_B:

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com

6

Verdadero/falso La planificación con prioridades puede producir espera indefinida en los

procesos, problema que puede ser solucionado implementando una política con expropiación (preemptible) sobre los procesos.

Es cierto que la planificación con prioridades puede producir postergación indefinida, pero este problema se soluciona mediante una técnica de envejecimiento (aging), donde los procesos aumentan su prioridad en la medida que esperan.

El problema de la solución de Peterson a la exclusión mutua es que produce “espera ocupada”; este problema es solucionado con el uso de instrucciones de maquina especiales , como por ejemplo TestAndSet.

La solución de Peterson es por software y produce espera ocupada, pero así lo producen también las soluciones basadas sólo en hardware, como por ejemplo TestAndSet. La solución a este problema requiere de una integración con la gestión de los procesos.

Un semáforo es más que una variable de tipo entera, dado que se requiere una integración con la gestión de procesos y asociar una cola de espera a los procesos bloqueados.

Verdadero

Page 7: UTFSM - Sistemas Operativos. Procesos concurrentes  Supongamos el siguiente código para la ejecución concurrente de los procesos Proceso_A y Proceso_B:

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com

7

Mate Suponga que existen varios tomadores de mate (matero),

donde cada uno posee su propio vaso, pero que comparten entre todos un recipiente con un máximo de 10 cargas. Si bien es cierto que el recipiente tiene varias cargas, en el momento en que un matero se sirve mate hace uso exclusivo de éste y los demás deben esperar hasta que quede libre. Para evitar que las cargas disponibles en el recipiente se agoten, existe un reponedor que va cargando el recipiente en la medida que exista espacio para ello. La acción de reponer una carga también hace uso exclusivo del recipiente por parte del reponedor. Hacer pseudocódigo del matero y del reponedor. Sincronizar ambas tareas. Funciona esta solución para N reponedores?

Page 8: UTFSM - Sistemas Operativos. Procesos concurrentes  Supongamos el siguiente código para la ejecución concurrente de los procesos Proceso_A y Proceso_B:

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com

8

Test And Set

Implemente Wait() y Signal() usando la instrucción TestAndSet(). Debe tener la menor cantidad de busy wait posible.Ayuda:

○ P() y V() es lo mismo que Wait() y Signal().○ Para minimizar busy wait se deben

“suspender” los procesos.

Page 9: UTFSM - Sistemas Operativos. Procesos concurrentes  Supongamos el siguiente código para la ejecución concurrente de los procesos Proceso_A y Proceso_B:

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com

9

Test And Set

Solución anterior (para efectos de los que no estuvieron en la ayudantía).

Page 10: UTFSM - Sistemas Operativos. Procesos concurrentes  Supongamos el siguiente código para la ejecución concurrente de los procesos Proceso_A y Proceso_B:

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com

10

Monitores (explicación)

Solo 1 objeto puede usar los métodos del monitor a la vez.

Hay variables especiales, condiciones, que tienen wait() y signal().Al esperar (wait) una condición el thread no

ocupa el monitor, queda suspendido.

Page 11: UTFSM - Sistemas Operativos. Procesos concurrentes  Supongamos el siguiente código para la ejecución concurrente de los procesos Proceso_A y Proceso_B:

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com

11

Monitores

Implementar un semáforo como monitor.

Page 12: UTFSM - Sistemas Operativos. Procesos concurrentes  Supongamos el siguiente código para la ejecución concurrente de los procesos Proceso_A y Proceso_B:

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com

12

Compilando un monitor

Imagínese un compilador que toma una clase especificada como monitor y al compilarla la transforma en una clase normal, pero con semáforos.Cómo compilaría el siguiente monitor?

Page 13: UTFSM - Sistemas Operativos. Procesos concurrentes  Supongamos el siguiente código para la ejecución concurrente de los procesos Proceso_A y Proceso_B:

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com

13

Clase monitor sin compilar

Page 14: UTFSM - Sistemas Operativos. Procesos concurrentes  Supongamos el siguiente código para la ejecución concurrente de los procesos Proceso_A y Proceso_B:

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com

14

Clase compilada