Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Unidad2-C7
Administracin de procesos
El SO es el responsable de:
La creacin y eliminacin de procesos del sistema y del usuario La calendarizacin de procesos Sincronizacin de procesos Comunicacin de procesos Manejo de bloqueos
Procesos
Informalmente un proceso es un programa en ejecucin
Un proceso es ms que un cdigo de programa, el cual es a veces llamado seccin de texto Tambin 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 seccin de datos la cual contiene variables globales
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 instruccin a ser ejecutada y un conjunto de recursos asignados
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 Ejecutndose: Sus instrucciones son ejecutadas Esperando: El proceso espera por la ocurrencia de algn evento Listo: El proceso espera a ser asignado al CPU Terminado: El proceso ha finalizado su ejecucin
6
Operaciones en procesos
Los procesos se pueden ejecutar concurrentemente, pueden ser creados y borrados dinmicamente
Un proceso puede crear varios procesos nuevos durante su ejecucin 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
Creacin 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
Subprocesos
Cuando un proceso padre crea subprocesos, existen dos posibilidades en trminos de la ejecucin
El padre continua su ejecucin concurrentemente con sus hijos El padre espera hasta que algunos o todos sus hijos hayan terminado
Tambin existen dos posibilidades en trminos 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
10
Terminacin de procesos
Un proceso termina cuando ejecuta su ltima instruccin 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. Tambin puede terminar un proceso por la peticin de otro proceso. Generalmente slo el proceso padre puede pedir que se terminen sus hijos.
11
Terminacin de procesos
Dentro de las razones para que un padre termine con su hijo
El hijo ha excedido el uso de algn recurso. Implica mecanismo de inspeccin La tarea asignada al hijo ya no es requerida El padre se termina o sale del sistema. Terminacin en cascada
12
Cada proceso se representa en el sistema operativo por un PCB (process control block)
13
PCB
Un PCB contiene unidades de informacin como son:
Estado de proceso: Nuevo, listo, ejecutndose, esperando, etc. Contador de programa: Indica la direccin de la siguiente instruccin a ser ejecutada Registros de CPU: Los registros varan en nmero y tipo, dependiendo de la arquitectura de la computadora. Junto con el contador de programa, la informacin de los registros debe ser guardada cada vez que se ocurra una interrupcin para permitir al proceso continuar correctamente.
14
PCB
Informacin de Calendarizacin de CPU. Incluye prioridad de proceso, apuntadores a colas de calendarizacin. Informacin de administracin de la memoria. Incluye el registro base y lmite, las tablas de pginas, tablas de segmento Informacin de conteo. Incluye la cantidad de tiempo de CPU y tiempo real utilizados, lmites de tiempo, nmero de proceso Informacin del estado de E/S. Incluye una lista de E/S de dispositivos asignados al proceso
15
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
16
17
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 nmero de registros a copiar, etc
18
Procesos cooperativos
19
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 ejecucin en el sistema
Cualquier proceso que no comparte cualquier informacin con otro es independiente
20
21
Procesos cooperativos
La ejecucin 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
Procesos cooperativos
Buffer
Provisto por el SO por medio del uso de la comunicacin entre procesos (IPC) Codificado explcitamente por la aplicacin del programador con memoria compartida
Memoria compartida
Requiere que los procesos compartan un buffer comn. El cdigo para implementar el buffer debe ser escrito explcitamente por el programador
23
Hilo de ejecucin
El modelo de proceso, hasta ahora discutido, implica que es un programa que slo posee un slo hilo de ejecucin Este nico hilo de control permite al proceso realizar slo una tarea a la vez La mayora de los SO extienden el concepto de proceso para permitirles tener mltiples hilos de ejecucin
24
Hilos
Un hilo, a veces llamado un proceso ligero (lightweight process, LWP) es una unidad bsica de utilizacin de CPU
Un hilo abarca una identificacin, un contador de programa, un conjunto de registros y una pila
25
Hilos
Comparte con otros hilos que pertenecen al mismo proceso su seccin de cdigo, seccin de datos, recursos del SO. Un proceso tradicional (heavyweight) tiene un slo hilo de control
Si un proceso tiene mltiples hilos de control puede hacer ms de una tarea al mismo tiempo
26
27
Tambin una aplicacin requiere a veces realizar varias tareas similares al mismo tiempo
Servidor web debe atender varios clientes tratando de acceder concurrentemente
Una solucin es tener un proceso simple que acepte peticiones y cuando recibe una peticin, crea un proceso separado para servir a esa peticin
28
Hilos
Si los nuevos procesos van a hacer la misma tarea, porqu agregar la sobrecarga de la creacin de procesos? Generalmente es ms eficiente para un proceso que contiene mltiples hilos servir al mismo propsito Los hilos tambin juegan un papel importante en los sistemas de llamadas a procedimientos remotos (RPC)
29
Beneficios
Los beneficios de la programacin multihilo puede ponerse en cuatro categoras: Rapidez de respuesta.
Hacer en multihilos una aplicacin 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 ms rpidas para el usuario.
30
Beneficios
Comparticin de recursos.
Por omisin, los hilos comparten la memoria y los recursos del proceso al cual pertenecen
Economa
Asignar memoria y recursos en la creacin de procesos es costoso. Dado que los hilos comparten recursos de su proceso es ms econmico crear hilos y cambiar entre contextos de hilos
31
Beneficios
Utilizacin 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 slo hilo slo puede correr en un procesador no importando cuantos estn disponibles
32
Planificacin de CPU
33
Calendarizacin de procesos
El objetivo de la multiprogramacin es tener procesos corriendo todo el tiempo para maximizar la utilizacin del CPU. El objetivo del tiempo compartido es intercambiar el CPU entre procesos de manera tan rpida que los usuarios puedan interactuar con cada programa mientras se est ejecutando.
34
Cola de calendarizacin
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 estn 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.
35
Cola de calendarizacin
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
36
Calendarizacin de un proceso Un nuevo proceso es inicialmente puesto en la cola lista. Espera en esta lista hasta que es seleccionado para su ejecucin (dispatched). Una vez que el proceso es asignado al CPU y se est ejecutando uno de los siguientes eventos ocurre:
El proceso solicita una operacin E/S y es puesto en una cola E/S El proceso puede crear subprocesos y esperar por su terminacin El proceso es removido abruptamente de la CPU como resultado de un interrupcin y puesto en la cola de espera.
37
38
Calendarizadores
Un proceso se mueve entre diferentes colas de calendarizacin en su ciclo de vida Los SO deben seleccionar los procesos de esas colas de alguna manera La seleccin del proceso es llevada a cabo por el calendarizador correspondiente
39
40
Debido al breve tiempo entre ejecuciones, el CCP debe ser muy rpido 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.
42
Si el grado de multiprogramacin es estable entonces la tasa promedio de creacin de procesos es igual al promedio de procesos que dejan el sistema
43
C.L.P.
Entonces el CLP se necesita invocar solamente cuando un proceso deja el sistema El CLP puede permitirse tomar ms tiempo para seleccionar un proceso para su ejecucin. El CLP debe hacer una seleccin mucho ms cuidadosa
En general la mayora de los procesos pueden describirse como destinado a E/S o destinado a CPU
44
C.L.P.
Un proceso E/S pasa la mayor parte de su tiempo haciendo operaciones de E/S ms que de cmputo Un proceso CPU genera muy pocas peticiones de E/S, utilizando la mayor parte de su tiempo haciendo operaciones de cmputo 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 vaca casi todo el tiempo Si todos los procesos son CPU entonces las colas de dispositivos estarn vacas
45
Tiempo despus el proceso puede ser introducido de nuevo a la memoria y su ejecucin contina donde se qued. Intercambio (Swapping) El proceso es swapped out y despus swappped in por el CMP.
46
Calendarizacin de la CPU
La calendarizacin de la CPU es la base de los SO multiprogramados El objetivo de la multiprogramacin es tener algn proceso, para ejecutar todo el tiempo La idea es simple, en el momento que un proceso necesite de una operacin de E/S, el procesador en lugar de esperar a que termine dicha operacin, se asigna a otro proceso cargado en memoria
47
Los procesos alternan entre estos dos estados La ejecucin de los procesos comienza con un perodo de CPU, seguido de un perodo de E/S
48
49
Ciclo CPU-E/S
Cunto dura un periodo de CPU?
50
51
Calendarizador de CPU
Cuando el CPU est ocioso, el SO debe seleccionar a uno de los procesos que estn 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, adems puede ser:
Cola de prioridad Un rbol O una simple desordenada lista ligada
52
Calendarizacin
Las decisiones de calendarizacin se basan en 4 circunstancias
1. Cuando un proceso cambia del estado de ejecucin al estado de espera (ej, peticin de E/S) 2. Cuando un proceso cambia del estado de ejecucin al estado listo (ej, ocurre un interrupcin) 3. Cuando un proceso cambia del estado de espera al estado listo (termin operacin E/S) 4. Cuando un proceso termina
53
Calendarizacin no preemptive
En los casos 1 y 4 se dice que el esquema de calendarizacin es no preemptive (sin derecho preferente), en realidad no hay opcin en trmino de la calendarizacin En los casos 2 y 3 se dice que es una calendarizacin preemptive (preferente) En la calendarizacin 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
54
Calendarizacin preemptive
La calendarizacin preferente tiene que establecer un mecanismo que aseguren que la informacin no sea afectada en el cambio entre procesos.
55
Despachador (Dispatcher )
El despachador es el mdulo que da el control de la CPU al proceso seleccionado por el calendarizador de CPU
Su funcin implica
Cambio de contexto Cambio a modo usuario Regreso al lugar apropiado en el programa de usuario para continuar su ejecucin
El despachador debe ser muy rpido 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
56
Algoritmos de planificacin
57
Criterios de calendarizacin
Cada algoritmo de calendarizacin 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 calendarizacin son:
Utilizacin de la CPU Eficiencia Tiempo total de proceso Tiempo de espera Tiempo de respuesta
58
Utilizacin de la CPU
Mantener al CPU trabajando tanto como sea posible.
Eficiencia.
Nmero de procesos completados por unidad de tiempo
59
Tiempo de espera
El algoritmo de calendarizacin 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 peticin hasta que se produce la primera respuesta
En general, se desea maximizar la utilizacin de CPU y la eficiencia; mientras que se desea minimizar el tiempo total, tiempo de espera y tiempo de respuesta
60
61
FCFS
Proceso Perodo CPU
P1 P2 P3
24 3 3
Suponga que los procesos llegan en el orden: P1 , P2 , P3. La grfica de Gantt es:
P1 0 24 P2 27 P3 30
Tiempo de espera P1= 0; P2= 24; P3= 27 Tiempo promedio de espera: (0 + 24 + 27)/3 = 17
62
FCFS
Proceso P2 P3 P1 Perodo CPU 3 3 24
Suponga que los procesos llegan en el orden: P2 , P3 , P1. La grfica de Gantt es:
P2 0 3 P3 6 P1 30
63
FCFS
El promedio del tiempo de espera en FCFS es generalmente no mnimo
Vara substancialmente si los perodos 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
64
Primero el trabajo ms corto (SJF) Este algoritmo establece asociaciones entre las rfagas de CPU y los tiempos de ejecucin de los procesos Cuando el CPU est disponible es asignado al proceso que tiene la siguiente rfaga ms pequea
Si dos procesos tienen la misma, ms corta, longitud de rfaga entonces se utiliza FCFS para escoger a uno En realidad se escogen los procesos por su longitud de rfaga de CPU, no por su tiempo total
65
Burst Time 6 8 7 3
P1 9 P3 16 P2 24
66
P1 0 3 7
P3 8
P2 12
P4 16
67
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 rfaga de CPU. Preemptive. Si un nuevo proceso llega con una longitud de rfaga de CPU menor que el tiempo de CPU restante del actual proceso en ejecucin, entonces lo saca del CPU (preempt). Este esquema es conocido como Shortest-RemainingTime-First (SRTF).
SJF es ptimo, ya que da el tiempo promedio de espera mnimo para un conjunto dado de procesos
68
Ejemplo 3 (Preemptive)
Process P1 P2 P3 P4 Arrival Time 0.0 2.0 4.0 5.0 Burst Time 7 4 1 4
SJF (preemptive)
P1 0 P2 P3 P2 P4 P1 11 16
69
Ejemplo
Process P1 P2 P3 P4 P5
P2 0 1
Burst Time 10 1 2 1 5
P5 6 P1
Prioridad 3 1 4 5 2
P3 16 P4 18 19
71
72
73
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
75
Calendarizacin 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 despus. Enseguida despacha al proceso Pueden ocurrir una de dos situaciones
El proceso puede tener un tiempo de rfaga de CPU menor que el time quantum El tiempo de rfaga de CPU del proceso es mayor que el tiempo del quantum
76
En el segundo caso, se agotar el tiempo del quantum y causar una interrupcin 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
77
P2 P3
7 10
P1
P1
14 18
P1
P1 22
P1
26 30
El tiempo promedio de espera es 17/3= 5.66 msegundos En RR ningn proceso tiene a la CPU por ms del time quantum
78
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 ms q unidades de tiempo a la vez. Ningn proceso espera ms de (n-1)q unidades de tiempo.
Rendimiento
q grandes FIFO q pequeas q debe ser grande respecto al tiempo de cambio de contexto, de otro modo la sobrecarga es alta Generalmente, tiene un tiempo total promedio ms alto que SJF pero un mejor tiempo de respuesta
79
80
RR y el tiempo de total
81
Otro tipo de algoritmos de calendarizacin se utilizan con procesos que fcilmente son clasificados en grupos
Foreground y background
Un algoritmo de calendarizacin 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: tamao de memoria, prioridad de procesos, tipo de proceso
82
Colas Multinivel
Cada cola tiene su propio algoritmo de calendarizacin
Entonces, debe existir una calendarizacin entre las colas, la cual es comnmente implementada mediante la calendarizacin preemptive de prioridad fija
No obstante, otra calendarizacin entre colas se lleva a cabo mediante la divisin del tiempo entre las colas, donde cada cola tiene su porcin de tiempo de CPU para sus procesos
83
C. M.
84
Normalmente en los algoritmos de calendarizacin 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 calendarizacin
Pero tiene la desventaja de ser inflexible
85
C. M. R. C.
Permite a los procesos moverse entre las colas La idea es separar a los procesos con diferentes caractersticas de rfagas 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
86
C. M. R. C. (ejemplo)
El calendarizador primero ejecuta todos los procesos de la cola 0 Solamente cuando la cola 0 est vaca ejecutar los procesos en la cola 1 De la misma manera ocurre con la cola 2, solo se ejecutarn sus procesos si las colas 0 y 1 estn vacas
87
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 vaca, 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 estn vacas
88
C. M. R. C.
En general, est definido por los siguientes parmetros
El nmero de colas El tipo de calendarizacin de cada cola El mtodo utilizado para determinar cundo cambiar un proceso a una cola de mayor prioridad o a una de menor prioridad El mtodo utilizado para determinar a qu cola entra un proceso cuando necesita servicio
89
Ejercicio
Los procesos llegan en el orden P1, P2, P3, P4, P5, todos en el tiempo 0.
Dibuja 4 diagramas de Gantt ilustrando la ejecucin de los procesos utilizando FCFS y SJF Cul es el tiempo total y el tiempo de espera de cada proceso para cada algortimo utilzado en el inciso anterior
90
Solucin
A)
B)
C)
91
Sincronizacin de procesos
92
Sincronizacin de procesos
Un proceso cooperativo es aquel que afecta o es afectado por otros procesos ejecutndose en el sistema Los procesos cooperativos suelen compartir espacios de memoria lgicos o suelen compartir informacin 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 ejecucin ordenada de los procesos cooperativos que comparten espacios de direcciones
93
Ejemplo
Supongamos que tenemos el caso de un proceso que produce informacin y otro que la consume. Ambos procesos usan un buffer de tamao N para almacenar la informacin producida o consumida Datos Compartidos
#define BUFFER_SIZE 10 typedef struct { ... } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; int counter = 0;
94
Proceso Consumidor
item nextConsumed; while (1) { while (counter == 0) ; /* do nothing */ nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; counter--; }
95
Operacin atmica
Las sentencias counter++; counter--; deben ejecutarse atmicamente Operacin Atmica significa que una operacin debe ser completada sin alguna interrupcin La sentencia count++ puede implementarse en lenguaje mquina como sigue:
Problema de la concurrencia
La sentencia count -- puede implementarse como: register2 = counter register2 = register2 1 counter = register2 Si tanto el productor como el consumidor intentan actualizar el buffer concurrentemente, las sentencias del lenguaje mquina se pueden entrelazar
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. Condicin 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
98
Seccin crtica
Cada proceso debe obtener un permiso para ejecutar su seccin crtica (entry) do {
entry section critical section exit section remainder section } while (1);
100
101
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 seccin crtica Algoritmo 1
Proceso Pi do { while (turn != i) ; //solo entra s.c. si turn==i critical section turn = j; reminder section } while (1);
102
Algoritmo 1 (S.C. de 2 procesos) Esta solucin asegura que slo un proceso entre a su seccin crtica, pero no satisface la condicin de progreso
Ya que estrictamente los procesos deben ejecutar su seccin crtica 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 seccin restante
103
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 seccin crtica Process Pi do { flag[i] := true; while (flag[j]) ; critical section flag [i] = false; remainder section } while (1); Igual se cumple la exclusin mutua pero no la condicin de progreso
104
Algoritmo 2
Qu pasa si se ejecuta lo siguiente
T0: P0 pone flag[0] = true; T1: P1 pone flag[1] = true;
105
Algoritmo 3
Los procesos comparten ahora dos variables boolean flag[2] e int turn
Algoritmo 3
Exclusin mutua
Pi entra en su seccin crtica nicamente si flag[j]==false o turn==i
107
Algoritmo Bakery
Solucin para cuando n procesos desean entrar en seccin crtica Un proceso que desea entrar en su seccin crtica toma un nmero. El proceso con el nmero ms pequeo es el que entra en seccin crtica En caso de que dos procesos tengan el mismo nmero entonces el proceso con el nombre menos entra en seccin crtica, entonces los nombres de los procesos deben ser nicos
108
Semforos
Una herramienta que da solucin al problema de la seccin crtica y que se puede generalizar a problemas ms complejos son los semforos Un semforo S es una variable entera que, aparte de su inicializacin, es accedida slo a travs de dos operaciones atmicas wait y signal
wait (S) {
while (S 0) ; S--;}
signal (S) {
S++;}
109
Semforos
Las modificaciones al valor del semforo en las operaciones wait y signal deben hacerse indivisiblemente Esto quiere decir que cuando un proceso modifica el valor del semforo, ningn otro proceso puede simultneamente modificar ese valor del semforo Entonces, en el caso de wait(S), la comprobacin de S<=0 y su posible modificacin (s--) se deben ejecutar sin interrupcin
110
111
y
Wait(synch); S2; //Instrucciones en P2
112
113
Semforos
Spinlock
A este tipo de semforo 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 semforo
Cuando un proceso ejecuta la operacin wait y encuentra que el valor del semforo es no positivo, entonces debe esperar. Sin embargo, su espera no es una espera ocupada, sino ms bien un bloqueo
114
Semforos
La operacin de bloqueo pone al proceso en una cola de espera asociada al semforo 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 semforo S, debe ser reiniciado cuando otro proceso ejecuta una operacin signal
115
Semforos
Esta reinicializacin se lleva a cabo mediante la operacin 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 definicin de semforo se utiliza: typedef struct { int value; struct process *L; } semaphore;
116
Semforos
Cuando un proceso debe esperar en un semforo, se agrega a la lista de procesos Una operacin 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); }
117
118
En un sistema de multiprocesadores
No funciona la inhibicin de las interrupciones Entonces se utilizan soluciones provistas por el hardware o software
119
IPC
Sistema de pase de mensajes
La funcin del sistema de mensajes es permitir a los procesos comunicarse y sincronizarse sin la utilizacin de la memoria compartida En SO de microkernel, los servicios de pase de mensajes estn a nivel de procesos de usuario
send (mensaje) receive (mensaje)
120
121
Nombramiento (Naming)
Los procesos que quieren comunicarse deben tener una forma de referirse uno al otro
Comunicacin directa o indirecta
Comunicacin directa
Cada proceso que desea comunicarse debe nombrar explcitamente el receptor o transmisor de la comunicacin
Send(P, msg) enva mensaje al proceso P Receive(Q, msg) recibe mensaje del proceso Q
122
Comunicacin directa
Un enlace, en este esquema de comunicacin, tiene las siguiente propiedades
Un enlace se establece automticamente 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
123
Comunicacin indirecta
Los mensajes son enviados o recibidos de casillero (buzn) 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
124
Comunicacin indirecta
En la comunicacin indirecta se definen las operaciones enviar y recibir
Send(A, msg) Enva un mensaje al casillero A Receive(A, msg) Recibe un mensaje del casillero A
125
Comunicacin indirecta
Suponga que los procesos p1, p2 y p3, comparten el casillero A. p1 enva un mensaje a A, mientras que p2 y p3 ejecutan el mtodo recibir de A. Cul proceso obtendr el mensaje enviado por p1?
Permitir al enlace estar asociado a lo ms con dos procesos Permitir a lo ms un proceso a la vez ejecutar la operacin recibir Permitir al sistema seleccionar arbitrariamente cual proceso recibir el mensaje
126
Comunicacin 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 distincin 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 confusin acerca de quin debe recibir el mensaje
Cuando un proceso que es propietario de un casillero termina, el casillero desaparece
127
Comunicacin indirecta
Cuando el S.O. es propietario del casillero, este es independiente y no es ligado con ningn 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 funcin de recepcin pueden ser pasadas a otros procesos por medio de las llamadas al sistema apropiadas
128
Sincronizacin en la comunicacin
La comunicacin entre procesos se da por medio de ejecucin de las primitivas send y receive Existen diferentes formas de implementar cada primitiva de pase de mensajes
Bloqueo No bloqueo (sncrona) (no sncrona)
Envo bloqueante: el proceso que enva se bloquea hasta que el mensaje es recibido por el proceso receptor o por el casillero
129
Sincronizacin en la comunicacin
Envo no bloqueante: El proceso transmisor enva el mensaje y continua su operacin Recepcin bloqueante: el receptor se bloquea hasta que el mensaje est disponible Recepcin no bloqueante: el receptor recupera ya sea un mensaje vlido o nulo
130
Buffering
Independientemente si la comunicacin es directa o indirecta, los mensajes intercambiados por la comunicacin entre procesos, residen en un cola temporal.
131
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 ejecucin 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 nmero de mensajes pueden esperar en ella. El transmisor nunca se bloquea
132
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 ejecutndose en computadoras separadas y cooperando va red. Comunicacin principalmente se da
Sockets RPC (Remote procedure calls)
133
Sockets
Socket es un punto final de un enlace de comunicacin bidireccional entre dos programas corriendo en la red Arquitectura Cliente-Servidor
Cliente. Su funcin es conectarse a un servidor para realizar una tarea. Servidor. Entidad capaz de escuchar a los clientes e iniciar un proceso de comunicacin con ellos.
134
Sockets
135
136
RPC
Los mensajes son dirigidos a un demonio de RPC escuchando en un puerto en el sistema remoto y contienen un identificador de la funcin a ejecutar con los parmetros a pasarle a la funcin Entonces la funcin se ejecuta y cualquier salida es enviada de vuelta al solicitante en un mensaje separado La semntica de RPC permite a un cliente invocar un procedimiento en un sistema remoto como si lo hiciera de manera local
137
Monitores
Aun cuando los semforos proporcionan un mecanismo conveniente y eficaz para la sincronizacin de procesos, su uso incorrecto puede dar por resultado errores de temporizacin (timing) que son difciles de detectar, ya que estos errores slo suceden si tienen lugar secuencias de ejecucin particulares, y estas secuencias no ocurren siempre.
Monitores
Recuerde que un tipo, o un tipo de datos abstracto, encapsula datos privados con mtodos pblicos para operar sobre dichos datos. Un monitor presenta un conjunto de operaciones definidas por el programador que tienen provista la exclusin mutua dentro del monitor. El tipo monitor tambin contiene la declaracin 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
139
Regiones crticas
Estructura de sincronizacin 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 S donde B es una expresin boleana Mientras la sentencia S es ejecutada, ningn otro proceso puede acceder a la variable v.
140
Regiones crticas
Las regiones refieren a la misma variable compartida pero excluyndose una a otra al mismo tiempo
Cuando un proceso trata de ejecutar la sentencia de regin, la expresin boleana B se evala. Si B es verdadera, la sentencia S se ejecuta. Si B es falsa el proceso espera hasta que B se hace cierta y ningn otro proceso est en una regin crtica asociada a v
141
Problema del bffer limitado struct buffer { int pool[n]; int count, in, out; }
El productor region buffer when( count < n) { pool[in] = nextp; in:= (in+1) % n; count++; }
142
143