Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Linux Procesos
Linux Procesos
2
Cuando el sistema operativo se prepara para tomar un nuevo
trabajo, leer a prxima secuencia de ordenes de control de
trabajos.
Conexin interactiva.- Un usuario entra en el sistema desde
un terminal.
Creado por el SO para dar un servicio.- El sistema
operativo puede crear un proceso para llevar a cabo una
funcin de parte de un programa usuario, sin que el usuario
tenga que esperar (por ejemplo, imprimir).
Generado por un proceso existente.- Con afn de
modularidad o para aprovechar el paralelismo, un programa
de usuario puede ordenar la creacin de una serie de procesos.
Cuando un proceso es creado por el sistema operativo tras la
solicitud explicita de otro proceso, la accin se conoce como
generacin de procesos.
Cuando un proceso genera otro, el proceso generador se
conoce como proceso padre y el proceso generado es el
proceso hijo. Normalmente, estos procesos emparentados
necesitarn comunicarse y cooperar entre si.
Terminacin de procesos
En cualquier sistema informtico, debe haber alguna forma de
que un proceso pueda indicar que ha terminado.
Estados de un Proceso
Hay una cola sencilla de procesos. Cada entrada de la cola es
un puntero a un proceso en particular. Cuando un proceso se
interrumpe, se le pasa a la cola de procesos en espera. Por
otra parte, si un proceso termina o se abandona, se le descarta
del sistema (sale del sistema). En cualquier caso, el,
distribuidor selecciona entonces un proceso de la cola para
ejecutarlo.
VER FIGURA 2 (ANEXOS)
Un modelo de cinco estados
Algunos procesos en el estado de No Ejecucin estn listos
para ejecutar, mientras que otros estn bloqueados, esperando
a que termine una operacin de E/S. Los procesos esperan
cola en una lista en la cual el primero en entrar, es primero
en salir. As pues, utilizando una cola sencilla, el distribuidor
podra no seleccionar exactamente el proceso que est en el
extremo ms antiguo de la cola, por lo cual se han
incorporado algunos estados de gran utilidad.
Ejecucin: El proceso que est actualmente en ejecucin.
Listo: Proceso que est preparado para ejecutar, en cuanto se
le d la oportunidad.
Bloqueados: Proceso que no puede ejecutar hasta que se
produzca cierto suceso, como la terminacin de una operacin
de E/S.
Nuevo: Proceso que se acaba de crear, pero que an no ha
sido admitido por el sistema operativo en el grupo de procesos
ejecutables.
Terminado: Un proceso que ha sido excluido por el sistema
operativo del grupo de procesos ejecutables.
VER FIGURA 3. (ANEXOS)
3
cantidad de memoria fsica disponible para l. El sistema
operativo mantiene en la memoria principal las partes del
programa que actualmente se estn usando, y el resto en el
disco.
La memoria virtual tambin puede funcionar en un sistema de
multiprogramacin, manteniendo
Segmentos de muchos programas en la memoria a la vez.
Mientras un programa est esperando que se traiga a la
memoria una de sus partes, est esperando E/S y no puede
ejecutarse, as que puede otorgarse la CPU a otro proceso, lo
mismo que en cualquier otro sistema de multiprogramacin.
Administracin de memoria con mapas de bits
Cuando la memoria se asigna dinmicamente, el sistema
operativo debe administrarla. En trminos
generales, hay dos formas de contabilizar la utilizacin de
memoria: mapas de bits y listas libres. En esta seccin y en la
siguiente examinaremos estos dos mtodos por tumo.
Con un mapa de bits, la memoria se divide en unidades de
asignacin, tal vez slo de unas cuantas palabras o quiz de
varios kilobytes. A cada unidad de asignacin corresponde un
bit del mapa de bits, que es 0 si la unidad est libre y 1 si est
ocupada (o viceversa). se muestra una parte de la memoria y
el mapa de bits correspondiente.
Una parte de la memoria con cinco procesos y tres agujeros.
Las marcas indican las unidades de asignacin de memoria.
Las regiones sombreadas (O en el mapa de bits) estn libres,
(b) El mapa de bits correspondiente, (e) La misma
informacin en forma de lista.
El tamao de la unidad de asignacin es una cuestin de
diseo importante. Cuanto menor sea la unidad de
asignacin, mayor ser el mapa de bits. Sin embargo, incluso
con una unidad de asignacin de slo cuatro bits, 32 bits de
memoria slo requerirn un bit del mapa. Una memoria de
32n bits usar n bits de mapa, y el mapa slo ocupar 1/33 de
la memoria. Si se escoge una unidad de asignacin grande, el
mapa de bits ser ms pequeo, pero podra desperdiciarse
una cantidad apreciable de memoria en la ltima unidad si el
tamao del proceso no es un mltiplo exacto de la unidad de
asignacin.
Un mapa de bits ofrece un mtodo sencillo para contabilizar
las palabras en una cantidad fija de
memoria, porque el tamao del mapa de bits depende slo del
tamao de la memoria y del tamao de la unidad de
asignacin. El problema principal que presenta es que una
vez que se ha decidido traer a la memoria un proceso de k
unidades, el administrador de memoria debe buscar en el
mapa de bits una serie de k bits en O consecutivos. La
bsqueda de series de una longitud dada en un mapa de bits
es una operacin lenta (porque la serie puede cruzar fronteras
de palabra en el mapa); ste es un argumento en contra de los
mapas de bits.
Administracin de memoria con listas enlazadas
Otra forma de contabilizar la memoria es mantener una lista
enlazada de segmentos de memoria libres y asignados, donde
un segmento es un proceso o bien un agujero entre dos
procesos. La memoria se representa en la como lista enlazada
de segmentos. Cada entrada de la lista especifica un agujero
4
al proceso y un agujero diminuto, podramos considerar el
peor ajuste, es decir, tomar siempre el agujero ms grande
disponible, de modo que el agujero sobrante tenga un tamao
suficiente para ser til. Las simulaciones han demostrado que
el peor ajuste tampoco es una idea muy buena.
- Waiting
(Esperando) El proceso est esperando algn suceso o por
algn recurso. Linux diferencia dos tipos de procesos;
interrumpibles e ininterrumpibles. Los procesos en espera
interrumpibles pueden ser interrumpidos por seales
mientras que los ininterrumpibles dependen directamente
de sucesos de hardware y no se pueden interrumpir en
ningn caso.
- Stopped
(Detenido) El proceso ha sido detenido, normalmente
porque ha recibido una seal. Si se estn depurando errores
en un proceso, ste puede estar detenido.
Zombie
Es un proceso que ya ha terminado pero cuya estructura
task_struct permanece an en el vector task. Se suele
mantener para que el padre pueda extraer informacin til de
l.
Enlaces
En un sistema de Linux ningn proceso es independiente de
otro proceso. Cada proceso en el sistema, excepto el proceso
inicial (init), tiene un proceso padre. Los procesos nuevos no
se crean, se copian, o ms bien se clonan de un proceso
existente. Cada estructura task_struct que representa un
proceso mantiene punteros a su proceso padre y sus hermanos
(los procesos con el mismo proceso padre) as como a sus
propios procesos hijos. Se pueden ver las relaciones entre los
procesos en ejecucin en un sistema Linux con la orden
pstree:
init(1)-+-crond(98)
|-emacs(387)
|-gpm(146)
|-inetd(110)
|-kerneld(18)
|-kflushd(2)
|-klogd(87)
|-kswapd(3)
|-login(160)---bash(192)---emacs(225)
|-lpd(121)
|-mingetty(161)
|-mingetty(162)
|-mingetty(163)
|-mingetty(164)
|-login(403)---bash(404)---pstree(594)
|-sendmail(134)
|-syslogd(78)
`-update(166)
Adems, todos los procesos en el sistema tambin estn en
una doble lista encadenada cuya raz es la estructura
task_struct del proceso init. Esta lista permite al ncleo de
Linux observar cada proceso del sistema.
Tiempos y Temporizadores
El ncleo mantiene conocimiento de la hora de creacin de
los procesos as como el tiempo de CPU que consume a lo
largo de su vida. En cada paso del reloj, el ncleo actualiza la
cantidad de tiempo en jiffies que el proceso en curso ha usado
en los modos sistema y usuario. Linux tambin soporta
temporizadores de intervalo especficos a cada proceso; los
procesos pueden usar llamadas del sistema para instalar
temporizadores para enviarse seales a s mismos cuando el
temporizador acaba. Estos temporizadores pueden ser de una
vez, o peridicos.
Sistema de Ficheros
Los procesos pueden abrir y cerrar ficheros y la estructura
task_struct de un proceso contiene punteros a los descriptores
de cada fichero.
Contexto Especfico del Procesador
Un proceso se puede ver como la suma total del estado
actual del sistema. Cuando un proceso se ejecuta, est
utilizando los registros, las pilas, etc, del procesador. Todo
esto es el contexto del procesador, y cuando se suspende un
proceso, todo ese contenido especfico de la CPU se tiene que
salvar en la estructura task_struct del proceso. Cuando el
Planificacin
Todos los procesos se ejecutan parcialmente en modo
usuario y parcialmente en modo sistema. La manera como el
hardware soporta estos modos vara, pero en general hay un
mecanismo seguro para pasar de modo usuario a modo
sistema y viceversa. El modo usuario tiene muchos menos
privilegios que el modo sistema. Cada vez que un proceso
hace una llamada de sistema, cambia de modo usuario a
modo sistema y sigue ejecutndose. Llegado este punto, el
ncleo se est ejecutando por el proceso.
En Linux, un proceso no puede imponer su derecho sobre otro
proceso que se est ejecutando para ejecutarse l mismo. Cada
proceso decide dejar la CPU que est usando cuando tiene que
esperar un suceso en el sistema. Por ejemplo, un proceso
puede estar esperando a leer un carcter de un fichero. Esta
espera sucede dentro de la llamada de sistema, en modo
sistema; el proceso utiliza una funcin de una biblioteca para
abrir y leer el fichero y la funcin, a su vez, hace una llamada
de sistema para leer bites del fichero abierto. En este caso el
proceso en espera ser suspendido y se elegir a otro proceso
para ejecutarse.
Los procesos siempre estn haciendo llamadas de sistema y
por esto necesitan esperar a menudo. An as, si un proceso se
ejecuta hasta que tenga que esperar, puede ser que llegue a
usar una cantidad de tiempo de CPU desproporcionada y por
esta razn Linux usa planificacin con derecho preferente.
Usando esta tcnica, se permite a cada proceso ejecutarse
durante poco tiempo, 200 ms, y cuando ese tiempo ha pasado,
otro proceso se selecciona para ejecutarse y el proceso
original tiene que esperar un tiempo antes de ejecutarse otra
vez. Esa pequea cantidad de tiempo se conoce como una
porcin de tiempo. El planificador tiene que elegir el proceso
que ms merece ejecutarse entre todos los procesos que se
pueden ejecutar en el sistema. Un proceso ejecutable es aquel
que est esperando solamente a una CPU para ejecutarse, es
decir, est en estado de Preparado (Running).
Linux usa un algoritmo razonablemente simple para
planificar las prioridades y elegir un proceso entre los
procesos que hay en el sistema. Cuando ha elegido un nuevo
proceso para ejecutar, el planificador salva el estado del
proceso en curso, los registros especficos del procesador y
otros contextos en la estructura de datos task_struct. Luego
restaura el estado del nuevo proceso (que tambin es
especfico a un procesador) para ejecutarlo y da control del
sistema a ese proceso. Para que el planificador asigne el
tiempo de la CPU justamente entre los procesos ejecutables en
el sistema, el planificador mantiene cierta informacin en la
estructura task_struct de cada proceso:
policy (poltica)
Esta es la poltica de planificacin que se aplicar a este
proceso. Hay dos tipos de procesos en Linux, normales y
de tiempo real. Los procesos de tiempo real tienen una
prioridad ms alta que los otros. Si hay un proceso de
tiempo real listo para ejecutarse, siempre se ejecutar
primero. Los procesos de tiempo real pueden tener dos
6
tipos de polticas: round robin (en crculo) y first in
first out (el primero en llegar es el primero en salir). En
la planificacin round robin, cada proceso de tiempo
real ejecutable se ejecuta por turnos, y en la planificacin
first in, first out cada proceso ejecutable se ejecuta en
el orden que estn en la cola de ejecucin y el orden no se
cambia nunca.
priority (prioridad)
Esta es la prioridad esttica que el planificador dar a
este proceso. Tambin es la cantidad de tiempo (en jiffies)
que se permitir ejecutar a este proceso una vez que sea
su turno de ejecucin. Se puede cambiar la prioridad de
un proceso mediante una llamada de sistema y la orden
renice.
rt_priority (prioridad de tiempo real)
Linux soporta procesos de tiempo real y estos tienen una
prioridad ms alta que todos los otros procesos en el
sistema que no son de tiempo real. Este campo permite al
planificador darle a cada proceso de tiempo real una
prioridad relativa. La prioridad del proceso de tiempo
real se puede alterar mediante llamadas de sistema.
counter (contador)
Esta es la cantidad de tiempo (en jiffies) que se permite
ejecutar a este proceso. Se decrementa a cada paso de
reloj y cuando el proceso se ejecuta y lo consume por
completo se iguala a priority.
El planificador se ejecuta desde distintos puntos dentro
del ncleo. Se ejecuta despus de poner el proceso en curso en
una cola de espera y tambin se puede ejecutar al finalizar
una llamada de sistema, exactamente antes de que un proceso
vuelva al modo usuario despus de estar en modo sistema.
Tambin puede que el planificador se ejecute porque el
temporizador del sistema haya puesto el contador counter del
proceso en curso a cero. Cada vez que el planificador se
ejecuta, hace lo siguiente:
Proceso en curso
El proceso en curso tiene que ser procesado antes de
seleccionar a otro proceso para ejecutarlo.
Si la poltica de planificacin del proceso en curso es
round robin entonces el proceso se pone al final de la cola
de ejecucin.
Si la tarea es INTERRUMPIBLE y ha recibido una seal
desde la ltima vez que se puso en la cola, entonces su
estado pasa a ser RUNNING (Preparado).
Si el proceso en curso a consumido su tiempo, su estado
pasa a ser RUNNING (Preparado).
Si el proceso en curso est RUNNING (Preparado),
permanecer en ese estado.
Los procesos que no estn ni RUNNING (Preparados) ni
sean INTERRUMPIBLE se quitan de la cola de
ejecucin. Esto significa que no se les considerar para
ejecucin cuando el planificador busque un proceso para
ejecutar.
Seleccin de un proceso
7
- El cambio de contexto es el mecanismo que efectivamente
pone en ejecucin a un proceso. Esta operacin es muy
dependiente de la arquitectura del procesador sobre el
que se est ejecutando, por lo que se tiene que realizar a
bajo nivel (en ensamblador).
Procesos
Un proceso es un concepto manejado por el sistema operativo
que consiste en el conjunto formado por:
Las instrucciones de un programa destinadas a ser
ejecutadas por el microprocesador.
Su estado de ejecucin en un momento dado, esto es,
los valores de los registros de la CPU para dicho
programa.
Su memoria de trabajo, es decir, la memoria que ha
reservado y sus contenidos.
Otra informacin que permite al sistema operativo
su planificacin.
En un sistema Linux, que como ya sabemos es multitarea
(sistema operativo multihilo), se pueden estar ejecutando
distintas acciones a la par, y cada accin es un proceso que
consta de uno o ms hilos, memoria de trabajo compartida
por todos los hilos e informacin de planificacin. Cada hilo
consta de instrucciones y estado de ejecucin.
Cuando ejecutamos un comando en el shell, sus instrucciones
se copian en algn sitio de la memoria RAM del sistema para
ser ejecutadas. Cuando las instrucciones ya cumplieron su
cometido, el programa es borrado de la memoria del sistema,
dejndola libre para que ms programas se puedan ejecutar a
la vez. Por tanto cada uno de estos programas son los
procesos.
Los procesos son creados y destruidos por el sistema
operativo, pero lo hace a peticin de otros procesos. El
mecanismo por el cual un proceso crea otro proceso se
denomina bifurcacin (fork). Los nuevos procesos son
independientes y no comparten memoria (es decir,
informacin) con el proceso que los ha creado.
En definitiva, es posible crear tanto hilos como procesos. La
diferencia estriba en que un proceso solamente puede crear
hilos para s mismo y en que dichos hilos comparten toda la
memoria reservada para el proceso.
Hilos
Los hilos son similares a los procesos ya que ambos
representan una secuencia simple de instrucciones ejecutada
en paralelo con otras secuencias. Los hilos son una forma de
dividir un programa en dos o ms tareas que corren
simultneamente, compitiendo, en algunos casos, por la CPU.
La diferencia ms significativa entre los procesos y los hilos,
es que los primeros son tpicamente independientes, llevan
bastante informacin de estados, e interactan slo a travs de
mecanismos de comunicacin dados por el sistema. Por otra
parte, los hilos generalmente comparten la memoria, es decir,
acceden a las mismas variables globales o dinmicas, por lo
que no necesitan costosos mecanismos de comunicacin para
sincronizarse. Por ejemplo un hilo podra encargarse de la
interfaz grfica (iconos, botones, ventanas), mientras que otro
hace una larga operacin internamente. De esta manera el
programa responde ms gilmente a la interaccin con el
usuario.
REFERENCIAS
[1]
http://www.monografias.com/trabajos26/estados-proceso-hilos/estadosproceso-hilos.shtml#proceslinux
[2] http://www.chuidiang.com/clinux/procesos/procesoshilos.php
[3] http://www.ldc.usb.ve/~figueira/Cursos/AdminRedesTelematica/Material/p
rocesos.pdf
[4] http://www.esdebian.org/linux/28621/los-procesos-linux
[5] http://sopa.dis.ulpgc.es/ii-dso/leclinux/procesos/fork/LEC7_FORK.pdf
[6] http://sopa.dis.ulpgc.es/iidso/leclinux/procesos/planificador/LEC6_CHEDULER.pdf.
[7] http://sopa.dis.ulpgc.es/iidso/leclinux/procesos/planificador/LEC6_SCHEDULER.pdf
[8] TANENBAUM S. Andrew, WOODHULL Albert, Sistemas Operativos
Distribuidos, Editorial Pretince Hall Hispanoamrica S.A.
[9] TANENBAUM S. Andrew, WOODHULL Albert, Sistemas Operativos
Diseo e Implementacin, Editorial Pretince Hall Hispanoamrica S.A,
Segunda Edicin.
[10] STALLINS Willian, Sistemas Operativos, Editorial Pretince Hall
Hispanoamrica S.A;Segunda Edicin.
Luis F. Alvear
Naci en Quito-Ecuador el 27 de Junio
de 1987.
Realiz sus estudios
secundarios en el Colegio Particular
Tcnico Industrial Hermano Miguel,
donde obtuvo el ttulo de Bachiller en
Ciencias y Auxiliar en Manejo de
Equipos de Cmputo en el ao 2004.
En el mismo ao ingres a la Escuela Politcnica Nacional
(EPN), donde actualmente estudia la carrera de Ingeniera
Electrnica y Redes de la Informacin.
David A. lvarez
Naci en Quito el 26 de Marzo de 1987.
Realiz sus estudios secundarios en el
colegio Particular Tcnico Hermano
Miguel de la ciudad de Latacunga, donde
obtuvo el bachillerato. En el 2004 ingres a
la Escuela Politcnica Nacional.
ANEXOS:
Figura 1.
Figura 2.
Figura 3.
Tabla 1.
Tabla 2
Diferencias entre Procesos e Hilos
PROCESOS
HILOS
Manejados por el S.O.
Manejados por los procesos
Independientes
de
otros Relacionados con otros
procesos.
hilos del mismo proceso.
Memoria privada, se necesitan Memoria compartida con el
mecanismos de comunicacin resto de hilos que forman el
para compartir informacin.
proceso.