Sistemas Operativos Unidad 2

143
Sistemas Operativos Administración del Procesador Unidad2-C7

description

Descrpción y ejemplificación de los temas relacionados con sistemas operativos 2a parte

Transcript of Sistemas Operativos Unidad 2

Page 1: Sistemas Operativos Unidad 2

Sistemas OperativosAdministración del Procesador

Unidad2-C7

Page 2: Sistemas Operativos Unidad 2

2

Administración del procesador

Page 3: Sistemas Operativos Unidad 2

3

Administración de procesos

• El SO es el responsable de:– La creación y eliminación de procesos

del sistema y del usuario– La calendarización de procesos– Sincronización de procesos– Comunicación de procesos– Manejo de bloqueos

Page 4: Sistemas Operativos Unidad 2

4

Procesos

• Informalmente un proceso es un programa en ejecución

• Un proceso es más que un código de programa, el cual es a veces llamado sección de texto

• También incluye la actividad actual, representada por el contador del programa y el contenido de los registros de los procesos

• Un proceso generalmente incluye la pila de proceso, el cual contiene datos temporales y la sección de datos la cual contiene variables globales

Page 5: Sistemas Operativos Unidad 2

5

Programas pasivos

• Un programa por sí mismo no es un proceso, un programa es una entidad pasiva, como por ejemplo: el contenido de un archivo almacenado en disco

• Un proceso es una entidad activa con un contador de programa especificando la siguiente instrucción a ser ejecutada y un conjunto de recursos asignados

Page 6: Sistemas Operativos Unidad 2

6

Estados de proceso

• Conforme un proceso se ejecuta cambia su estado

• El estado de un proceso se define en parte por la actividad actual de ese proceso.

• Cada proceso puede estar en uno de los siguientes estados:– Nuevo: El proceso se crea– Ejecutándose: Sus instrucciones son ejecutadas– Esperando: El proceso espera por la ocurrencia de

algún evento– Listo: El proceso espera a ser asignado al CPU– Terminado: El proceso ha finalizado su ejecución

Page 7: Sistemas Operativos Unidad 2

7

Diagrama de estados de procesos

Page 8: Sistemas Operativos Unidad 2

8

Operaciones en procesos

• Los procesos se pueden ejecutar concurrentemente, pueden ser creados y borrados dinámicamente

• Un proceso puede crear varios procesos nuevos durante su ejecución

• Al proceso creador se le llama proceso padre y a los nuevos procesos hijos

• Cada uno de los nuevos procesos a su vez pueden crear nuevos procesos generando un árbol de procesos

Page 9: Sistemas Operativos Unidad 2

9

Creación de procesos

• En general un proceso necesita ciertos recursos para lograr su tarea

• Cuando un proceso crea subprocesos, éstos pueden obtener los recursos directamente del S.O.

• O pueden estar restringidos a un subconjunto de recursos del proceso padre

• El padre puede particionar sus recursos entre sus hijos o puede compartir algunos recursos entre varios de ellos.

• Restringir a un proceso hijo a un subconjunto de recursos del padre previene que los subprocesos sobrecarguen el sistema pr crear muchos subprocesos

Page 10: Sistemas Operativos Unidad 2

10

Subprocesos

• Cuando un proceso padre crea subprocesos, existen dos posibilidades en términos de la ejecución– El padre continua su ejecución concurrentemente con sus

hijos– El padre espera hasta que algunos o todos sus hijos

hayan terminado

• También existen dos posibilidades en términos del espacio de direcciones del nuevo proceso– El proceso hijo es un duplicado de proceso padre– El proceso hijo tiene un programa cargado en él

Page 11: Sistemas Operativos Unidad 2

11

Terminación de procesos• Un proceso termina cuando ejecuta su última

instrucción y pide al S.O. que le elimine.

• En este punto, el proceso puede regresar datos a su proceso padre

• Todos lo recursos del proceso son liberados por el S.O.

• También puede terminar un proceso por la petición de otro proceso. Generalmente sólo el proceso padre puede pedir que se terminen sus hijos.

Page 12: Sistemas Operativos Unidad 2

12

Terminación de procesos

• Dentro de las razones para que un padre termine con su hijo– El hijo ha excedido el uso de algún recurso.

Implica mecanismo de inspección– La tarea asignada al hijo ya no es requerida– El padre se termina o sale del sistema.

Terminación en cascada

Page 13: Sistemas Operativos Unidad 2

13

Bloque de Control de Proceso

•Cada proceso se representa en el sistema operativo por un PCB (process control block)

Page 14: Sistemas Operativos Unidad 2

14

PCB• Un PCB contiene unidades de información

como son:– Estado de proceso: Nuevo, listo, ejecutándose,

esperando, etc.

– Contador de programa: Indica la dirección de la siguiente instrucción a ser ejecutada

– Registros de CPU: Los registros varían en número y tipo, dependiendo de la arquitectura de la computadora. Junto con el contador de programa, la información de los registros debe ser guardada cada vez que se ocurra una interrupción para permitir al proceso continuar correctamente.

Page 15: Sistemas Operativos Unidad 2

15

PCB• Información de Calendarización de CPU. Incluye

prioridad de proceso, apuntadores a colas de calendarización.

• Información de administración de la memoria. Incluye el registro base y límite, las tablas de páginas, tablas de segmento

• Información de “conteo”. Incluye la cantidad de tiempo de CPU y tiempo real utilizados, límites de tiempo, número de proceso

• Información del estado de E/S. Incluye una lista de E/S de dispositivos asignados al proceso

Page 16: Sistemas Operativos Unidad 2

16

Cambio de Contexto

• Cambiar el CPU de un proceso a otro requiere que se almacene el estado de los procesos salientes y se recargue el estado de los procesos entrantes

• Esta tarea es conocida como el cambio de contexto

• El contexto de un proceso está representado por el PCB

• Cuando un cambio de contexto ocurre el kernel guarda el estado en el PCB y carga el PCB del nuevo proceso

Page 17: Sistemas Operativos Unidad 2

17

CPU cambiando entre procesos

Page 18: Sistemas Operativos Unidad 2

18

Cambio de Contexto

• El tiempo que toma cambiar de contexto es pura sobrecarga

• Este tiempo varia de arquitectura en arquitectura dependiendo de la velocidad de la memoria, el número de registros a copiar, etc

Page 19: Sistemas Operativos Unidad 2

19

Procesos cooperativos

Page 20: Sistemas Operativos Unidad 2

20

Procesos cooperativos• Los procesos que se ejecutan

concurrentemente en el S.O. pueden ser independientes o cooperativos

• Un proceso independiente no afecta ni es afectado por otros procesos en ejecución en el sistema– Cualquier proceso que no comparte cualquier

información con otro es independiente

• Un proceso cooperativo afecta o es afectado por otros procesos en ejecución

Page 21: Sistemas Operativos Unidad 2

21

Razones para la cooperación

• Compartir información. Dado que varios usuarios pueden estar interesados en la misma información

• Aceleración de cómputo. Si se desea que una tarea particular se ejecute más rápido, es necesario dividirla en subtareas, ejecutándose en paralelo

• Modularidad. Cuando se desea construir un sistema de manera modular dividiendo las funciones en procesos separados o hilos

• Conveniencia. Para permitir al usuario realizar más de una tarea al mismo tiempo.

Page 22: Sistemas Operativos Unidad 2

22

Procesos cooperativos• La ejecución concurrente de procesos cooperativos

requiere de mecanismos que permitan a los procesos comunicarse entre ellos y sincronizar sus acciones– Pipes – Signals – Message Queues – Semaphores – Shared Memory – Sockets

• El problema del consumidor-productor– Uno consume información producida por el otro– Para que se ejecuten concurrentemente, necesitan de un

buffer• Buffer ilimitado• Buffer limitado

Page 23: Sistemas Operativos Unidad 2

23

Procesos cooperativos• Buffer

– Provisto por el SO por medio del uso de la comunicación entre procesos (IPC)

– Codificado explícitamente por la aplicación del programador con memoria compartida

• Memoria compartida– Requiere que los procesos compartan un

buffer común.– El código para implementar el buffer debe ser

escrito explícitamente por el programador

Page 24: Sistemas Operativos Unidad 2

24

Hilo de ejecución

• El modelo de proceso, hasta ahora discutido, implica que es un programa que sólo posee un sólo “hilo” de ejecución

• Este único hilo de control permite al proceso realizar sólo una tarea a la vez

• La mayoría de los SO extienden el concepto de proceso para permitirles tener múltiples hilos de ejecución

• De esta manera un proceso puede realizar más de una tarea a la vez.

Page 25: Sistemas Operativos Unidad 2

25

Hilos

• Un hilo, a veces llamado un proceso ligero (lightweight process, LWP) es una unidad básica de utilización de CPU

• Un hilo abarca una identificación, un contador de programa, un conjunto de registros y una pila

Page 26: Sistemas Operativos Unidad 2

26

Hilos• Comparte con otros hilos que pertenecen al

mismo proceso su sección de código, sección de datos, recursos del SO.

• Un proceso tradicional (heavyweight) tiene un sólo hilo de control

• Si un proceso tiene múltiples hilos de control puede hacer más de una tarea al mismo tiempo

Page 27: Sistemas Operativos Unidad 2

27

Procesos de uno y múltiples hilos

Page 28: Sistemas Operativos Unidad 2

28

Por qué los Hilos

• Las aplicaciones pueden y necesitan realizar varias cosas al mismo tiempo– Una navegador despliega imágenes, texto, recuperan

información.

• También una aplicación requiere a veces realizar varias tareas similares al mismo tiempo– Servidor web debe atender varios clientes tratando de

acceder concurrentemente

• Una solución es tener un proceso simple que acepte peticiones y cuando recibe una petición, crea un proceso separado para servir a esa petición

Page 29: Sistemas Operativos Unidad 2

29

Hilos

• Si los nuevos procesos van a hacer la misma tarea, ¿porqué agregar la sobrecarga de la creación de procesos?

• Generalmente es más eficiente para un proceso que contiene múltiples hilos servir al mismo propósito

• Los hilos también juegan un papel importante en los sistemas de llamadas a procedimientos remotos (RPC)

Page 30: Sistemas Operativos Unidad 2

30

Beneficios• Los beneficios de la programación

multihilo puede ponerse en cuatro categorías:

• Rapidez de respuesta. – Hacer en multihilos una aplicación interactiva

puede permitir a un programa continuar corriendo incluso si parte de él está bloqueado o realizando una tarea lenta, lo que se traduce en respuestas más rápidas para el usuario.

Page 31: Sistemas Operativos Unidad 2

31

Beneficios• Compartición de recursos.

– Por omisión, los hilos comparten la memoria y los recursos del proceso al cual pertenecen

• Economía– Asignar memoria y recursos en la creación de

procesos es costoso. Dado que los hilos comparten recursos de su proceso es más económico crear hilos y cambiar entre contextos de hilos

Page 32: Sistemas Operativos Unidad 2

32

Beneficios• Utilización de arquitecturas de

multiprocesadores. – Los beneficios del multihilado se incrementan

en una arquitectura de multiprocesamiento, donde cada hilo puede correr en paralelo en cada procesador.

– Un proceso de un sólo hilo sólo puede correr en un procesador no importando cuantos estén disponibles

Page 33: Sistemas Operativos Unidad 2

33

Planificación de CPU

Page 34: Sistemas Operativos Unidad 2

34

Calendarización de procesos

• El objetivo de la multiprogramación es tener procesos corriendo todo el tiempo para maximizar la utilización del CPU.

• El objetivo del tiempo compartido es intercambiar el CPU entre procesos de manera tan rápida que los usuarios puedan interactuar con cada programa mientras se está ejecutando.

Page 35: Sistemas Operativos Unidad 2

35

Cola de calendarización

• Conforme un proceso ingresa al sistema, es puesto en una cola de trabajos

• Esta cola consiste de todos los procesos en el sistema

• Los procesos que son residentes en memoria principal y están listos y esperando para ejecutarse se almacena en una lista llamada la cola de procesos listos

• Esta cola es almacenada en una lista ligada. El encabezado de una cola lista contiene apuntadores al primer y al último PCB en la lista.

Page 36: Sistemas Operativos Unidad 2

36

Cola de calendarización•La lista de procesos esperando por un dispositivo de E/S es llamada la cola de dispositivo•Cada dispositivo tienen su propia cola de dispositivo

Page 37: Sistemas Operativos Unidad 2

37

Calendarización de un proceso

• Un nuevo proceso es inicialmente puesto en la cola lista. Espera en esta lista hasta que es seleccionado para su ejecución (dispatched).

• Una vez que el proceso es asignado al CPU y se está ejecutando uno de los siguientes eventos ocurre:– El proceso solicita una operación E/S y es puesto

en una cola E/S– El proceso puede crear subprocesos y esperar por

su terminación– El proceso es removido abruptamente de la CPU

como resultado de un interrupción y puesto en la cola de espera.

Page 38: Sistemas Operativos Unidad 2

38

Representación de la Calendarización de un proceso

Page 39: Sistemas Operativos Unidad 2

39

Calendarizadores • Un proceso se mueve entre diferentes

colas de calendarización en su ciclo de vida

• Los SO deben seleccionar los procesos de esas colas de alguna manera

• La selección del proceso es llevada a cabo por el calendarizador correspondiente

Page 40: Sistemas Operativos Unidad 2

40

Calendarizadores de largo y corto plazo• Cuando existen más procesos de los que se

pueden ejecutar inmediatamente son almacenados (spool) generalmente en el disco

• El calendarizador de largo plazo o calendarizador de trabajos se encarga de seleccionar a los procesos de la cola y cargarlos a la memoria para su ejecución

• El calendarizador de corto plazo o Calendarizador de CPU selecciona entre esos procesos que están listos para su ejecución y asigna el CPU a uno de ellos.

Page 41: Sistemas Operativos Unidad 2

41

Calendarizador de Corto Plazo

• La diferencia principal entre estos calendarizadores es la frecuencia de su ejecución

• El CCP debe seleccionar un proceso nuevo para la CPU muy frecuentemente

• Un proceso se puede ejecutar durante unos pocos milisegundos antes de esperar por una petición de E/S

• Frecuentemente el CCP se ejecuta al menos una vez cada 100 ms.

Page 42: Sistemas Operativos Unidad 2

42

Calendarizador de Corto Plazo

• Debido al breve tiempo entre ejecuciones, el CCP debe ser muy rápido

• Por ej. Si le toma 10 milisegs. Decidir que proceso ejecutar durante 100 milisegs. Entonces– 10/(100+10)= 9% del CPU es desperdiciado

para decidir que proceso se ejecutará.

Page 43: Sistemas Operativos Unidad 2

43

Calendarizadores de largo plazo

• El CLP se ejecuta con mucha menor frecuencia que CCP

• Pueden pasar minutos para la creación de un nuevo proceso

• El CLP controla el grado de multiprogramación (número de procesos en memoria)

• Si el grado de multiprogramación es estable entonces la tasa promedio de creación de procesos es igual al promedio de procesos que dejan el sistema

Page 44: Sistemas Operativos Unidad 2

44

C.L.P.• Entonces el CLP se necesita invocar solamente

cuando un proceso deja el sistema

• El CLP puede permitirse tomar más tiempo para seleccionar un proceso para su ejecución.

• El CLP debe hacer una selección mucho más cuidadosa

• En general la mayoría de los procesos pueden describirse como destinado a E/S o destinado a CPU

Page 45: Sistemas Operativos Unidad 2

45

C.L.P.• Un proceso E/S pasa la mayor parte de su

tiempo haciendo operaciones de E/S más que de cómputo

• Un proceso CPU genera muy pocas peticiones de E/S, utilizando la mayor parte de su tiempo haciendo operaciones de cómputo

• El CLP debe seleccionar una buena mezcla de procesos de E/S y CPU – Si todos los procesos son E/S entonces la cola de

procesos listos estará vacía casi todo el tiempo– Si todos los procesos son CPU entonces las colas de

dispositivos estarán vacías

Page 46: Sistemas Operativos Unidad 2

46

El calendarizador de mediano plazo

• Algunos SO pueden introducir un nivel intermedio de calendarización: CMP

• El CMP remueve procesos de la memoria y por lo tanto reduce el grado de multiprogramación

• Tiempo después el proceso puede ser introducido de nuevo a la memoria y su ejecución continúa donde se quedó. Intercambio (Swapping)

• El proceso es swapped out y después swappped in por el CMP.

Page 47: Sistemas Operativos Unidad 2

47

Calendarización de la CPU• La calendarización de la CPU es la base de los

SO multiprogramados

• El objetivo de la multiprogramación es tener algún proceso, para ejecutar todo el tiempo

• La idea es simple, en el momento que un proceso necesite de una operación de E/S, el procesador en lugar de esperar a que termine dicha operación, se asigna a otro proceso cargado en memoria

Page 48: Sistemas Operativos Unidad 2

48

Ciclo de ráfagas CPU-E/S• El éxito de la calendarización de la CPU

depende de la siguiente propiedad de los procesos– La ejecución de los procesos consiste de un ciclo de

ejecución de CPU y espera de E/S

• Los procesos alternan entre estos dos estados

• La ejecución de los procesos comienza con un período de CPU, seguido de un período de E/S

Page 49: Sistemas Operativos Unidad 2

49

Secuencia alternada entre CPU y E/S

Page 50: Sistemas Operativos Unidad 2

50

Ciclo CPU-E/S• ¿Cuánto dura un periodo de CPU?

• Un programa destinado a E/S típicamente tiene muchos periodos cortos de CPU

• Un programa destinado a CPU puede tener unos pocos periodos largos de CPU

Page 51: Sistemas Operativos Unidad 2

51

Histograma de períodos de CPU

Page 52: Sistemas Operativos Unidad 2

52

Calendarizador de CPU• Cuando el CPU está ocioso, el SO debe

seleccionar a uno de los procesos que están en la cola de procesos listos

• Tarea realizada por el calendarizador de corto plazo (Calendarizador de CPU)

• La cola de procesos listo no tiene que ser FIFO, además puede ser:– Cola de prioridad– Un árbol– O una simple desordenada lista ligada

Page 53: Sistemas Operativos Unidad 2

53

Calendarización

• Las decisiones de calendarización se basan en 4 circunstancias1.Cuando un proceso cambia del estado de ejecución al

estado de espera (ej, petición de E/S)

2.Cuando un proceso cambia del estado de ejecución al estado listo (ej, ocurre un interrupción)

3.Cuando un proceso cambia del estado de espera al estado listo (terminó operación E/S)

4.Cuando un proceso termina

Page 54: Sistemas Operativos Unidad 2

54

Calendarización “no preemptive”• En los casos 1 y 4 se dice que el esquema de

calendarización es no preemptive (sin derecho preferente), en realidad no hay opción en término de la calendarización

• En los casos 2 y 3 se dice que es una calendarización preemptive (preferente)

• En la calendarización no preemptive, una vez que el CPU se ha asignado a un proceso, el proceso mantiene el CPU hasta que lo libera – Porque termina– O por cambiar al estado de espera

Page 55: Sistemas Operativos Unidad 2

55

Calendarización preemptive

• La calendarización preferente tiene que establecer un mecanismo que aseguren que la información no sea afectada en el cambio entre procesos.

Page 56: Sistemas Operativos Unidad 2

56

Despachador (Dispatcher )

• El despachador es el módulo que da el control de la CPU al proceso seleccionado por el calendarizador de CPU

• Su función implica– Cambio de contexto– Cambio a modo usuario– Regreso al lugar apropiado en el programa de usuario para

continuar su ejecución

• El despachador debe ser muy rápido dado que se invoca durante cada cambio de proceso

• El tiempo que le toma al despachador detener un proceso e iniciar el otro es llamado tiempo de latencia del despachador

Page 57: Sistemas Operativos Unidad 2

57

Algoritmos de planificación

Page 58: Sistemas Operativos Unidad 2

58

Criterios de calendarización• Cada algoritmo de calendarización tiene

sus propiedades y pueden beneficiar a una u otra clase de procesos

• Algunos criterios que son considerados para comparar y evaluar a los algoritmos de calendarización son:– Utilización de la CPU– Eficiencia – Tiempo total de proceso– Tiempo de espera– Tiempo de respuesta

Page 59: Sistemas Operativos Unidad 2

59

Criterios para los algoritmos de Calendarización de CPU

• Utilización de la CPU– Mantener al CPU trabajando tanto como sea

posible.

• Eficiencia.– Número de procesos completados por

unidad de tiempo

• Tiempo total (turnaround time)– Para un proceso dado, cuánto se tarda en

ejecutar completamente ese proceso

Page 60: Sistemas Operativos Unidad 2

60

Criterios para los algoritmos de calendarización de CPU

• Tiempo de espera– El algoritmo de calendarización de CPU no afecta el tiempo de

espera en la cola de E/S pero sí afecta el tiempo que un proceso pasa en la cola de procesos listos.

• Tiempo de respuesta– Tiempo que tarda en comenzar a responder, es decir tiempo

que pasa desde que ocurre una petición hasta que se produce la primera respuesta

• En general, se desea maximizar la utilización de CPU y la eficiencia; mientras que se desea minimizar el tiempo total, tiempo de espera y tiempo de respuesta

Page 61: Sistemas Operativos Unidad 2

61

Primero en llegar-primero en servir (FCFS)

• El más sencillo de los algoritmos de calendarización de CPU

• El proceso que solicita primero el procesador obtiene primero el procesador

• La implementación es muy sencilla utilizando colas FIFO

• Cuando el CPU se encuentra libre toma al proceso que está a la cabeza de la cola lista

Page 62: Sistemas Operativos Unidad 2

62

Proceso Período CPU

P1 24

P2 3

P3 3

Suponga que los procesos llegan en el orden: P1 , P2 , P3.

La gráfica de Gantt es:

Tiempo de espera P1= 0; P2= 24; P3= 27

Tiempo promedio de espera: (0 + 24 + 27)/3 = 17

P1 P2 P3

24 27 300

FCFS

Page 63: Sistemas Operativos Unidad 2

63

Proceso Período CPU

P2 3

P3 3

P1 24

Suponga que los procesos llegan en el orden: P2 , P3 , P1.

La gráfica de Gantt es:

Tiempo de espera P1= 6; P2= 0; P3= 3

Tiempo promedio de espera: (6 + 0 + 3)/3 = 3

FCFS

P1P3P2

63 300

Page 64: Sistemas Operativos Unidad 2

64

FCFS• El promedio del tiempo de espera en FCFS es

generalmente no mínimo

• Varía substancialmente si los períodos de procesamiento de los procesos cambia

• ¿Qué pasa si tenemos un procesos destinado a CPU y muchos procesos destinados a E/S?

• El FCFS es un algoritmo no preemptive. Una vez que el procesos obtiene el CPU, lo mantiene hasta que termina o necesita E/S

Page 65: Sistemas Operativos Unidad 2

65

Primero el trabajo más corto (SJF)

• Este algoritmo establece asociaciones entre las ráfagas de CPU y los tiempos de ejecución de los procesos

• Cuando el CPU está disponible es asignado al proceso que tiene la siguiente ráfaga más pequeña

• Si dos procesos tienen la misma, más corta, longitud de ráfaga entonces se utiliza FCFS para escoger a uno

• En realidad se escogen los procesos por su longitud de ráfaga de CPU, no por su tiempo total

Page 66: Sistemas Operativos Unidad 2

66

Ejemplo 1 (No preemptive)

• Process Burst Time

P1 6

P2 8

P3 7

P4 3

• El tiempo de espera 3 miliseg para el p1, 16 ms para p2, 9 ms para p3 y 0 para p4

• El tiempo promedio de espera es (3+16+9+0)/4= 7 ms

93 240

P4 P1 P3 P2

16

Page 67: Sistemas Operativos Unidad 2

67

Ejemplo 2 (no preemptive)

• Process Arrival Time Burst Time

P1 0 7

P2 2 4

P3 4 1

P4 5 4

• SJF (no-preemptive)• Average waiting time = (0 + 6 + 3 + 7)/4 = 4

P1 P3 P2

73 160

P4

8 12

Page 68: Sistemas Operativos Unidad 2

68

Variantes de SJF

• Maneja dos esquemas: – No preemptive. Una vez que el CPU es asignado al

proceso no puede ser retirado hasta que se completa su ráfaga de CPU.

– Preemptive. Si un nuevo proceso llega con una longitud de ráfaga de CPU menor que el tiempo de CPU restante del actual proceso en ejecución, entonces lo “saca” del CPU (preempt). Este esquema es conocido como Shortest-Remaining-Time-First (SRTF).

• SJF es óptimo, ya que da el tiempo promedio de espera mínimo para un conjunto dado de procesos

Page 69: Sistemas Operativos Unidad 2

69

Ejemplo 3 (Preemptive)

Process Arrival Time Burst TimeP1 0.0 7P2 2.0 4P3 4.0 1P4 5.0 4

• SJF (preemptive)

• Average waiting time = (9 + 1 + 0 +2)/4 = 3

P1 P3P2

42 110

P4

5 7

P2 P1

16

Page 70: Sistemas Operativos Unidad 2

70

Calendarización por prioridad

• El algoritmo SJF es un caso particular del algoritmo general de calendarización por prioridad

• En este algoritmo, se asocia a cada proceso una prioridad y se asigna la CPU al proceso con la prioridad más alta

• Proceso que tienen la misma prioridad son escogidos con FCFS

• El esquema utilizado para representar la prioridad varía de un sistema a otro.

Page 71: Sistemas Operativos Unidad 2

71

Ejemplo • Process Burst Time Prioridad

P1 10 3

P2 1 1

P3 2 4

P4 1 5

P5 5 2

• El tiempo promedio de espera es 8.2 msegs

61 180

P2 P5 P1 P3

16

P4

19

Page 72: Sistemas Operativos Unidad 2

72

Calendarización por prioridad

• Las prioridades pueden ser definidas interna o externamente.

• La definición interna de prioridades se basa en tiempos límites, requerimiento de memoria, tasa promedio de ráfagas

• Las prioridades externas se establecen mediante criterios que son externos al S.O., tales como la importancia del proceso, tipos y fondos pagados para el uso de la computadora, etc.

Page 73: Sistemas Operativos Unidad 2

73

Calendarización por prioridad

• Este tipo de calendarización también puede ser preferente o no preferente.

• Cuando un proceso llega a la cola de procesos listos, se compara su prioridad con la prioridad del proceso que está actualmente ejecutándose

• Entonces, en un esquema preemptive, el algoritmo asignará la CPU al proceso que llega a la cola lista con una prioridad mayor que el proceso que se ejecuta.

• Un esquema no preemptive, simplemente pondrá al nuevo proceso a la cabeza de la lista de procesos listos

Page 74: Sistemas Operativos Unidad 2

74

Calendarización por prioridad

• Un problema que ocurre con los algoritmos de calendarización por prioridad es el bloqueo indefinido

• Puede darse el caso de que los procesos con prioridades bajas esperen indefinidamente por la CPU

• Una solución a este problema se llama “aging” (envejecimiento). Esta técnica consiste en incrementar gradualmente la prioridad de un proceso que ha pasado mucho tiempo en el sistema

Page 75: Sistemas Operativos Unidad 2

75

Calendarización por Round-Robin

• Este algoritmo está diseñado especialmente para sistemas de tiempo compartido

• Funciona de manera similar a FCFS, sin embargo sigue el esquema de derecho preferente.

• Se agrega una unidad de tiempo, llamada “time quantum”. Generalmente un quantum es de 10 a 100 ms

• La cola de procesos listos es tratada como una cola circular, el calendarizador recorre la cola asignando la CPU a cada proceso hasta por 1 intervalo de un time quantum

Page 76: Sistemas Operativos Unidad 2

76

Calendarización por Round-Robin

• Para implementar RR se maneja la cola de procesos listos como una cola FIFO

• Los procesos nuevos son agregados al final de la cola. Entonces el calendarizador de CPU toma al primer proceso estable un temporizador para interrumpir hasta un time quantum después. Enseguida despacha al proceso

• Pueden ocurrir una de dos situaciones– El proceso puede tener un tiempo de ráfaga de CPU menor

que el time quantum– El tiempo de ráfaga de CPU del proceso es mayor que el

tiempo del quantum

Page 77: Sistemas Operativos Unidad 2

77

Calendarización por Round-Robin

• En el primer caso, el proceso libera la CPU voluntariamente– Entonces el calendarizador procederá con el siguiente proceso

en la cola de procesos listos

• En el segundo caso, se agotará el tiempo del quantum y causará una interrupción al S.O.

• Esto causará un cambio de contexto y el proceso es puesto al final de la cola de procesos listos

• Entonces el calendarizador toma el siguiente proceso a la cabeza de la cola de procesos listos

Page 78: Sistemas Operativos Unidad 2

78

Ejemplo RR con quantum de 4 ms

• Process Burst TimeP1 24P2 3P3 3

• El tiempo promedio de espera es 17/3= 5.66 msegundos

• En RR ningún proceso tiene a la CPU por más del time quantum

4 300

P1 P2 P1 P1

26

P3 P1

7 10 14 18 22

P1 P1

Page 79: Sistemas Operativos Unidad 2

79

RR• Si existen n procesos en la cola lista y el tiempo

de quantum es q entonces cada proceso tiene 1/n del tiempo de CPU en lapsos de a lo más q unidades de tiempo a la vez. Ningún proceso espera más de (n-1)q unidades de tiempo.

• Rendimiento– q grandes FIFO– q pequeñas q debe ser grande respecto al tiempo

de cambio de contexto, de otro modo la sobrecarga es alta

– Generalmente, tiene un tiempo total promedio más alto que SJF pero un mejor tiempo de respuesta

Page 80: Sistemas Operativos Unidad 2

80

RR y los cambios de contexto

Page 81: Sistemas Operativos Unidad 2

81

RR y el tiempo de total

Page 82: Sistemas Operativos Unidad 2

82

Calendarización de colas multinivel

• Otro tipo de algoritmos de calendarización se utilizan con procesos que fácilmente son clasificados en grupos– Foreground y background

• Un algoritmo de calendarización multinivel de colas particiona la cola de procesos listos en diferentes colas separadas

• Los procesos son permanentemente asignados a una cola basados en alguna propiedad de los procesos como: tamaño de memoria, prioridad de procesos, tipo de proceso

Page 83: Sistemas Operativos Unidad 2

83

Colas Multinivel• Cada cola tiene su propio algoritmo de

calendarización

• Entonces, debe existir una calendarización entre las colas, la cual es comúnmente implementada mediante la calendarización preemptive de prioridad fija

• No obstante, otra calendarización entre colas se lleva a cabo mediante la división del tiempo entre las colas, donde cada cola tiene su porción de tiempo de CPU para sus procesos

Page 84: Sistemas Operativos Unidad 2

84

C. M.

Page 85: Sistemas Operativos Unidad 2

85

Calendarización multinivel con retroalimentación

• Normalmente en los algoritmos de calendarización multinivel de colas los procesos son asignados permanentemente a una cola

• Los procesos no se mueven entre las colas

• Este esquema tiene la ventaja de tener una menor sobrecarga de calendarización– Pero tiene la desventaja de ser inflexible

Page 86: Sistemas Operativos Unidad 2

86

C. M. R. C.• Permite a los procesos moverse entre las colas

• La idea es separar a los procesos con diferentes características de ráfagas de CPU

• Si el proceso usa demasiado tiempo de CPU es movido a una cola de baja prioridad

• Este esquema deja a los procesos destinados a E/S y a los procesos interactivos (foreground) en colas de alta prioridad

• No obstante, un proceso que espera demasiado en la cola de baja prioridad puede ser movido a la cola de prioridad alta (aging)– Previene el bloqueo indefinido

Page 87: Sistemas Operativos Unidad 2

87

C. M. R. C. (ejemplo)•El calendarizador primero ejecuta todos los procesos de la cola 0

•Solamente cuando la cola 0 está vacía ejecutará los procesos en la cola 1

•De la misma manera ocurre con la cola 2, solo se ejecutarán sus procesos si las colas 0 y 1 están vacías

Page 88: Sistemas Operativos Unidad 2

88

C. M. R. C. (ejemplo)• Un proceso que llega a la cola 1 “reclama” la CPU a un

proceso de la cola 2

• Un proceso que llega a la cola 0 “reclama” la CPU a un proceso de la cola 1

• Un proceso que entra en la cola lista, es puesto en la cola 0 con un quantum de 8 ms. Si no termina en su quantum, se mueve al final de la cola 1

• Si la cola 0 está vacía, el proceso a la cabeza de la cola 1 tendrá un quantum de 16 ms. Si no termina, se “saca” y es enviado al final de la cola 2

• Los procesos de la cola 2 son calendarizados bajo un esquema FCFS, solamente cuando las colas 0 y 1 están vacías

Page 89: Sistemas Operativos Unidad 2

89

C. M. R. C.• En general, está definido por los siguientes

parámetros

– El número de colas– El tipo de calendarización de cada cola– El método utilizado para determinar cuándo cambiar

un proceso a una cola de mayor prioridad o a una de menor prioridad

– El método utilizado para determinar a qué cola entra un proceso cuando necesita servicio

Page 90: Sistemas Operativos Unidad 2

90

Ejercicio

•Los procesos llegan en el orden P1, P2, P3, P4, P5, todos en el tiempo 0.

–Dibuja 4 diagramas de Gantt ilustrando la ejecución de los procesos utilizando FCFS y SJF–Cuál es el tiempo total y el tiempo de espera de cada proceso para cada algortimo utilzado en el inciso anterior

Page 91: Sistemas Operativos Unidad 2

91

Solución

•A)

•B)

•C)

Page 92: Sistemas Operativos Unidad 2

92

Sincronización de procesos

Page 93: Sistemas Operativos Unidad 2

93

Sincronización de procesos• Un proceso cooperativo es aquel que afecta o es

afectado por otros procesos ejecutándose en el sistema

• Los procesos cooperativos suelen compartir espacios de memoria lógicos o suelen compartir información por medio de archivos

• De cualquier forma el acceso concurrente a los datos compartidos puede resultar en la inconsistencia de los datos

• Entonces, ahora estudiaremos los mecanismos utilizados para garantizar la ejecución ordenada de los procesos cooperativos que comparten espacios de direcciones

Page 94: Sistemas Operativos Unidad 2

94

Ejemplo• Supongamos que tenemos el caso de un proceso que

produce información y otro que la consume. Ambos procesos usan un buffer de tamaño N para almacenar la información producida o consumida

• Datos Compartidos#define BUFFER_SIZE 10typedef struct {

. . .} item;item buffer[BUFFER_SIZE];int in = 0;int out = 0;int counter = 0;

Page 95: Sistemas Operativos Unidad 2

95

Problema del C-P• Proceso Productor

item nextProduced;

while (1) {while (counter == BUFFER_SIZE)

; /* do nothing */buffer[in] = nextProduced;in = (in + 1) % BUFFER_SIZE;counter++;

}

• Proceso Consumidor item nextConsumed;

while (1) {while (counter == 0)

; /* do nothing */nextConsumed = buffer[out];out = (out + 1) % BUFFER_SIZE;counter--;

}

Page 96: Sistemas Operativos Unidad 2

96

Operación atómica• Las sentencias

counter++;counter--;deben ejecutarse atómicamente

• Operación Atómica significa que una operación debe ser completada sin alguna interrupción

• La sentencia “count++” puede implementarse en lenguaje máquina como sigue:

register1 = counterregister1 = register1 + 1counter = register1

Page 97: Sistemas Operativos Unidad 2

97

Problema de la concurrencia

• La sentencia “count --” puede implementarse como:register2 = counterregister2 = register2 – 1counter = register2

• Si tanto el productor como el consumidor intentan actualizar el buffer concurrentemente, las sentencias del lenguaje máquina se pueden “entrelazar”

• El entrelazado depende de cómo los procesos productor y consumidor son calendarizados

Page 98: Sistemas Operativos Unidad 2

98

Inconsistencia de datos

• Suponga que el “contador” es inicialmente 5. El entrelazado de las sentencias es:p: register1 = counter (register1 = 5)p: register1 = register1 + 1 (register1 = 6)c: register2 = counter (register2 = 5)c: register2 = register2 – 1 (register2 = 4)p: counter = register1 (counter = 6)c: counter = register2 (counter = 4)

• El valor del contador puede resultar en 4 ó 6 cuando el resultado correcto es 5.

• Condición de carrera. Cuando varios procesos acceden y manipulan datos compartidos de manera concurrente y el valor final del dato compartido depende del proceso que llega al final

• Para prevenir las condiciones de carrera, los procesos deben sincronizarse

Page 99: Sistemas Operativos Unidad 2

99

El problema de la sección crítica

• Considere n procesos {p0,p1,…pn-1} todos compitiendo por el uso de algún dato compartido

• Cada proceso tiene un segmento de código, llamado sección crítica, en el cual la información compartida es accedida

• Problema – asegurar que cuando un proceso entre en su sección crítica, ningún otro proceso puede ejecutar su sección crítica.

• Entonces, la ejecución de una sección crítica de un proceso es mutuamente exclusiva en tiempo

Page 100: Sistemas Operativos Unidad 2

100

Sección crítica• Cada proceso debe obtener un permiso

para ejecutar su sección crítica (entry)

do {entry section

critical sectionexit section

remainder section} while (1);

Page 101: Sistemas Operativos Unidad 2

101

Solución al problema de S.C.

• Cualquier solución al problema de la S.C. debe satisfacer:– Exclusión mutua. Si un proceso pi está ejecutando su S.C.

entonces ningún otro proceso puede ejecutar su sección crítica

– Progreso. Si ningún proceso está ejecutando sus S.C. y algunos procesos desean entrar a su S.C. entonces aquellos procesos que no están ejecutando sus “secciones restantes” pueden participar en la selección del proceso que entrará en sección crítica y esta selección no se puede posponer de manera indefinida

– Espera limitada. Existe un límite en el número de veces que otros procesos pueden entrar en su sección crítica, después de que un proceso ha requerido su entrada a su sección crítica y antes de que su petición se cumplida

Page 102: Sistemas Operativos Unidad 2

102

Soluciones a dos procesos• Soluciones aplicables a dos procesos P0 y P1

• Los procesos comparten una variable turn inicializada en 0 (o 1). If turn==i entonces el proceso pi puede ejecutar su sección crítica

• Algoritmo 1– Proceso Pi

do {while (turn != i) ; //solo entra s.c. si turn==icritical sectionturn = j;reminder section

} while (1);

Page 103: Sistemas Operativos Unidad 2

103

Algoritmo 1 (S.C. de 2 procesos)• Esta solución asegura que sólo un proceso entre

a su sección crítica, pero no satisface la condición de progreso

– Ya que estrictamente los procesos deben ejecutar su sección crítica de manera alternada

– Entonces, si turn==0 and P1 está listo para entrar a S.C. no lo puede hacer incluso cuando P0 pueda estar en su sección restante

Page 104: Sistemas Operativos Unidad 2

104

Algoritmo 2• Se sustituye la variable turn con el arreglo boolean flag[2]

• Los elementos del arreglo se inicializan en falso

• Si flag[i] es verdadero, indica que el proceso pi está listo para entrar en su sección crítica

• Process Pi

do {flag[i] := true;while (flag[j]) ;

critical sectionflag [i] = false;

remainder section} while (1);

• Igual se cumple la exclusión mutua pero no la condición de progreso

Page 105: Sistemas Operativos Unidad 2

105

Algoritmo 2

• Qué pasa si se ejecuta lo siguiente– T0: P0 pone flag[0] = true;

– T1: P1 pone flag[1] = true;

• Entonces P0 y P1 se ciclan de manera infinita

Page 106: Sistemas Operativos Unidad 2

106

Algoritmo 3• Los procesos comparten ahora dos variables boolean

flag[2] e int turn

• Inicialmente flag[0]=flag[1]=false y turn ya sea 0 o 1

• Process Pi

do {flag [i]:= true;turn = j;while (flag [j] and turn == j) ;

critical sectionflag [i] = false;

remainder section} while (1);

Page 107: Sistemas Operativos Unidad 2

107

Algoritmo 3• Exclusión mutua

– Pi entra en su sección crítica únicamente si flag[j]==false o turn==i

• Analizar para la casa– Segunda y tercera propiedad

Page 108: Sistemas Operativos Unidad 2

108

Algoritmo Bakery

• Solución para cuando n procesos desean entrar en sección crítica

• Un proceso que desea entrar en su sección crítica toma un número. El proceso con el número más pequeño es el que entra en sección crítica

• En caso de que dos procesos tengan el mismo número entonces el proceso con el nombre menos entra en sección crítica, entonces los nombres de los procesos deben ser únicos

Page 109: Sistemas Operativos Unidad 2

109

Semáforos

• Una herramienta que da solución al problema de la sección crítica y que se puede generalizar a problemas más complejos son los semáforos

• Un semáforo S es una variable entera que, aparte de su inicialización, es accedida sólo a través de dos operaciones atómicas wait y signalwait (S) {

while (S 0) ;S--;}

signal (S) {S++;}

Page 110: Sistemas Operativos Unidad 2

110

Semáforos • Las modificaciones al valor del semáforo en las

operaciones wait y signal deben hacerse indivisiblemente

• Esto quiere decir que cuando un proceso modifica el valor del semáforo, ningún otro proceso puede simultáneamente modificar ese valor del semáforo

• Entonces, en el caso de wait(S), la comprobación de S<=0 y su posible modificación (s--) se deben ejecutar sin interrupción

Page 111: Sistemas Operativos Unidad 2

111

Utilización de los semáforos

• Se pueden utilizar semáforos para tratar el problema de n procesos queriendo entrar en su sección crítica

• Los n procesos comparten un semáforo, mutex (mutual exclusion), inicializado a 1

• Cada proceso pi es organizado– do {

wait(mutex); critical section

signal(mutex); remainder section} while (1);

Page 112: Sistemas Operativos Unidad 2

112

Utilización de los semáforos (2)

• Se pueden utilizar los semáforos para solucionar problemas de sincronización

• Suponga que tiene dos procesos concurrentes p1 con una sentencia s1 y p2 con una sentencia s2. Además, se requiere que s2 sea ejecutada después de que s1 ha sido completada

• Se puede implementar usando el semáforo synch=0;S1;Signal(synch); //Instrucciones en P1

yWait(synch);S2; //Instrucciones en P2

Page 113: Sistemas Operativos Unidad 2

113

Implementación de los semáforos

• La principal desventaja de las soluciones de exclusión mutua y de la definición de semáforo es que requieren de una “espera ocupada”

• Mientras un proceso está en su sección crítica cualquier otro proceso que trata de entrar a su sección crítica debe entrar a un ciclo de espera.

• En un sistema de multiprogramación este esquema es muy problemático, ya que es un sólo procesador que es compartido entre todos los procesos

• Las “esperas ocupadas” desperdician ciclos de CPU que algún otro proceso podría utilizar productivamente

Page 114: Sistemas Operativos Unidad 2

114

Semáforos• Spinlock

– A este tipo de semáforo se le conoce como spinlock• Son útiles en sistemas multiprocesamiento

• La ventaja del spinlock es que no necesita del “cambio de contexto” por lo que reduce considerablemente el tiempo de cambio ente proceso y proceso

• Para sobrellevar la necesidad de la espera ocupada, se redefinen las operaciones wait y signal del semáforo– Cuando un proceso ejecuta la operación wait y

encuentra que el valor del semáforo es no positivo, entonces debe esperar. Sin embargo, su espera no es una espera ocupada, sino más bien un bloqueo

Page 115: Sistemas Operativos Unidad 2

115

Semáforos• La operación de bloqueo pone al proceso en

una cola de espera asociada al semáforo

• El estado del proceso es cambiado al estado de espera– Entonces el control de transferido al calendarizador

de CPU, quien selecciona al siguiente proceso para ejecutar

• Un proceso que es bloqueado, esperando en un semáforo S, debe ser reiniciado cuando otro proceso ejecuta una operación signal

Page 116: Sistemas Operativos Unidad 2

116

Semáforos• Esta reinicialización se lleva a cabo mediante la

operación wakeup, la cual cambia el estado del proceso de espera al estado listo.– Entonces el proceso es puesto en la cola de procesos

listos

• Para implementar esta definición de semáforo se utiliza:

typedef struct { int value; struct process *L;} semaphore;

Page 117: Sistemas Operativos Unidad 2

117

Semáforos• Cuando un proceso debe esperar en un semáforo, se agrega a la

lista de procesos

• Una operación signal remueve un proceso de la lista de procesos en espera y lo pone es la cola de procesos listos

void wait(semaphore S):S.value--;if (S.value < 0) {

add this process to S.L;block();

}

void signal(semaphore S): S.value++;if (S.value <= 0) {

remove a process P from S.L;wakeup(P);

}

Page 118: Sistemas Operativos Unidad 2

118

Implementación de los semáforos

• Si el valor del semáforo es negativo, su magnitud es el número de procesos esperando en la cola de ese semáforo

• El aspecto crítico de los semáforos es que se ejecutan atómicamente– Se debe garantizar que dos procesos no pueden

ejecutar las operaciones wait y signal en el mismo semáforo al mismo tiempo

– De nuevo el problema de la sección crítica• Un solo procesador• Más de un procesador

Page 119: Sistemas Operativos Unidad 2

119

Implementación de los semáforos

• En un sistema de un solo procesador– Se inhiben las interrupciones durante el tiempo

que las operaciones wait y signal son ejecutadas

• En un sistema de multiprocesadores– No funciona la inhibición de las interrupciones– Entonces se utilizan soluciones provistas por el

hardware o software

Page 120: Sistemas Operativos Unidad 2

120

IPC

• Sistema de pase de mensajes– La función del sistema de mensajes es permitir a los

procesos comunicarse y sincronizarse sin la utilización de la memoria compartida

– En SO de microkernel, los servicios de pase de mensajes están a nivel de procesos de usuario

• send (mensaje) receive (mensaje)

– Los mensajes pueden ser de longitud fija o variable• Longitud fija - Sistema sencillo – programación difícil• Longitud variable - Sistema complejo – programación

sencilla

Page 121: Sistemas Operativos Unidad 2

121

Sistema de pase de mensaje

• Si dos procesos quieren comunicarse, deben enviarse mensajes por medio de un enlace de comunicación (lógico)

• Existen diferentes métodos para implementar el enlace de comunicación así como las operaciones de enviar y recibir– Comunicación directa o indirecta– Comunicación simétrica o asimétrica– Buffering automático o implícito– Envío por copia o por referencia– Mensajes de tamaño fijo o variable

Page 122: Sistemas Operativos Unidad 2

122

Nombramiento (Naming)

• Los procesos que quieren comunicarse deben tener una forma de referirse uno al otro– Comunicación directa o indirecta

• Comunicación directa– Cada proceso que desea comunicarse debe

nombrar explícitamente el receptor o transmisor de la comunicación

• Send(P, msg) – envía mensaje al proceso P• Receive(Q, msg) – recibe mensaje del proceso Q

Page 123: Sistemas Operativos Unidad 2

123

Comunicación directa• Un enlace, en este esquema de comunicación, tiene las siguiente

propiedades– Un enlace se establece automáticamente entre cada par de procesos

que quieren comunicarse. – Un enlace está asociado exactamente con dos procesos– Exactamente un enlace existe entre cada par de procesos

• Utiliza direccionamiento simétrico– Tanto el que envía como el que recibe debe nombrar al otro proceso

• Existe una variante, utilizando direccionamiento asimétrico• Send(P, msg) – envía mensaje al proceso P• Receive(id, msg) – recibe mensaje de cualquier proceso

• ¿qué pasa si un proceso cambia de nombre?– Buscar en todas las definiciones de procesos.

Page 124: Sistemas Operativos Unidad 2

124

Comunicación indirecta• Los mensajes son enviados o recibidos de casillero

(buzón) o puertos

• Un casillero puede verse como un objeto en donde los procesos ponen mensajes y de donde se remueven los mensajes

• Cada casillero tiene un identificador único

• Un proceso puede comunicarse con diferentes procesos utilizando varias casillas

• Dos procesos pueden comunicarse si comparten un casillero

Page 125: Sistemas Operativos Unidad 2

125

Comunicación indirecta• En la comunicación indirecta se definen las

operaciones enviar y recibir– Send(A, msg) – Envía un mensaje al casillero A– Receive(A, msg) – Recibe un mensaje del casillero A

• El enlace lógico tiene las siguientes propiedades– Un enlace se establece si ambos procesos comparten un

casillero

– Un enlace puede estar asociado con más de dos procesos

– Un número de diferentes enlaces puede existir entre cada par de procesos comunicados, donde cada enlace corresponde a un casillero

Page 126: Sistemas Operativos Unidad 2

126

Comunicación indirecta

• Suponga que los procesos p1, p2 y p3, comparten el casillero A. p1 envía un mensaje a A, mientras que p2 y p3 ejecutan el método recibir de A. Cuál proceso obtendrá el mensaje enviado por p1?– Permitir al enlace estar asociado a lo más con dos

procesos– Permitir a lo más un proceso a la vez ejecutar la

operación recibir– Permitir al sistema seleccionar arbitrariamente cual

proceso recibirá el mensaje

Page 127: Sistemas Operativos Unidad 2

127

Comunicación indirecta• El SO o el proceso puede ser propietario de un casillero

• Si el casillero es manejado por el proceso– El casillero es parte del espacio de direcciones del proceso– Se hace distinción entre el propietario (quien solo puede recibir

mensajes por medio de este casillero) y el usuario, quien solo puede enviar mensajes al casillero

– Dado que cada casillero puede tener solo un propietario no hay confusión acerca de quién debe recibir el mensaje

– Cuando un proceso que es propietario de un casillero termina, el casillero desaparece

Page 128: Sistemas Operativos Unidad 2

128

Comunicación indirecta

• Cuando el S.O. es propietario del casillero, este es independiente y no es ligado con ningún proceso en particular

– El S.O. debe proporcionar un mecanismo que permita a los procesos.

• Crear nuevos casilleros• Enviar y recibir mensajes por medio del casillero• Borrar un casillero

– El procesos que crea un casillero, es entonces el propietario

– La propiedad y la función de recepción pueden ser pasadas a otros procesos por medio de las llamadas al sistema apropiadas

Page 129: Sistemas Operativos Unidad 2

129

Sincronización en la comunicación • La comunicación entre procesos se da por medio

de ejecución de las primitivas send y receive

• Existen diferentes formas de implementar cada primitiva de pase de mensajes– Bloqueo (síncrona)– No bloqueo (no síncrona)

• Envío bloqueante: el proceso que envía se bloquea hasta que el mensaje es recibido por el proceso receptor o por el casillero

Page 130: Sistemas Operativos Unidad 2

130

Sincronización en la comunicación

• Envío no bloqueante: El proceso transmisor envía el mensaje y continua su operación

• Recepción bloqueante: el receptor se bloquea hasta que el mensaje está disponible

• Recepción no bloqueante: el receptor recupera ya sea un mensaje válido o nulo

Page 131: Sistemas Operativos Unidad 2

131

Buffering

• Independientemente si la comunicación es directa o indirecta, los mensajes intercambiados por la comunicación entre procesos, residen en un cola temporal.

• Dicha cola puede implementarse de tres formas– Capacidad cero: la longitud máxima de la cola es

cero, entonces, el enlace no puede tener ningún mensaje esperando en él. En este caso, el transmisor se bloquea hasta que el receptor tiene el mensaje

Page 132: Sistemas Operativos Unidad 2

132

Buffering• Capacidad limitada

– La cola tiene una longitud finita N, entonces, a lo mas N mensajes pueden residir en ella.

– Si la cola no esta llena cuando un nuevo mensaje es enviado, éste es puesto en la cola y el transmisor puede continuar su ejecución sin esperar

– Como el enlace es de capacidad finita, si el enlace está lleno, el transmisor debe bloquearse hasta que se libere espacio de la cola

• Capacidad ilimitada– La cola potencialmente tiene una cola infinita, entonces

cualquier número de mensajes pueden esperar en ella. El transmisor nunca se bloquea

Page 133: Sistemas Operativos Unidad 2

133

Comunicación entre procesos en C-S

• Cliente. Proceso que solicita un servicio

• Servidor. Proceso que proporciona el servicio

• Servicio. Es una entidad abstracta que puede ser proporcionado por varios procesos servidores ejecutándose en computadoras separadas y cooperando vía red.

• Comunicación principalmente se da– Sockets– RPC (Remote procedure calls)

Page 134: Sistemas Operativos Unidad 2

134

Sockets

• Socket es un punto final de un enlace de comunicación bidireccional entre dos programas corriendo en la red

• Arquitectura Cliente-Servidor

• Cliente. Su función es conectarse a un servidor para realizar una tarea.

• Servidor. Entidad capaz de “escuchar” a los clientes e iniciar un proceso de comunicación con ellos.

Page 135: Sistemas Operativos Unidad 2

135

Sockets

Solicitud de conexión de un cliente

Conexión establecida Cliente/Servidor

Page 136: Sistemas Operativos Unidad 2

136

Remote Procedure Calls• Una de las formas más comunes de servicios

remotos es el paradigma RPC

• Dado que se trata de un ambiente en el cual los procesos se ejecutan en sistemas separados, se debe utilizar un esquema basado en mensajes para proporcionar servicios remotos

• A diferencia de IPC los mensajes intercambiados en el esquema RPC están bien estructurados y no sólo son paquetes de información

Page 137: Sistemas Operativos Unidad 2

137

RPC• Los mensajes son dirigidos a un demonio de

RPC escuchando en un puerto en el sistema remoto y contienen un identificador de la función a ejecutar con los parámetros a pasarle a la función

• Entonces la función se ejecuta y cualquier salida es enviada de vuelta al solicitante en un mensaje separado

• La semántica de RPC permite a un cliente invocar un procedimiento en un sistema remoto como si lo hiciera de manera local

Page 138: Sistemas Operativos Unidad 2

138

Monitores

• Aun cuando los semáforos proporcionan un mecanismo conveniente y eficaz para la sincronización de procesos, su uso incorrecto puede dar por resultado errores de temporización (timing) que son difíciles de detectar, ya que estos errores sólo suceden si tienen lugar secuencias de ejecución particulares, y estas secuencias no ocurren siempre.

• Los investigadores han desarrollado construcciones en lenguaje de alto nivel.

Page 139: Sistemas Operativos Unidad 2

139

Monitores• Recuerde que un tipo, o un tipo de datos

abstracto, encapsula datos privados con métodos públicos para operar sobre dichos datos.

• Un monitor presenta un conjunto de operaciones definidas por el programador que tienen provista la exclusión mutua dentro del monitor.

• El tipo monitor también contiene la declaración de variables cuyos valores definen el estado de una instancia de dicho tipo, junto con los cuerpos de procedimientos o funciones que operan sobre esas variables

Page 140: Sistemas Operativos Unidad 2

140

Regiones críticas• Estructura de sincronización de alto nivel

• Una variable compartida v de tipo T declarada como:– v: shared T

• La variable v es accedida únicamente dentro de la sentencia

region v when B do Sdonde B es una expresión boleana

• Mientras la sentencia S es ejecutada, ningún otro proceso puede acceder a la variable v.

Page 141: Sistemas Operativos Unidad 2

141

Regiones críticas• Las regiones refieren a la misma variable

compartida pero excluyéndose una a otra al mismo tiempo

• Cuando un proceso trata de ejecutar la sentencia de región, la expresión boleana B se evalúa. Si B es verdadera, la sentencia S se ejecuta. Si B es falsa el proceso espera hasta que B se hace cierta y ningún otro proceso está en una región crítica asociada a v

Page 142: Sistemas Operativos Unidad 2

142

Ejemplo buffer limitado

• Las regiones críticas se pueden utilizar de manera efectiva para resolver problemas generales de sincronización

• Problema del búffer limitadostruct buffer {

int pool[n];int count, in, out;

}

• El productor region buffer when( count < n) {

pool[in] = nextp;in:= (in+1) % n;count++;

}

Page 143: Sistemas Operativos Unidad 2

143

Ejemplo buffer limitado

• Consumidor remueve un item del buffer compartido y lo coloca en nextc

region buffer when (count > 0) {nextc = pool[out];

out = (out+1) % n;count--;

}