PLANIFICACION DE PROCESOS Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen Se denomina planificador a aquella parte del sistema operativo encargada de asignar los recursos del sistema de manera que se consigan unos objetivos de comportamiento especificados. I. COLAS DE PROCESOS El sistema mantiene listas de BCP para cada uno de los estados del sistema:. Una cola para los procesos en estado preparado. Una cola para los procesos en estado bloqueado en cada dispositivo 3. Una cola para los procesos en estado suspendido. 4. Una cola para los procesos en estado activo (ejecución). La lista de procesos activos tendrá tantos elementos como procesadores tenga el sistema. El planificador es el que gestiona el paso de los procesos de una lista a otra, sobre la base de prioridades.. Procesos del kernel.. Procesos interactivos 3. Sub Procesos 4. Procesos E/S. Procesos en Lote ma78.tripod.com de /09/003
II. El reloj en tiempo real (RTR) Se encarga de generar una señal de forma periódica utilizada para producir una interrupción a un intervalo de tiempo fijo. III. TIPOS DE PLANIFICACION Planificación a largo plazo. Se conoce como Scheduler. Determina que programas se admitirán en el sistema 3. Se ejecuta menos frecuentemente. 4. Se invoca ante un proceso batch (crontab, job, at, lotes). Determina el grado de multiprogramación (cuantos procesos se ejecutaran a la vez). 6. Balancea la carga entre procesos intensos en CPU o en E/S. 7. Los procesos interactivos tienen más prioridad que los procesos batch. 8. A más procesos admitidos, mayor tiempo de atención total para los procesos. Planificación a corto plazo. Se conoce como Dispatcher. Determina que proceso será el siguiente en ejecutarse en el CPU. 3. Se ejecuta mas frecuentemente. 4. Se invoca ante: 4.. Una señal del reloj 4.. Una interrupción E/S 4.3. Una llamada al sistema operativo (ejecución de subprocesos) 4.4. Señales que cambien el BCP de un proceso 4.. Finalización de un E/S 4.6. Activación de programas interactivos Planificación a mediano plazo. Se conoce como Swapper. Selecciona procesos para pasarlos a memoria secundaria. 3. Determina el grado de multiprogramación (cuantos procesos se ejecutaran a la vez). 4. Balancea la carga entre procesos intensos en CPU o en E/S. ma78.tripod.com de /09/003
a largo plazo Nuevo a largo plazo Listo y Suspendido a medio plazo Listo a corto plazo Ejecutado Bloqueado y Suspendido a medio plazo Bloqueado Terminado IV. TIPO DE PROCESOS. Procesos en Tiempo Real. Un proceso en tiempo real requiere ser cumplido en el tiempo necesario pedido y el sistema debe hacer todo lo posible para terminarlo en ese tiempo. Procesos Normales. Un proceso normal no tiene tiempo límite para su ejecución. Procesos No Expropiativos. Un proceso al que no se le puede quitar el uso del CPU, una vez que lo tome. Procesos Expropiativos. Un proceso que puede compartir el uso del CPU con otros procesos. V. POLITICAS DE PLANIFICACIÓN EN LINUX Se aplican en el planificador de corto plazo. SCHED_FIFO. Política para procesos en tiempo real no expropiativos. Estos procesos se colocan en la cola de preparados 3. Cuando el actual proceso cesa de ejecutarse, se selecciona el proceso SCHED_FIFO más antiguo de mayor prioridad. 4. Un proceso SCHED_FIFO deja de ejecutarse si: 4.. Otro proceso SCHED_FIFO de más prioridad ha ingresado a la cola de preparados. 4.. El proceso se suspende por que ha empezado una interrupción E/S. 4.3. El proceso cesa voluntariamente su ejecución al indicársele SCHED_YIELD desde el sistema operativo. 0 0 0 3 4 ma78.tripod.com 3 de /09/003
SCHED_RR. Política para procesos en tiempo real expropiativos.. Son expropiados del CPU en base un intervalo del reloj del sistema. 3. Cuando termina el intervalo, el proceso actual se coloca en la cola de preparados. 4. Una vez terminado el intervalo para un proceso SCHED_RR, se selecciona de la cola primero los procesos SCHED_FIFO de mayor prioridad; y a continuación los procesos SCHED_RR en base a la prioridad y antigüedad.. Cuanto más tiempo se encuentre usando el proceso el CPU, su prioridad disminuye. 0 3 4 SCHED_OTHER. Pueden ejecutarse cuando no existe ningún proceso de tiempo real preparado.. El proceso a ejecutar se elige tras examinar las prioridades dinámicas. VI. ALGORITMO DE PLANIFICACION EN LINUX El BCP tiene los siguientes atributos: p->counter (quantum). Número de ticks de reloj que quedan en esta porción de tiempo del planificador.. También llamado prioridad dinámica de un proceso porque puede cambiarse a si mismo. p->priority (quantum base). La prioridad estática del proceso. Se cambia a través del comando setpriority (). p->rt_priority. Prioridad en tiempo real del proceso. p->policy. La política de planificación como SCHED_FIFO, SCHED_RR, SCHED_OTHER.. Siempre se elegirán en ese orden. 3. Se puede cambiar mediante el comando sched_setscheduler () o sched_yield (). Funcionamiento General. Linux divide el tiempo del CPU en épocas. En cada época cada proceso tiene un quantum de tiempo que se le asigna al comenzar la época en p->counter 3. Si es un proceso nuevo se le asigna un tiempo p->counter igual a la p->priority. 4. Cuando un proceso agota su quantum, se le expulsa del CPU y se selecciona otro proceso preparado.. Un proceso puede ser seleccionado múltiples veces mientras no agote su quantum (si ha sido expulsado del CPU por ejemplo por una interrupción E/S) 6. La época termina cuando todos los procesos preparados han usado parte de su quantum. 7. Al terminar la época, se reasignan los quantum para la siguiente época, favoreciendo a los procesos que aun no han agotado su quantum en la época anterior. 8. Todos los procesos inician con un quantum base, si en la época anterior se le agoto su quantum, se le asigna uno por defecto (DEF_PRIORITY=0*HZ/00). ma78.tripod.com 4 de /09/003
9. Si en la época anterior no agoto su quantum, Se le asigna un quantum = quantum de la época anterior *. 0. Cada vez que el reloj realiza un click, se resta al quantum del proceso en ejecución.. Cuando se crea un proceso hijo, el quantum se reparte entre el proceso hijo y el proceso padre.. Para seleccionar un proceso en una época se realiza en base a una función como la siguiente; eligiendo el proceso con mayor valor. Si (p->policy!= SCHED_OTHER) Retornar 000 + p->rt_priority; Si (p->counter == 0) Retornar 0; Si (p->mm == prev->mm) /* Procesos padre e hijo comparten la misma memoria */ Retornar p->counter + p->priority + ; Retornar p->counter + p->priority; Bibliografía http://atc.aut.uah.es/~assooit/downloads.html Tema 6: Planificación y Gestión de Procesos. ma78.tripod.com de /09/003