martes, 27 de noviembre de 2012

2.1 Concepto de proceso.

Un proceso es un programa en ejecución. Un proceso simple tiene un hilo de ejecución, por el momento dejemos esta última definición como un concepto, luego se verá en más detalle el concepto de hilo. Una vez definido que es un proceso nos podríamos preguntar cuál es la diferencia entre un programa y un proceso, y básicamente la diferencia es que un proceso es una actividad de cierto tipo que contiene un programa, entradas salidas y estados.
Los procesos pueden ser cooperantes o independientes, en el primer caso se entiende que los procesos interactúan entre sí y pertenecen a una misma aplicación. En el caso de procesos independientes en general se debe a que no interactúan y un proceso no requiere información de otros o bien porque son procesos que pertenecen a distintos usuarios.
          Proceso - un programa en ejecución; la ejecucución del proceso debe progresar de manera secuencial.
          Un proceso incluye:
         program counter
         stack
         data section
Estados de los procesos
          Nuevo: El proceso es creado.
          Ejecución: Se ejecutan instrucciónes.
          Espera: El proceso esta en espera por la ocurrencia de algún evento.
          Listo: El proceso esta esperando a que le asignen el procesador.
          Terminado: El proceso finaliza su ejecución.
          Diagrama de estados de los procesos.
Información asociada con cada proceso:
          Estado del proceso
          Program counter
          Registros del CPU
          Información de planificación del CPU
          Memoria
          Información para administración
          Información de estatus de E/S
Proceso:
programa o comando en ejecución.
Características:
·         Un proceso consta de código, datos y pila.
·         Los procesos existen en una jerarquía de árbol (varios Hijos, un sólo padre).
·         El sistema asigna un identificador de proceso (PID) único al iniciar el proceso.
·         El planificador de tareas asigna un tiempo compartido para el proceso según su prioridad (sólo root puede cambiar prioridades).
Ejecución en 1er plano:
proceso iniciado por el usuario o interactivo.
Ejecución en 2o plano:
proceso no interactivo que no necesita ser iniciado por el usuario.
Demonio:
proceso en 2o plano siempre disponible, que da servicio a varias tareas (debe ser propiedad del usuario root).
Proceso zombi:
proceso parado que queda en la tabla de procesos hasta que termine su padre. Este hecho se produce cuando el proceso padre no recoge el código de salida del proceso hijo.
Proceso huérfano:
proceso en ejecución cuyo padre ha finalizado. El nuevo identificador de proceso padre (PPID) coincide con el identificador del proceso init (1).
Concepto  de  proceso.
            Un proceso es  básicamente como un programa en ejecución. Consta del programa ejecutable, los datos y la pila del programa, su contador de programa, apuntador de pila y otros registros, y la  otra información que se necesita para ejecutar el programa.
            La manera sencilla de tener una noción intuitiva de lo que es un proceso consiste en pensar en los sistemas con tiempo compartido. En forma periódica el sistema operativo decide suspender la ejecución de un proceso y dar inicio a la ejecución de otro,  por ejemplo, porque el primero haya tomado ya más de su parte del tiempo del CPU, en terrenos del segundo.

            Cuando un proceso se suspende temporalmente como éste, debe reiniciarse después exactamente en el mismo estado en que se encontraba cuando se detuvo. Esto significa que toda la información relativa al proceso debe guardarse en forma explícita en algún lugar durante la suspensión.
            En muchos sistemas operativos, toda la información referente a cada proceso, diferente del contenido de su espacio de direcciones, se almacena en una tabla de sistema operativo, llamada tabla de procesos, la cual es un arreglo o lista enlazada de estructuras, una para cada proceso en existencia corriente.
            Si un proceso puede crear uno o más procesos diferentes (conocidos como proceso hijo) y estos procesos a la vez originan procesos hijos, se llega rápidamente a la estructura del árbol de procesos.

 Estructura de árbol. Proceso Padre - Hijo.
El proceso A creó dos procesos derivados, B y C.  El proceso B creó tres derivados, D, E y F.
            Se dispone de otras llamadas al sistema para solicitar más memoria ( o para liberar memoria no utilizada), esperar a que termine un proceso hijo y cubrir su programa con uno diferente.

            En un sistema de multiprogramación, el (CPU) también cambia de un programa a otro, ejecutando cada uno en decenas o cientos de milisegundos. En tanto que, en rigor, en cualquier instante de tiempo, el CPU está ejecutando sólo un programa, en el curso de un segundo puede trabajar en varios programas, con la ilusión de paralelismo.

Proceso: Informalmente se define como la actividad que resulta cuando un proceso ejercita un programa, y formalmente consiste en un vector formado por lo siguiente, figura # 15:


            P = < C, Co, E, S, A >
                                                           Algoritmo
                                                           Datos de salida
                                                           Conjunto de datos de entrada {E1, E2, ... En}
                                                           Contexto inicial
                                                           Conjunto de contexto inicial {C0, C1, C2, ... Cn}


            Un proceso puede tomar diferentes estados, puede estar corriendo, puede estar libre o puede estar detenido.  Si consideramos que todo proceso esta constituido de una serie finita de actividades elementales una región crítica de un proceso se define como el conjunto de  actividades elementales cuya ejecución exige el monopolio de recursos compartidos.

            Formalmente se define como el conjunto de partes de los contextos internos compartidos.
                             
  
 Regiones críticas.


Los problemas que deben resolverse en un contexto de procesos concurrentes (como regiones críticas) son los siguientes:
            - Exclusión mutua.
            - Sincronización.
            - Dead lock (Abraso mortal ó Interbloqueo)

1 comentario: