| 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). | |
sábado, 12 de noviembre de 2011
Concepto de Procesos
Suscribirse a:
Enviar comentarios (Atom)
 




 
No hay comentarios:
Publicar un comentario