lunes, 25 de julio de 2016




III Unidad: BLOQUE DE CONTROL DE PROCESOS:



Bloque de control de proceso (BCP).
En inglés:
* PCB = Process Control Block
* Definición: Es una estructura de datos que permite al sistema operativo controlar diferentes aspectos de la ejecución de un proceso.
* Estructura típica del PCB de un proceso:
El PCB se organiza en un conjunto de campos en los que se almacena

Información de diversos tipos. Los campos típicamente mantenidos en el PCB de un proceso se muestran en la figura siguiente:




 • Cada proceso se representa en el S.O (Sistema Operativo), por un conjunto de datos, que incluye toda la información necesaria para definirlo: el estado, recursos utilizados, registros.
 
• Este conjunto de datos se conoce como bloque de control de procesos. (PCB), y es toda la información que el S.O. necesita para ejecutar el programa. Es el proceso para el S.O.

• Estos datos pueden estar en la memoria principal o en el disco, pero los que son necesarios para determinar en qué situación se encuentra el proceso deben estar en memoria.

• Estas informaciones se almacenan en lo que se conoce como Bloque de Control de Procesos (BCP). 

• La Tabla de Procesos: es una estructura, generalmente estática por razones de eficacia, cuyas entradas son bloques de control de procesos.

• El Bloque de Control de Procesos contiene la información básica de cada proceso y que podemos definir aproximadamente:

• Información de identificación.

– Identificador del proceso.

– Identificador del proceso padre en caso de existir relaciones padre-hijo (UNIX).

– Información sobre el usuario (identificador del usuario, grupo):

• Estado del procesador.

• Información del control del proceso. Información diversa como:

– Información de planificación y estado:

• Estado del proceso.

• Evento por el que espera el proceso cuando está bloqueado.

• Prioridad del proceso.

• Información de planificación.

– Descripción de los segmentos de memoria asignados al proceso:

• Puntero al segmento de datos.

• Puntero al segmento de código.

• Puntero al segmento de pila.

– Recursos asignados, tales como:

• Archivos abiertos (tabla de descriptores o manejadores de archivo).

• Puertos de comunicación asignados

• Punteros para estructurar los procesos en colas o anillos.

• Comunicación entre procesos. El BCP puede contener espacio para almacenar las señales y para algún mensaje enviado al proceso.

Concepto de Proceso:

• Todo lo que sucede dentro de un ordenador está determinado por la  ejecución de procesos, quiere esto decir que se trata del objeto básico y fundamental. Podemos definir un proceso como un  programa en ejecución o en disposición de ser ejecutado cuando  las circunstancias que rodean el mismo así lo determinen.

• Un programa es un código objeto reposando en memoria, es decir,  sin ser activado, pero un proceso es este objeto pero activado.

• La activación de este código implica la carga en memoria de parte o  todo él para su ejecución y la creación por parte del S.O. de un  conjunto de informaciones que permitan controlar la ejecución y desarrollo del mismo (PCB).

• El entorno definido por el contexto de hardware, de software y la imagen en ejecución representan un concepto dinámico que se  conoce como proceso.

• Un proceso es pues un programa en ejecución, incluyendo el código o instrucciones que lo componen, el contador de programa, los registros y las variables, es decir, contiene toda la información relativa al entorno en donde se ejecuta.

OPERACIONES SOBRE LOS PROCESOS:

• Crear: puede hacerse desde un proceso ya existente o a través del intérprete de comandos del S.O. en cualquier caso se considera hijo del proceso creador. El trabajo para el S.O. consiste en darle una  entrada en el PCB y pasarlo a la cola de preparados.

Hay varias formas de crear procesos:

• Inicialización del sistema. Cuando se inicia el sistema se crean varios procesos, algunos interactúan con el usuario y otros no
(Demonios).

• Ejecución de una llamada al sistema para crear procesos por parte de un proceso en ejecución. Mediante una llamada al sistema. Por ejemplo para bajar datos es conveniente crear un proceso para que los ponga en el buffer.

• Solicitud de un usuario para crear un proceso. En modo interactivo es muy común por parte de los usuarios.

• Inicio de un trabajo por lotes.  

– En cualquier caso la creación de procesos se hace mediante una llamada al sistema (fork en UNIX y execve). Los pasos de creación de procesos en UNIX es el siguiente:

• Un proceso especial llamado init , está presente en la imagen de arranque. Cuando dicho proceso comienza a ejecutarse lee un archivo que indica cuantas terminales hay, y genera un proceso nuevo para cada una. Estos procesos esperan a que alguien inicie  sesión. Si hay inicio de sesión login exitoso, el proceso login  ejecuta un shell para aceptar comandos. Estos pueden generar más procesos, y así de forma sucesiva. Por lo tanto todos los procesos del sistema pertenecen a un árbol que tiene a init como raíz. 

- execve es usado por un proceso para cargar un nuevo ejecutable binario en el espacio virtual de memoria del proceso que hace la llamada
- vfork es igual que fork, pero no copia los datos ni la pila
- Secuencia ‘normal’ en la creación de un proceso:

* Todo sistema operativo debe proporcionar un servicio Create-Process, que será utilizado por un proceso para crear otro proceso.

* Al proceso que solicita el servicio Create-Process se le denomina proceso padre, y al proceso que es creado mediante este servicio, proceso hijo.
* Ejemplo:




* Este mecanismo de generación de procesos tiene como consecuencia que las relaciones de parentesco entre los procesos existentes en un sistema tenga estructura de árbol.

• Destruir: eliminar la entrada en la cola de PCB. Puede haber problemas en  la gestión de las propiedades heredadas del proceso padre o, si tiene procesos hijo, tener que esperar a que finalicen estos o los finaliza forzosamente.

– Terminación normal. Es la forma más normal (exit en UNIX).

– Terminación por error.  Por ejemplo: gcc uno.c y el fichero uno.c no  existe.

– Error fatal. Acceso a una posición no permitida, división por cero…
etc.

– Terminado por otro proceso. En UNIX es KILL.

• Cambiar la prioridad del proceso.

• Dormir o bloquear la ejecución de un proceso. Dormir un proceso un  tiempo.

• Despertar un proceso. Una forma de desbloquear un proceso de forma artificial. Se suele emplear para procesos dormidos artificialmente.

• Suspender un proceso. Suele hacerse en situaciones de sobrecarga del  S.O.

• Reanudar un proceso. Activar un proceso suspendido.

Estados de los Procesos:

Podemos dividirlos en activos e inactivos.

• ACTIVOS: compite por el procesador o está en condiciones de poder  hacerlo.

– Ejecución: proceso que tiene el control de la CPU.

– Preparado: está dispuesto para entrar en la CPU cuando el sistema así lo determine.

– Bloqueado: no pueden ejecutarse porque han realizado una operación  que exige una espera. Por ejemplo una operación de E/S.

• INACTIVOS: Estado en el que se sitúan los procesos que no pueden competir por el procesador.

– Suspendido bloqueado: procesos suspendidos mientras se esperaba un evento, y las causas de su bloqueo no han desaparecido.

– Suspendido preparado: procesos suspendidos pero que no tienen causas para estar bloqueados.


                                   TRANSICIONES DE ESTADO:



• Comienzo de la ejecución: se inserta en la cola de preparados.

• Paso a estado de ejecución: el que se encuentra primero en la cola pasa  a ejecutarse cuando el reloj haya interrumpido el que estaba en ejecución.

• Paso a estado bloqueado: un proceso que está en ejecución y pasa a realizar una operación de E/S pasa a la cola de bloqueados. Una segunda posibilidad es que un proceso se haya suspendido estando bloqueado y en el momento de la reanudación no haya desaparecido la causa de la suspensión.

• Paso a estado preparado: puede ser por cuatro causas:
– Ejecución de un programa.
– Fin de una operación de E/S. Pasa de bloqueado a estar preparado porque  finalizó la causa por la que estaba bloqueado.
– Interrupción. Si se produce una interrupción que fuerza a que se corte un  proceso, este pasa a preparado. Finalización del quantum.
– Activación. Un proceso suspendido pero que no estaba bloqueado, en el momento de activarlo de nuevo pasa a la cola de preparados.

• Paso a suspendido bloqueado: si estando suspendido, el S.O. da la orden de activarlo.

• Paso a suspendido preparado: se puede producir por tres causas:
– Suspender un proceso preparado.
– Desbloqueo de un proceso suspendido bloqueado. 



1 comentario: