hilos y procesos
DESCRIPTION
teoria y practica de hilosTRANSCRIPT
-
Universidad Nacional Experimental de Guayana
Vicerrectorado Acadmico
Proyecto de Carrera: Ingeniera Informtica
Asignatura: Sistema de Operacin
Seccin 1
Profesor: Integrantes:
Caniumilla Andrs Luces Miguel C.I: 19.419.235
Ciudad Guayana, Octubre 2014
-
2
INDICE
HILOS ......................................................................................................................................................................3
Definicin ...................................................................................................................................................3
Caractersticas .........................................................................................................................................3
Diferencia entre Hilos y Procesos .......................................................................................................3
Estados de un Hilo ..................................................................................................................................4
Ventajas ......................................................................................................................................................4
Desventajas ...............................................................................................................................................5
Sincronizacin de Hilos .........................................................................................................................5
Multi Hilos ..................................................................................................................................................6
Ejemplo a nivel de cdigo .....................................................................................................................7
INANICIN O INTERBLOQUEO ........................................................................................................................9
Interbloqueo ..............................................................................................................................................9
Recursos Reutilizables ..........................................................................................................................9
Recursos Consumibles ..........................................................................................................................9
Ejemplos Grficos ...................................................................................................................................9
Grafos de Asignacin de Recursos ................................................................................................. 10
Condiciones para el Interbloqueo .................................................................................................... 10
Posibilidad de Interbloqueo ............................................................................................................... 11
Existencia de Interbloqueo ................................................................................................................ 11
Prevencin del Interbloqueo ............................................................................................................. 12
Prediccin del Interbloqueo ............................................................................................................... 13
Algoritmo del Banquero ..................................................................................................................... 13
Ejemplos ............................................................................................................................................... 14
Recuperacin del Interbloqueo ......................................................................................................... 16
Mecanismos para evitar el Interbloqueo ........................................................................................ 17
Estados Seguros e Inseguros ........................................................................................................... 17
Ejemplo ................................................................................................................................................. 18
Ventajas y Desventajas de las diferentes estrategias ................................................................ 19
-
3
HILOS
Definicin
Un hilo o proceso ligero es una unidad bsica de ejecucin, con su propio contador de
programa, registros de CPU y pila (stack). Es importante resaltar que los hilos
comparten dentro de una misma aplicacin todo lo que se refiere a cdigo y datos
adems de los recursos del Sistema Operativo como por ejemplo ficheros, E/S, entre
otros.
Tambin puede ser definido desde el punto de vista de programacin como una
funcin cuya ejecucin se puede lanzar en paralelo con otras.
Caractersticas
No existe forma de predecir el orden de ejecucin o el orden de culminacin de
varios hilos.
Los hilos son invisibles fuera de los lmites del programa o proceso que los
contiene.
Los hilos tienen su propia identidad, pila, PC, registros, prioridad.
Cada hilo es independiente de otro hilo.
No obstante, ciertas acciones que un hilo ejecuta afectaran a otros hilos dentro del
mismo proceso. Por ejemplo:
Si un hilo abre un archivo, el archivo estar abierto para el resto de los threads
dentro del mismo proceso.
Si un hilo termina usando la llamada al sistema exit(), esto provocara que todos
los threads dentro del mismo proceso terminen.
Diferencia entre Hilos y Procesos
Los hilos operan, en muchos sentidos, igual que los procesos:
Pueden estar en uno o varios estados: listo, bloqueado, en ejecucin o terminado.
Tambin comparten la CPU.
Solo hay un hilo activo (en ejecucin) en un instante dado.
Un hilo dentro de un proceso se ejecuta secuencialmente.
Cada hilo tiene su propia pila y contador de programa.
Pueden crear sus propios hilos hijos.
-
4
Diferencia con los procesos:
Los hilos se distinguen de los tradicionales procesos en que los procesos son
generalmente independientes, llevan bastante informacin de estados, e interactan
slo a travs de mecanismos de comunicacin dados por el sistema. Por otra parte,
muchos hilos generalmente comparten otros recursos de forma directa. En muchos de
los sistemas operativos que dan facilidades a los hilos, es ms rpido cambiar de un
hilo a otro dentro del mismo proceso, que cambiar de un proceso a otro. Este
fenmeno se debe a que los hilos comparten datos y espacios de direcciones,
mientras que los procesos, al ser independientes, no lo hacen. Al cambiar de un
proceso a otro el sistema operativo (mediante el dispatcher) genera lo que se conoce
como overhead, que es tiempo desperdiciado por el procesador para realizar un
cambio de contexto (context switch), en este caso pasar del estado de ejecucin
(running) al estado de espera (waiting) y colocar el nuevo proceso en ejecucin. En los
hilos, como pertenecen a un mismo proceso, al realizar un cambio de hilo el tiempo
perdido es casi despreciable.
Estados de un Hilo
Los principales estados de un hilo son: ejecucin, preparado y bloqueado y hay cuatro
operaciones bsicas relacionadas con el cambio de estado delos hilos;
Creacin: En general, cuando se crea un nuevo proceso se crea tambin un hilo
para ese proceso. Posteriormente, ese hilo puede crear nuevos hilos dndoles un
puntero de instruccin y algunos argumentos. Ese hilo se colocara en la cola de
preparados.
Bloqueo: Cuando un hilo debe esperar por un suceso, se le bloquea guardando sus
registros. As el procesador pasara a ejecutar otro hilo preparado.
Desbloqueo: Cuando se produce el suceso por el que un hilo se bloque pasa a la
cola de listos.
Terminacin: Cuando un hilo finaliza, se liberan su contexto y sus pilas.
Nota: Un punto importante es la posibilidad de que el bloqueo de un hilo lleve al
bloqueo de todo el proceso. Es decir, que el bloqueo de un hilo lleve al bloqueo de
todos los hilos que lo componen, aun cuando el proceso esta preparado.
Ventajas
Los mayores beneficios de los hilos provienen de las consecuencias del rendimiento:
-
5
Lleva mucho menos tiempo crear un hilo en un proceso existente, que crear un
proceso totalmente nuevo. La creacin de un hilo puede ser hasta diez veces ms
rpida que la creacin de un proceso en Unix (Linux).
Lleva menos tiempo finalizar un hilo que un proceso.
Lleva menos tiempo el cambio de hilo que el cambio de proceso.
Debido a que los threads son parte del mismo proceso, el compartir datos entre
ellos es muy fcil; todos los hilos tienen acceso a los datos globales. No se
necesitan llamadas al sistema para su comunicacin.
Mayor eficiencia si se tiene un multiprocesador (y se soportan hilos a nivel del
kernel). Paralelismo.
Mayor concurrencia aun si se desconocen los hilos a nivel del kernel (si se logra, a
travs de la librera, que al bloquearse un hilo, pueda ejecutarse otro dentro del
mismo proceso).
Los programas que realizan diversas tareas o que tienen varias fuentes y destinos
de E/S (servidor) se pueden disear e implementar fcilmente usando hilos.
Desventajas
No existe proteccin entre hilos: un error en un hilo puede estropear la pila de otro.
El hecho de que varios hilos compartan el mismo espacio de memoria puede
causar dos problemas;
Interferencias
Inconsistencias
Los hilos se bloquean ms fcilmente que un proceso.
No todos los sistemas reconocen la existencia de hilos.
Se requiere de mayor espacio en el ncleo para las tablas y la pila de los hilos
Todas las llamadas al sistema las maneja el ncleo y por lo tanto tiene un mayor
costo para l.
Sincronizacin de Hilos
Imaginemos un determinado proceso que manipule una zona de datos (para escritura
y/o lectura), y que dicho proceso lo podemos dividir en pequeas tareas o hilos de tal
manera que conservamos la misma zona de datos para todos los hilos; esta divisin
del proceso, muy probablemente acelerara la ejecucin de nuestro proceso original.
El compartir datos de la memoria permite eliminar la comunicacin, que en ocasiones
puede resultar muy costosa en tiempo; sin embargo, aparecen otros problemas tales
como la sincronizacin de acceso a los datos en memoria.
-
6
El permitir que los hilos accedan a modificar datos en memoria sin ninguna restriccin,
puede dar lugar a resultados no consistentes o incoherencia, por lo que se obtienen
resultados no deseados. Por lo tanto, es necesario implementar mecanismos de
sincronizacin con ayuda de candados y semforos.
Candados y semforos
Como se ha mencionado, en ocasiones los hilos (o procesos) comparten informacin
al acceder a bloques de memoria compartidos. Cuando el acceso se realiza para
lectura, cada uno de los procesos podr ir a la memoria y recuperar el dato sin el
peligro de que pueda encontrar inconsistencias, pero si uno o ms procesos acceden
a la memoria para modificar un determinado dato, entonces se pueden generar
problemas de inconsistencia e incoherencia.
La solucin a este problema es implementar mecanismos de sincronizacin, el
mecanismo ms sencillo se conoce como semforo binario o simplemente como
candado. La idea del candado es la siguiente: cuando un proceso o hilo intenta
modificar un dato compartido, esta accin la deber realizar en modo exclusivo, de tal
manera que ningn otro proceso pueda modificar o leer el mismo dato. Las lecturas
pueden hacerse de forma simultnea, pero no as las escrituras, las cuales debern
hacerse en modo exclusivo; esto ltimo se conoce como exclusin mutua. A la seccin
de cdigo que cada uno de los procesos posee para modificar ese dato compartido, se
le conoce como seccin critica.
Multi Hilos
Se define como la capacidad de un Sistema Operativo para mantener varios hilos de
ejecucin dentro de un mismo proceso. Cada hilo dentro del programa es como un
mini-programa con exactamente las mismas propiedades que se mencionaron
previamente.
Ejemplo Visual de Un hilo frente a Multihilos
-
7
Ejemplo a nivel de cdigo
/* Programa de ejemplo de threads.
*
* Un nico contador y dos threads para modificarlo. Uno lo incrementa y pone
* su valor en pantalla precedido de la palabra "Padre". El otro lo
* decrementa y ponse su valor en pantalla precedido de la palabra "Hilo".
* Vemos en pantalla como el contador se incrementa y se decrementa
* rpidamente.
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
/* Prototipo de la funcin que va a ejecutar el thread hijo */
void *funcionThread (void *parametro);
/* Contador, global para que sea visible desde el main y desde funcionThread */
int contador = 0;
/*
* Principal
* Lanza un thread para la funcin funcionThread.
* Despus de comprobar el posible error, se mete en un bucle infinito
* incrementando y mostrando el contador.
*/
int main()
{
/* Identificador del thread hijo */
pthread_t idHilo;
/* error devuelto por la funcin de creacin del thread */
int error;
/* Creamos el thread.
* En idHilo nos devuelve un identificador para el nuevo thread,
* Pasamos atributos del nuevo thread NULL para que los coja por defecto
* Pasamos la funcin que se ejecutar en el nuevo hilo
* Pasamos NULL como parmetro para esa funcin. */
error = pthread_create (&idHilo, NULL, funcionThread, NULL);
/* Comprobamos el error al arrancar el thread */
if (error != 0)
{
perror ("No puedo crear thread");
exit (-1);
}
/* Bucle infinito para incrementar el contador y mostrarlo en pantalla */
while (1)
{
contador++;
printf ("Padre : %d\n", contador);
sleep(1);
}
return 0;
}
/* Funcion que se ejecuta en el thread hijo.*/
void *funcionThread (void *parametro)
{
/* Bucle infinito para decrementar contador y mostrarlo en pantalla. */
while (1)
{
contador--;
printf ("Hilo : %d\n", contador);
sleep(1);
}
}
-
8
Pantallazo del cdigo Ejecutado
-
9
INANICIN O INTERBLOQUEO
Interbloqueo
El interbloqueo es el bloqueo de un conjunto de procesos que compiten por los
recursos del sistema o bien se comunican unos con otros. El bloqueo es permanente
hasta que el sistema operativo realice alguna operacin extraordinaria, como puede
ser matar uno o ms procesos u obligar a uno o ms procesos a retroceder en la
ejecucin.
Recursos Reutilizables
Un recurso reutilizable es aqul que puede ser usado con seguridad por un proceso y
no se agota con el uso. Los procesos obtienen unidades de recursos que liberan
posteriormente para que otros procesos las reutilicen. Como ejemplos de recursos
reutilizables se tienen los procesadores, canales de E/S, memoria principal y
secundaria, dispositivos y estructuras de datos tales como archivos, bases de datos y
semforos.
Recursos Consumibles
Un recurso consumible es aqul que puede ser creado (producido) y destruido
(consumido). Normalmente, no hay lmite en el nmero de recursos consumibles de un
tipo en particular. Un proceso productor que no est bloqueado puede liberar cualquier
nmero de recursos consumibles. Cuando un proceso adquiere un recurso, ste deja
de existir. Como ejemplos de recursos consumibles estn las interrupciones, seales,
mensajes, e informacin en buffers de E/S.
Ejemplos Grficos
Ilustracin del Interbloqueo
-
10
Grafos de Asignacin de Recursos
Sirve para representar el estado de un sistema de asignacin de recursos. Muestra
esta informacin:
Cuantos ejemplares hay de cada tipo de recurso
Los procesos activos en el sistema
Que recursos estn asignados y a que proceso
Que procesos estn bloqueados y por cuales recursos
Grafo dirigido que representa el estado del sistema en lo que se refiere a recursos y
procesos.
Condiciones para el Interbloqueo
Deben darse tres condiciones para que pueda producirse un interbloqueo:
1. Exclusin Mutua: Solo un proceso puede usar un recurso simultneamente.
Ejemplos de grafos de asignacin de recursos
-
11
2. Retencin y Esperar: Un proceso puede tener unos recursos asignados
mientras espera que se le asignen otros.
3. No Apropiacin: Ningn proceso puede ser forzado a abandonar un recurso
que retenga. En la mayora de los casos, estas condiciones son bastante
necesarias. Por ejemplo la exclusin mutua hace falta para asegurar la
consistencia de resultados y la integridad de la base de datos. De forma similar,
la expulsin o apropiacin no se puede aplicar arbitrariamente y, cuando se
encuentran involucrados recursos de datos especialmente, debe estar
acompaado de un mecanismo de recuperacin y reanudacin, que devuelve a
un proceso y a sus recursos a un estado previo adecuado, desde el que el
proceso pueda finalmente repetir sus acciones.
Puede existir interbloqueo con estas tres condiciones, pero puede no existir con
solo estas tres condiciones. Para que se produzca interbloqueo, se necesita una
cuarta condicin:
4. Circulo vicioso de espera: Existe una cadena cerrada de procesos, cada uno de
los cuales retiene, al menos, un recurso que necesita el siguiente proceso de la
cadena.
Las tres primeras condiciones son necesarias, pero no suficientes, para que exista
interbloqueo. La cuarta condicin es, en realidad, una consecuencia potencial de
las tres primeras. Es decir, dado que se produces las tres primeras condiciones,
puede ocurrir una secuencia de eventos que desemboque en un crculo vicioso de
espera irresoluble. Un crculo de espera irresoluble es, de hecho, la definicin de
interbloqueo. El crculo de espera de la condicin 4 es irresoluble porque se
mantienen las tres primeras condiciones. Es decir, las cuatro condiciones en
conjunto constituyen una condicin necesaria y suficiente para el interbloqueo.
Posibilidad de Interbloqueo
Exclusin mutua
Sin expropiacin
Retencin y espera
Existencia de Interbloqueo
Exclusin Mutua
Sin expropiacin
Retencin y espera
Espera circular
-
12
Prevencin del Interbloqueo
La estrategia de prevencin del interbloqueo consiste, a grandes rasgos, en disear
un sistema de manera que est excluida, a priori, la posibilidad de interbloqueo. Los
mtodos para prevenir el interbloqueo son de dos tipos. Los mtodos indirectos
consisten en impedir la aparicin de alguna de las tres condiciones necesarias, antes
mencionadas (condiciones 1 a 3). Los mtodos directos consisten en evitar la
aparicin del crculo vicioso de espera (condicin 4). Se examinarn a continuacin las
tcnicas relacionadas con cada una de las cuatro condiciones.
Exclusin Mutua
En general, la primera de las cuatro condiciones no puede anularse. Si el acceso a un
recurso necesita exclusin mutua, el sistema operativo debe soportar la exclusin
mutua. Algunos recursos, como los archivos, pueden permitir varios accesos para
lectura, pero slo accesos exclusivos para escritura. Incluso en este caso, se puede
producir interbloqueo si ms de un proceso necesita permiso de escritura.
Retencin y Espera
La condicin de retencin y espera puede prevenirse exigiendo que todos los
procesos soliciten todos los recursos que necesiten a un mismo tiempo y bloqueando
el proceso hasta que todos los recursos puedan concederse simultneamente. Esta
solucin resulta ineficiente por dos factores. En primer lugar, un proceso puede estar
suspendido durante mucho tiempo, esperando que se concedan todas sus solicitudes
de recursos, cuando de hecho podra haber avanzado con slo algunos de los
recursos. Y en segundo lugar, los recursos asignados a un proceso pueden
permanecer sin usarse durante periodos considerables, tiempo durante el cual se
priva del acceso a otros procesos.
No apropiacin
La condicin de no apropiacin puede prevenirse de varias formas. Primero, si a un
proceso que retiene ciertos recursos se le deniega una nueva solicitud, dicho proceso
deber liberar sus recursos anteriores y solicitarlos de nuevo, cuando sea necesario,
junto con el recurso adicional. Por otra parte, si un proceso solicita un recurso que
actualmente est retenido por otro proceso, el sistema operativo puede expulsar al
segundo proceso y exigirle que libere sus recursos. Este ltimo esquema evitar el
interbloqueo slo si no hay dos procesos que posean la misma prioridad.
Esta tcnica es prctica slo cuando se aplica a recursos cuyo estado puede salvarse
y restaurarse ms tarde de una forma fcil, como es el caso de un procesador.
-
13
Circulo Vicioso de Espera
La condicin del crculo vicioso de espera puede prevenirse definiendo una
ordenacin lineal de los tipos de recursos. Si a un proceso se le han asignado
recursos de tipo R, entonces slo podr realizar peticiones posteriores sobre los
recursos de los tipos siguientes a R en la ordenacin.
Para comprobar el funcionamiento de esta estrategia, se asocia un ndice a cada tipo
de recurso. En tal caso, el recurso R, antecede a R, en la ordenacin si i < j. Entonces,
supngase que dos procesos A y B se interbloquean, porque A ha adquirido R, y
solicitado R y, mientras que B ha adquirido R; y solicitado R. Esta situacin es
imposible porque implica que < j y j < i.
Como en la retencin y espera, la prevencin del crculo vicioso de espera puede ser
ineficiente, retardando procesos y denegando accesos a recursos innecesariamente.
Prediccin del Interbloqueo
Otra forma de resolver el problema del interbloqueo, que se diferencia sutilmente de la
prevencin, es la prediccin de interbloqueo. En la prevencin de interbloqueo, se
obligaba a las solicitudes de recursos a impedir que sucediera, por lo menos, alguna
de las cuatro condiciones de interbloqueo. Esto se hace indirectamente, impidiendo la
aparicin de una de las tres condiciones necesarias (exclusin mutua, retencin y
espera, no apropiacin) o directamente, impidiendo la aparicin de un crculo vicioso
de espera. Se llega as a un uso ineficiente de los recursos y una ejecucin ineficiente
de los procesos. Con prediccin del interbloqueo, por otro lado, se pueden alcanzar
las tres condiciones necesarias, pero se realizan elecciones acertadas para asegurar
que nunca se llega al punto de interbloqueo. La prediccin, por tanto, permite ms
concurrencia que la prevencin. Con prediccin del interbloqueo, se decide
dinmicamente si la peticin actual de asignacin de un recurso podra, de
concederse, llevar potencialmente a un interbloqueo. La prediccin del interbloqueo
necesita, por tanto, conocer las peticiones futuras de recursos.
Algoritmo del Banquero
Llamado tambin negativa de asignacin de recursos, el algoritmo resuelve un
problema planteado por Edsger Dijkstra.
Existe un banco que tiene una reserva limitada de dinero a prestar y clientes con
lnea de crdito. Un cliente pide dinero y no hay garanta de que haga reposiciones
hasta que saque la cantidad mxima. El banco puede rechazar el prstamo si hay
riesgo de que no tenga fondos para prestar a otros clientes.
-
14
Vindolo como Sistema Operativo, los clientes seran los procesos, el dinero a
prestar los recursos y el banquero el Sistema Operativo
Para este algoritmo es importante considerar los siguientes puntos:
Estado: Es la asignacin actual de los recursos a los procesos.
Matriz Demanda (o mximo necesario): Son las exigencias mximas de
recursos para cada proceso.
Matriz Asignacin: Son las asignaciones actuales de recursos para cada
proceso.
Vector disponible: Cantidad total de recursos sin asignar a los procesos.
Estado seguro: Es un estado en el que existe al menos un orden en el que
todos los procesos pueden ejecutar hasta el final sin generar interbloqueo.
Cuando un proceso realiza una solicitud de recursos, se supone que se concede,
se actualiza el estado y se toma una decisin. Si se llega a un estado seguro, se
concede la peticin. Si se llega a uno inseguro, se rechaza y el proceso es
bloqueado.
Ejemplos
A continuacin se presenta un ejemplo:
Utilizando el algoritmo del banquero resuelva el siguiente problema, indicando el orden
en que los procesos pasan a ser estados seguros evitando el problema del
interbloqueo.
Lista de procesos: P1-P3-P4-P0 P2
A la derecha se tienen cinco procesos, cada uno tiene recursos de tipo A, B y C. En la
primera columna de asignados est la cantidad de recursos que el proceso ha
obtenido a lo largo de un tiempo; en la segunda columna de Mximo Necesario, estn
los recursos que tiene que obtener de cada tipo para comenzar a ser ejecutado. Por
-
15
ejemplo, el P0 no ha obtenido ningn recurso del tipo A, slo 1 del tipo B y ninguno del
tipo C, y necesita para ejecutarse haber conseguido 7 del A, 5 del B y 3 del C.
En la ltima columna se tienen los recursos disponibles que da el sistema, los que se
pueden utilizar con todos los procesos. Hay 3 del A, 3 del B y 2 del C.
El algoritmo del banquero trata de asegurar qu proceso tiene un estado seguro es
decir, se requiere alcanzar el mximo requerido entre los que estn en Asignados y
los que se encuentren en Disponibles.
Ejemplo: El proceso 0 no est en estado seguro. Si se suman Asignados +
Disponibles para cada uno de los recursos A, B y C, realmente no se alcanzan los
Mximos Requeridos.
Entonces se va al proceso 1 y se trata de hacer lo mismo, sumar Asignados +
Disponibles. All s se tiene un ESTADO SEGURO, A con 5, B con 3 y C con 2, y como
se alcanza a llenar los Mximos, ese proceso se ejecuta.
Una vez que el proceso se ejecut, entonces se procede a SUMAR los recursos
asignados del proceso anterior a los disponibles. Hay que recordar que el proceso al
terminar de ejecutarse libera todos sus recursos, por lo tanto pasan tanto los de tipo A,
B y C a sumarse con los disponibles 3-3-2 y se tendrn nuevos DISPONIBLES que
repartir, siendo ahora stos 5-3-2.
Con estos se pasa al proceso P2 y as sucesivamente.
Y el algoritmo es como sigue:
(El algoritmo principal es el de asignacin de recursos)
-
16
Recuperacin del Interbloqueo
Una vez detectado el interbloqueo, hace falta alguna estrategia de recuperacin. Las
tcnicas siguientes son posibles enfoques, enumeradas en orden creciente de
sofisticacin:
1. Abandonar todos los procesos bloqueados. Esta es, se crea o no, una de las
soluciones ms comunes, si no la ms comn, de las adoptadas en un sistema
operativo.
2. Retroceder cada proceso interbloqueado hasta algn punto de control definido
previamente y volver a ejecutar todos los procesos. Es necesario que haya
disponibles unos mecanismos de retroceso y reinicio en el sistema. El riesgo de
esta solucin radica en que puede repetirse el interbloqueo original. Sin
embargo, el no determinismo del procesamiento concurrente asegura, en
general, que esto no va a pasar.
3. Abandonar sucesivamente los procesos bloqueados hasta que deje de haber
interbloqueo. El orden en el que se seleccionan los procesos a abandonar
seguir un criterio de mnimo coste. Despus de abandonar cada proceso, se
debe ejecutar de nuevo el algoritmo de deteccin para ver si todava existe
interbloqueo.
4. Apropiarse de recursos sucesivamente hasta que deje de haber interbloqueo.
Como en el punto 3, se debe emplear una seleccin basada en coste y hay que
ejecutar de nuevo el algoritmo de deteccin despus de cada apropiacin. Un
proceso que pierde un recurso por apropiacin debe retroceder hasta un
momento anterior a la adquisicin de ese recurso.
-
17
Para los puntos 3 y 4, el criterio de seleccin podra ser uno de los siguientes,
consistentes en escoger el proceso con:
La menor cantidad de tiempo de procesador consumido hasta ahora
El menor nmero de lneas de salida producidas hasta ahora
El mayor tiempo restante estimado
El menor nmero total de recursos asignados hasta ahora
La prioridad ms baja
Mecanismos para evitar el Interbloqueo
En vez de restringir la forma o el orden en que los procesos deben solicitar recursos,
antes se debe conocer si es seguro otorgar dichos recursos. Es decir, si se presentan
las condiciones suficientes para un interbloqueo, todava es posible evitarlos por
medio de una restriccin en la asignacin de los procesos para tratar de buscar
estados seguros. Estas restricciones aseguran que al menos una de las condiciones
necesarias para el interbloqueo no pueda presentarse y por lo tanto, tampoco el
interbloqueo.
Otro mtodo para evitar los interbloqueo consiste en requerir informacin adicional
sobre cmo se solicitar los recursos. Esta informacin puede ser:
La necesidad mxima de recursos de los procesos que se est ejecutando
La asignacin actual de recursos a procesos
La cantidad actual de instancias libres de cada recurso
En base al orden en que se solicitarn los recursos, se puede tomar la decisin de
ejecutar el proceso o si debe esperar. Por lo tanto, la evitacin del interbloqueo solo
anticipa la posibilidad de interbloqueo y asegura que no exista nunca tal posibilidad.
En los mecanismos para evitar interbloqueos viene relacionado los estados seguros e
inseguros de los procesos en los sistemas operativos.
Estados Seguros e Inseguros
Se considera que un determinado estado es seguro si, suponiendo que todos los
procesos solicitan en ese momento sus necesidades mximas, existe al menos un
orden secuencial de ejecucin de los procesos tal que cada proceso pueda obtener
sus necesidades mximas. As, para que un estado sea seguro tiene que haber, en
primer lugar, un proceso cuyas necesidades mximas puedan satisfacerse. Cuando,
hipotticamente, este proceso terminase de ejecutar devolvera todos sus recursos (o
sea, sus necesidades mximas). Los recursos disponibles en ese instante podran
-
18
permitir que se satisficieran las necesidades mximas de al menos un proceso que
terminara liberando sus recursos, lo que a su vez podra hacer que otro proceso
obtuviera sus necesidades mximas. Repitiendo este proceso, se genera u a
secuencia de ejecucin de procesos tal que cada uno de ello, puede obtener sus
necesidades mximas. Si esta secuencia incluye todos los procesos del sistema, el
estado es seguro. En caso contrario es inseguro.
El lector habr podido apreciar que este proceso de anlisis mirando hacia el futuro
es similar al usado para la reduccin de un sistema en el algoritmo de deteccin de
interbloqueos. La nica diferencia es que en el algoritmo de reduccin se tienen en
cuenta slo las peticiones actuales de los procesos mientras que en este algoritmo se
consideran tambin como peticiones las necesidades mximas de cada proceso. Esta
similitud permite especificar una segunda definicin del estado seguro:
Un estado es seguro si el estado de asignacin de recursos que resulta al considerar
que todos los procesos realizan en ese instante todas sus posibles peticiones est
libre de interbloqueos.
Ejemplo
-
19
Ventajas y Desventajas de las diferentes estrategias
Estrategia Poltica de reserva
de recursos Esquemas
alternativos Principales
ventajas Principales desventajas
Prevencin Conservadora; Infrautiliza recursos
Solicitud simultanea de todos los recursos
Adecuada para procesos que realizan una sola rfaga de actividad.
No es necesaria la expropiacin
Ineficiente
Retrasa la iniciacin del proceso
Los procesos deben conocer sus futuros requisitos de recursos
Expropiacin Conveniente cuando se aplica a recursos cuyo estado se puede guardar y restaurar fcilmente
Expropia con ms frecuencia de lo necesario
Ordenamiento de recursos
Es posible asegurarlo mediante comprobaciones en tiempo de compilacin
No necesita clculos en tiempo de ejecucin ya que
Impide solicitudes graduales de recursos
-
20
el problema se resuelve en el diseo del sistema
Prediccin A medio camino entre la deteccin y la prevencin
Asegura que existe al menos un camino seguro
No es necesaria la expropiacin
El Sistema operativo debe conocer los futuros requisitos de recursos de los procesos
Los procesos se pueden bloquear durante largos periodos
Deteccin Muy liberal; los recursos solicitados se conceden en caso de que sea posible
Se invoca peridicamente para comprobar si hay interbloqueo
Nunca retrasa la iniciacin del proceso
Facilita la gestin en lnea
Perdidas inherentes por expropiacin