L a v i d a d e u n p r o c e s o c o m i e n z a c o n Administrador de Procesos Concurrencia: Normalmente en una computadora co-existen n-procesos simúltaneamente Administrador de Procesos: se encarga de seleccionar el proceso en turno a ser ejecutado en el CPU Objetivo: maximizar uso del CPU bajo un tiempo de respuesta razonable manteniendo un uso justo, seguro y equilibrado del CPU entre los procesos. Proceso: programa en ejecución. • Aquel cuyas instrucciones son ejecutadas en ese momento por el CPU • Entidad que puede ser asignada y ejecutada por un procesador • Un proceso tiene un espacio de direcciones privado • Los procesos del SO corren en modo kernel (privilegiado o supervisor) • El resto de los procesos corren en modo usuario (sin privilegios) Programa: entidad estática grabada en disco Proceso: entidad dinámica grabada en memoria, i.e. processes, tasks, jobs Tabla 1. Analogías: Diferencia entre programa y proceso Programa Proceso receta cocinar platillo libro Leer libro Conforme se ejecuta un proceso, cambia de estado Tabla 2. Nombres comunes para cada estado Español Inglés l a Creado created Listo ready l l a m a d a En ejecución running Suspendido suspended, waiting Destruido terminated a l s i s t e m a d e f o Fig. 1. Estados Fundamentales de un Proceso 1 Fig. 2. Diagrama de Estados de un Proceso Gestión de Procesos: ciclo de vida La vida de un proceso comienza con la llamada al sistema defork, desde el shell por ejemplo con ./a.out : 1.-Con la llamada a fork se crea el proceso,iniciándose la información de contextoy asignando un PID al proceso hijo a.out.Su proceso padre será el "shell".( Un proceso no se crea si: no puedeencontrar el programa, faltade memoria, se ha sobrepasado elnúmerode procesos que se puede crear...) 2.-El proceso pasa a estado "listo para ejecutarse". 3.-Existe una función "scheduler" o "planificador" que en funciónde la política , se encargade seleccionar a un procesode la lista de "listo para ejecutarse". 4.-Un vez seleccionado el proceso a ejecutarse por el "planificador", se llama a la función "dispatcher" que se encargade pasar a estado de ejecución adicho proceso, restaurando su información de contexto. 5.-En ejecución se pasade modo usuario a modo supervisora travésde una llamada a sistema o interrupción (cada vez que senecesita ejecutar alguna rutinadel sistema operativo tal como una operaciónde E/S para escribir un mensaje en pantalla...). En modo usuario, se verifica lazona de memoria a la que se accede, no sobrepase su área de programa de usuario(zonadatos einstrucciones) y no modifica el áreadel Sistema Operativo(virus). Una vez finalizada la ejecuciónde la rutinade E/S, el S.Odevuelve el control al programade usuario, pasando a modo usuario 6.-Encaso de espera de un proceso por alguna operación de E/S,po run eventode otro proceso, o un timer(intervalode tiempo), el p lanificador envía al proceso a ³estado durmiendo´.Para lo cual el planificador selecciona el siguiente proceso a ejecutar y el dispatcher lo pasa a estadode ejecución. Una vez que la razón por el que un proceso esta "durmiendo" finalice el planificador pasa a estado "listo de ejecución". 7.-Los procesos tienen un quanto de tiempo de ejecución para el uso equitativode la CPU. Sabiendo que los procesos más prioritarios tendrán mayor número de quantos. 8.-En casode que la memoria esté saturada y haya necesidad deca rgar unpr ograma más prioritarioenmemoria, el swapper o intercambiador se encardadepasar un proceso menos prioritario a memoria secundariaguardando lainformaciónnecesaria para volverlo a cargar en memoria, y una vez finalizado la ejecuciónde un proceso,de pasarlo a memoria. Este transiegode memoria adisco ydisco a memoria se ledenomina "swapping de procesos". 9.-Un proce so puedeacabar su ejecución si : llamada al sistemade fin_programa:exit Otro 2 proceso le manda unSEÑALde SIGKILL: kill -9 nº PID Gestión de Procesos: Tabla de Procesos • Información de control para gestionar el proceso: • Planificación y estado: Temporizadores que contabilizan el tiempo de CPU utilizado en modo kernel y modo usuario • Descripción de los segmentos de memoria asignados al proceso. • Estado del procesador: valor de los registros de la cpu. • • Punteros para estructurar los procesos en colas. Para que el planificador las gestione. Comunicación entre procesos: • Descriptores de eventos: Qué eventos despertarán al proceso. • Campo de señales: enumera las señales recibidas pero todavía no tratadas Cambio de Contexto • • • • Cuando se esta ejecutando un proceso, se dice que el sistema se esta ejecutándo en el contexto de un proceso. Se denomina cambio de contexto a la acción de cargar el procesador con el contexto del proceso que pasa a ocupar la CPU, salvando previamente el contexto del proceso que abandona la CPU en su PCB. Se provoca un cambio de contexto cuando: fin quanto finaliza el proceso operación de sincronización-tenga que esperar llamada al sistema (operaciónde entrada/salida) mediante el mecanismo trap (interrupción software) queda bloqueado a la espera de finalizar la operación. Interrupción hardware que desbloquee un proceso más prioritario. la llegada de un proceso más prioritario. Planificador de Procesos:Unix,tradicional • Los PCBs estarán ordenados en la colas de preparados de acuerdo a la política de planificación utilizada. • El planificador se encarga de decidir a quién dará la tajada (slice o quanto)de tiempo. • En Unix se utiliza el algoritmo de planificación que se denomina Round Robin Multinivel con Prioridades Dinámicas. • 1º aproximación: Algoritmo Round-Robin • Cola FIFOde procesos planificados • Funcionamiento: Se coge el proceso más antiguo y una vez ejecutado su quanto, vuelve a introducirse en la cola. • Ventaja: Es un algoritmo justo. • Desventaja: los procesos con mayor prioridad se ejecutarán con la misma frecuencia que los menos prioritario Ordenes relativas a procesos: ps Examinar las opciones en el manual (castellano): -a: información de los procesos de todos los usuarios -e: variables de entorno -u: muestra los procesos de un solo usuario -r: sólo procesos en ejecución -x: todos los procesos del sistema -l: salida larga 3 Ejemplos: ps ±aux, ps -edaf Ordenes relativas a procesos: ps/top Ordenes de procesos: nice & renice • Nice ±n comando : fija el valor de nice para la ejecución de un cierto proceso • Valores válidos de -20 a 19 • Los usuarios sólo pueden bajar la prioridad • El root puede subir la prioridad a un proceso. • Ejemplo: lanzar los dos running y running1 con nice diferente y con el comando top visualizar lo que ocurre. • Renice ±n PID: Modifica la prioridad a un proceso ya en ejecución • Ejemplo: invertir la ejecución de running y running1, para que el menos prioritario pase a ser más prioritario (y consuma más CPU). Ordenes de procesos: sleep, wait, nohup • Sleep tiempo (segundos): Demora durante un cierto tiempo el inicio de una orden o genera una espera durante la ejecución • (sleep 3600; who >> registro) & • Wait: cuando en programación shell, nos interesa esperar a que acaben los procesos en background (&) antes de ejecutar la siguiente orden: • Orden1 > archivo1 & • Orden2 > archivo2 & • Wait • Sort archivo1 archivo2 • Nohup: Cuando un proceso muere, todos sus subordinados ±si los hubiera- mueren también. Al finalizar una sesión (login, konsole) también. • Con nohup, un comando seguirá en ejecución a pesar de que el usuario que lo lanza se haya desconectado. Es interesante redirigir las salidas para capturarlas: • Nohup orden > salida 2>errores & Ordenes de procesos: kill y señales • Kill: envía señales a procesos • Kill ±nº_de_señal PID • Un usuario puede eliminar cualquier proceso suyo • El root puede eliminar cualquier proceso • Las señales son sucesos externos a los procesos que tienen un número asociado. • Por defecto se ejecuta la señal 15 SIGTERM (finalización software) • La señal nº 9 SIGKILL provoca la terminación incondicional e inmediata del proceso • Kill -9 PID • Ejemplo:Desde konsole arrancar varios programas y finalizarlos con kill y/o con xkill Procesos: Control de trabajos (bg, fg, jobs, CTRL+Z) 1-Desde un terminal en X lanzamos un proceso (mozilla) 2-El terminal queda bloqueado 3-Con CTRL+Z paramos el proceso 4-Con ps vemos que el proceso esta sTopped 5-Con ³jobs´ vemos la lista de tareas de esa terminal 6-Con bg lo mandamos a segundo plano 7-Con fg + nº de trabajo lo traemos a primer plano de nuevo (bloqueamos terminal 4