Buscar este blog

sábado, 15 de enero de 2011

2.4 Control de Procesos Sistemas Operativos

2.4 Control de Procesos Sistemas Operativos
Creación de procesos
El procedimiento del sistema operativo para la creación de un nuevo proceso incluye los pasos siguientes:
1.       Asignar un único identificador al nuevo proceso. En ese momento se añade una nueva entrada a la tabla principal de procesos, que contiene una entrada por proceso.
2.      Asignar espacio para el proceso. Esto incluye todos los elementos de la imagen del proceso.
3.      Debe inicializarse el PCB. La parte de información del estado del procesador normalmente se inicializa con la mayor parte de las entradas a cero, excepto para el IP (que se prepara con el punto de entrada del programa) y los punteros a las pilas del sistema (que establecen los límites de la pila del proceso). La parte de información de control del procesador se inicializa a partir de los valores estándares por omisión y los atributos que se han solicitado para el proceso. La prioridad puede asignarse por omisión al valor más bajo, a menos que se haya hecho una solicitud explícita de un valor mayor.
4.      Se deben establecer los enlaces apropiados
5.       Puede haber otras estructuras de datos que crear o ampliar.
Cambio de proceso
A primera vista, la función de cambio de proceso parece sencilla. En cierto momento, un proceso que está ejecutándose se interrumpe, el sistema operativo pone a otro proceso en el estado de Ejecución y pasa el control a dicho proceso. Sin embargo, surgen algunas cuestiones. Una de esas cuestiones es cuándo cambiar de proceso.
Existen tres mecanismos para realizar un cambio de proceso:
·         Interrupción: originada por algún suceso externo e independiente del proceso que está ejecutándose. El control se transfiere primero a un gestor de interrupciones, quien lleva a cabo algunas tareas básicas y luego se salta a una rutina del sistema operativo que se ocupa del tipo de interrupción que se produjo. Algunos ejemplos son:
. Interrupción de reloj: el S.O. determina si el proceso que está ejecutándose ha estado ejecutándose durante un máximo de tiempo permitido. Si esto ocurre, el proceso pasa al estado Listo y se debe expedir otro proceso.
. Interrupción de E/S: cuando el S.O. reconoce que se produjo una acción de E/S, y la acción constituye un suceso que están esperando uno o más procesos, entonces el S.O. traslada todos los procesos bloqueados al estado Listo y decide si reanuda la ejecución del proceso que está actualmente en estado de Ejecución o se expulsa a dicho proceso en favor de un proceso Listo de mayor prioridad.
. Fallo de memoria: cuando el procesador encuentra una referencia a una dirección de memoria virtual de una palabra que no está en memoria principal, el S.O. debe traer a dicha memoria el bloque que contiene la referencia. Después de hacer la solicitud de E/S para traer el bloque de memoria, el S.O. puede llevar a cabo un cambio de contexto para reanudar la ejecución de otro proceso; el proceso que cometió el fallo de memoria se pasa a estado Bloqueado. Después de que el bloque en cuestión se carga en memoria, dicho proceso se pone en estado Listo.
·         Cepo: tiene que ver con una condición de error o de excepción generada dentro del proceso que está ejecutándose, como un intento ilegal de acceso a un archivo. El sistema operativo determina si el error ocurrido es fatal. Si lo es, el proceso que estaba ejecutándose pasa al estado de Terminado y se produce un cambio de proceso. Si no es fatal, se puede intentar algún procedimiento de recuperación o, simplemente, notificarlo al usuario. Se puede hacer un cambio de proceso o, simplemente, reanudar el mismo proceso que se estaba ejecutando.
·         Llamada del supervisor: se producen desde el programa que estaba ejecutándose. Por ejemplo, se está ejecutando un proceso de usuario y se llega a una instrucción que solicita una operación de E/S, tal como abrir un archivo. Esta llamada provoca la transferencia a una rutina que forma parte del código del sistema operativo. Por lo general, el uso de una llamada al sistema hace que el proceso de usuario pase al estado Bloqueado.
Cambio de contexto
Durante un ciclo de instrucción, el procesador comprueba si se ha producido alguna interrupción. Si no hay interrupción pendiente, continúa con el ciclo de lectura de la instrucción siguiente del programa en curso del proceso actual.
Si hay alguna interrupción pendiente, el procesador salva el contexto del programa que está ejecutándose y asigna al IP el valor de la dirección de comienzo de un programa de tratamiento de la interrupción. El procesador continúa entonces con el ciclo de lectura de instrucción y trae la primera instrucción del programa de tratamiento de interrupciones, que atenderá a la interrupción. Al salvar el contexto, se debe incluir cualquier información que pueda alterarse por la ejecución de la rutina de tratamiento de la interrupción y que pueda ser necesaria para reanudar el programa que fue interrumpido. Así pues, deberá salvarse la parte de información de estado del procesador del PCB. El resto de la información del PCB depende de la influencia del tratamiento de la interrupción en el proceso.
Cambio de estado de los procesos
Está claro que el cambio de contexto es un concepto distinto del cambio de proceso. En los cambios de estado del proceso, por ejemplo, si el proceso que estaba ejecutándose pasa a otro estado (Listo, Bloqueado, etc) los pasos que se llevan a cabo son:
1.       Salvar el contexto del procesador
2.      Actualizar el PCB que estaba en estado de Ejecución. Esto implica cambiar el estado del proceso a alguno de los otros estados.
3.      Mover el PCB a la cola apropiada (Listos, Bloqueados, etc.)
4.      Seleccionar otro proceso para ejecución
5.       Actualizar el PCB del proceso seleccionado. Esto incluye cambiar el estado del proceso a Ejecución.
6.      Actualizar las estructuras de datos de gestión de memoria.
7.       Restaurar el contexto del proceso a aquél que existía en el momento en el que el proceso seleccionado dejó por última vez el estado de Ejecución.
Ejecución del sistema operativo
El S.O. es un conjunto de programas y es ejecutado por el procesador, entonces ¿es el sistema operativo un proceso?. Existen tres enfoques referidos a la ejecución de los S.O.:
Núcleo fuera de todo proceso
Un enfoque bastante tradicional y habitual en muchos de los sistemas operativos más antiguos es ejecutar el núcleo del sistema operativo fuera de cualquier proceso. Cuando el proceso en ejecución es interrumpido o hace una llamada de supervisor, se salva el contexto del procesador para este proceso y se pasa el control al núcleo. El S.O. tiene su propia región de memoria y su propia pila del sistema para controlar las llamadas y retornos de procedimientos. El S.O. puede llevar a cabo cualquier función deseada y luego restaurar el contexto del proceso interrumpido para reanudarlo.
El punto clave es que se considera que el concepto de proceso se aplica sólo a los programas de usuario. El código del S.O. se ejecuta como una entidad separada que opera en modo privilegiado.
Ejecución dentro de los procesos de usuario
Ejecuta casi todo el software del sistema operativo en el contexto de un proceso de usuario. El enfoque es que el S.O. es principalmente una colecciónde rutinas que el usuario llama para llevar a cabo varias funciones y que son ejecutadas dentro del entorno del proceso de usuario. Una pila del núcleo separada se utiliza para gestionar las llamadas y los retornos mientras que el proceso esté en el modo del núcleo. El código y los datos del sistema operativo están en el espacio de direcciones compartidas y son compartidos por todos los procesos de usuario.
Cuando se produce una interrupción, un cepo o una llamada del supervisor, el procesador se pone en modo del núcleo y el control pasa al S.O. Con tal fin, se salva el contexto del procesador y tiene lugar un cambio de contexto hacia una rutina del S.O. Sin embargo, la ejecución continúa dentro del proceso de usuario en curso.
Si el sistema operativo, al completar su trabajo, determina que el proceso en curso debe continuar ejecutándose, entonces se lleva a cabo un cambio de contexto para reanudar el programa interrumpido del proceso en curso.
Sistema operativo basado en procesos
Consiste en implementar el sistema operativo como una colección de procesos del sistema. Al igual que en las otras opciones, el software que forma parte del núcleo ejecutará en modo núcleo. En este caso, sin embargo, las funciones más importantes del núcleo se organizan en procesos separados. Impone unas normas de diseño de programas que promueven el uso de un S.O. modular con interfaces intermódulos mínimas y claras. Además, algunas funciones no críticas del S.O. se pueden implementar como procesos separados. Como un proceso, la función podrá ejecutar con un nivel de prioridad asignado y ser intercalada con otros procesos bajo el control del distribuidor. Por último, implementar el S.O. como un conjunto de procesos es útil en un entorno multiprocesador o multicomputador, en el cual algunos de los servicios del S.O. pueden enviarse a procesadores dedicados, mejorando así el rendimiento.

No hay comentarios:

Publicar un comentario