Está en la página 1de 5

Un proceso es una instancia en ejecución de un programa.

 En este artículo


hemos utilizado el programa '' dos términos y 'instancia de
ejecución'. Supongamos que ejecuta un programa de forma simultánea 5 veces,
a continuación, correspondiente a cada caso habrá un proceso que se ejecuta en
el sistema. Por eso decimos que un proceso es una "instancia de ejecución" de
un programa. 

Como ya saben, puede utilizar el comando ps para ver los procesos que se
ejecutan en el sistema. Para un uso efectivo del comando ps, consulte 7
Ejemplos prácticos de comando PS para la supervisión del proceso .
1. Peeping dentro de un proceso
Ahora, ya tenemos claro qué es exactamente con un proceso es, vamos a
profundizar un poco más para ver lo que es un proceso consiste en. Un proceso
Unix puede ser pensado como un recipiente que contiene:
Instrucciones del equipo
Las instrucciones del programa se mantienen en los segmentos de texto que son
ejecutados por la CPU. Por lo general, para programas como editores de texto
que se ejecuta con frecuencia el segmento de texto es compartido. Este
segmento ha privilegios de solo lectura que significa que un programa no puede
modificar su segmento de texto.
Datos
Sobre todo los datos se guardan en el segmento de datos. segmento de datos se
puede clasificar en el segmento de datos inicializado y el segmento de datos sin
inicializar. Como el nombre sugiere, el segmento de datos contiene inicializado
las variables globales que se han inicializado antes de la mano mientras que el
segmento de datos sin inicializar (también conocido como segmento 'BSS')
contiene las variables globales sin inicializar. Además, las variables estáticas se
almacenan en el segmento de datos.
Las variables locales que son locales a las funciones se almacenan en la pila. Pila
es particular de una función y además de contener la información acerca de las
variables locales que también contiene información acerca de la dirección en la
que el flujo volverá una vez que la ejecución de la función se realiza. Pila
también contiene información sobre el entorno de las personas que llaman, al
igual que algunos de los registros de la máquina también se almacenan en la
pila. Una función que es llamada asigna memoria para las variables locales y
variables temporales en la pila en sí. En caso de función recursiva existe una pila
independiente para cada llamada a la función.
Entonces hay datos que se almacena en el montón. Esta memoria para estos
datos se asigna en tiempo de ejecución en el segmento de pila. Montón
segmento no es local, sino a un proceso compartido a través de procesos. Esta es
la razón por los programadores de C se preocupan mucho por las pérdidas de
memoria que son causadas en el segmento de pila y pueden afectar a otros
procesos en el sistema.
argumentos de línea de comandos y variables de entorno
Un proceso también contiene espacio para almacenar variables de entorno y los
argumentos de línea de comandos que se pasa al programa. Por lo general, el
vector que contiene la información de línea de comandos se almacena aquí y
luego la dirección de este vector de la información y el número de elementos en
el vector se copia a 'argv' y 'argc' (los dos argumentos a la función 'main ()').
Además de la información anterior, un proceso también contiene información
como
 Estado de su E / S
 Su prioridad y otra información de control
Una de la información de control más importante para un proceso es el
privilegios. Un proceso hereda directamente de todos los privilegios del usuario
que ha desencadenado este proceso. Por ejemplo un proceso activado por el
usuario que no tiene privilegios de superusuario no puede hacer cosas que
requieren privilegios de root, mientras que un proceso desencadenado por root
puede hacer cualquier cosa que está programado para hacerlo. Una excepción a
la regla anterior es que un proceso puede adquirir mayores privilegios que el
usuario que lo desencadenó si el bit setuid o SETGID para ese proceso en
particular. Pero no vamos a entrar en mucho detalle sobre ello aquí (consulte las
páginas del manual de setuid y setgid para más información sobre esto).
2. Los procesos de fondo y primer plano
Como ya comentamos que podemos iniciar un proceso por su nombre en
Unix. Al igual que algunos programas estándar 'ls', 'p', etc se puede iniciar con
solo escribir su nombre en el intérprete de comandos. Hay dos maneras en las
que podemos iniciar un proceso de
 Comenzando en primer plano
 A partir de fondo
Supongamos que hay una utilidad que consume un tiempo y hace un
recuento.Digamos que el nombre de la utilidad es "contar" Ahora para activar y
ejecutar el programa en primer plano, corro el comando siguiente (donde
'count' es el nombre del archivo binario del código anterior):

$ ./count
El conteo hecho

Así vemos que, después de ejecutar el binario './count', que tomó casi 10
segundos antes de la salida se muestra en la salida estándar y hasta entonces la
cáscara fue ocupado por solamente este proceso. es decir, no se podía realizar
ninguna otra operación en la misma carcasa. Ahora, para desencadenar un
proceso en segundo plano, añadir '&' al final del comando:

$ ./count Y
[1] 4120

$ # Hacer algún trabajo en la cáscara, mientras que el programa anterior


está funcionando en segundo plano

$ Conteo hecho

El signo signo "&" indica que este proceso necesita ser ejecutado como un
proceso en segundo plano. Mediante la ejecución de un proceso de fondo,
podemos tener acceso a la shell para hacer más operaciones. Al igual que, en la
salida anterior, después de ejecutar el binario "contar" en el fondo, he usado un
par de más comandos en la misma consola y cuando el binario 'count' se hizo
con su procesamiento, la salida fue arrojado de nuevo en la misma consola (la
última línea). Por lo tanto podemos concluir que, por defecto cada proceso se
ejecuta en primer plano, recibe la entrada (si la hay) de teclado y devuelve el
resultado al usuario. Mientras que un proceso en segundo plano es uno que se
desconecta desde el teclado y el usuario puede utilizar la misma carcasa que
hacer más operaciones.
Para obtener más información sobre los procesos de primer plano y de fondo se
refieren a: Cómo administrar UNIX jobs de fondo
3. Tipos de proceso
Así vemos que el proceso es un concepto que es fundamental para un sistema
operativo. Casi todas las actividades en un sistema operativo toma la forma de
un proceso para hacer algunas cosas. Hay diferentes tipos de procesos que se
ejecutan en un sistema, algunos de ellos son:
Los procesos secundarios
Un proceso que se crea por algún otro proceso durante el tiempo de
ejecución. Por lo general, los procesos secundarios se crean para ejecutar algún
binario dentro de un proceso existente. Los procesos hijos se crean utilizando
tenedor llamada al sistema (). proceso que normalmente se hacen para
funcionar a través de la cáscara / terminal. En ese caso, la cáscara se convierte
en el padre y el proceso ejecutado se convierte en el proceso hijo. En Unix /
Linux cada proceso tiene un padre, excepto el proceso init (vamos a aprender
sobre esto más adelante).
Procesos Daemon
Se trata de procesos especiales que se ejecutan en segundo plano. Son procesos
relacionados con el sistema que no tienen terminal asociado. Estos procesos se
ejecutan permisos de root voluntad y por lo general ofrecen servicios a los
procesos. Como ya sabemos que un proceso de demonio no tiene un terminal
conectado, bien para conseguir esto, el proceso tiene que ser separado de la
terminal. La forma ideal en Linux / Unix para hacer esto es ejecutar un proceso
a través del terminal y desde dentro de este proceso de crear otro proceso y
luego terminar el proceso padre. Dado que el padre se termina lo que ahora el
niño llegará a ser independiente de la terminal y que serían absorbidas por el
proceso init y, por tanto, se convertiría en un proceso de demonio. Un ejemplo
típico sería un demonio de correo que espera la llegada de mensajes de correo
electrónico y notificar cuando se recibe un correo electrónico.
procesos huérfanos
Por lo general, un proceso crea un proceso hijo (como se describe arriba) y
cuando el proceso hijo termina, se emite una señal a los padres para que los
padres pueden hacer todas las cosas que es necesario hacer cuando uno de los
niños se termina. Sin embargo, hay situaciones en las que el padre muere. En
ese caso, los procesos secundarios se convierten en huérfanos y luego toman
bajo por el proceso init. Aunque el proceso init toma la propiedad del proceso
huérfano, pero aún estos procesos se denominan como huérfano con sus padres
originales ya no existe.
proceso zombie
Cuando un proceso hijo se termina o finaliza su ejecución, a continuación, su
entrada en la tabla de procesos se mantiene hasta que el proceso padre obtiene
la información sobre el estado del niño terminado. Así que, hasta entonces el
proceso ha terminado entra en estado inerte y se conoce como proceso de
zombi.Cuando un proceso se termina a continuación, toda la memoria y los
recursos asociados con el proceso se liberan pero existe la entrada del proceso
en la tabla de procesos. Un SIGCHILD señal se envía a los padres del proceso
(que acaba de terminado). Por lo general, el manejador de esta señal en el padre
realiza una llamada 'espera' que obtiene el estado de salida del proceso
terminado y luego también se quita la entrada de este proceso zombi de la tabla
de procesos.
4. El proceso init
Como hemos comentado anteriormente, el proceso init es la quinta etapa en el 6
Etapa del Proceso de arranque de Linux .
Usted sería consciente de la famosa gallina y el huevo 'teoría con respecto a que
había llegado primero. En términos de procesos, ya que cada proceso tiene un
proceso padre, la misma pregunta puede ser preguntado por los padres o
proceso hijo. Bueno, afortunadamente hay una respuesta aquí. La respuesta es
el proceso init que se inicia como un primer proceso durante la secuencia de
arranque. Eso significa que no hay una matriz de proceso init. Vamos a verificar
que, desde la EPI de init es '1', se utiliza el comando ps:
Así lo vemos en la salida que PPID es 0, lo que significa que no hay una matriz
para este proceso.

$ Ps -l 1
FS UID PID PPID C PRI NI ADDR SZ WCHAN TTY CMD TIEMPO
4 S 0 1 0 0 80 0 - 5952 poll_s? 0:00 / sbin / init

Los siguientes son algunos de los comandos que tienen que ver con los procesos
de: comando top , H TOP de comando , comando PS , Kill comando (pkill,
xkill) .

También podría gustarte