Un proceso es un programa en ejecución. Un
proceso simple tiene un hilo de ejecución, por el momento dejemos esta última
definición como un concepto, luego se verá en más detalle el concepto de hilo.
Una vez definido que es un proceso nos podríamos preguntar cuál es la
diferencia entre un programa y un proceso, y básicamente la diferencia es que un
proceso es una actividad de cierto tipo que contiene un programa, entradas
salidas y estados.
Los procesos pueden ser cooperantes o independientes, en el primer caso se
entiende que los procesos interactúan entre sí y pertenecen a una misma
aplicación. En el caso de procesos independientes en general se debe a que no
interactúan y un proceso no requiere información de otros o bien porque son
procesos que pertenecen a distintos usuarios.
• Proceso -
un programa en ejecución; la ejecucución del proceso debe progresar de manera
secuencial.
• Un
proceso incluye:
– program
counter
– stack
– data
section
Estados de los procesos
• Nuevo:
El proceso es creado.
• Ejecución:
Se ejecutan instrucciónes.
• Espera:
El proceso esta en espera por la ocurrencia de algún evento.
• Listo:
El proceso esta esperando a que le asignen el procesador.
• Terminado:
El proceso finaliza su ejecución.
• Diagrama
de estados de los procesos.
Información asociada con cada proceso:
• Estado
del proceso
• Program
counter
• Registros
del CPU
• Información
de planificación del CPU
• Memoria
• Información
para administración
• Información
de estatus de E/S
Proceso:
programa o comando en ejecución.
Características:
· Un
proceso consta de código, datos y pila.
· Los
procesos existen en una jerarquía de árbol (varios Hijos, un sólo padre).
· El
sistema asigna un identificador de proceso (PID) único al iniciar el proceso.
· El
planificador de tareas asigna un tiempo compartido para el proceso según su
prioridad (sólo root puede cambiar prioridades).
Ejecución en 1er plano:
proceso iniciado por el usuario o interactivo.
Ejecución en 2o plano:
proceso no interactivo que no necesita ser
iniciado por el usuario.
Demonio:
proceso en 2o plano siempre
disponible, que da servicio a varias tareas (debe ser propiedad del
usuario root).
Proceso zombi:
proceso parado que queda en la tabla de
procesos hasta que termine su padre. Este hecho se produce cuando el proceso
padre no recoge el código de salida del proceso hijo.
Proceso huérfano:
proceso en ejecución cuyo padre ha
finalizado. El nuevo identificador de proceso padre (PPID) coincide con el
identificador del proceso init (1).
Concepto de proceso.
Un
proceso es básicamente como un programa en ejecución. Consta del
programa ejecutable, los datos y la pila del programa, su contador de programa,
apuntador de pila y otros registros, y la otra información que se
necesita para ejecutar el programa.
La
manera sencilla de tener una noción intuitiva de lo que es un proceso consiste
en pensar en los sistemas con tiempo compartido. En forma periódica el sistema
operativo decide suspender la ejecución de un proceso y dar inicio a la
ejecución de otro, por ejemplo, porque el primero haya tomado ya más
de su parte del tiempo del CPU, en terrenos del segundo.
Cuando
un proceso se suspende temporalmente como éste, debe reiniciarse después
exactamente en el mismo estado en que se encontraba cuando se detuvo. Esto
significa que toda la información relativa al proceso debe guardarse en forma
explícita en algún lugar durante la suspensión.
En
muchos sistemas operativos, toda la información referente a cada proceso,
diferente del contenido de su espacio de direcciones, se almacena en una tabla
de sistema operativo, llamada tabla de procesos, la cual es un arreglo o lista
enlazada de estructuras, una para cada proceso en existencia corriente.
Si
un proceso puede crear uno o más procesos diferentes (conocidos como proceso
hijo) y estos procesos a la vez originan procesos hijos, se llega rápidamente a
la estructura del árbol de procesos.
Estructura de árbol. Proceso Padre -
Hijo.
El proceso A creó dos procesos derivados, B
y C. El proceso B creó tres derivados, D, E y F.
Se
dispone de otras llamadas al sistema para solicitar más memoria ( o para
liberar memoria no utilizada), esperar a que termine un proceso hijo y cubrir
su programa con uno diferente.
En
un sistema de multiprogramación, el (CPU) también cambia de un programa a otro,
ejecutando cada uno en decenas o cientos de milisegundos. En tanto que, en rigor,
en cualquier instante de tiempo, el CPU está ejecutando sólo un programa, en el
curso de un segundo puede trabajar en varios programas, con la ilusión de
paralelismo.
Proceso: Informalmente se define como la
actividad que resulta cuando un proceso ejercita un programa, y formalmente
consiste en un vector formado por lo siguiente, figura # 15:
P
= < C, Co, E, S, A >
Algoritmo
Datos
de salida
Conjunto
de datos de entrada {E1, E2, ... En}
Contexto
inicial
Conjunto
de contexto inicial {C0, C1, C2, ... Cn}
Un
proceso puede tomar diferentes estados, puede estar corriendo, puede
estar libre o puede estar detenido. Si consideramos
que todo proceso esta constituido de una serie finita de actividades
elementales una región crítica de un proceso se define como el
conjunto de actividades elementales cuya ejecución exige el
monopolio de recursos compartidos.
Formalmente
se define como el conjunto de partes de los contextos internos compartidos.
Regiones críticas.
Los problemas que deben resolverse en un
contexto de procesos concurrentes (como regiones críticas) son los siguientes:
-
Exclusión mutua.
-
Sincronización.
-
Dead lock (Abraso mortal ó Interbloqueo)
No hay comentarios.:
Publicar un comentario