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 />

<strong>2.</strong>1.<strong>2.</strong> Control sobre Algunas Transiciones que se dan a Nivel Usuario.<br />

• Crear otro proceso.<br />

• Llamadas al sistema.<br />

− “ejecutándose en modo usuario” ⇒ “ejecutándose en modo kernel”.<br />

• Pue<strong>de</strong> finalizar (exit) por voluntad propia.<br />

• El resto <strong>de</strong> las transiciones → Mo<strong>de</strong>lo rígido codificado en el kernel (Diagrama <strong>de</strong> Transición <strong>de</strong><br />

Estados).<br />

<strong>2.</strong>1.3. Ciclo <strong>de</strong> Vida <strong>de</strong> un Proceso en Linux. Conjunto <strong>de</strong> Estados (Figura <strong>2.</strong><strong>2.</strong>).<br />

En Linux, un proceso o tarea, está representado por una estructura <strong>de</strong> datos task_struct. Linux mantiene una<br />

task, que es un vector lineal <strong>de</strong> punteros a cada estructura task_struct <strong>de</strong>finida en un instante dado. La<br />

estructura task_struct contiene información <strong>de</strong> varios tipos:<br />

• Estado. Representa el estado <strong>de</strong> ejecución <strong>de</strong> un proceso (en ejecución, interrumpible, no<br />

interrumpible, parado y zombie).<br />

• Información <strong>de</strong> planificación. Representa a la información necesaria para la planificación <strong>de</strong><br />

procesos en Linux. Un proceso pue<strong>de</strong> ser normal o en tiempo real y tiene una prioridad. Los<br />

procesos en tiempo real se planifican antes que los procesos normales y se utilizan priorida<strong>de</strong>s<br />

relativas <strong>de</strong>ntro <strong>de</strong> cada categoría. El tiempo en el que un proceso pue<strong>de</strong> ejecutarse se controla<br />

mediante un contador.<br />

• I<strong>de</strong>ntificadores. Cada proceso tiene un único i<strong>de</strong>ntificador <strong>de</strong> proceso, y tiene también<br />

i<strong>de</strong>ntificadores <strong>de</strong> usuario y <strong>de</strong> grupo. Un i<strong>de</strong>ntificador <strong>de</strong> grupo se utiliza para asignar privilegios<br />

<strong>de</strong> acceso a recursos <strong>de</strong> un grupo <strong>de</strong> usuarios.<br />

• Comunicación entre procesos. Linux soporta los mecanismo <strong>de</strong> IPC <strong>de</strong> UNIX<br />

• Vínculos. Cada proceso incluye un vínculo con su proceso padre, vínculos con sus hermanos<br />

(procesos con el mismo padre) y vínculos con todos sus hijos.<br />

• Tiempos y temporizadores. Incluye el instante <strong>de</strong> creación <strong>de</strong>l proceso y la cantidad <strong>de</strong> tiempo <strong>de</strong>l<br />

procesador consumido hasta el instante. Un proceso pue<strong>de</strong> tener también asociados uno o más<br />

temporizadores <strong>de</strong> intervalo. Un proceso <strong>de</strong>fine un temporizador <strong>de</strong> intervalo mediante una llamada<br />

al sistema; cuando el tiempo termina se envía una señal al proceso. Un temporizador pue<strong>de</strong> ser <strong>de</strong><br />

un solo uso o periódico.<br />

• Sistema <strong>de</strong> archivos. Incluye punteros a cualquier archivo abierto por el proceso.<br />

• Memoria virtual. Define la memoria virtual asignada al proceso.<br />

• Contexto específico <strong>de</strong>l procesador. La información <strong>de</strong> registros y pila que forma el contexto <strong>de</strong>l<br />

proceso (espacio <strong>de</strong> direccionamiento <strong>de</strong>l proceso).<br />

Los estados <strong>de</strong> ejecución <strong>de</strong> un proceso Linux son los siguientes:<br />

• En Ejecución (TASK_RUNNING). El proceso es ejecutado por el procesador.<br />

• Listo (TASK_RUNNING). El proceso podría ser ejecutado, pero otro proceso se está ejecutando<br />

en ese momento.<br />

• Interumpible (TASK_INTERRUPTIBLE). Es un estado <strong>de</strong> bloqueo, en el cual el proceso espera<br />

un suceso, como la terminación <strong>de</strong> una operación <strong>de</strong> entrada/salida, liberación <strong>de</strong> un recurso o una<br />

señal <strong>de</strong> otro proceso.<br />

• No interumpible (TASK_UNINTERRUPTIBLE). Es otro estado <strong>de</strong> bloqueo. La diferencia entre<br />

éste y el estado Interumpible es que en un estado No Interumpible, un proceso espera directamente<br />

en una condición <strong>de</strong> hardware y, por tanto, no acepta señales.<br />

• Parado (TASK_STOPPED). El proceso ha sido <strong>de</strong>tenido por una intervención externa y sólo<br />

pue<strong>de</strong> reanudarse por una acción positiva <strong>de</strong> otro proceso. Por eje mplo, un proceso pue<strong>de</strong> estar en<br />

estado Parado durante la ejecución <strong>de</strong> un programa <strong>de</strong> <strong>de</strong>puración.<br />

• Zombie (TASK_ZOMBIE). El proceso ha terminado pero, por alguna razón, su estructura task<br />

<strong>de</strong>be permanecer aún en la tabla <strong>de</strong> procesos.<br />

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

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

Saved successfully!

Ooh no, something went wrong!