2.1 Concepto de
Procesos
|
|
Todos
los programas cuya ejecucion solicitan los usuarios, se ejecutan en forma de
procesos, de ahi la importancia para le informatico de conocerlos en detalle.
El proceso se puede definir como un programa de gestion por
el sistema operativo. Durante su eleccion el proceso va modificando en
ejecucion y, de una forma un poco mas precisa, como la unidad
de procesamiento los registro del modelo de programacion de la computadora,
de acuerdo a las intrusiones de maquina involucradas.
El sistema operativo mantiene por cada proceso una serie de estructuras de informacion que permiten identificar las caracteristicas de este, asi como los recursos que tiene asignados. En esta ultima categoria entran los descriptores de los segmentos de memoria asignados, los descriptores de los archivos abiertos, los descriptores de los puertos de comunicaciones, etc. Una parte muy importante de esta informacion se encuentra normalmente como en el llamado bloque de control de procesos (BCP). El sistema operativo mantiene una tabla de procesos con todos los BCP de los procesos. Por razones de eficiencia, la tabla de procesos se construyen normalmente como una estructura estática, que tiene un determinado numero de BCP, todos ellos del mismo tamaño. La información que compone un proceso es la siguiente:
r
Contenido de los segmentos de memoria en los
que residen el código y los datos del proceso. A esta información se le
denomina imagen de memoria o core imagen.
r
Contenido de los registros del modelo de
programación
r
Contenido del BCP.
|
|
2.2 Estado y
Transiciones del Proceso
|
|
Como se indico anteriormente, el proceso es la unidad
de procesamiento gestionada por el sistema operativo. Para poder realizar
este cometido, el proceso tiene asociado una serie de elementos de
información, que se resumen en la Figura 3.8, que se analizan seguidamente.
Estos elementos se organizan en tres grupos: estado del procesador, imagen de
memoria y tablas del sistema operativo.
Estado
del procesador
El
estado del procesador esta formado por el contenido de todos sus registros,
que se enumeran seguidamente:
·
Registros generales. De existir registros
específicos de coma flotante también se incluyen aquí.
·
Contador de programa.
Información del proceso
·
Puntero de pila.
·
Registro o registros de estado.
·
Registros especiales. Como puede ser el RIED
(registro identificador de espacio de direccionamiento).
El
estado del procesador de un proceso reside en los registros del procesador,
cuando el proceso esta en ejecución, o en el bloque de control de proceso
(BCP), cuando el proceso no esta en ejecución.
Cuando
el proceso esta ejecutando, el estado del procesador varia de acuerdo al
flujo de instrucciones maquina ejecutado. En este caso, la copia del estado
del procesador que reside en el BCP no esta actualizada. Téngase en cuenta
que los registros de la maquina se utilizan para no tener que acceder a la
información de memoria, dado que es mucho mas lenta. Por tanto, no tiene
sentido plantear que, en cada modificación de un registro, se actualice su
valor en el BCP, puesto que esta en memoria.
Sin
embargo, cuando se detiene la ejecución de un proceso, como consecuencia de
la ejecución de una interrupción, es muy importante que el sistema operativo
actualice la copia del estado del procesador en su BCP. En términos
concretos, la rutina del sistema operativo que trata las Interrupciones lo
primero que ha de hacer es salvar el estado del procesador en el BCP del
proceso interrumpido.
|
|
2.4 Concurrencia y
Secuenciabilidad
|
|
Los procesos son concurrentes si existen
simultáneamente. Los procesos concurrentes pueden funcionar en forma
totalmente independiente unos de otros, o pueden ser asíncronos, lo cual
significa que en ocasiones requieren cierta sincronizan o cooperación.
Cuando
dos o mas procesos llegan al mismo tiempo a ejecutarse, se dice que se ha
presentado una concurrencia de procesos. Es importante mencionar que para que
dos o mas procesos sean concurrentes , es necesario que tengan alguna
relación entre ellos como puede ser la cooperación para un determinado
trabajo o el uso de información o recursos compartidos, por ejemplo: en un sistema
de un procesador , la multipropiedad es una condición necesaria pero no
suficiente para que exista concurrencia, ya que los procesos pueden
ejecutarse de forma totalmente independiente.
Por
otro lado en un sistema de varios procesos se puede presentar la concurrencia
siempre y cuando las actividades necesiten actuar entre si ya sea para
utilizar información en común o para cualquier otra cosa.
Existen tres formas modelos de computadora en los que se puede pueden ejecutar procesos concurrentes:
Multiprogramacion
con un único procesador.
En
este modelo todos los procesos concurrentes ejecutan sobre un único
procesador. El sistema operativo se encarga de ir repartiendo el tiempo del
procesador entre los distintos procesos, intercalando la ejecución de los mismos
para dar así una apariencia de ejecución simultanea.
Multiprocesador.
Un
Multiprocesador es una maquina formada por un conjunto de procesadores que
comparten memoria principal. En este tipo de arquitecturas, los procesos
concurrentes no solo pueden intercalar su ejecución sino también
superponerla. En este caso si existe una verdadera ejecución simultanea de
procesos, al coincidir las fases de procesamiento de distintos procesos. En
un instante dado se pueden ejecutar de forma simultanea tantos procesos como
procesadores haya.
Multicomputadora.
Una
multicomputadora es una maquina de memoria distribuida, en contraposición con
el Multiprocesador que es de memoria compartida. Esta formada por una serie
de computadoras completas con su UCP, memoria principal y, en su caso,
periferia. Cada uno de estos procesadores completo se denomina nodo. Los
nodos se encuentran conectados y se comunican entre si a través de una red de
interconexion, empleando el método de paso de mensajes. En este tipo de
arquitecturas también es posible la ejecución simultanea de los procesos
sobre los distintos procesadores.
En general la
concurrencia sera aparente siempre que el numero de procesos sea mayor que el
de procesadores disponibles, es decir, cuando haya mas de un proceso por
procesador. La concurrencia sera real cuando haya un proceso por procesador
|
|
2.4.3 Interbloqueo (DeadLock)
|
|
El
estancamiento se puede definir formalmente como sigue: "Un
conjunto de procesos se estancan si cada proceso del conjunto esta esperando
un evento que solo otro proceso del conjunto puede provocar".
Puesto que todos los procesos están en espera, ninguno de ellos podrá
ocasionar nuca ninguno de los eventos que podrían desbloquear a algunos de
los otros miembros del conjunto y todos los procesos seguirán esperando
indefinidamente.
Definición
de Abrazo Mortal
Un
conjunto de procesos esta en un abrazo mortal cuando todos los procesos en
ese conjunto están esperando un evento que solo puede ser causado por otro
proceso en el conjunto. Los eventos a los cuales nos estamos refiriendo son
concernientes con la asignación y liberación de recursos principalmente. Sin
embargo, otro tipo de eventos pueden llevar a la existencia de abrazos
mortales.
Para
ejemplificar un estado de abrazo mortal, considere un sistema con tres
unidades de disco. Suponga que existen tres procesos, cada uno de ellos tiene
asignada una de las unidades de disco. Si ahora cada proceso pide otra unidad
de disco, los tres procesos se encuentran ahora en un estado de abrazo
mortal. Cada uno esta esperando el evento "unidad de disco
liberada", lo cual solo puede ser causada por alguno de los otros
procesos en espera. Este ejemplo ilustra un abrazo mortal involucrando
procesos compitiendo por el mismo tipo de recurso.
Los
abrazos mortales pueden también involucrar diferentes tipos de recursos. Por
ejemplo, considere un sistema con una impresora y una unidad de disco.
Suponga que el proceso A tiene asignada la unidad de disco y que el proceso B
tiene asignada la impresora. Ahora, si A pide la impresora y B pide la unidad
de disco, ocurre un abrazo mortal.
Debe
ser obvio que un abrazo mortal es una condición indeseable. En un abrazo
mortal, los procesos nunca terminan de ejecutarse y los recursos del sistema
esta amarrados, evitando que otros procesos puedan siquiera empezar.? Antes
de discutir varios métodos para manejar el problema de los abrazos mortales,
seria útil describir algunas de las propiedades que los caracterizan.
Condiciones
Necesarias
Según
Conforman (1971), existen cuatro condiciones que deben cumplirse para que
haya estancamiento. Una situación de abrazo mortal puede surgir si y solo si
las siguientes cuatro condiciones ocurren simultáneamente en un sistema:
1. Exclusión
Mutua. Cada recurso se asigna por lo regular exactamente a un
proceso o bien esta disponible. Al menos un recurso es mantenido en un modo
no-compartible; esto es, solo un proceso a la vez puede usar el recurso. Si
otro proceso solicita ese recurso, tiene que ser retardado hasta que el
recurso haya sido liberado.
2. Retener
y Esperar. Los procesos que regularmente contienen recursos
otorgados antes pueden solicitar nuevos recursos. Debe existir un proceso que
retenga al menos un recurso y este esperando para adquirir recursos
adicionales que están siendo retenidos por otros procesos.
3. No
existe el derecho de des-asignar (No preemtion). Los recursos
previamente otorgados no pueden extraerse por la fuerza de un proceso. Deben
ser liberados explicita mente por el proceso que los contiene. Los recursos
no pueden ser des-asignadoss (preempted); esto es, un recurso solo puede ser
liberado voluntariamente por el proceso que lo retiene,despuéss de que el
proceso ha terminado su tarea.
4. Espera
Circular. Debe haber una cadena de dos o mas procesos, cada
uno d los cuales este esperando u recurso contenido en el siguiente miembro
de la cadena. Debe existir un conjunto {p0, p1, ...,pn} de procesos en espera
tal que p0 este esperando por un recurso que esta siendo retenido por p1, p1
esta esperando por un recurso que esta siendo retenido por p2, ..., pn-1 esta
esperando por un recurso que esta siendo retenido por pn y pn esta esperando
por un recurso que esta siendo retenido por p0.
Enfatizamos que las cuatro condiciones deben de cumplirse para que pueda ocurrir un abrazo mortal. La condición de espera circular implica la condición de retener y esperar, de tal manera que las cuatro condiciones no son totalmente independientes. Sin embargo, puede ser útil el considerar cada condición por separado.
Una forma de
modelar estas condiciones es usando un grafo de recursos: los
círculos representan procesos, los cuadrados recursos. Una arista desde un
recurso a un proceso indica que el recurso ha sido asignado al proceso. Una
arista desde un proceso a un recurso indica que el proceso ha solicitado el
recurso, y esta bloqueado esperándolo. Entonces, si hacemos el grafo con
todos lo procesos y todos los recursos del sistema y encontramos un ciclo,
los procesos en el ciclo están bajo bloqueo mutuo.
Métodos
para manejar los abrazos mortales
Principalmente,
existen dos métodos para manejar el problema de los abrazos mortales. Podemos
usar algún protocolo para asegurar que el sistema nunca entrara en un estado
de abrazo mortal. Alternativamente, podemos permitir que el sistema entre en
un estado de abrazo mortal y después recuperarnos. Como podremos ver
posteriormente, el recuperarse de un abrazo mortal puede ser muy difícil y
muy caro. Por ello, primeramente consideraremos los métodos para asegurar que
no ocurran
los abrazos mortales. Comúnmente, existen dos métodos: El de PREVENCION de abrazos mortales (Deadlock Prevention) y el de EVASION de abrazos mortales (Deadlock Avoidance). |
jueves, 17 de noviembre de 2011
SEGUNDO PARCIAL
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario