Story Transcript
Tema 19 - Gestión de Procesos
28/03/2011
Tema 19 – Gestión de procesos Índice 1 Introducción........................................................................................................................1 2 Componentes de un proceso...............................................................................................2 3 Modos de ejecución de un proceso.....................................................................................2 3.1 Estados de un proceso............................................................................................................3
4 Gestión de Procesos............................................................................................................4 4.1 Creación y terminación de los procesos................................................................................4 4.2 Cambio de proceso.................................................................................................................4 4.3 Planificación y expedición de los procesos............................................................................5 4.3.1 Algoritmos de planificación a corto plazo.........................................................................................5
4.4 Comunicación entre procesos y gestión de la concurrencia................................................7
5 Procesos e hilos...................................................................................................................8
1
Introducción
Todos los sistemas operativos - de aquí en adelante SO - de multiprogramación, desde los SO Windows hasta los SO Unix, están construidos en torno al concepto de proceso. Un proceso es una entidad que puede ser asignada a un procesador y ejecutada por él. Un programa al ejecutarse puede dar lugar a un proceso o a varios. Los requisitos principales que debe cumplir un SO a la hora de gestionar la ejecución de los procesos son: El SO debe intercalar la ejecución de un conjunto de procesos para maximizar la utilización de los procesadores, ofreciendo a su vez un tiempo de respuesta razonable. El SO debe asignar los recursos a los procesos conforme a una política específica (p.e: prioridades) y evitar los interbloqueos. El SO debe dar soporte a la comunicación entre procesos y a la creación de procesos por parte de los usuarios. Los SO pueden ejecutar un conjunto de procesos de dos formas según sus requisitos: Por multiprogramación por lotes. Los procesos se ejecutan sin interrupción por el procesador, sólo se sustituye el proceso que se ejecuta cuando se detiene en espera de algún suceso (p.e una operación de E/S). Con este sistema se consigue maximizar la utilización del procesador. Por tiempo compartido. En sistema interactivos, donde el objetivo es minimizar el tiempo de respuesta. A cada proceso se le asigna un tiempo máximo de ejecución seguida por el procesador –Quantum-, si llega al tiempo máximo, el
Página 1 de 8
Tema 19 - Gestión de Procesos
28/03/2011
SO asigna el procesador a otro proceso. Las ordenes al SO vienen dadas en el terminal.
2
Componentes de un proceso
Se puede considerar que un proceso está formado por cuatro partes diferentes, que son: El código del programa a ejecutar. Es el conjunto de instrucciones a ejecutar por el procesador. Los datos del usuario: Es la parte modificable del espacio de memoria del usuario. Donde se almacenan las variables del programa, las estructuras de datos... La pila del sistema. Cada proceso tiene una o más pilas FIFO asociadas a él. En las pilas se utilizan para almacenar los parámetros de llamada a subrutinas y las direcciones de retorno… El uso de una pila permite la llamada recursiva de subrutinas. El contexto de ejecución incluye la información que necesita el SO para administrar el proceso y la información que necesita el procesador para ejecutarlo correctamente. En el contexto de ejecución se guardan datos como el contenido de los registros del procesador, el contador del programa, la prioridad del proceso... La colección de código de programa, datos, pila y contexto de ejecución puede llamarse imagen del proceso. Para que un proceso pueda ejecutarse al menos parte de la imagen del proceso debe estar ubicada en memoria principal. Además el SO mantiene la información de los recursos asignados a un proceso, como por ejemplo archivos o dispositivos de E/S.
3
Modos de ejecución de un proceso
La mayoría de los procesadores dan soporte, como mínimo, a dos modos de ejecución como mínimo: El modo usuario en el cual se tienen menos privilegios y ciertas instrucciones no pueden ejecutarse, por ejemplo instrucciones que modifiquen los registros del control del procesador,
el modo del sistema en el cual se tienen todos los privilegios.
La razón por la que se usan dos modos de ejecución es proteger al SO de las injerencias de los programas de usuario, tanto casuales como maliciosas. En el modo del sistema, un proceso tiene el control completo del procesador y de todas sus instrucciones, registros o memoria. Este nivel de control no es necesario ni conveniente para los programas de usuario, porque sino podrían colgar el sistema e incluso tomar el control del ordenador. En el caso de que un proceso de usuario tenga que realizar operaciones que necesiten privilegios, realiza una llamada a una primitiva del SO. De esta forma, el SO lo sustituye en el procesador y se ejecuta la primitiva en modo sistema.
Página 2 de 8
Tema 19 - Gestión de Procesos
3.1
28/03/2011
Estados de un proceso
Durante la ejecución de un proceso este puede pasar por varias fases diferentes. Los estados de un sistema multiprogramado de tiempo compartido y memoria virtual se puede explicar utilizando un modelo de 7 estados: Admitir
Nuevo
Activar
Admitir
Listo
Expedir Time-out
Ejecutado Liberar
Suspender
Listo Suspendido
Ocurre Suceso
Espera Suceso
Terminado
Activar
Suspendido - Bloqueado
Suspender
Bloqueado
Nuevo: El proceso acaba de crearse y todavía no está admitido por el SO en el grupo de procesos ejecutables.
Listo: El proceso queda preparado para ser ejecutado, en cuanto se le de la oportunidad. La imagen del proceso, parte de ella se encuentra en memoria principal.
Listo – Suspendido: El proceso está disponible para ser ejecutado, pero no está en memoria principal por motivos de espacio. Cuándo el SO lo crea conveniente lo trasladará a la memoria principal y pasará al estado de Listo.
Ejecutado: El proceso está asignado a un procesador y se está ejecutando. Deja de ejecutarse por cualquiera de estos motivos: El proceso finaliza normalmente o por un error del programa, el proceso queda en espera de un suceso o consume el tiempo máximo asignado Quantum.
Bloqueado: El proceso está a la espera de que ocurra un suceso. Si el suceso se produce pasa al estado de listo para ejecución.
Bloqueado suspendido: Durante la espera de un proceso a que ocurra un suceso, puede que el SO necesite ocupar el espacio en memoria principal del proceso y por ello es mandado a memoria secundaria.
Terminado: El proceso a finalizado, y está a la espera que el SO liberé sus recursos.
Página 3 de 8
Tema 19 - Gestión de Procesos
4 4.1
28/03/2011
Gestión de Procesos Creación y terminación de los procesos
Cuando el SO decide crear un nuevo proceso sigue este proceder: 1. Le asigna un identificador único al proceso. 2. Se le asigna espacio de memoria al proceso. La imagen de proceso (programa, datos, pila, bloque de control) debe ser almacenado en memoria. 3. Se inicializan los datos del bloque de control de procesos. El contador de programa, los punteros de las pilas, prioridad... 4. El SO actualiza sus estructuras de gestión de procesos, y coloca el proceso en la lista de procesos listos para ejecutar. Para terminar un proceso finalizado, se realiza lo contrario. Se liberan los recursos asignados al proceso (archivos en uso, la memoria de la imagen del proceso...) y el SO actualiza sus estructuras de gestión de procesos. 4.2
Cambio de proceso
En cierto momento, un proceso que se está ejecutando se interrumpe, y el SO debe poner otro proceso en estado de ejecución y pasar el control a dicho proceso. Cuando el SO da el control a un proceso depende del procesador para volver a recuperarlo. Los motivos por el cual un proceso deja de ejecutarse son varios: Por una interrupción. Las interrupciones son señales de aviso que llegan al procesador y le indican que debe pasar el control al SO. Una interrupción de reloj – el proceso a consumido su Quantum-, una interrupción de E/S donde el SO toma el control para decidir que hacer o por un fallo de memoria, por el cual el SO debe tomar el control traer el bloque de memoria ausente en la memoria principal. Por un cepo. Una instrucción en curso ha producido un error o una condición excepcional. El SO debe tomar el control para tratarlo adecuadamente. Una llamada del supervisor. El proceso que está ejecutándose, realiza una llamada a una función del SO y este toma el control para responder a la petición. El cambio de procesos lo realiza el procesador, cuando un proceso debe ser sustituido, se realiza el cambio de contexto para que se ejecute el SO. Primero guarda el contexto de ejecución del proceso saliente (PC, valor de los registros del procesador, PSW...) en memoria, y se carga el del SO. El SO mueve el proceso saliente a la cola de procesos suspendidos, selecciona el siguiente proceso a ejecutarse y carga el contexto de ejecución del nuevo proceso, que a continuación toma el control del procesador y se ejecuta.
Página 4 de 8
Tema 19 - Gestión de Procesos
4.3
28/03/2011
Planificación y expedición de los procesos
La planificación del procesador consiste en asignar los procesos al procesador o los procesadores para que sean ejecutados en algún momento, de forma que se cumplan los objetivos del sistema tales como el tiempo de respuesta, la productividad y la eficiencia del procesador. En la mayoría de sistemas, la actividad de planificación se divide en tres funciones independientes: Planificación a largo plazo: Decisión de que proceso se añade a la reserva de procesos a ejecutar. De este modo, se controla el grado de multiprogramación. Planificación a medio plazo: Decisión de que procesos se trasladan desde la memoria secundaria a la principal. Un proceso para ser ejecutado, necesita que al menos una parte del mismo este en memoria principal. Planificación a corto: Decisión sobre que proceso disponible se ejecutará en el procesador. Se carga su información de contexto en los registros del procesador, para que comiencen a ejecutar sus instrucciones. La planificación está relacionada con el diagrama de transición de los estados de un proceso.
Planificación a largo plazo
Listo Suspendido
Suspendido - Bloqueado
Nuevo
Planificación a medio plazo
Planificación a medio plazo
Planificación a largo plazo
Listo
Planificación a corto plazo
Ejecutado
Terminado Bloqueado
4.3.1 Algoritmos de planificación a corto plazo Los algoritmos de planificación determinan a que proceso se le asigna el procesador entre la lista de procesos en estado de listos para ejecución. Los algoritmos de planificación deben asignar los procesos de forma justa, previsible, maximizando la productividad y velocidad de respuesta del sistema y evitando la inanición de algún proceso. Cumplir con todos estos principios es imposible, por ello, hay varias políticas diferentes:
Página 5 de 8
Tema 19 - Gestión de Procesos
28/03/2011
1. FIFO – Firs in, First out-. El primer proceso en solicitar el procesador es el primero en recibirlo. Es una política fácil de implementar, predecible y no apropiativa, pero con muchos inconvenientes: a. Es injusta. Los procesos con pocas y rápidas operaciones de E/S salen beneficiarios sobre el resto de procesos. b. Tiene un rendimiento pobre. c. No es apropiada para sistemas de tiempo compartido. 2. Shortest job first – Se asigna el procesador al proceso que lo utilizará durante el menor espacio de tiempo. Se consigue minimizar el tiempo de espera de los procesos. Es una técnica no apropiativa. Los procesos cortos esperan muy poco y los largos sólo esperan a los cortos. Inconvenientes: a. Difícil de implementar y de predecir. b.
Injusto con los procesos largos, puede producir inanición.
3. Shortest Remain Time Next – Se asigna el procesador al proceso que le quede menos tiempo para finalizar. Es una variante apropiativa de la anterior. Minimiza el tiempo medio necesario para finalizar un proceso. Inconvenientes, los mismos que el anterior: a. Difícil de implementar y de predecir. b.
Injusto con los procesos largos, puede producir inanición.
4. Prioridades – Cada proceso tiene un índice de prioridad. Los procesos prioritarios tienen acceso al procesador antes de los no prioritarios. Puede ser apropiativo o no apropiativo. Tiene el inconveniente de que puede provocar la inanición de los procesos con menor prioridad. Este inconveniente se puede solucionar, haciendo que el SO aumente la prioridad de los procesos en función del tiempo de espera. 5. Round Robin – Esta técnica se combina con cualquiera de las otras técnicas de planificación anteriores en los SO interactivos. Consiste en asignar un tiempo máximo –Quantum- de ejecución a cada proceso. De esta forma, el SO asegura una velocidad de respuesta adecuada para la interacción con usuarios. Esta técnica produce una sobrecarga al sistema que le resta productividad. Es una política de asignación justa con todos los procesos. Posibles problemas del Round-Robin: a. Si el Quantum es muy pequeño, se produce una gran sobrecarga del SO. El procesador está más tiempo gestionando procesos que realizando labores productivas. b. Si el Quantum es demasiado grande, la velocidad de respuesta del SO es demasiado lenta. El sistema deja de ser práctico para los usuarios.
Página 6 de 8
Tema 19 - Gestión de Procesos
4.4
28/03/2011
Comunicación entre procesos y gestión de la concurrencia
Un ordenador puede ejecutar varios procesos de forma simultánea. En ocasiones, los procesos interactúan entre ellos, intercambiando información. La comunicación se puede realizar de dos maneras diferentes: Mediante la compartición de recursos: Los procesos tiene un conocimiento indirecto de los otros. La comunicación se produce accediendo a un mismo espacio de almacenamiento, sea un fichero o memoria compartida. La programación de los procesos debe estar preparada para garantizar su exclusión mutua y la consistencia de las operaciones, por ejemplo la técnica de los semáforos. Hay SO que proporcionan mecanismos de comunicación que gestionan la concurrencia, como por ejemplo los pipeline de Unix. Mediante el envío de mensajes: Los procesos no comparten nada y pueden estar en ordenadores diferentes. No hay problemas de acceso concurrente a un mismo recurso. La programación de los procesos debe asegurar la correcta sincronización del envío de mensajes. Los SO también proporcionan mecanismos de comunicación, donde la sincronización es automática. Por ejemplo, primitivas de comunicación vía TCP/IP. En ambos casos, una mala gestión de las comunicaciones puede provocar problemas como: El interbloqueo entre procesos, cuando dos o más procesos están bloqueados pendientes entre si. Por ejemplo, el proceso A esta pendiente que el proceso B le envíe un mensaje. A su vez, el proceso B está pendiente que sea el proceso A que el envíe un mensaje. Los dos procesos quedan paralizados. La inanición de procesos, el proceso B está bloqueado pendiente de que el proceso A le conteste un mensaje. Pero el proceso A está ocupado respondiendo a mensajes de más prioridad que llegan continuamente. El proceso B tendrá un bajo rendimiento.
Página 7 de 8
Tema 19 - Gestión de Procesos
5
28/03/2011
Procesos e hilos
El concepto de proceso va ligado a dos características siguientes: •
Unidad de propiedad de los recursos: Un proceso tiene asignado un espacio en memoria para almacenar la imagen del proceso y se le asignan otros recusos, como canales de E/S o archivos.
•
Unidad de expedición: Un proceso es ejecutado por el procesador, y su ejecución puede ser intercalada con otros procesos. Por ello, se almacena la información de contexto del proceso (PC, PSW...).
Los SO actuales desligan estas dos características, e identifican con la unidad de expedición a la entidad “hilo”, o proceso ligero, y a la unidad de propiedad al proceso o tarea. De esta forma, un proceso puede tener varios hilos de ejecución, que son asignados individualmente por el SO al procesador. Los hilos de un proceso comparten el código del proceso, el campo asignado para el almacenamiento dinámico de memoria (heap) y los recursos asignados al procesador. El uso de hilos en un SO proporciona las siguientes ventajas: •
Rendimiento: Es más rápido crear hilos de un proceso existente, que crear nuevos procesos. También se tarda menos en alternar en el procesador dos hilos de un mismo proceso que dos procesos. Al compartir campos de la imagen del proceso, se ahorra en memoria. Por tanto, es más eficiente implementar, cuando se pueda, una aplicación como un conjunto de hilos que como un conjunto de procesos.
•
Al compartir memoria y archivos, la comunicación entre hilos es más fácil que entre procesos.
•
Facilita la organización de los programas. Los programas que realizan varias actividades diferentes y simultáneas, son más fáciles de diseñar e implementar con hilos. Por ejemplo: Una hoja de cálculo. Se puede diseñar como dos hilos: Uno se ocupa del interfaz y de la comunicación con el usuario y el otro de ejecutar los comandos recibidos y realizar las actividades de fondo.
Página 8 de 8