Sist.opert. Diagrama de Grant

15
UNIVERSIDAD CENTROAMERICANA FACULTAD DE CIENCIAS, TEGNOLOGIA Y AMBIENTE INGENIERIA EN SISTEMAS Y TECNOLOGIAS DE LA INFORMACION ARQUITECTURA DE SISTEMAS OPERATIVOS Ejercicio 5.3 DIAGRAMA DE GRANT Nombre: ** Eleazar Monge ** Profesor: Edwin Lacayo Grupo: 0802

Transcript of Sist.opert. Diagrama de Grant

UNIVERSIDAD CENTROAMERICANA

FACULTAD DE CIENCIAS, TEGNOLOGIA Y AMBIENTE

INGENIERIA EN SISTEMAS Y TECNOLOGIAS DE LA INFORMACION

ARQUITECTURA DE SISTEMAS OPERATIVOS

Ejercicio 5.3 DIAGRAMA DE GRANT

Nombre: ** Eleazar Monge **

Profesor: Edwin Lacayo

Grupo: 0802

10/07/2013

-Considere el conjunto de procesos siguiente (la duración de ráfaga de CPU se da en milisegundos)

Proceso Tiempo de Ráfaga PrioridadP1 10 3P2 1 1P3 2 3P4 1 4

P5 5 2Se supone que los procesos llegaron en el orden P1, P2, P3, P4, P5, todos en el instante 0.

1. Dibuje 4 diagramas de Gant que ilustren la ejecución de estos procesos empleando FCFS, SIF, una técnica por prioridad no expropiativa (un numero de prioridad más bajo implica una prioridad más alta), y RR (cuanto -1).

2. Calcule el tiempo de retorno para cada proceso cada uno de los algoritmos de planificación de la parte a.

3. Calcule el tiempo de espera para cada proceso con cada uno de los algoritmos de planificación de la parte a.

4. ¿Cuál de los planes de la parte a da pie al tiempo de espera promedio más bajo (considerando todos los procesos)?

Diagrama FCFS

P1 P2 P3 P4 P50 10 11 13 14 19

(0+10+11+13+14)/5 = 9.6 ms

P2 P4 P3 P5 P10 1 2 4 9 19

(9+0+2+1+4)/5 = 3.2 ms

Diagrama SIF

P2 P4 P3 P5 P10 1 2 4 9 19

(9+0+2+1+4)/5 = 3.2 ms

P2 P5 P1 P3 P40 1 6 16 18 19

(6+0+16+18+1)/5 = 8.2 ms

Diagrama de Prioridad

P2 P5 P1 P3 P40 1 6 16 18 19

(6+0+16+18+1)/5 = 8.2 ms

Diagrama de RR

P1 P2 P3 P4 P5 P1 P5 P1 P5 P1 P10 2 3 5 6 8 10 12 14 15 17 19

(10-1)*2 = 18

(1-1)*2 = 0

(2-1)*2 = 1

(1-1)*2 = 0

(5-1)*2 = 8

27 / 5 = 5.4 ms

El que da pie al menor tiempo de espera en promedio es el SIF porque es solo de 2.3 ms

Resumen

El problema de la sección critica

Cada proceso tiene un segmento de código, llamado sección crítica, en la que el proce4so podría estar modificando variables comunes como escribir un archivo o actualizando una tabla. El problema de la sección crítica consiste en diseñar un protocolo que los procesos puedan usar para cooperar.

Una solución al problema de la sección crítica debe tener tres requisitos:

1. Mutua exclusión2. Progreso3. Espera limitada

Las soluciones no dependen de ningún supuesto relacionado con las instrucciones de hardware ni el número de procesadores que el hardware apoya, pero si supone que las instrucciones de lenguaje de maquina básicas se ejecutan de forma atómica.

Solución para dos procesos

En esta sección limitaremos nuestra atención a los algoritmos que pueden aplicarse a solo dos procesos a la vez. Los procesos se numeran Po y P1.

Algoritmo 1

Primero hay que hacer que los procesos comparan una variable entera común turno cuyo valor inicial es 0(o 1). Si turno=i, se permite que se ejecute el proceso P. Esta solución asegura que solo un proceso a la vez podría estar en su sección critica, sin embargo no satisface el requisito de progreso ya que requiere una alternación estricta de los proceso en la ejecución.

Algoritmo 2

En este algoritmo el proceso Pi primero asigna true a indicador [i] indicando que está listo para ingresar en su sección critica. Luego Pi, verifica que el proceso P, ni este también listo para ingresar en su sección critica. Si Pg., estuviera listo, Pi esperaría hasta que Pj indicara que tal no necesita estar en la sección critica.

En esta solución se satisface el requisito de mutua exclusión. Desafortunadamente, no se satisface el requisito de progreso. Para ilustrar este problema consideramos la secuencia siguiente:

Este algoritmo depende absolutamente de la sincronización exacta de los dos procesos. La secuencia anterior podría haberse presentado en un entorno en el que hay varios procesadores que trabajan de forma concurrente. Cabe señalar que invertir el orden de las instrucciones para asignar un valor a indicador[i] y probar el valor de indicador [j] no resuelve nuestro problema.

Algoritmo 3

Si combinamos las ideas claves del algoritmo 1 y 2, obtenemos una solución correcta al problema de la sección critica, en la que se satisfacen los tres requisitos.

Para ingresar en la sección critica, el proceso Pi primero asigna true a indicador [i], y luego dice que le toca al proceso ingresar si es lo apropiado. Si ambos procesos tratan de ingresar al mismo tiempo, se asignara tanto i como j a turno aproximadamente en el mismo momento.

Ahora demostraremos que solución es correcta.

1. La mutua exclusión se mantiene2. Se satisface el requisito de progreso3. Se cumple con el requisito de espera limitada

Para demostrar la propiedad 1 tomamos nota de cada Pi, ingresa en su sección critica solo si indicador[i] =false o turno=i. observemos también que si ambos procesos pueden estar ejecutándose en sus secciones criticas al mismo tiempo, entonces indicador [0] =indicador [1].

Soluciones para múltiples procesos

Este algoritmo se basa en un algoritmo de planificación de uso común en las panaderías, expendios de helados, carnicerías oficinas y otros lugares en los que debe crearse oren a partir del caos.

Al entrar al establecimiento cada cliente recibe en número y se atiende al cliente que tiene el número más bajo. Desafortunadamente no recibirán el mismo número. En caro de haber un empate, se atiene primero al cliente que tiene el nombre más bajo. Es decir si pi y pj reciben el mismo número. Puesto que los nombres de proceso son únicos y totalmente ordenados. La estructura de datos comunes es:

Inicialmente las estructuras anteriores reciben los valores de false y 0, definimos la notación de la siguiente manera:

Hardware de sincronización

Las características del hardware pueden facilitar la tarea de programación y mejorar la eficiencia del sistema. Presentaremos algunas instrucciones de

hardware sencillas y veremos como ayudan a resolver el problema de la sección crítica.

El problema de la sección critica se podría resolver fácilmente en un entorno uniprocesador si pudiéramos prohibir las interrupciones mientras se está modificando una variable compartida.

Desafortunadamente, esta solución no es factible en un entorno multiprocesador. La desactivación de interrupciones en un multiprocesador puede requerir mucho tiempo, mientras se envía el mensaje a todos los procesos.

Por lo anterior muchas maquinas cuentan con instrucciones de hardware especiales que no nos permiten determinar y modificar el contenido de una palabra, o bien intercambiar el contenido de dos palabras, atómicamente.

La instrucción Evaluar-y-Asignar (Test-and-Set, TAS) se puede definir como se muestra en la figura 6.6. La característica importante es que esta instrucción se ejecuta atómicamente; es decir, como una unidad interrumpible. Por tanto, si dos instrucciones Evaluar-y-Asignar se ejecutan simultáneamente (cada una en una CPU distinta), se ejecutaran secuencialmente en algún orden arbitrario.

Si la maquina tiene la instrucción Evaluar-y –Asignar, podemos implementar la mutua exclusión declarando una variable booleana cerradura, cuyo valor inicial es false. La estructura del proceso P; se muestra en la figura 6.7.

La instrucción intercambiar, definida como se muestra en la figura 6.8, opera sobre el contenido de dos palabras; al igual que la instrucción Evaluar-y-Asignar, se ejecuta atómicamente.

Para demostrar el requisito del proceso, observemos que los argumentos que presentamos para la mutua exclusión también aplican aquí, ya que un proceso que sale de la sección critica asigna false o cerradura, o bien false a esperando, ambas cosas permiten que un proceso que está esperando para ingresar en su sección critica proceda.

Semáforo

Las soluciones del problema de la sección crítica que presentamos en la sección 6.3 no son fáciles de generalizar a problemas más complejos. Para superar esta

dificultad, podemos usar una herramienta de sincronización llamada semáforo.

Un semáforo S es una variable entera a la que, una vez que se le ha asignado un valor inicial, solo puede accederse a través de dos operaciones atómicas estándar: espera (wait) y señal (signal) Estas operaciones originalmente se llaman P (para espera; del holandés proberen, probar) y V (para señal; de verhogen, incrementar). Las definiciones clásicas de espera y señal son:

Uso

Podemos usar semáforos para resolver el problema de la sección crítica con n procesos. Todos los procesos comparten un semáforo, mutex (de mutual exclusión, mutua exclusión) que recibe como valor inicial 1. Cada proceso p; está organizado como se muestra en la figura 6.11.

Implementación

La principal desventaja de las soluciones de mutua exclusión de la 6.2, y de la definición de semáforos que presentamos aquí, es que todos requieren espera activa (busy waiting). Mientras un proceso está en su sección crítica, cualquier otro proceso que trate de ingresar en su sección crítica deberá dar vueltas continuamente en su código de ingreso.

Cada semáforo tiene un valor entero u una lista de procesos. Cuando un proceso debe esperar un semáforo, se le agrega a la lista de procesos. Una operación señal quita un proceso de la lista de procesos en espera y lo despierta.

Ahora podemos definir las operaciones del semáforo así:

Problemas clásicos de sincronización

Estos problemas sirven para probar casi cualquier esquema de sincronización nuevo que se proponga.

Buffer Limitado

El problema del buffer limitado se ha presentado habitualmente se utiliza para ilustrar la potencia de las primitivas de sincronización.Podemos interpretar este código como un productor que genera los búferes llenos para el consumidor o como un consumidor que genera búferes vacíos para el productor.

Problema de los lectores-escritores:

Algunos de estos procesos pueden simplemente querer leer la base de datos, mientras que otros pueden desear actualizarla. Diferenciamos entre estos dos tipos de procesos denominando a los primeros lectores y a los otros escritores.

Problema de la cena de los filósofos

El problema de la cena de los filósofos se considera un problema clásico de sincronización, no por su importancia practica ni porque los informáticos tengan aversión a los filósofos, sino porque es un ejemplo de una amplia clase de problemas de control de concurrencia.

Es una representación sencilla de la necesidad de repartir varios recursos entre varios procesos de una forma que no se produzcan interbloqueos ni bloqueos indefinidos.

Una solución sencilla consiste en representar cada palillo mediante un semáforo. Un filósofo intenta hacerse con un palillo ejecutando una operación wait() en dicho semáforo y libera sus palillos ejecutando la operación signal() en los semáforos adecuados, por tanto, los datos compartidos son donde todos los elementos de palillo se inicializan con el valor 1.

Sincronización de Solaris 2

Implementa una variedad de cerraduras para soportar multitarea, multihilos (incluyendo hilos en tiempo real), y multiprocesamiento.

Usa mutex adaptativo por eficiencia cuando protege datos que se acceden por segmentos cortos de código.

Usa variables de condición y cerraduras readers-writers cuando grandes secciones de código necesitan acceso a datos.

Usa turnstiles para ordenar la lista de hilos que esperar por adquirir ya sea un mutex adaptativo o una cerradura lector-escritor.

Transacciones Atómicas

La transacción atómica es un bloque de código que o se ejecuta completamente o no se ejecuta, si por ejemplo llamas por teléfono a un banco para realizar una transferencia bancaria pero en mitad de la conversación la línea se corta, entonces si la operación fuese atómica la transferencia no se debería hacer ya que la transacción no ha llegado hasta el final.

Es necesario un modelo de transacción porque el sistema consta de varios procesos independientes que pueden fallar aleatoriamente, este modelo debe manejar de forma transparente los errores, y dejar el sistema como estaba en caso de errores.

Monitores

La representación de un tipo monitor consiste en declaraciones de variables cutos valores definen el estado de un ejemplar del tipo, así como los cuerpos de procedimientos o funciones que implementan operaciones con el tipo. La sintaxis de un monitor es:

La construcción de monitor garantiza que solo podrá estar activo un proceso a la vez dentro del monitor. En consecuencia, el programador no necesita codificar esta restricción de sincronización explícitamente. La construcción condición proporciona dichos mecanismos. Un programador que necesite escribir su propio esquema de sincronización a la medida puede definir una o más variables de tipo condición: