Está en la página 1de 5

TEMA 5. ESTRUCTURA DE UN PROCESO.

1. PROGRAMAS Y PROCESOS
Un programa es una coleccin de instrucciones y de datos que se encuentran almacenados en un
fichero ordinario y ejecutable.
Los usuarios pueden crear ficheros ejecutables de varias formas.
Una de ellas es mediante la escritura de programas para el intrprete de rdenes( ficheros
shell script o bateras de rdenes). Con este procedimiento se deben seguir dos pasos para obtener un
programa:
1- Editar un fichero de texto que contenga una serie de lneas que puedan ser interpretadas por un
intrprete de rdenes ( sh, csh, y ksh).
2- Cambiar los atributos del fichero para indicar que es ejecutable, esto lo realizamos con la orden
chmod.
Esta forma descrita, es una forma sencilla para crear ficheros y presenta grandes ventajas a la hora
de realizar programas cortos, pero supone una limitacin a la hora de desarrollar aplicaciones y
programas mas complejos, de mayor envergadura.
Por ello , en la mayora de las ocasiones, vamos a generar ficheros ejecutables mediante lenguajes
de programacin, de alto o bajo nivel. Vamos a emplear en nuestro anlisis, el compilador del lenguaje
C. Primero se debe crear un fichero de texto que contenga el cdigo fuente de nuestro programa. El
compilador de C se encarga de traducir el cdigo fuente a cdigo objeto que entiende nuestra mquina y
crea un fichero de salida, que se llama por defecto a.out, y lo marca como ejecutable.
La estructura de un programa ejecutable a grosso modo, consta de las siguientes partes:
Un conjunto de cabeceras que describen atributos del fichero.
Un bloque donde se encuentran las instrucciones en lenguaje mquina del programa. En Unix, este
bloque se conoce como texto del programa.
Un bloque dedicado a la representacin en lenguaje mquina de los datos que deben ser
inicializados cuando arranca la ejecucin del programa, ( bloque bss).
Otras secciones, como las tablas de smbolos.
Cuando un programa es ledo del disco por el ncleo y es cargado en memoria para ejecutarse, se
convierte en lo que se llama a un proceso. Un proceso se compone de tres bloques fundamentales
conocidos como segmentos:
El segmento de texto, que contiene las instrucciones que entiende la CPU de nuestra mquina.
El segmento de datos, que contiene los datos que deben ser inicializados al arrancar el proceso.
El segmento de pila, que lo crea el ncleo al arrancar el proceso y su tamao es gestionado por
ste. La pila se compone de una serie de bloques lgicos, llamados marcos de pila, los cuales son
introducidos cuando se llama a una funcin y son sacados cuando se vuelve de la funcin. Un marco de
pila se compone de los parmetros de la funcin, de las variables locales de la funcin y la informacin
necesaria para restaurar el marco de pila anterior a la llamada a la funcin.
Debido a que los procesos se pueden ejecutar en dos modos: usuario y supervisor ( o kernel ); el
sistema maneja dos pilas por separado, la pila del modo usuario y la pila del modo supervisor.
Unix es un sistema de tiempo compartido que permite la ejecucin de varios procesos a la vez (
multiproceso). El planificador es la parte del ncleo encargada de gestionar la CPU y determinar qu
proceso pasa a ocupar la CPU en un determinado instante.

Se puede decir, que un proceso en Unix es una entidad creada tras la llamada fork,. Todos los
procesos, excepto el primero ( proceso nmero 0), son creados mediante una llamada a fork. El proceso
que llama a fork se conoce como proceso padre, y el proceso creado es el proceso hijo. Todos los
procesos pueden tener varios procesos hijos, pero el proceso padre es nico.
El ncleo identifica cada proceso mediante su nmero PID; el proceso hijo creado se llama init y
su PID vale 1. Este proceso hijo ser el encargado de arrancar los dems procesos del sistema segn la
configuracin que se indica en el fichero / etc / inittab.

2. ESTADOS DE UN PROCESO
El tiempo de vida de un proceso se puede dividir en un conjunto de estados, cada uno con unas
caractersticas determinadas.
Un proceso no permanece siempre en un mismo estado, sino que est continuamente cambiando de
acuerdo con unas reglas bien definidas. Estos cambios de estado vienen impuestos por la competencia que
existe entre los procesos para compartir un recurso escaso como es la CPU.
A continuacin, este diagrama nos muestra la transicin completa de estados que realiza un
proceso de UNIX; en el cual, los nodos representan los diferentes estados que pueden alcanzar los
procesos, y las ramas representan los eventos que hacen que un proceso cambie de un estado a otro:

Los estados que se reflejan en el diagrama son los siguientes:


1.- El proceso se est ejecutando en modo usuario.
2.- El proceso se est ejecutando en modo supervisor.
3.- El proceso no se est ejecutando, pero est listo para ejecutarse tan pronto como
el planificador lo ordene.
4.- El proceso est durmiendo cargado en memoria. Un proceso entra en este estado cuando no
puede proseguir su ejecucin porque est esperando a que se complete una operacin de entrada / salida.
5.- El proceso est listo para ejecutarse, pero el intercambiador ( proceso 0), debe
cargar el proceso en memoria antes de que el planificador pueda ordenar que pase a ejecutarse.
6.-El proceso est durmiendo y el intercambiador ha descargado el proceso hacia una memoria
secundaria ( rea de intercambio del disco), para crear espacio en la memoria principal donde poder
cargar otros procesos.
7.- El proceso est volviendo del modo supervisor al modo usuario, pero el ncleo se apropia del
proceso y hace un cambio de contexto, pasando otro proceso a ejecutarse en modo usuario.
8.- El proceso acaba de ser creado y est en un estado de transicin. Este estado es inicial para
todos los procesos, excepto el proceso 0.
9.- El proceso ejecuta la llamada exit y pasa al estado zombi. El proceso ya no existe; el estado
zombi es el estado final del proceso.

3 Tabla de procesos y rea de usuario


Hay dos estructuras que definen el estado de un proceso y que le facilitan al ncleo su control: una
entrada en la tabla de procesos y un rea de usuario.
La tabla de procesos tiene campos que son accesibles desde el ncleo, pero los campos del rea de
usuario slo necesitan ser visibles por el proceso. Las reas de usuario se reservan cuando se crea un
proceso y no es necesario que una entrada de la tabla de procesos que no aloja ningn proceso tenga
reservada un rea de usuario.
Campos que tiene cada una de las entradas de la tabla de procesos.

Campo de estado que identifica el estado del proceso.

Campos para localizar al proceso y su rea de usuario en la memoria principal y


secundaria.

UID (identificadores de usuario). Determinan los privilegios del proceso.

PID (identificadores de proceso). Determinan las relaciones entre procesos. Son fijados
cuando se crea el proceso mediante una llamada a fork.

Descriptores de eventos, cuando el proceso est durmiendo y que sern utlizados al


despertar.

Parmetros de planificacin. Permiten al ncleo determinar el orden en que los procesos


pasan del estado ejecutndose en modo supervisor a ejecutndose en modo usuario.

Un campo de seales que enumera las seales recibidas que no han sido tratadas
todava.

Temporizadores que indican el tiempo de ejecucin del proceso y del uso del
ncleo. Se usan para llevar la contabilidad del proceso y determina prioridades. El usuario
los puede programar con la seal SIGALRM.
El rea de usuario contiene informacin que es necesaria slo cuando un proceso se est
ejecutando. Campos:

Puntero a la entrada de la tabla de procesos correspondiente al proceso al cual


pertenece el rea de usuario.

Identificadores de usuario real y efectivo. Determinan privilegios del proceso.


Temporizadores. Registran el tiempo empleado por el proceso ejecutndose en
modo usuario y modo supervisor.

Array. Indica cmo va a responder el proceso a las seales que recibe.

Terminal de inicio de sesin al proceso. Indica cul es, si existe, el terminal de


control.

Registro de errores.

Valor de retorno. Contiene el resultado de las llamadas efectuadas por el proceso.

Parmetros de E/S. Describen la cantidad de datos a transferir, la direccin del array


origen o destino de la transferencia y los punteros de lectura/escritura del fichero al que se
refiere la operacin de E/S.
Directorio de trabajo actual y el directorio raz asociados al proceso.

Tabla de descriptores de fichero. Identifica los ficheros que tiene abiertos el proceso.

Campos de lmite. Restringen el tamao del proceso y algn fichero sobre el que puede
escribir.

Mscara de permisos. Es usada cada vez que se abre un fichero.

4 Contexto de un proceso.
Es el estado de un proceso definido por: su cdigo, los valores de sus variables de usuario globales
y sus estructuras de datos, el valor de los registros de la CPU, los valores almacenados en su entrada de la
tabla de procesos y en su rea de usuario, y el valor de sus pilas de usuario y supervisor. El cdigo del
S.O y sus estructuras de datos globales son compartidos por todos los procesos, pero no son considerados
como parte del contexto del proceso.
El contexto de un proceso en resumen rene toda la informacin de un proceso, y el sistema la
puede usar en el propio momento de ejecucin, para usarla despus, etc.
Desde un punto de vista formal, el contexto de un proceso es la unin de su contexto del nivel
usuario, nivel de sistema y registro.
El contexto de nivel usuario se compone de los segmentos de texto, datos y pila del proceso, as
como de las zonas de memoria compartida que se encuentran en la zona de direcciones virtuales del
proceso. Las partes del espacio de direcciones virtuales que peridicamente no residen en memoria
principal debido al intercambio o a la paginacin tambin son parte del contexto del nivel de usuario.

El contexto de registros se compone de las siguientes partes:

Contador de programa. Contiene la direccin de la siguiente instruccin que debe


ejecutar la CPU. Es una direccin virtual.

Registro de estado del procesador (RP). Especifica el estado del hardware en relacin con
un proceso determinado.

Puntero de pila. Apunta a la cima de la pila de usuario o de supervisor. La arquitectura de


la mquina dicta si el puntero de pila debe apuntar a la siguiente entrada libre o a la
ltima entrada usada, as como si la pila crece hacia direcciones altas o bajas de memoria.

Registros de propsito general. Contienen datos generados por el proceso durante su


ejecucin.

El contexto de nivel de sistema de un proceso tiene una parte esttica y una parte dinmica. Todo
proceso tiene una nica parte esttica del contexto del nivel de usuario, pero puede tener un nmero
variable de partes dinmicas. La parte dinmica es vista como una pila de capas de contexto que el
ncleo puede introducir y sacar segn los eventos que se produzcan.
Partes del contexto de nivel de sistema:

Entrada en la tabla de procesos. Define el estado del proceso y contiene informacin de


control que es siempre accesible al ncleo.

rea de usuario. Contiene informacin de control del proceso que necesita ser accedida
slo en el contexto del proceso.

Entrada de la tabla de regiones por proceso pregion-, tabla de regiones y tabla de


pginas. Definen el mapa de transformacin entre las direcciones del espacio virtual y las
direcciones fsicas.

Pila de supervisor. Contiene los marcos de pila de las funciones ejecutadas en modo
supervisor. Si bien todos los procesos ejecutan el mismo cdigo del ncleo, hay una copia
privada de la pila del ncleo para cada uno de ellos que da cuenta de las llamadas que
cada proceso hace a las funciones del ncleo. El ncleo debe ser capaz de recuperar el
contenido de la pila del modo supervisor y la posicin del puntero de la pila para reanudar
la ejecucin de un proceso en modo supervisor. La pila del ncleo est vaca cuando el
proceso se est ejecutando en modo usuario.

La parte dinmica del contexto del nivel de sistema se compone de una serie de capas que
se almacenan a modo de pila. Cada capa contiene la informacin necesaria para recuperar
la capa anterior, incluyendo el contexto de registro de la capa anterior.

El ncleo introduce una capa de contexto cuando se produce una interrupcin, una llamada al
sistema o un cambio de contexto. Las capas de contexto son extradas de la pila cuando el ncleo vuelve
del tratamiento de una interrupcin, cuando el proceso vuelve al medo usuario despus de ejecutar una
llamada al sistema o cuando se produce un cambio de contexto. La capa introducida es la del ltimo
proceso que se estaba ejecutando y la extrada es la del proceso que se pasar a ejecutar.
Un proceso se ejecuta en su capa de contexto actual. El n de capas de contexto est limitado por el
n de niveles de interrupcin que soporte la mquina.

También podría gustarte