BCP, Cambios e InterrupcionesThis is a featured page

Bloque de control del proceso

El Bloque de control del proceso ó BCP o en inglés PCB (Process Control Block) es un registro especial donde el sistema operativo agrupa toda la información que necesita conocer respecto a un proceso particular. Cada vez que se crea un proceso el sistema operativo crea el BCP correspondiente para que sirva como descripción en tiempo de ejecución durante toda la vida del proceso.

Cuando el proceso termina, su BCP es borrado y el registro puede ser utilizado para otros procesos. Un proceso resulta conocido para el sistema operativo y por tanto elegible para competir por los recursos del sistema sólo cuando existe un BCP activo asociado a él. El bloque de control de proceso es una estructura de datos con campos para registrar los diferentes aspectos de la ejecución del proceso y de la utilización de recursos. La información almacenada en un BCP incluye típicamente algunos o todos los campos siguientes:

· Identificador del proceso (Process Identificator -PID-, de sus siglas en Inglés).
· Estado del proceso. Por ej. listo, en espera, bloqueado.
· Contador de Programa: Dirección de la próxima instrucción a ejecutar.
· Valores de registro de CPU. Se utilizan también en el cambio de contexto.
· Espacio de direcciones de memoria.
· Prioridad en caso de utilizarse dicho algoritmo para planificación de CPU.
· Lista de recursos asignados (incluyendo descriptores de archivos y sockets abiertos).
· Estadísticas del proceso.
· Datos del propietario (owner).
· Permisos asignados.
· Signals pendientes de ser servidos. (Almacenados en un mapa de bits)

Esta lista es simplemente indicativa, cada sistema operativo tiene su propio diseño de BCP, con el conjunto de metadatos necesarios para la administración. Puede medir desde 32 bits a 1024. Su denominación cambia según el sistema operativo, por ej. en IBM se designa PSW por palabra de estado de proceso. Difiere significativamente entre los sistemas de procesamiento por lotes (BATCH) y los sistemas interactivos.

Algunos sistemas de multiprogramación incluyen información de mantenimiento con el propósito de facturar a los usuarios individuales el tiempo de procesador, el almacenamiento, las operaciones de E/S y otras utilizaciones de recursos.
Una vez creado, el BCP se rellena con los atributos definidos como parámetros que se hallan en la plantilla del proceso o que son especificados como parámetros de la llamada al sistema operativo crear_proceso. En ese momento el sistema operativo suele asignar valores a otros campos. Por ejemplo, cuando se crea un proceso, los registros e indicadores hardware se fijan a los valores proporcionados por el cargador/enlazador. Cada vez que un proceso queda suspendido, el contenido de los registros del procesador es generalmente guardado en la pila, y el puntero al marco de la pila en cuestión se almacena en el BCP. De este modo los valores de los registros son restaurados cuando el proceso es seleccionado para ejecutarse nuevamente.

Listas de procesos

El Sistema Operativo mantiene listas de Bloque de Control de procesos para cada uno de los estados del sistema.
Cada proceso pertenece a una única lista. Posee una lista de procesos prepara dos, una lista de los bloquea dos y en el caso de sistemas multiprocesador es una lista de procesos activos.


Cambio de contexto

Un cambio de contexto consiste en la ejecución de una rutina perteneciente al núcleo del sistema operativo multitarea de una computadora, cuyo propósito es parar la ejecución de un hilo (o proceso) para dar paso a la ejecución de otro distinto.

Motivación

En principio, una computadora que dispone de un único microprocesador solamente puede ejecutar un programa al mismo tiempo. No es posible ejecutar otro programa hasta que ha finalizado el anterior.
No obstante, sería posible simular la ejecución simultánea de dos o más programas si fuera posible detener un programa en cualquier momento y renaudarlo posteriormente sin pérdida de información. Los programas alternarían su ejecución durante cortos periodo de tiempo aparentando que se ejecutan todos a la vez. Esto se denomina ejecución concurrente.
Además, durante la ejecución de un programa existen muchos tiempos muertos donde no es necesario el uso del microprocesador. Se trata de los momentos en los que el programa está esperando a que finalice una operación de entrada/salida, por ejemplo, una lectura desde el disco duro. Estos tiempos muertos podrían aprovecharse para ejecutar otro programa.

Cómo funciona

Para hacer realidad la ejecución concurrente en primer lugar es necesario que el programa en ejecución se detenga voluntariamente. Puesto que esto no va a ocurrir nunca, es imprescindible la intervención del hardware. Gracias a las interrupciones generadas por el propio ordenador, es posible expulsar el programa en ejecución para dar paso al sistema operativo.
Cuando esto ocurre, el sistema operativo ejecuta inmediatamente la rutina de cambio de contexto. Esta rutina realiza las siguientes operaciones en el orden indicado:

1. Salvar el estado del programa que se estaba ejecutando. El estado, también denominado contexto, consiste en los valores de todos los registros del microprocesador. Se copian en la memoria principal.
2. Seleccionar otro programa para ejecutar. Entre todos los programas que estén preparados para ejecutarse, la rutina selecciona uno de ellos siguiendo algún algoritmo equitativo.
3. Restaurar el estado del programa seleccionado. Para ello, se toma el estado previamente copiado en la memoria principal y se vuelca en los registros del microprocesador.
4. Ejecutar el programa seleccionado. La rutina termina su ejecución saltando a la instrucción que estaba pendiente de ejecutar en el programa seleccionado.

Este ciclo se repite bien cada vez que ocurre un evento de entrada/salida, bien cuando vence un temporizador programado en el hardware. Dicho temporizador hace saltar una interrupción cada 150 milisegundos aproximadamente (según sistema operativo).

Se denomina conmutación de contexto al mecanismo mediante el cual el sistema almacena la información del proceso que se está ejecutando y recupera la información del proceso que ejecutará enseguida. A continuación se presenta un esquema explicativo de este mecanismo:
BCP, Cambios e Interrupciones - SoWiKi, sistemas operativos


La ejecución concurrente también es aplicable a computadoras Multiprocesador. En este caso, se llevan a cabo cambios de contexto en cada microprocesador de manera independiente. Un cambio de contexto siempre se ejecuta ante una interrupción ya sea de software o hardware. Un cambio de contexto no necesariamente implica un cambio de proceso. Cuando ocurre una interrupción que sólo genera un cambio de contexto más no un cambio de proceso, todo lo que se debe hacer es salvar la información de estado del procesador cuando se produzca la interrupción y restaurar dicha información cuando el control vuelva al programa que estaba en ejecución. Las funciones de salvar y restaurar suelen llevarse acabo en el hardware.

Cambio de Modo

Las aplicaciones no deben poder usar todas las instrucciones de la CPU. No obstante el SO, tiene que poder utilizar todo el juego de instrucciones del CPU. Por ello, una CPU debe tener (al menos) dos modos de operación diferentes:

· Modo usuario: el CPU podrá ejecutar sólo las instrucciones del juego restringido de las aplicaciones.
· Modo supervisor: la CPU debe poder ejecutar el juego completo de instrucciones.

Interrupciones y excepciones

El SO ocupa una posición intermedia entre los programas de aplicación y el hardware. No se limita a utilizar el hardware a petición de las aplicaciones ya que hay situaciones en las que es el hardware el que necesita que se ejecute código del SO. En tales situaciones el hardware debe poder llamar al sistema, pudiendo deberse estas llamadas a dos condiciones:
· Algún dispositivo de E/S necesita atención.
· Se ha producido una situación de error al intentar ejecutar una instrucción del programa (normalmente de la aplicación).

En ambos casos, la acción realizada no está ordenada por el programa de aplicación, es decir, no figura en el programa.
Según los dos casos anteriores tenemos las interrupciones y la excepciones:

· Interrupción: señal que envía un dispositivo de E/S a la CPU para indicar que la operación de la que se estaba ocupando, ya ha terminado.
· Excepción: una situación de error detectada por la CPU mientras ejecutaba una instrucción, que requiere tratamiento por parte del SO.

Al interrumpirse la ejecución de un proceso se salva su estado en el BCP, como se puede observar en la siguiente imagen:

Interrupcion de un proceso


Tratamiento de las interrupciones

Una interrupción se trata en todo caso, después de terminar la ejecución de la instrucción en curso.
El tratamiento depende de cuál sea el dispositivo de E/S que ha causado la interrupción, ante la cual debe poder identificar el dispositivo que la ha causado.

Importancia de las interrupciones

El mecanismo de tratamiento de las interrupciones permite al SO utilizar la CPU en servicio de una aplicación, mientras otra permanece a la espera de que concluya una operación en un dispositivo de E/S.
El hardware se encarga de avisar al SO cuando el dispositivo de E/S ha terminado y el SO puede intervenir entonces, si es conveniente, para hacer que el programa que estaba esperando por el dispositivo, se continúe ejecutando.
En ciertos intervalos de tiempo puede convenir no aceptar señales de interrupción. Por ello las interrupciones pueden inhibirse por programa (aunque esto no deben poder hacerlo las mismas).

Excepciones

Cuando la CPU intenta ejecutar una instrucción incorrectamente construida, la unidad de control lanza una excepción para permitir al SO ejecutar el tratamiento adecuado. Al contrario que en una interrupción, la instrucción en curso es abortada. Las excepciones al igual que las interrupciones deben estar identificadas.

Clases de excepciones

Las instrucciones de un programa pueden estar mal construidas por diversas razones:
  • El código de operación puede ser incorrecto.
  • Se intenta realizar alguna operación no definida, como dividir por cero.
  • La instrucción puede no estar permitida en el modo de ejecución actual.
  • La dirección de algún operando puede ser incorrecta o se intenta violar alguno de sus permisos de uso.

Importancia de las excepciones

El mecanismo de tratamiento de las excepciones es esencial para impedir, junto a los modos de ejecución de la CPU y los mecanismos de protección de la memoria, que las aplicaciones realicen operaciones que no les están permitidas. En cualquier caso, el tratamiento específico de una excepción lo realiza el SO.
Como en el caso de las interrupciones, el hardware se limita a dejar el control al SO, y éste es el que trata la situación como convenga.
Es bastante frecuente que el tratamiento de una excepción no retorne al programa que se estaba ejecutando cuando se produjo la excepción, sino que el SO aborte la ejecución de ese programa. Este factor depende de la pericia del programador para controlar la excepción adecuadamente.


martinorengia
martinorengia
Latest page update: made by martinorengia , Apr 18 2008, 2:07 PM EDT (about this update About This Update martinorengia Edited by martinorengia

22 words added
1 image added

view changes

- complete history)
More Info: links to this page
There are no threads for this page.  Be the first to start a new thread.

Related Content

  (what's this?Related ContentThanks to keyword tags, links to related pages and threads are added to the bottom of your pages. Up to 15 links are shown, determined by matching tags and by how recently the content was updated; keeping the most current at the top. Share your feedback on Wetpaint Central.)