P. 1
[LINUX] Gestion de Procesos

[LINUX] Gestion de Procesos

|Views: 8.473|Likes:
Publicado pormikirams
Gestión de Procesos en Linux, comandos, diagrama de estados.
Gestión de Procesos en Linux, comandos, diagrama de estados.

More info:

Published by: mikirams on May 06, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PPT, PDF, TXT or read online from Scribd
See more
See less

08/07/2013

pdf

text

original

El tiempo de vida de un proceso se puede dividir en un

conjunto de estados.

En un sistema monoprocesador un proceso no esta

continuamente ejecutándose, su estado irá cambiando

según unas reglas bién definidas.

En el siguiente gráfico veremos cual es la transición de

procesos en UNIX/Linux y procederemos a su

explicación:

Gestión de Procesos:estados

1.-Ejecutándose en modo usuario: tiene el control del

procesador mientras dura el quanto o no realice una llamada al

sistema.

2.-Ejecutándose en modo kernel: Cuando el proceso realiza

una llamada a sistema, el proceso cambia de estado y pasa

ejecutar código de área de kernel. Cuando termina:

Termina la tarea interrupción (iret) vuelve a la siguiente

instrucción que la llamó.

Si termina el quanto se hace un cambio de contexto,

pasando el siguiente proceso a modo usuario

Si carece de algún recurso->Estado dormido

Si termina con exit->Estado zombi

Gestión de Procesos:estados

3.-Planificado en memoria: tiene reservado los recursos de

sistema que necesita. El proceso no se esta ejecutando, esta

en cola de "listo para ejecutarse" esperando a que el

planificador de tareas(scheduler) se lo permita.

4.-Dormido en memoria: El proceso esta durmiendo cargado en

memoria, ya que esta esperando que se complete una

operación (E/S,tiempo de espera(timer)(ejm:sleep 10),espera

de recibir un evento o mensaje)

Nota: No puede haber un proceso, ejecutándose en modo

usuario y kernel a la vez.

Gestión de Procesos:estados

5.-Planificado en swap: Esta en memoria secundaria,listo para

ejecutarse, pero el intercambiador (proceso 0 ó swapper) debe

cargar el proceso en memoria antes de que el

planificador(scheduler) pueda ordenar que pase a ejecutarse.

6.-Dormido en swap: El proceso esta durmiendo y el

intercambiador ha descargado el proceso hacia una memoria

secundaria para dejar espacio en la memoria principal donde

poder cargar otros procesos.

7.-El proceso esta volviendo del modo superusuario al modo

usuario, pero el planificador se apropia del proceso y hace un

cambio de contexto, pasando otro proceso a ejecutarse en

modo usuario.

Gestión de Procesos:estados

8.-El proceso acaba de ser creado(con fork) y está en un

estado de transición; el proceso existe, pero ni está preparado

para ejecutarse, ni durmiendo. Este estado es el inicial para

todos los procesos, excepto el proceso 0.

9.-El proceso ejecuta la llamada exit y pasa al estado zombi. El

proceso libera todos los recursos pero mantiene la entrada en

la Tabla de Procesos. No termina de morir, esperando la

notificación por parte del padre, de que ha recogido el registro

que contiene el código de salida y su estado. Es un estado

temporal. En caso de que el proceso padre muera antes de que

finalice el hijo, será el proceso init quién asuma su paternidad.

Gestión de Procesos: estados

1-Para ver un proceso en ejecución, bastaría con ejecutar ps ±aux y

localizar en la salida del comando el proceso ³ps´, que debería estar en

ejecución.

2-Si compilamos ³running.c´ con la orden ³gcc ±o running running.c´ y

ejecutamos el programa ³./running´ también veremos un proceso en

ejecución continuada.

3-Con el programa ³waiting.c´ que tiene un getchar(), el programa

simplemente espera una entrada y está Sleeping. Si se le intenta enviar a

segundo plano ³./waiting &´ el sistema nos informa que el proceso pasa a

estado ³T´ (stopped) por que en segundo plano no puede recibir nada por

stdin.

Gestión de Procesos: estados

4-´ej_fork.c´ : El padre trabaja mientras que el hijo acaba.

Esto resulta en: Padre con estado ³R´ e hijo con estado ³Z´

Si hiciésemos un CTRL+Z el padre pasaría a estar T (stopped).

Si hacemos kill -9 padre, el hijo muere también

Gestión de Procesos: ciclo de vida

La vida de un procesocomienza con la llamada al sistema

de fork, 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, falta de memoria, se

ha sobrepasado el número de procesos que se puede crear...)

2.-El proceso pasa a estado "listo para ejecutarse".

Gestión de Procesos: ciclo de vida

3.-Existe una función "scheduler" o "planificador"que en

función de la política , se encarga de seleccionar a un

proceso de 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

encarga de pasar a estado de ejecucióna dicho proceso,

restaurando su información de contexto.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->