2.1 Concepto de proceso.
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, observe figura
# 14.
Figura # 14. 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 >









Conjunto
de contexto inicial {C0, C1, C2, ... Cn}

Figura # 15.
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.
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)
http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_211.html
No hay comentarios:
Publicar un comentario