12.10.2014 Views

TEMA 2. GESTIÓN DE PROCESOS - Universidad de Almería

TEMA 2. GESTIÓN DE PROCESOS - Universidad de Almería

TEMA 2. GESTIÓN DE PROCESOS - Universidad de Almería

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Diseño <strong>de</strong> Sistemas Operativos<br />

Tema <strong>2.</strong> Gestión <strong>de</strong> Procesos<br />

• policy (política) Esta es la política <strong>de</strong> planificación que se aplicará a este proceso. Hay dos tipos <strong>de</strong><br />

procesos en Linux, normales y <strong>de</strong> tiempo real. Los procesos <strong>de</strong> tiempo real tienen una prioridad<br />

más alta que todos los otros. Si hay un proceso <strong>de</strong> tiempo real listo para ejecutarse, siempre se<br />

ejecutara primero. Los procesos <strong>de</strong> tiempo real pue<strong>de</strong>n tener dos tipos <strong>de</strong> políticas : round robin (en<br />

círculo) y first in rst out (el primero en llegar es el primero en salir). En la planificación round<br />

robin, cada proceso <strong>de</strong> tiempo real ejecutable se ejecuta por quatums (ticks <strong>de</strong> tiempo), y en la<br />

planificación first in, first out cada proceso ejecutable se ejecuta en el or<strong>de</strong>n que están en la cola <strong>de</strong><br />

ejecución y el or<strong>de</strong>n no se cambia nunca.<br />

• priority (prioridad) Esta es la prioridad que el scheduler dará a este proceso. También es la<br />

cantidad <strong>de</strong> tiempo (en jiffies) que se permitirá ejecutar a este proceso una vez que sea su turno <strong>de</strong><br />

ejecución. Se pue<strong>de</strong> cambiar la prioridad <strong>de</strong> un proceso mediante una llamada <strong>de</strong> sistema y la or<strong>de</strong>n<br />

renice.<br />

• rt_priority (prioridad <strong>de</strong> tiempo real) Linux soporta procesos <strong>de</strong> tiempo real y estos tienen una<br />

prioridad más alta que todos los otros procesos en el sistema que no son <strong>de</strong> tiempo real. Este campo<br />

permite al scheduler darle a cada proceso <strong>de</strong> tiempo real una prioridad relativa. La prioridad <strong>de</strong>l<br />

proceso <strong>de</strong> tiempo real se pue<strong>de</strong> alterar mediante llamadas <strong>de</strong> sistema.<br />

• counter (contador) Esta es la cantidad <strong>de</strong> tiempo (en jiffies) que este se permite ejecutar a este<br />

proceso. Se iguala a priority cuando el proceso se ejecuta y se <strong>de</strong>crementa a cada paso <strong>de</strong> reloj.<br />

Los campos <strong>de</strong> una estructura <strong>de</strong> tareas relevante a planificar incluyen (don<strong>de</strong> p es el puntero a la tabla <strong>de</strong><br />

procesos y va a ir recorriendo dicha lista):<br />

• p->need_resched. Este campo es establecido si schedule() <strong>de</strong>bería <strong>de</strong> ser llamado en la ’siguiente<br />

oportunidad’.<br />

• p->counter. Número <strong>de</strong> ticks <strong>de</strong> reloj que quedan en esta porción <strong>de</strong> tiempo <strong>de</strong>l scheduler,<br />

<strong>de</strong>crementada por un cronómetro. Cuando este campo se convierte a un valor menor o igual a cero,<br />

es reinicializado a 0 y p->need_resched es establecido. Esto también es llamado a veces ’prioridad<br />

dinámica’ <strong>de</strong> un proceso porque pue<strong>de</strong> cambiarse a si mismo.<br />

• p->priority. La prioridad estática <strong>de</strong>l proceso, sólo cambiada a través <strong>de</strong> bien conocidas llamadas<br />

al sistema como nice, sched_setparam o setpriority.<br />

• p->rt_priority. Prioridad en tiempo real.<br />

• p->policy. La política <strong>de</strong> planificación, específica a la clase <strong>de</strong> planificación que pertenece la tarea.<br />

Las tareas pue<strong>de</strong>n cambiar su clase <strong>de</strong> planificación usando la llamada al sistema<br />

sched_setscheduler. Los valores válidos son SCHED_OTHER (proceso UNIX tradicional),<br />

SCHED_FIFO (proceso FIFO en tiempo real) y SCHED_RR (proceso en tiempo real round-robin).<br />

Uno pue<strong>de</strong> también SCHED_YIELD a alguno <strong>de</strong> esos valores para significar que el proceso<br />

<strong>de</strong>cidió <strong>de</strong>jar la CPU, por ejemplo llamando a la llamada al sistema sched_yield. Un proceso FIFO<br />

en tiempo real funcionará hasta que: (1) se bloquee en una E/S; (2) explícitamente <strong>de</strong>je la CPU, o<br />

(3) es pre<strong>de</strong>socupado por otro proceso <strong>de</strong> tiempo real con un valor más alto <strong>de</strong> p->rt_priority.<br />

SCHED_RR es el mismo que SCHED FIFO, excepto que cuando su porción <strong>de</strong> tiempo acaba<br />

vuelve al final <strong>de</strong> la cola <strong>de</strong> ejecutables.<br />

El scheduler se ejecuta <strong>de</strong>s<strong>de</strong> distintos puntos <strong>de</strong>ntro <strong>de</strong>l kernel. Se ejecuta <strong>de</strong>spués <strong>de</strong> poner el proceso en<br />

curso en una cola <strong>de</strong> espera y también se pue<strong>de</strong> ejecutar al finalizar una llamada <strong>de</strong> sistema, exactamente<br />

antes <strong>de</strong> que un proceso vuelva al modo usuario <strong>de</strong>spués <strong>de</strong> estar en modo sistema. También pue<strong>de</strong> que el<br />

scheduler se ejecute porque el temporizador <strong>de</strong>l sistema haya puesto el contador counter <strong>de</strong>l proceso en curso<br />

a cero. Cada vez que el scheduler se ejecuta, hace lo siguiente:<br />

• Trabajo <strong>de</strong>l kernel. El scheduler ejecuta la parte baja <strong>de</strong> los manejadores y procesos que el<br />

scheduler pone en la cola.<br />

• Proceso en curso. El proceso en curso tiene que ser procesado antes <strong>de</strong> seleccionar a otro proceso<br />

para ejecutarlo. Si la política <strong>de</strong> planificación <strong>de</strong>l proceso en curso es round robin entonces el<br />

proceso se pone al final <strong>de</strong> la cola <strong>de</strong> ejecución. Si la tarea es INTERRUMPIBLE y ha recibido una<br />

señal <strong>de</strong>s<strong>de</strong> la última vez que se puso en la cola, entonces su estado pasa a ser RUNNING (en<br />

ejecución). Si el proceso en curso a consumido su tiempo, si estado pasa a ser RUNNING (en<br />

ejecución). Si el proceso en curso está RUNNING (en ejecución), permanecerá en ese estado. Los<br />

procesos que no estén ni RUNNING (en ejecución) ni sean INTERRUMPIBLEs se quitan <strong>de</strong> la<br />

Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>2.</strong>63

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!