miércoles, 17 de junio de 2015

PROCESOS


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)
No configura la interfaz de red o los demonios de inicio, ni permite que ingresen otro usuarios que no sean el usuario root, sin contraseña. Este nivel de ejecución permite reparar problemas, o hacer pruebas en el sistema.
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.

No hay comentarios.:

Publicar un comentario