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.
Excelente
ResponderEliminar