PROCESOS EN LINUX
1.- ¿QUE ES UN PROCESO EN UN
SISTEMA OPERATIVO?
Instancia de un programa en ejecución,
requiriendo para ello unos recursos.
2.- MODOS DE EJECUCIÓN
DE LOS PROCESOS
Ejecución de los Procesos
Ejecución en 1er
plano:
proceso
iniciado por el usuario.
Ejecución en 2do plano:
proceso no interactivo que no necesita ser iniciado por el
usuario.
Demonio:
proceso en 2do plano siempre disponible, que da servicio a varias tareas (debe
ser propiedad de un SU). Ejem. pstree (Arbol de Procesos en GNU/Linux)
En Linux, los Procesos
se manejan en forma jerárquica: cada proceso es lanzado desde un proceso
“padre”: dicho proceso se le llama proceso “hijo”. Entonces podremos deducir
que todos los procesos son hijos del proceso padre por excelencia: el proceso
init.
El proceso init es un proceso dispatcher (despachador) y produce, entre otros,
los procesos para que los usuarios puedan conectarse al sistema. Normalmente
ejecuta la secuencia de órdenes del script
/etc/rc.boot para comprobar los sistemas de archivos y posteriormente ejecuta
las órdenes del etc/rc y /etc/rc.local para comenzar las operaciones de
multiusuario; en otro caso, se comenzaría en modo monousuario.
En operaciones de multiusuario, el papel de init es crear un
proceso por cada puerto del terminal en el cuál un usuario pueda conectarse.
Para iniciar estas operaciones, lee el archivo /etc/ttytab y ejecuta,
normalmente, la orden /usr/etc/getty por cada terminal especificado en el
archivo que tenga el campo de status a on. getty abre e inicializa la línea del
terminal y ejecuta la orden login para permitir la conexión de usuarios.
En el Sistema Operativo Linux siempre hay una serie de procesos
que se esta ejecutando sin que el usuario se de cuenta de ello y éstos hacen
que el Sistema sea utilizable.
El primer proceso en ejecutase es el Proceso init.
El Proceso init es el responsable de la inicialización de nuevos procesos; o
dicho de otra forma, todos los procesos en el sistema, excepto el proceso swapper, descienden del proceso init.
|
Los 7 niveles de ejecución (runlevels) estándars
|
||
|
Nivel de ejecución
|
Nombre o denominación
|
Descripción
|
|
0
|
Alto
|
Alto o
cierre del sistema (Apagado).
|
|
1
|
Modo de
usuario único (Monousuario)
|
|
|
2
|
Multiusuario
|
Multiusuario
sin soporte de red.
|
|
3
|
Multiusuario
con soporte de red.
|
Inicia
el sistema normalmente.
|
|
4
|
Multiusuario
con soporte de red.
|
Igual
que el 3.
|
|
5
|
Multiusuario
gráfico (X11)
|
Similar
al nivel de ejecución 3 + display manager.
|
|
6
|
Reinicio
|
Se
reinicia el sistema.
|
3.- TIPOS DE PROCESOS.
Básicamente hay dos: los
procesos de usuario y los demonios
Ø Los procesos de usuario: son los programas que utiliza el usuario generalmente y se encuentran
conectados a una terminal. El programa aparecerá el pantalla e interactuara con
el usuario- Los demonios por contra, no están conectados a una terminal,
funcionan solos y no interactúan con el usuario.
Ø Los Demonios: son aquellos procesos que para su
funcionamiento, no requiere de la intervención del usuario y en general se usan
para programas que funcionan constantemente como servidores de red, programas
administrativos, etc.
EL ESTADO DE LOS PROCESOS.
En Linux los procesos pueden estar en diferentes
estados, simbolizados mediante una letra en la salida del comado htop/top.
Los estados principales en los que un proceso puede estar, y que en la salida
de un htop están etiquetados en la columna "S"(tatus), son los
siguientes:
D Uninterruptible sleep - Espera ininterrupible, generalmente
el proceso se encuentra esperando una operación de entrada/salida con algún
dispositivo.
v Ejecutando (O).- Sólo uno de
los procesos preparados se está ejecutando en cada momento (monoprocesador).
v R Running - Corriendo,
el proceso se encuentra corriendo en el procesador.
v S Interruptible
sleep, espera interrumpible, el proceso se encuentra
esperando a que se cumpla algún evento, por ejemplo, que el planificador de
procesos del kenrnel lo planifique para su ejecución.
v T Stopped, detenido, un proceso que ha sido detenido mediante el envío de alguna
señal generalmente.
v Z Defunct
(“zombie”) process, proceso terminado,
pero cuyo padre aún sigue "vivo" y no ha capturado el estado de
terminación del proceso hijo, y por consiguiente, no lo ha eliminado de la
tabla de procesos del sistema. En definitiva, un proceso zombie es un proceso
que "murió", pero "sigue estando" en la tabla de procesos
del sistema. En algún otro artículo hablaremos especíificamente de estados de
procesos, zombies, y cómo detectarlos.
4.- ¿COMO SE COMUNICAN
LOS PROCESOS?
La comunicación
entre procesos (comúnmente IPC, del inglés Inter-Process Communication)
es una función básica de los sistemas
operativos. Los procesos pueden comunicarse entre sí a
través de compartir espacios de memoria, ya sean variables compartidas o
buffers, o a través de las herramientas provistas por las rutinas de IPC. La
IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse
entre sí, normalmente a través de un sistema de bajo nivel de paso
de mensajes que ofrece la red subyacente.
FORMAS DE COMUNICACIÓN ENTRE PROCESOS EN LINUX
Existen 4 formas:
1. A través de variables de entorno:
Solo es posible de padres a hijos.
2. Mediante una señal:
Solo indica que algo ha ocurrido y solo lleva como información de un número de señal.
3. Mediante entrada salida:
Es la forma más corriente a nivel de shell. Ejem: el operador pipe '|' que conecta dos procesos.
4. Mediante técnicas IPC u otras:
Semáforos, Memoria compartida, Colas de mensajes.
Existen 4 formas:
1. A través de variables de entorno:
Solo es posible de padres a hijos.
2. Mediante una señal:
Solo indica que algo ha ocurrido y solo lleva como información de un número de señal.
3. Mediante entrada salida:
Es la forma más corriente a nivel de shell. Ejem: el operador pipe '|' que conecta dos procesos.
4. Mediante técnicas IPC u otras:
Semáforos, Memoria compartida, Colas de mensajes.
No hay comentarios.:
Publicar un comentario