Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 3 SOAdm Proc
Tema 3 SOAdm Proc
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.
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.
Sistemas Operativos
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.
Procesos en Tiempo Real: Si los procesos deben dar respuesta en tiempo real se
requiere que tengan prioridad para los turnos de ejecucin.
Sistemas Operativos
PCB. Los procesos tienen una identificacin, prioridad, memoria (donde esta su
cdigo), estado.
apuntador estado
del proceso
N del proceso
Contador del programa
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.
fin
operacin:
I/O ej. Leer en fox
ESPERA
Sistemas Operativos
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.
Sistemas Operativos
P5
5
0
P2
2
6
P5
16
P1
18
P3
19
P4
Espera desde
0
0
0
0
0
Termina
4
16
34
58
84
Tiempo de Espera
4
16
34
58
84
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
Sistemas Operativos
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.
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'.
Sistemas Operativos
E/
S
UCP
Cola de E/S
Solicitud de E/S
Fin de la porcin
de tiempo.
Termina el
proceso
hijo
Se ejecuta el
proceso hijo
Se crea un
proceso hijo
Ocurre un
a
Interrupci
n
En espera de una
interrupcion
Sistemas Operativos
Sistemas Operativos
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:
Sistemas Operativos
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.
10
Sistemas Operativos
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.
11
Sistemas Operativos
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)
12
Sistemas Operativos
}
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.
Procesos consumidores.
13
Sistemas Operativos
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
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
{
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);
}
}
16