Está en la página 1de 16

Sistemas Operativos

Administracin del Procesador

3. ADMINISTRACION DE PROCESOS
Uno de los mdulos ms importantes de un sistema operativo es la de administrar
los procesos y tareas del sistema de cmputo. En esta seccin se revisarn dos temas que
componen o conciernen a este mdulo: la planificacin del procesador y los problemas de
concurrencia.

3.1 Planificacin del procesador


La planificacin del procesador se refiere a la manera o tcnicas que se usan para
decidir cunto tiempo de ejecucin y cuando se le asignan a cada proceso del sistema.
Obviamente, si el sistema es monousuario y monotarea nohay mucho que decidir, pero en
el resto de los sistemas esto es crucial para el buen funcionamiento del sistema.

3.1.2 Niveles de planificacin


En los sistemas de planificacin generalmente se identifican tres niveles: el alto, el medio y
el bajo.

Alto a largo plazo.- Cuando este presente un planificador de este tipo, trabaja con la
cola de lotes a ejecutar, un lote esta reservado a programas de baja prioridad y de uso
intensivo de recurso. El nivel alto decide que trabajos (conjunto de procesos) son
candidatos a convertirse en procesos compitiendo por los recursos del sistema.

Medio.- Esto se da ya que los procesos suspendidos por una interrupcin de E/S no
pueden progresar hacia su terminacin, hasta que la condicin sea eliminada ,
permitiendo otra vez la alimentacin de la cola a de esperas. El nivel intermedio
decide que procesos se suspenden o reanudan para lograr ciertas metas de rendimiento.

Bajo Planificador a corto plazo.- el planificador de bajo nivel es el que decide que
proceso, de los que ya estn listos (y que en algn momento paso por los otros dos
planificadores) es al que le toca ahora estar ejecutndose en la unidad central de
procesamiento. Permite asignar al procesador el conjunto de procesos preparados
residentes en memoria, con objetivo principal de maximizar el rendimiento del sistema.

Se revisaran principalmente los planificadores de bajo nivel porque son los que finalmente
eligen al proceso en ejecucin.

3.1.3 Objetivos de la planificacin


Una estrategia de planificacin debe buscar que los procesos obtengan sus turnos de
ejecucin apropiadamente, conjuntamente con un buen rendimiento y minimizacin de la
Profesor: Ing. Mario Borja Borja

Sistemas Operativos

Administracin del Procesador

sobrecarga (overhead) del planificador mismo. En general, se buscan cinco objetivos


principales:

Justicia o Imparcialidad: Todos los procesos son tratados de la misma forma, y en


algn momento obtienen su turno de ejecucin o intervalos de tiempo de ejecucin
hasta su terminacin exitosa.

Maximizar la Produccin: El sistema debe de finalizar el mayor numero de


procesos en por unidad de tiempo.

Maximizar el Tiempo de Respuesta: Cada usuario o proceso debe observar que el


sistema les responde consistentemente a sus requerimientos.

Evitar el aplazamiento indefinido: Los procesos deben terminar en un plazo finito


de tiempo.

El sistema debe ser predecible: Ante cargas de trabajo ligeras el sistema debe
responder rpido y con cargas pesadas debe ir degradndose paulatinamente. Otro
punto de vista de esto es que si se ejecuta el mismo proceso en cargas similares de
todo el sistema, la respuesta en todos los casos debe ser similar.

3.1.4 Caractersticas a considerar de los procesos


No todos los equipos de cmputo procesan el mismo tipo de trabajos, y un algoritmo de
planificacin que en un sistema funciona excelente puede dar un rendimiento psimo en
otro cuyos procesos tienen caractersticas diferentes. Estas caractersticas pueden ser:

Cantidad de Entrada/Salida: Existen procesos que realizan una gran cantidad de


operaciones de entrada y salida (aplicaciones de bases de datos, por ejemplo).

Cantidad de Uso de CPU: Existen procesos que no realizan muchas operaciones


de entrada y salida, sino que usan intensivamente la unidad central de
procesamiento. Por ejemplo, operaciones con matrices.

Procesos de Lote o Interactivos: Un proceso de lote es ms eficiente en cuanto a la


lectura de datos, ya que generalmente lo hace de archivos, mientras que un
programa interactivo espera mucho tiempo (no es lo mismo el tiempo de lectura de
un archivo que la velocidad en que una persona teclea datos) por las respuestas de
los usuarios.

Procesos en Tiempo Real: Si los procesos deben dar respuesta en tiempo real se
requiere que tengan prioridad para los turnos de ejecucin.

Longevidad de los Procesos: Existen procesos que tipicamente requeriran varias


horas para finalizar su labor, mientras que existen otros que solonecesitan algunos
segundos.

Profesor: Ing. Mario Borja Borja

Sistemas Operativos

Administracin del Procesador

PCB. Los procesos tienen una identificacin, prioridad, memoria (donde esta su
cdigo), estado.
apuntador estado
del proceso
N del proceso
Contador del programa

En el S.O. cada proceso se


presenta por medio de su propio
bloque de control del proceso
(PCB). Un PCB es un bloque o
registro de datos.

Registros
Limite de memoria
Lista de archivos
abiertos
...................................

El PCB contiene:
Estado del proceso
Contador de programa
Registros de la CPU.
Informacin de la planificacin de la CPU. Incluye: prioridad del proceso, apuntadores
a las colas de planificacin.
Informacin de la administracin de la memoria.
Informacin contable: limites de tiempo, N de cuenta, # de proceso o trabajos, etc.
Informacin del estado de la E/S. Solicitudes de E/S pendientes, disponibilidad de E/S
asignados a este proceso, una lista de archivos abiertos, etc.

3.1.5 Ciclo de vida de un proceso en un sistema multiusuario.


CORRIDA
ACTIVO

fin
operacin:
I/O ej. Leer en fox
ESPERA

Los programas que son invocados da lugar a creacin de un proceso en estado


activo que potencialmente pueden usar la CPU, de esos procesos el administrador
selecciona uno, que pasa a estado de corrida, ac se le asigna CPU; el proceso corre un
tiempo y luego termina, pasando a un estado de xito.
Un proceso puede ser interrumpido ej. Se ejecuta un operacin de E/S.
Hay mltiples procesos que pueden estar en estado de espera, cuando la operacin de E/S
concluye el proceso es retomado, el administrador va a seleccionar el proceso que esperaba
la culminacin de E/S y lo transforma a estado activo y se repite el ciclo.

Profesor: Ing. Mario Borja Borja

Sistemas Operativos

Administracin del Procesador

A cada proceso se le asigna una porcin de tiempo para control de CPU, vencido el
tiempo el administrador lo regresa a estado activo y selecciona dentro de los que estn
activos el que toma el control de la CPU.

3.1.6 Planificacin apropiativa o no apropiativa (preemptive or not


preemptive)
La planificacin apropiativa es aquella en la cual, una vez que a un proceso le toca
su turno de ejecucin ya no puede ser suspendido, ya no se le puede arrebatar la unidad
central de procesamiento. Este esquema puede ser peligroso, ya que si el proceso contiene
accidental o deliberadamente ciclos infinitos, el resto de los procesos pueden quedar
aplazados indefinidamente. Una planificacin no apropiativa es aquella en que existe un
reloj que lanza interrupciones periodicas en las cuales el planificador toma el control y se
decide si el mismo proceso seguir ejecutndose o se le da su turno a otro proceso. Este
mismo reloj puede servir para lanzar procesos manejados por el reloj del sistema. Por
ejemplo en los sistemas UNIX existen los 'cronjobs' y 'atjobs', los cuales se programan en
base a la hora, minuto, da del mes, da de la semana y da del ao.
En una planificacin no apropiativa, un trabajo muy grande aplaza mucho a uno pequeo, y
si entra un proceso de alta prioridad ste tambin debe esperar a que termine el proceso
actual en ejecucin.

3.1.7 Asignacin del turno de ejecucin


Los algoritmos de la capa baja para asignar el turno de ejecucin se describen a
continuacin:

Por prioridad: Los procesos de mayor prioridad se ejecutan primero. Si existen


varios procesos de mayor prioridad que otros, pero entre ellos con la misma
prioridad, pueden ejecutarse estos de acuerdo a su orden de llegada o por 'round
robin'. La ventaja de este algoritmo es que es flexible en cuanto a permitir que
ciertos procesos se ejecuten primero e, incluso, por ms tiempo. Su desventaja es
que puede provocar aplazamiento indefinido en los procesos de baja prioridad. Por
ejemplo, suponga que existen procesos de prioridad 20 y procesos de prioridad 10.
Si durante todo el da terminan procesos de prioridad 20 al mismo ritmo que entran
otros con esa prioridad, el efecto es que los de prioridad 10 estarn esperando por
siempre. Tambin provoca que el sistema sea impredecible para los procesos de baja
prioridad.
Se asocia una prioridad a cada proceso y la CPU se asigna al de mayor prioridad.
Los proceso con igual prioridad se planifican en orden de FCFS.
Ejemplo: S e tiene el siguiente conjunto de procesos que llegaron en el tiempo 0
Proceso
Duracin de la rfaga
Prioridad
P1
10
3
P2
1
1
P3
2
3
P4
1
4

Profesor: Ing. Mario Borja Borja

Sistemas Operativos

Administracin del Procesador

P5

5
0

P2

2
6

P5

16

P1

18

P3

19

P4

El trabajo ms corto primero: Es dificil de llevar a cabo porque se requiere saber


o tener una estimacin de cunto tiempo necesita el proceso para terminar. Pero si
se sabe, se ejecutan primero aquellos trabajos que necesitan menos tiempo y de esta
manera se obtiene el mejor tiempo de respuesta promedio para todos los procesos.
Por ejemplo, si llegan 5 procesos A,B,C,D y E cuyos tiempos de CPU son 26, 18,
24, 12 y 4 unidades de tiempo, se observa que el orden de ejecucin ser E,D,B,C y
A (4,12,18, 24 y 26 unidades de tiempo respectivamente). En la tabla siguiente se
muestra en que unidad de tiempo comienza a ejecutarse cada proceso y como todos
comenzaron a esperar desde la unidad cero, se obtiene el tiempo promedio de
espera.
Proceso
A
B
C
D
E

Espera desde
0
0
0
0
0

Termina
4
16
34
58
84

Tiempo de Espera
4
16
34
58
84

Tiempo promedio = (4 + 16 + 34 + 58 + 84 )/5 = 39 unidades.

FCFS(First come first served) El primero en llegar, primero en ejecutarse: Este


algoritmo se implanta fcilmente con una cola de FIFO. El proceso entra a la cola
de listos, su PCB se enlaza al final de la cola de proceso listos. La ventaja de este
algoritmo es que es justo y no provoca aplazamiento indefinido. La desventaja es
que no aprovecha ninguna caracterstica de los procesos y puede no servir para un
proceso de tiempo real. Por ejemplo, el tiempo promedio de respuesta puede ser
muy malo comparado con el logrado por el del trabajo ms corto primero. Ejemplo:
si tenemos los siguientes procesos

Proceso
duracin de la rfaga
P1
24
P1
P2
P3
P2
3
0
24
27
30
P3
3
(por orden de llegada), con duraciones de rfaga en mili segundos
respectivamente, el tiempo promedio de espera sera (0+24+27)/3 = 17 milisegundos.

Round Robin: Tambin llamada por turno, consiste en darle a cada proceso un
intervalo de tiempo de ejecucin (llamado time slice Quantum), cuyo valor
generalmente oscila entre 10 y 100 milisegundos, y cada vez que se vence ese intervalo
se copia el contexto del proceso a un lugar seguro y se le da su turno a otro proceso. Los
procesos estn ordenados en una cola circular. Por ejemplo, si existen tres procesos, el
A,B y C, dos repasadas del planificador daran sus turnos a los procesos en el orden
A,B,C,A,B,C. La ventaja de este algoritmo es su simplicidad, es justo y no provoca
aplazamiento indefinido.
Sgte. Proceso
Proc. Actual

Profesor: Ing. Mario Borja Borja

Sistemas Operativos

Administracin del Procesador

Dispatcher (trabaja con listas)

Proc. Actual
Sgte. proceso
La cola de procesos listos se trata como una cola circular. El planificador de la CPU la
recorre asignando la CPU a cada proceso por un intervalo de hasta un Quantum de
tiempo.
Proceso
duracin de la rfaga
P1
P2 P3 P1
P1
P1
P1
P1
P1
24
P2
3
0
4
7
10
14
18
22
26
30
P3
3
Si el Quantum = 4 milisegundos. El tiempo de promedio de espera es 17/3 = 5.66 ms
El rendimiento del RR depende del Quantum. Si el Quantum es infinito la RR sera la
misma que la FCFS.

El tiempo restante ms corto: Es parecido al del trabajo ms corto primero, pero


aqui se est calculando en todo momento cunto tiempo le resta para terminar a
todos los procesos, incluyendo los nuevos, y aquel que le quede menos tiempo para
finalizar es escogido para ejecutarse. La ventaja es que es muy til para sistemas de
tiempo compartido porque se acerca mucho al mejor tiempo de respuesta, adems
de responder dinmicamente a la longevidad de los procesos; su desventaja es que
provoca ms sobrecarga porque el algoritmo es ms complejo.

La tasa de respuesta ms alta: Este algoritmo concede el turno de ejecucin al


proceso que produzca el valor mayor de la siguiente formula:
tiempo que ha esperado + tiempo total para terminar
valor = ___________________________________________
tiempo total para terminar.
Es decir, que dinmicamente el valor se va modificando y mejora un poco las
deficiciencias del algoritmo del trabajo ms corto primero.

Por politica: Una forma de asignar el turno de ejecucin es por politica, en la cual
se establece algn reglamento especfico que el planificador debe obedecer. Por
ejemplo, una politica podra ser que todos los procesos reciban el mismo tiempo de
uso de CPU en cualquier momento. Esto sig nifica, por ejemplo, que si existen 2
procesos y han recibido 20 unidades de tiempo cada uno (tiempo acumulado en time
slices de 5 unidades) y en este momento entra un tercer proceso, el planificador le
dara inmediatamente el turno de ejecucin por 20 unidades de tiempo. Una vez que
todos los procesos estn 'parejos' en uso de CPU, se les aplica 'round robin'.

Planificacin MLQ(Mltiple-Leel Queves)

Profesor: Ing. Mario Borja Borja

Sistemas Operativos

Administracin del Procesador

Colas de multinivel, el cual tiene la caracterstica de implementar planificaciones


complejas, es clasificar la carga de trabajo de acuerdo con sus caractersticas y
mantener colas de procesos separados servidos por diferentes planificadores.

Planificacin por mltiples colas con realimentacin


Que permite el empleo de varias colas para aumentar la efectividad y la capacidad
de adaptacin de la planificacin en forma de colas multinivel con realimentacin
Conforme los procesos entran al sistema se colocan en una cola de trabajos formada
por todos los procesos que residen en almacenamiento secundario esperando la
asignacin de la memoria principal. Los procesos que residen en la memoria
principal y que estan listos esperando su ejecucion se mantienen en una lista
llamada cola de procesos listos. Un encabezado de la cola de procesos listos
contendr apuntadores al primer u ultimo PCB de la lista. Cada PCB contiene un
campo apuntador que indica al siguiente proceso en la cola de procesos listos.
Representacin de la planificacin de procesos mediante un diagrama de colas.
Cola de procesos
listos

E/
S

UCP

Cola de E/S

Solicitud de E/S

Fin de la porcin
de tiempo.
Termina el
proceso
hijo

Profesor: Ing. Mario Borja Borja

Se ejecuta el
proceso hijo

Se crea un
proceso hijo

Ocurre un
a
Interrupci
n

En espera de una
interrupcion

Sistemas Operativos

Administracin del Procesador

3.2 Problemas de Concurrencia


En los sistemas de tiempo compartido (aquellos con varios usuarios, procesos, tareas,
trabajos que reparten el uso de CPU entre estos) se presentan muchos problemas debido a
que los procesos compiten por los recursos del sistema. Imagine que un proceso est
escribiendo en la unidad de cinta y se le termina su turno de ejecucin e inmediatamente
despus el proceso elegido para ejecutarse comienza a escribir sobre la misma cinta. El
resultado es una cinta cuyo contenido es un desastre de datos mezclados. As como la cinta,
existen una multitud de recursos cuyo acceso debe der controlado para evitar los problemas
de la concurrencia.
El sistema operativo debe ofrecer mecanismos para sincronizar la ejecucin de procesos:
semforos, envo de mensajes, 'pipes', etc. Los semforos son rutinas de software (que en su
nivel ms interno se auxilian del hardware) para lograr exclusin mutua en el uso de
recursos. Para entender este y otros mecanismos es importante entender los problemas
generales de concurrencia, los cuales se describen enseguida.

Condiciones de Carrera o Competencia: La condicin de carrera (race condition)


ocurre cuando dos o ms procesos accesan un recurso compartido sin control, de
manera que el resultado combinado de este acceso depende del orden de llegada.
Suponga, por ejemplo, que dos clientes de un banco realizan cada uno una
operacin en cajeros diferentes al mismo tiempo.
El usuario A quiere hacer un depsito. El B un retiro. El usuario A comienza la
transaccin y lee su saldo que es 1000. En ese momento pierde su turno de
ejecucin (y su saldo queda como 1000) y el usuario B inicia el retiro: lee el saldo
que es 1000, retira 200 y almacena el nuevo saldo que es 800 y termina. El turno de
ejecucin regresa al usuario A el cual hace su depsito de 100, quedando saldo =
saldo + 100 = 1000 + 100 = 1100. Como se ve, el retiro se perdi y eso le encanta al
usuario A y B, pero al banquero no le convino esta transaccin. El error pudo ser al
revs, quedando el saldo final en 800.

Postergacin o Aplazamiento Indefinido(a): Esto se mencion en el apartado


anterior y consiste en el hecho de que uno o varios procesos nunca reciban el
suficiente tiempo de ejecucin para terminar su tarea. Por ejemplo, que un proceso
ocupe un recurso y lo marque como 'ocupado' y que termine sin marcarlo como
'desocupado'. Si algn otro proceso pide ese recurso, lo ver 'ocupado' y esperar
indefinidamente a que se 'desocupe'.

Condicin de Espera Circular: Esto ocurre cuando dos o ms procesos forman


una cadena de espera que los involucra a todos. Por ejemplo, suponga que el
proceso A tiene asignado el recurso 'cinta' y el proceso B tiene asignado el recurso
'disco'. En ese momento al proceso A se le ocurre pedir el recurso 'disco' y al
proceso B el recurso 'cinta'. Ahi se forma una espera circular entre esos dos procesos
que se puede evitar quitndole a la fuerza un recurso a cualquiera de los dos
procesos.

Condicin de No Apropiacin: Esta condicin no resulta precisamente de la


concurrencia, pero juega un papel importante en este ambiente. Esta condicin

Profesor: Ing. Mario Borja Borja

Sistemas Operativos

Administracin del Procesador

especifica que si un proceso tiene asignado un recurso, dicho recurso no puede


arrebatrsele por ningn motivo, y estar disponible hasta que el proceso lo 'suelte'
por su voluntad.

Condicin de Espera Ocupada: Esta condicin consiste en que un proceso pide un


recurso que ya est asignado a otro proceso y la condicin de no apropiacin se
debe cumplir. Entonces el proceso estar gastando el resto de su time slice checando
si el recurso fue liberado. Es decir, desperdicia su tiempo de ejecucin en esperar.
La solucin ms comn a este problema consiste en que el sistema operativo se d
cuenta de esta situacin y mande a una cola de espera al proceso, otorgndole
inmediatamente el turno de ejecucin a otro proceso.

Condicin de Exclusin Mutua: Cuando un proceso usa un recurso del sistema


realiza una serie de operaciones sobre el recurso y despus lo deja de usar. A la
seccin de cdigo que usa ese recurso se le llama 'regin crtica'. La condicin de
exclusin mutua establece que solamente se permite a un proceso estar dentro de la
misma regin crtica. Esto es, que en cualquier momento solamente un proceso
puede usar un recurso a la vez. Para lograr la exclusin mutua se ideo tambin el
concepto de 'regin crtica'. Para logar la exclusin mutua generalmente se usan
algunas tcnicas para lograr entrar a la regin crtica: semforos, monitores, el
algoritmo de Dekker y Peterson, los 'candados'. Para ver una descripcin de estos
algoritmos consulte [Deitel93] [Tan92].

Condicin de Ocupar y Esperar un Recurso: Consiste en que un proceso pide un


recurso y se le asigna. Antes de soltarlo, pide otro recurso que otro proceso ya tiene
asignado.

Los problemas descritos son todos importantes para el sistema operativo, ya que debe ser
capaz de prevenir o corregirlos. Tal vez el problema ms serio que se puede presentar en un
ambiente de concurrencia es el 'abrazo mortal', tambin llamado 'trabazn' y en ingls
deadlock. El deadlock es una condicin que ningn sistema o conjunto de procesos quisiera
exhibir, ya que consiste en que se presentan al mismo tiempo cuatro condiciones
necesarias: La condicin de no apropiacin, la condicin de espera circular, la condicin de
exclusin mutua y la condicin de ocupar y esperar un recurso. Ante esto, si el deadlock
involucra a todos los procesos del sistema, el sistema ya no podr hacer algo productivo. Si
el deadlock involucra algunos procesos, stos quedarn congelados para siempre.
En el rea de la informtica, el problema del deadlock ha provocado y producido una serie
de estudios y tcnicas muy tiles, ya que ste puede surgir en una sola mquina o como
consecuencia de compartir recursos en una red.
En el rea de las bases de datos y sistemas distribuidos han surgido tcnicas como el 'two
phase locking' y el 'two phase commit' que van ms all de este trabajo. Sin embargo, el
inters principal sobre este problema se centra en generar tcnicas para detectar, prevenir o
corregir el deadlock.
Las tcnicas para prevenir el deadlock consisten en proveer mecanismos para evitar que se
presente una o varias de las cuatro condiciones necesarias del deadlock. Algunas de ellas
son:

Profesor: Ing. Mario Borja Borja

Sistemas Operativos

Administracin del Procesador

Asignar recursos en orden lineal: Esto significa que todos los recursos estn
etiquetados con un valor diferente y los procesos solo pueden hacer peticiones de
recursos 'hacia adelante'. Esto es, que si un proceso tiene el recurso con etiqueta '5'
no puede pedir recursos cuya etiqueta sea menor que '5'. Con esto se evita la
condicin de ocupar y esperar un recurso.

Asignar todo o nada: Este mecanismo consiste en que el proceso pida todos los
recursos que va a necesitar de una vez y el sistema se los da solamente si puede
drselos todos, si no, no le da nada y lo bloquea.

Algoritmo del banquero: Este algoritmo usa una tabla de recursos para saber
cuntos recursos tiene de todo tipo. Tambin requiere que los procesos informen del
mximo de recursos que va a usar de cada tipo. Cuando un proceso pide un recurso,
el algoritmo verifica si asignndole ese recurso todava le quedan otros del mismo
tipo para que alguno de los procesos en el sistema todava se le pueda dar hasta su
mximo. Si la respuesta es afirmativa, el sistema se dice que est en 'estado seguro'
y se otorga el recurso. Si la respuesta es negativa, se dice que el sistema est en
estado inseguro y se hace esperar a ese proceso.

Para detectar un deadlock, se puede usar el mismo algoritmo del banquero, que aunque no
dice que hay un deadlock, s dice cundo se est en estado inseguro que es la antesala del
deadlock. Sin embargo, para detectar el deadlock se pueden usar las 'grficas de recursos'.
En ellas se pueden usar cuadrados para indicar procesos y crculos para los recursos, y
flechas para indicar si un recurso ya est asignado a un proceso o si un proceso est
esperando un recurso. El deadlock es detectado cuando se puede hacer un viaje de ida y
vuelta desde un proceso o recurso. Por ejemplo, suponga los siguientes eventos:
evento 1: Proceso A pide recurso 1 y se le asigna.
evento 2: Proceso A termina su time slice.
evento 3: Proceso B pide recurso 2 y se le asigna.
evento 4: Proceso B termina su time slice.
evento 5: Proceso C pide recurso 3 y se le asigna.
evento 6: Proceso C pide recurso 1 y como lo est ocupando el proceso A, espera.
evento 7: Proceso B pide recurso 3 y se bloquea porque lo ocupa el proceso C.
evento 8: Proceso A pide recurso 2 y se bloquea porque lo ocupa el proceso B.
En la figura 5.1 se observa como el 'resource graph' fue evolucionando hasta que se
present el deadlock, el cual significa que se puede viajar por las flechas desde un proceso
o recurso hasta regresar al punto de partida. En el deadlock estn involucrados los procesos
A,B y C.

Profesor: Ing. Mario Borja Borja

10

Sistemas Operativos

Administracin del Procesador

Una vez que un deadlock se detecta, es obvio que el sistema est en problemas y lo nico
que resta por hacer es una de dos cosas: tener algn mecanismo de suspensin o
reanudacin [Deitel93] que permita copiar todo el contexto de un proceso incluyendo
valores de memoria y aspecto de los perifricos que est usando para reanudarlo otro da, o
simplemente eliminar un proceso o arrebatarle el recurso, causando para ese proceso la
prdida de datos y tiempo.

3.3 Sincronizacion de procesos


Cada proceso es una entidad independiente, en determinado estado, descrito por el PCB.
El S.O. es un conjunto de programas, los cuales administran los recursos del computador,
por lo tanto necesitan comunicarse entre ellos.
Hay diferentes mecanismos por los cuales estos procesos pueden comunicarse.
SLEEP Y WAKEUP.
SEMAFOROS
MONITORES
PASE DE MENSAJES

Profesor: Ing. Mario Borja Borja

11

Sistemas Operativos

Administracin del Procesador

3.3.1 Problema de la seccin crtica.La exclusin mutua es una forma de garantizar que si un proceso utiliza una
variable o archivo compartido los demas procesos no puedan utilizarlo.
En algunas ocasiones un proceso puede tener acceso a la memoria compartida de
archivos o realizando labores crticas que pueden llevar a conflictos. Esa parte del
programa en la cual retiene acceso a la memoria compartida se llama la seccin
crtica.
3.3.2 Exclusin Mutua con espera activa:
Desactivacin de Interrupciones. (justo antes de entrar a la seccin crtica)
Variables de Cerradura. (si la variable de cerradura est en cero, el proceso lo cambia
a 1 y entra en la regin critica)
Solucin de Peterson.
Busy Waiting!!
Antes de usar las variables compartidas (antes de entrar a su regin crtica) cada
proceso llama a la funcin enter_region con su propio nmero de proceso 0 1 como
parmetro. Esta llamada provoca una espera en caso necesario hasta que pueda entrar.
Despus de terminar con las variables compartidas, el proceso llama a leave_region
para indicar que ha terminado y permitir la entrada de otro proceso, si as lo desea.
Instruccin TSL (test and set lock).
Busy Waiting!!
La CPU que ejecuta la instruccin TSL cierra el bus de memoria para prohibir a los
dems CPU el acceso a la memoria hasta terminar.
3.3.3 Dormir y Despertar
Tanto la solucin de Peterson como la TSL son correctas pero ambas tienen
el inconveniente de la espera ocupada.
SLEEP es una llamada al sistema que provoca el bloqueo de quien hizo la
llamada WAKEUP tiene un parmetro, el proceso por despertar.
Otra alternativa es que tanto SLEEP como WAKEUP tengan un parmetro, una
direccin de memoria utilizada para que concendan ambas llamadas.
Sleep: proceso se suspende hasta ser despertado.
Wakeup: despierta a un proceso.
Problema del PRODUCTOR.-.CONSUMIDOR (bounded buffer)

Variable compartida: buffer de tamao fijo.


PRODUCTOR: genera elementos que ingresan al buffer.
CONSUMIDOR: extrae elementos del buffer.

Primitivas: Sleep y Wakeup.


Variable compartiva: contador.
Los procesos productor consumidor son habituales en el S.O. un proceso productos
Genera informacin que ser aprovechada por el consumidor.
Profesor: Ing. Mario Borja Borja

12

Sistemas Operativos

Administracin del Procesador

Por ejemplo, un programa de imprecin produce caracteres que consumir el


manejador de la impresora.
Para permitir que los procesos productores y consumidores se ejecuten
correctamente, debemos crear un depsito (POOL) de buffers que pueda llamar el
productor y vacear el consumidor.
Se deben sincronizar el productor y el consumidor para que este ltimo no trate de
consumir algo que aun no se ha producido.
El problema del productor consumidor con buffer limitado supone que hay un
nmero fijo de buffers, en cuyo caso el consumidor debe esperar si todos los
buffers estn vacos y el productor deber esperar s todos estan llenos.
Sleep & wakeup
#define N 100
int contador = 0;
productor ( )
{
While (TRUE) {
Produce_item();
If (contador==N) sleep();
Ingresa_item();
Contador++;
If (contador==1)
wakeup(consumidor);
}

}
consumidor( )
While (TRUE) {
If (contador==0) sleep();
Remueve_item();
Contador--;
If (contador==N-1)
wakeup(productor);
Consume_item();
}
}

Aun persiste la competencia, que puede aparecer debido a que Count no tiene
restricciones.
Se poda presentar la sgte situacin:
El almacen buffer est vaco y el consumidor acude a leer count con un valor 0.
En ese momento el planificador decide detener la ejecucin del consumidor en
forma temporal e iniciar la ejecucin del productor. Como count era 0 va y
despierta al consumidor. Y como el consumidor estaba despierto la llamada se pierde y
como ya ley count, cuyo valor era 0, ir nuevamente a dormir. Tarde o temprano
se llenar el buffer, y tambien se dormir. Ambos dormiran por siempre.
Un arreglo rpido consiste en modificar las reglas con el fin de aadir un bit de
espera de despertar en este marco. Cuando se intenta despertar un proceso ya
despierto el bit se altera. Pero esto no solucionar el problema si pensamos en 3 o
ms procesos a la vez. Solucin Semforos.
3.3.4 Semforos.
Semforo. Es un variable al cual todos tienen acceso.
El semforo resuelve el problema del despertar perdido.
Proceso productores.

Profesor: Ing. Mario Borja Borja

Procesos consumidores.

13

Sistemas Operativos

Administracin del Procesador

Existen dos operaciones: Down y Up (generalizaciones de sleep y wakeup)


Down verifica si el valor de un semaforo es mayor que 0. En ese caso, decrementa el valor
(es decir, utiliza un despertar almacenado) y continua. Si el valor es 0 el proceso se va a
dormir.
Up incrementa el valor del semforo correspondiente. Si uno o mas procesos dorman en
ese semforo y no podian completar una operacin Down anterior, el sistema elige alguno
de ellos (por ejemplo en forma aleatoria) y se permite terminar Down.
Solucin al Problema del PRODUCTOR/CONSUMIDOR usando semforos
Si se utilizan varias CPU cada semforo debe estar protegido por una variable de
cerradura, haciendo uso de la instruccin TSL para garantizar que solo una CPU examina el
semforo a la vez. La operacin del semforo solo tarda unos cuantos microsegundos,
mientras que el productor o el consumidor podran tardarse un tiempo arbitrario.
Esa solucin utiliza 3 semforos, uno de los cuales es Full, que cuenta el nmero de
entradas ocupadas; otro llamado Empty, para el conteo de las entradas vacas y otro
llamado Mutex que sirve para garantizar que el productor y el consumidor no tienen acceso
simultneo al almacen (Buffer). El valor inicial de Full(llenos) es 0, el de Empty (vacio) es
igual al nmero de entradas en el almacen y el de Mutex es 1. Si cada proceso realiza un
Down justo antes de entrar a su regin critica y un Up justo antes de salir de ella, queda
garantizada la exclusin mutua.
Semforos
#define N 100
typedef int semafor;
semaforo mutex = 1;
semaforo vacios = N;
semaforo llenos = 0;
productor ( );
{
int Item;
While (TRUE) {
Produce_item(&item);
Down(vacios);
Down(mutex);
Ingresa_item();

Up(mutex);
Up(llenos);
}
}
consumidor( );
While (TRUE) {
Down(llenos);
Down(mutex);
Remueve_item();
Up(mutex);
Up(vacios);
Consume_item();
}
}

3.3.5 MONITORES
Monitores: Primitivas de sincronizacin de alto nivel, sin espera activa.
Los monitores son una coleccin de procedimientos, variables y estructuras de datos
agrupadas en un modulo o paquete.
Los procesos pueden invocar a los procedimientos definidos dentro del monitor, pero
no pueden modificar las estructuras de datos internas a estos.
Profesor: Ing. Mario Borja Borja

14

Sistemas Operativos

Administracin del Procesador

Ejemplo:
Monitor ejemplo
Int ;
Condicin c;
Procedure produce (x);
...
end;
procedure consume(x);
...
end;
end Monitor;
Solo un proceso dentro del monitor puede estar activo en u momento dado.
Los compiladores implementan las condiciones de exclusin mutua e ingreso a las
secciones criticas.
3.3.6 TRANSFERENCIA DE MENSAJE
Un proceso que quiere comunicarse con otro.
Hay procesos emisores y receptores.
Usado en UNIX.
Proceso emisores.
Ejecutar comandos SEND, indicando emisor, receptor, secuencia.
Send (destination, &message);
Proceso receptor.
Ejecuta comando RECEIVE. Los mensajes son numerados, la informacion o mensaje.
Los proceso pueden ser remotos. Si un mensaje se pierde tiene que ser retransmitido.
Ejemplo. Se envia un mensaje con acuse de recibo, sino lo recibe vuelve a intentar, el
receptor puede haberlo recibido; el receptor sabe si es o no el mismo mensaje ya que los
mensajes son enumerados.
Receive (source, &message);
El problema del productor y el consumidor con transferencia de mensajes.
Suponemos que todos los mensajes son del mismo tamao y que los mensajes enviados
pero que aun no se reciben son almacenados en un almacn (buffer) por el sistema
operativo. Se utiliza un total de N mensajes.
Para el problema del productor y el consumidor, ambos deben crear buzones de tamao
adecuado para que contenga N mensajes. El productor enviaria mensajes con datos al
buzn del consumidor y el consumidor enviaria mensajes vacios al buzn del productor.
#include "prototypes.h"
#define N 100
#define MSIZE 4
typedef int message[MSIZE];
void productor (void )
Profesor: Ing. Mario Borja Borja

15

Sistemas Operativos

Administracin del Procesador

{
int Item;
message m;
While (TRUE) {
Produce_item(&item);
Receive (consumer,&m);
Build_mensaje(&m,item);
Send(consumer,&m);
}
}
void consumer(void)
{ int item, i;
message m;
for (i=0; i<N); i++) send (productor,&m);
While (TRUE) {
Receive(productor,&m);
extract_item(&m,item);
Send(productor,&m);
Consumer_item(item);
}
}

3.4 Problemas clsicos de comunicacion entre procesos.


Tema de investigacin
Filsofos Hambrientos

Definicin del problema.


Soluciones.

Readers & Writers

Modelo para accesar BD.


Muchos Readers.
Un solo Writer.

Profesor: Ing. Mario Borja Borja

16

También podría gustarte