You are on page 1of 92

Procesos

Parte(1)
Prof: Paul RIVAS Galloso

Sistemas Operativos

Procesos Temas a tratar


I. Introduccin. II. Comunicacin entre Procesos. III. Planificacin de un proceso.

Sistemas Operativos

Procesos I. Introduccin

Modelo del Proceso Multiprogramacin Contador de Programa Procesos y Programas Creacin de Procesos Estados de los Procesos El Planificador Implementacin de Procesos Tabla de Procesos Las interrupciones
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso


Un CPU puede ejecutar slo UN programa al mismo tiempo Pero una computadora puede realizar varias tareas. La forma es la multiprogramacin: Ejecutar cada tarea durante intervalos de tiempo muy breves, dando la impresin de paralelismo. En realidad, luego de un segundo de tiempo, la CPU ha realizado varias tareas. => Pseudoparalelismo
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso

Proceso

D C B A

Tiempo
Slo un programa est activo en un momento dado
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso


Paralelismo verdadero: Cuando paralelismo se realiza en Hardware.
D C B A
Proceso

el

Tiempo Varios programas en un momento dado


Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso


Controlar actividades paralelas no es fcil. El concepto de proceso facilita el diseo de actividades que puedan correr en paralelo. Un proceso es un programa en ejecucin, con algunos elementos mas: apuntador de programa, variables, archivos abiertos, memoria asignada, etc. Se puede pensar que cada proceso dispone de la CPU para s mismo a fin de simplificar el concepto.
Sistemas Operativos

Procesos I. Introduccin

Modelo del Proceso Multiprogramacin Contador de Programa Procesos y Programas Creacin de Procesos Estados de los Procesos El Planificador Implementacin de Procesos Tabla de Procesos Las interrupciones
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Multiprogramacin

Es la capacidad del CPU de ejecutar varios procesos secuencialmente, pero alternando rpidamente entre ellos debido a los requerimientos de E/S. En un instante dado, slo hay UN programa activo
D C B A Tiempo
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Multiprogramacin

En general para que la CPU conmute entre un proceso y otro, se basa en diversos factores: prioridad, si est esperando algn dato, tiempo ya utilizado, etc. No siempre, dos ejecuciones del mismo proceso obtendrn la misma secuencia de conmutacin. No se pueden hacer suposiciones respecto al tiempo de ejecucin de un proceso.
Sistemas Operativos

Procesos I. Introduccin

Modelo del Proceso Multiprogramacin Contador de Programa Procesos y Programas Creacin de Procesos Estados de los Procesos El Planificador Implementacin de Procesos Tabla de Procesos Las interrupciones
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Contador de Programa


Un contador de programa

Cuatro contadores de programa

B
C A B C D

D
Multiprogramacin de cuatro programas

Modelo conceptual de cuatro procesos secuenciales independientes

Registro que almacena en la memoria el orden de la ejecucin del programa, adems discierne en que orden y posicin de la memoria se encuentra.
Sistemas Operativos

Procesos I. Introduccin

Modelo del Proceso Multiprogramacin Contador de Programa Procesos y Programas Creacin de Procesos Estados de los Procesos El Planificador Implementacin de Procesos Tabla de Procesos Las interrupciones
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Procesos y Programas


Instruccin: Informacin necesaria para realizar lo que desea el computador. Programa: Secuencia de instrucciones ordenadas correctamente para realizar alguna accin especifica. Para que el programa se ejecute, se debe crear un programa para el. Procesos: Actividad de algn tipo, que comprende cdigo de programa, datos de entrada, salida, atributos.
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Procesos y Programas


El S.O. requiere conocer los elementos anteriores para poder administrar los procesos. Proceso: Entidad Activa cuyo estado es dinmico. Distinguir entre Proceso (concepto dinmico) y Programa (concepto esttico).

Sistemas Operativos

Procesos I. Introduccin

Modelo del Proceso Multiprogramacin Contador de Programa Procesos y Programas Creacin de Procesos Estados de los Procesos El Planificador Implementacin de Procesos Tabla de Procesos Las interrupciones
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Creacin de Procesos


El S.O. debe permitir crear nuevos procesos y destruirlos cuando sea necesario. Ej: Cuando desde una lnea de comandos (shell) se llama a un programa (como: edit), el S.O. crea un nuevo proceso, Detalle: Quin origin la creacin del nuevo proceso? ... Otro proceso, que ya exista y estaba en ejecucin (en este caso, es el shell). Al proceso creador se le llama padre, al nuevo se le llama hijo.
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Creacin de Procesos

UNIX crea a los procesos a travs de una llamada al sistema fork(). Los procesos continan su ejecucin en la instruccin que esta despus del fork.
x=1 fork() print X

fork() == 0 Hijo fork() > 0 Padre

Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Creacin de Procesos

Se pueden formar cadenas o rboles de procesos.


1 Cadena de procesos 2
for (i=1; i<4; i++) if (hijo = fork() ) break;

3
4
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Creacin de Procesos


1 2 3 rbol de procesos 6
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Creacin de Procesos


Cada proceso tiene un padre, pero cero, uno o ms hijos. La excepcin es el proceso inicial del S.O., el cual es ejecutado cuando se arranca el computador. Este es el proceso padre de todos los dems procesos. Es el proceso #1. Es la cabeza del rbol. El S.O. se basa en esta jerarqua para la ejecucin de todos los procesos (de usuario y del S.O.)
Sistemas Operativos

Procesos I. Introduccin

Modelo del Proceso Multiprogramacin Contador de Programa Procesos y Programas Creacin de Procesos Estados de los Procesos El Planificador Implementacin de Procesos Tabla de Procesos Las interrupciones
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Estados de los Procesos


Un proceso puede estar ejecutndose en el procesador o no. Es decir en uno de dos estados: Ejecucin. No Ejecucin.
Enviar

Entrar

No No ejecucin Ejecucin

Salir

Ejecucin

Pausar

Diagrama de transicin de dos estados


Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Estados de los Procesos

Algunos de los procesos en estado de no ejecucin estn listos para ejecutarse, mientras que otros estn bloqueados esperando a que termine una operacin de E/S. En ejecucin 2 1 3

Bloqueado

Listo
4
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Estados de los Procesos

En Ejecucin: Cuando est utilizando la CPU en ese instante.


En ejecucin

1
3 Bloqueado

Listo

4
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Estados de los Procesos

Listo: Cuando no est utilizando la CPU, pero es sujeto de ser elegido para hacerlo (no requiere de nada externo para hacerlo).
En ejecucin 1 3 2

Bloqueado

Listo
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Estados de los Procesos

Bloqueado: Est esperando algn evento externo; no es sujeto de ser elegido para utilizar la CPU hasta que esto suceda.
En ejecucin 1 3 Bloqueado 4 2

Listo
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Estados de los Procesos

Transiciones

1: El proceso que estaba en ejecucin no puede seguir hasta que ocurra algn evento externo; se bloquea.
1
Bloqueado En ejecucin 3 4 Listo
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Estados de los Procesos

Transiciones 2: El proceso se suspende para dar paso a otro, aunque est listo para volver a ser elegido (venci su turno).
En ejecucin 1 2

3
Bloqueado 4 Listo
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Estados de los Procesos

Transiciones 3: El proceso ha sido elegido para ejecutarse de entre los que estaban en espera.
En ejecucin 1 3 Bloqueado Listo 4
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Estados de los Procesos

Transiciones 4: El proceso ha recibido el evento externo que esperaba; est disponible para ser elegido para ejecucin.
En ejecucin 1 2

3
Bloqueado 4 Listo
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Estados de los Procesos

La transicin 1 suele ser hecha automticamente pero algunos S.O. pueden requerir que el programa lo informe.
En ejecucin 1 2

3
Bloqueado 4 Listo
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Estados de los Procesos

La 2 la realiza el S.O. cuando decide que un proceso ya ha sido ejecutado suficiente tiempo.
En ejecucin 1 3 Bloqueado Listo

4
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Estados de los Procesos

La 3 la realiza el S.O. cuando decide que el proceso debe volver a ejecutarse (todos los dems agotaron su tiempo).
1 Bloqueado

En ejecucin
3 4

Listo
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Estados de los Procesos

La parte del S.O. que toma estas decisiones (2 y 3) se denomina Planificador.


En ejecucin 1 3

Bloqueado

Listo 4
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso Estados de los Procesos

Los algoritmos del planificador son vitales. Buscan equilibrar las demandas de cada proceso y a la vez lograr el uso mas eficiente del sistema.
En ejecucin 1 3 2

Bloqueado

Listo
4
Sistemas Operativos

Procesos I. Introduccin

Modelo del Proceso Multiprogramacin Contador de Programa Procesos y Programas Creacin de Procesos Estados de los Procesos El Planificador Implementacin de Procesos Tabla de Procesos Las interrupciones
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso El Planificador


Todo el tiempo, el S.O. est corriendo procesos. Algunos son procesos del usuario y otros del mismo S.O. (manejo de discos, puertos serie, etc). Un proceso siempre est en algn estado: listo, en ejecucin o bloqueado. El planificador selecciona el proceso a poner o sacar del estado de en ejecucin en base a un algoritmo.
Sistemas Operativos

Procesos I. Introduccin Modelo del Proceso El Planificador


El planificador, generalmente, se hace cargo de las interrupciones, interpretndolas adecuadamente para desbloquear a un proceso. Asimismo, maneja la comunicacin entre procesos (Ej: proceso del usuario solicita al proceso servidor de archivos que cree un directorio).

Sistemas Operativos

Procesos I. Introduccin

Modelo del Proceso Multiprogramacin Contador de Programa Procesos y Programas Creacin de Procesos Estados de los Procesos El Planificador Implementacin de Procesos Tabla de Procesos Las interrupciones
Sistemas Operativos

Procesos I. Introduccin Implementacin de Procesos


Cmo el S.O. implementa los conceptos antes vistos? Mantiene una tabla de procesos, donde cada registro es un proceso, y con l se encuentra toda la informacin necesaria acerca del proceso: Estado del Proceso - Contador de Programa Puntero al Stack (pila) - Asignacin de memoria Archivos Abiertos - Etc. Esta informacin permite reiniciarlo posteriormente, cuando se cambia de procesos en ejecucin.
Sistemas Operativos

Procesos I. Introduccin

Modelo del Proceso Multiprogramacin Contador de Programa Procesos y Programas Creacin de Procesos Estados de los Procesos El Planificador Implementacin de Procesos Tabla de Procesos Las interrupciones
Sistemas Operativos

Procesos I. Introduccin Implementacin de Procesos Tabla de Procesos


Otros datos (depende del S.O.): Hora de inicio del proceso Tiempo de CPU utilizado Hora de la siguiente alarma # ID del Proceso # ID del Proceso padre Los datos contenidos en la tabla de procesos son distintos en cada sistema operativo.

Sistemas Operativos

Procesos I. Introduccin

Modelo del Proceso Multiprogramacin Contador de Programa Procesos y Programas Creacin de Procesos Estados de los Procesos El Planificador Implementacin de Procesos Tabla de Procesos Las interrupciones
Sistemas Operativos

Procesos I. Introduccin Implementacin de Procesos Las Interrupciones

Todo dispositivo de E/S de un computador suele estar en capacidad de generar una seal de interrupcin al CPU. Esta seal se genera cuando el dispositivo tiene algo que decirle al CPU: Lleg un byte por el puerto serie, Se termin de leer un bloque de datos del disco duro, Se presion una tecla, etc. Cuando esto ocurre, el CPU debe dejar lo que est haciendo para prestar atencin a la seal recibida. Operativos Sistemas

Procesos I. Introduccin Implementacin de Procesos Las Interrupciones


El primer paso es ejecutar el procedimiento adecuado para manejar la interrupcin. En los procesadores Intel x86, existe una tabla donde se almacena la direccin de memoria del procedimiento a ejecutar para cada posible seal de interrupcin que el CPU est en capacidad de recibir. Es la tabla de vectores de interrupcin El CPU automticamente empezar a ejecutar el programa correspondiente segn la tabla. Este comportamiento est determinado por el Hardware, y no por el S.O.
Sistemas Operativos

Procesos I. Introduccin Implementacin de Procesos Las Interrupciones


Sin embargo, dicho programa es en realidad una rutina del Sistema Operativo. Esta rutina toma el control, y: Primero, guarda en en la tabla de procesos toda la informacin respecto al proceso que fue interrumpido, a fin de que puede reiniciarse posteriormente. Segundo, realiza lo necesario para atender al dispositivo de hardware que gener la interrupcin (leer el byte del puerto serie, leer la tecla, etc.) Una vez finalizado (debe ser breve), pasa el control al planificador.
Sistemas Operativos

Procesos I. Introduccin Implementacin de Procesos Las Interrupciones


Proceso P0 Interrupcin Sistema Operativo Proceso P1
Guarda estado en BCP Rutina de atencin interr + Planificador Recupera estado de BCP

Interrupcin
Guarda estado en BCP Rutina de atencin interr + Planificador Recupera estado de BCP

Modo Usuario

Modo Usuario
Sistemas Operativos

Procesos I. Introduccin Implementacin de Procesos Las Interrupciones

El planificador decide quin debe seguir en la ejecucin: El mismo proceso que fue interrumpido, Otro proceso que estaba esperando el evento que acaba de ocurrir, Un tercer proceso que tiene mas prioridad, etc. De la tabla de procesos se obtiene la informacin necesaria para que el proceso elegido se reinicie. El CPU reinicia la ejecucin del proceso elegido.
Sistemas Operativos

Procesos I. Introduccin Implementacin de Procesos Las Interrupciones


Finalmente, las interrupciones constituyen un mecanismo del Hardware, en el que el S.O. se apoya para lograr una efectiva conmutacin de procesos. Es pues, un elemento para la implementacin del modelo del proceso planteado.

Sistemas Operativos

En la Prctica ...

Windows 3.11, a diferencia de Windows 95, es un S.O. Non-Preemptive, que significa que no interrumpa por la fuerza a un proceso para cambiarlo de estado cuando su turno venca. En cambio, el proceso era responsable de avisarle al S.O. que estaba dispuesto a ceder el turno si es que el S.O. as lo consideraba necesario. Luego, un proceso que no siguiera est regla, podra quedarse con el control del CPU eternamente.
Sistemas Operativos

En la Prctica ...

Efectivamente, esto suceda con muchos programas, y el efecto percibido por el usuario era que el sistema se haba colgado. En cambio, Win95 es un S.O. Preemptive: Cuando venza el turno, asignar otro proceso en ejecucin sin discutir. UNIX es un S.O. Preemptive. DOS.... ? Una interrupcin clave para lograrlo, es la del Reloj. Por qu?
Sistemas Operativos

En la Prctica ...
Podra

hacerse del DOS un S.O. multitarea? Que sera necesario para lograrlo?

Sistemas Operativos

Procesos Temas a tratar


I. II. III.

Introduccin. Comunicacin entre Procesos. Planificacin de un proceso.

Sistemas Operativos

Procesos II. Comunicacin entre Procesos


Condiciones de Concurso Secciones Crticas Exclusin Mutua con Espera Ocupada Sleep y Wakeup (Bloqueo y Desbloqueo) Semforos

Sistemas Operativos

Procesos II. Comunicacin entre Procesos Condiciones de Concurso

Multiprogramacin => varios procesos en ejecucin (pseudoparalelismo) => requieren recursos comunes (como la impresora). Ej: Slots de un spooler. Ej: DLLs de Windows. Condicin de Concurso: Se da al haber acceso al mismo tiempo de varios procesos al mismo recursos; y los resultados dependen del orden en que accedieron. No es una situacin aceptable (resultado indeterminado).
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Condiciones de Concurso


Directorio Spooler para Impresin

...........

5
Proceso 1 Proceso 2

Notas.xls Proyecto.doc

Estos dos procesos compiten por el mismo acceso.

6 7 8 9

Salida=5
Ingreso=7
...........

lpd

Dos procesos compiten por escribir el nombre del archivo en el Directorio Spooler
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Condiciones de Concurso


COUNTER = 1

a)

R1

COUNTER R1 + 1 R1

b)
c)

R1
COUNTER

1) 2)

a1, b1, c1, a2, b2, c2 a1, b1, a2, b2, c2, c1
Sistemas Operativos

Procesos II. Comunicacin entre Procesos


Condiciones de Concurso Secciones Crticas Exclusin Mutua con Espera Ocupada Sleep y Wakeup (Bloqueo y Desbloqueo) Semforos

Sistemas Operativos

Procesos II. Comunicacin entre Procesos Secciones Crticas


Como

solucionar las condiciones de concurso? Evitando que ocurran ! Exclusin Mutua: Forma de garantizar si un proceso utiliza una variable o archivo compartido, los dems procesos no pueden utilizarlo.
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Secciones Crticas

Definicin Abstracta del Problema: Un proceso realiza, o bien tareas internas que no llevan a condiciones de concurso, o bien acceso a recurso compartido, que puede generar una competencia. La parte del programa que accesa a la memoria compartida es la seccin crtica. Es en sta donde hay que concentrar las soluciones al problema. El resto del programa no nos interesa.
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Secciones Crticas


Se definen 4 reglas: Dos procesos no pueden encontrarse simultneamente en su S.C. No se pueden hacer suposiciones sobre las velocidades relativas de los procesos o el nmero de procesadores. Ningn proceso que se encuentre fuera de su seccin critica puede bloquear a otro. Ningn proceso debe esperar eternamente para ingresar a su seccin critica.
Sistemas Operativos

Procesos II. Comunicacin entre Procesos


Condiciones de Concurso Secciones Crticas Exclusin Mutua con Espera Ocupada Sleep y Wakeup (Bloqueo y Desbloqueo) Semforos

Sistemas Operativos

Procesos II. Comunicacin entre Procesos Exclusin Mutua con Espera Ocupada
Formas de Alcanzar la Exclusin Mutua: Desactivacin de Interrupciones Variables de Cierre Alternacin Estricta (turnos) Solucin de Peterson TSL Todas implican espera ocupada
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Exclusin Mutua con Espera Ocupada Desactivacin de Interrupciones

Cada proceso de usuario desactiva todas las interrupciones antes de entrar en su seccin crtica y las activa de nuevo al salir de ella. Que implicancias puede haber? El sistema se caiga. Falla con mas de una CPU Luego, puede ser vlido como herramienta para el Kernel del S.O.; pero no para procesos de usuario.
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Exclusin Mutua con Espera Ocupada Variables de Cierre

Se utiliza una variable compartida de cerradura (Vcerra). Esta variable puede tomar el valor 0 1. Si se requiere que un proceso ingrese a su seccin crtica, ste deber evaluar Vcerra de la siguiente manera: Si Vcerra = 0, entonces proceso cambiar el valor de Vcerra a 1 y ejecuta su seccin crtica (Adelante)
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Exclusin Mutua con Espera Ocupada Variables de Cierre
Si Vcerra = 1, entonces proceso (que quiere ingresar a la memoria compartida) espera hasta que Vcerra del ejecutante tenga el valor 0 para poder ejecutar su propia seccin crtica (Pare) La solucin planteada presenta el mismo problema que el directorio spooler: Dos procesos se encuentran ejecutando su seccin crtica

Sistemas Operativos

Procesos II. Comunicacin entre Procesos Exclusin Mutua con Espera Ocupada Variables de Cierre
a) b) Fallo c) d) e) lock = 1; <Seccion Critica> lock = 0;
Sistemas Operativos

while(lock) ;

Procesos II. Comunicacin entre Procesos Exclusin Mutua con Espera Ocupada Alternacin Estricta

Se usa un indicador de turno: a quin le toca. Prob: Si la ejecucin del turno de un proceso es marcadamente las larga que la del otro, el mas corto tendr que esperar a que el largo termine, aun cuando el largo no est en su seccin crtica. El proceso A es bloqueado por el proceso B que no esta dentro de su seccin critica (Regla nro. 3).
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Exclusin Mutua con Espera Ocupada Alternacin Estricta
Proceso A Proceso B While (TRUE) { while (turno == 0) ; seccin crtica ( ); turno = 0; Seccin_no_crtica ( ); }
Sistemas Operativos

While (TRUE) { while (turno == 1) ; seccin crtica ( ); turno = 1; Seccin_no_crtica ( ); }

Procesos II. Comunicacin entre Procesos Exclusin Mutua con Espera Ocupada Solucin de Peterson algoritmo...

2 puntos claves: Un proceso manifiesta su inters por el recurso Se considera caso extremo de cambio de proceso en ejecucin (la comparacin que es en realidad una constante para entornos monotarea). Es una solucin aceptable. Sigue habiendo espera ocupada. Ntese que para solucionar el problema nos apoyamos en un absurdo que puede detectarse en multitarea cuando se presenta el caso crtico.
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Exclusin Mutua con Espera Ocupada Solucin de Peterson
Int turno; Int interesado[2]; void liberar_regin(int proceso) { Interesado[proceso] = 0 } void ingresar_regin(int proceso) { int otro; otro = 1 proceso; interesado[proceso] = 1 turno = proceso; while (turno == proceso && interesado[otro] == 1) ; }
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Exclusin Mutua con Espera Ocupada TSL (Test and Set Lock)

TSL se implementa en hardware TSL: 1. Si flag==0 entonces hacer flag=1. 2. Devolver estado inicial de flag. Luego, puedo saber con certeza si estoy habilitado a acceder al recurso compartido, y a la vez s que el indicador fue activado. La operacin es atmica: TSL no puede ser interrumpida.
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Exclusin Mutua con Espera Ocupada TSL (Test and Set Lock)
int TestAndSet(int *flag) { int ValorRetorno; ValorRetorno = *flag; *flag = 1; return ValorRetorno; }
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Exclusin Mutua con Espera Ocupada TSL (Test and Set Lock)
Que efecto tendria la siguiente orden si la variable flag = 0.

var1 = TestAndSet(&flag);
Que efecto tendria la siguiente orden si la varible flag = 1. While (TestAndSet(&flag)) ;

Sistemas Operativos

Procesos II. Comunicacin entre Procesos Exclusin Mutua con Espera Ocupada TSL (Test and Set Lock)
flag = 0 a) b) c) d) e) while(TextAndSet(&flag)) ; <Seccion Critica> flag = 0; <Fin de la seccion critica>
Sistemas Operativos

Es la siguiente expresin una posible intercalacin de las instrucciones para este proceso:
a1 a2 c2 c1 d1 e1 d2 e2

Procesos II. Comunicacin entre Procesos Exclusin Mutua con Espera Ocupada Espera Ocupada

Cuando un proceso no puede entrar a su S.C. porque otro ya lo est, tendr que esperar. Siempre que se espera, se est desperdiciando CPU: el proceso sigue en el estado de ejecucin, y no se le ha pasado la posta a ningn otro proceso. Slo cuando expire su tiempo, otro proceso podr ejecutarse. Lo ideal es pues, que en vez de esperar, se bloquee y pase la posta. Pero tiene que haber forma de avisarle que despierte cuando el otro proceso salga de su S.C.
Sistemas Operativos

Procesos II. Comunicacin entre Procesos


Condiciones de Concurso Secciones Crticas Exclusin Mutua con Espera Ocupada Sleep y Wakeup (Bloqueo y Desbloqueo) Semforos

Sistemas Operativos

Procesos II. Comunicacin entre Procesos Sleep y Wakeup

Sleep( ) : Es una llamada al sistema que provoca el bloqueo de quien hizo la llamada, es decir, que sea suspendido hasta que otro proceso lo despierte. WakeUp (proceso) : Despertar al proceso indicado. Se le pasa de Bloqueado a Listo. Caso tpico:Problema del Productor / Consumidor

Sistemas Operativos

Procesos II. Comunicacin entre Procesos Sleep y Wakeup El Productos y el Consumidor


Dos procesos comparten un almacn (buffer) de tamao fijo. Uno de ellos, el PRODUCTOR coloca informacin en el almacn, mientras que el otro, el CONSUMIDOR la obtiene de l. El problema radica en que el PRODUCTOR desea colocar un nuevo elemento en el almacn, pero ste est totalmente ocupado.

Sistemas Operativos

Procesos II. Comunicacin entre Procesos Sleep y Wakeup El Productos y el Consumidor

Una posible solucin:

Para el PRODUCTOR: Irse a dormir, para ser despertado cuando el CONSUMIDOR ha eliminado uno o ms elementos. Para el CONSUMIDOR: Irse a dormir, hasta que el PRODUCTOR coloca algn elemento en el almacn y despierta.

Esta posible solucin conlleva al mismo tipo de condiciones de competencia que revisamos en el Directorio Spooler.
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Sleep y Wakeup El Productos y el Consumidor


void productor(void) { while (1) { producir_item(); #define N 100 int contador=0; void consumidor(void) { while (1) { producir_item();

if (contador == N)
sleep(); ingresar_item(); contador++;

if (!contador)
sleep(); extraer_item(); contador--;

if (contador==1)
wakeup (consumidor); } } }

if (contador==N-1)
wakeup (productor); }

Sistemas Operativos

Procesos II. Comunicacin entre Procesos


Condiciones de Concurso Secciones Crticas Exclusin Mutua con Espera Ocupada Sleep y Wakeup (Bloqueo y Desbloqueo) Semforos

Sistemas Operativos

Procesos II. Comunicacin entre Procesos Semforos

Permite solucionar el problema del PRODUCTOR y CONSUMIDOR mediante el manejo de una variable entera que cuente el nmero de despertares almacenados para su uso posterior. Un semforo puede tener un valor de 0, lo que indica que no existen despertares almacenados o bien algn valor positivo si estn pendientes uno o ms despertares
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Semforos

Los semforos tienen dos operaciones asociadas, cada una de las cuales se ejecuta en forma atmica: P(s) o Down(s): Esta operacin es una generalizacin de bloquear( ), y segn el valor de s acta. Si s = 0, proceso duerme Si s > 0, s = s -1 V(s) o Up(s): Esta operacin es una generalizacin de despertar( ), y lo que hace es incrementar el valor de s
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Semforos


void down(semaphore_t *sp) { while(*sp <= 0) bloquease; (*sp)--; void signal(semaphore_t *sp) { (*sp)++; }

Sistemas Operativos

Procesos II. Comunicacin entre Procesos Semforos

Si uno o ms procesos estn esperando ser despertados por este semforo, el sistema elige cualquiera de ellos para que el DOWN ( ) correspondiente le sea exitoso y pueda continuar en ejecucin Existen 2 tipos de semforos: Semforos contadores: Toman valores positivos mayores o iguales a 0. Son utilizados para sincronizacin de procesos. Semforos binarios: Toman valores 0 1 y se utilizan para la exclusin mutua.
Sistemas Operativos

Procesos II. Comunicacin entre Procesos Semforos


*S = 1; wait(&S)
<Seccion Critica> Que sucederia si en el ejemplo anterior S inicialmente tuviera un valor de 1? Cambiaria en algo su respuesta si se cambia el valor de S a 0.

Signal(&S)
<Fin de la seccion critica>

Sistemas Operativos

Procesos II. Comunicacin entre Procesos Semforos

Que sucederia si en el siguiente pseudocodigo los semaforos S y Q tuvieran inicialmente el valor de 1 y 0?

Proceso 1 for ( ; ; ; ) { wait(&S); a; signal(&Q); }

Proceso 2 for ( ; ; ; ) { wait(&Q); b; signal(&S); }

Sistemas Operativos

Procesos II. Comunicacin entre Procesos Semforos

Que sucederia si en el siguiente pseudocodigo los semaforos S y Q tuvieran inicialmente el valor de 0?

Proceso 1 for ( ; ; ; ) { wait(&S); a; signal(&Q); }

Proceso 2 for ( ; ; ; ) { wait(&Q); b; signal(&S); }

Sistemas Operativos

Procesos II. Comunicacin entre Procesos Semforos

Que sucederia si en el siguiente pseudocodigo los semaforos S y Q tuvieran inicialmente el valor de 1?

Proceso 1 for ( ; ; ; ) { wait(&S); a; signal(&Q); }

Proceso 2 for ( ; ; ; ) { wait(&Q); b; signal(&S); }

Sistemas Operativos

Procesos II. Comunicacin entre Procesos Semforos


#define N 100 typedef int semaphore; semaphore mutex=1 void productor(void) { int item; while (1) { void consumidor(void) { int item; while (1) {

semaphore CeldasVacias = N
semaphore CeldasLlenas = 0

producir_item(&item);
down(&celdasVacias) down(&mutex) ingresar_item(item);

down(&celdasLlenas)
down(&mutex) extraer_item(item); up(&mutex)

up(&mutex)
up(&celdasLlenas) } } }

up(&celdasVacias)
}

Sistemas Operativos

You might also like