Volver al temario
Tema 03 · 54 páginas

La gestión de procesos

Tema completo Modo estudio
TEXTO ORIGINAL · Páginas 1316 Ver PDF

2.1.1. Creacion de procesos

Texto íntegro de la conversión. Las figuras y la disposición de las notas se pueden consultar en el PDF.

2.1.1. Creación de procesos

La creación de un proceso nuevo es el resultado de la ejecución de una llamada al sistema del tipo crear_proceso, que es invocada, como todas las llamadas, por un proceso ya existente.

Página 14

La ejecución de la llamada crear_proceso supone la creación de un entorno de ejecución que contiene los elementos siguientes:

  • La memoria donde residirá el código del programa, los datos con los que operará el proceso y la pila utilizada para pasar parámetros o guardar variables locales a las subrutinas.

  • El punto de entrada (dirección inicial) desde donde se ejecutará el programa que contenga la memoria.

  • El entorno de entrada/salida con el que el proceso se comunicará con el exterior.

  • Los atributos relacionados con los dominios de protección con los que el sistema operativo verificará la legalidad de las operaciones que quiera efectuar.

Figura 4

Cada uno de estos elementos del entorno se debe especificar con el sistema para que éste pueda crear un proceso nuevo. La especificación de estos elementos se puede llevar a cabo de dos maneras:

a) De manera explícita, con los parámetros de la llamada al sistema que crea el proceso.

b) De manera implícita, haciendo que el sistema tome unos valores por defecto.

Normalmente, los sistemas combinan las dos alternativas: obligan a especificar algunos de estos elementos mediante los parámetros de la llamada al sistema y dejan otros con valores por defecto.

Página 15

Otro aspecto que hay que tener en cuenta es la relación que existe entre el entorno desde donde se ejecuta la llamada al sistema que dará lugar al nuevo proceso y el entorno nuevo que se creará. Para ver esta relación mejor partimos del hecho, ya mencionado, de que los procesos son creados por el sistema operativo a petición de otros procesos. Esta situación provoca que los procesos se puedan mirar desde el punto de vista de la descendencia, en la que los procesos tienen relaciones de parentesco como la de padre e hijo. En este ámbito podemos hablar de los conceptos de herencia entre procesos y de sincronización entre procesos padre e hijo.

Una vez creado el proceso, el sistema le da un nombre (generalmente un número dentro de un espacio lineal) con el que podrá ser referenciado en acciones de control y manipulación, tanto desde otros procesos como directamente desde el SO. Este nombre debe ser único para cada proceso, no sólo durante la vida del proceso al que haga referencia, sino durante toda la vida del sistema.

La finalidad del hecho de tener un nombre único para cada proceso durante toda la vida del sistema es evitar confusiones y malos funcionamientos del SO a causa de la reutilización de nombres. Por ejemplo, imaginemos dos procesos (proceso A y proceso B) que colaboran y se sincronizan mediante señales gracias al hecho de que conocen sus identificadores. Si uno (el proceso B) acaba de manera imprevista y su identificador es reutilizado para crear otro proceso, entonces el proceso A se está sincronizando con un proceso que tiene un identificador B, que es el proceso con el que se había previsto una comunicación. El resultado puede ser que ninguno de los dos procesos funcione correctamente o, lo que es más problemático, que se haya abierto un agujero en la protección del sistema.

Así, una posible estructura de la llamada crear_proceso podría ser:

Id_proceso = crear_proceso(entorno_memoria,nombre_programa, punto_ejecución,entorno_E/S, entorno_dominio).

Debemos comentar que en los sistemas en los que el hijo que se crea es una copia del padre*, el valor de retorno de crear_proceso debe ser diferente en función de si el proceso es el padre o es el hijo. Esto permite diferenciar el comportamiento del padre y del hijo, que estarán ejecutándose justo después de la llamada crear_proceso.

Puede resultarle útil a un proceso encontrar información sobre sí mismo. Por ello existe una llamada que devuelve el identificador del proceso que la invoca. Esta llamada es:

Id_proceso = quiensoy()

Notas y pies de figura de la fuente

Ved también Podéis ver la herencia entre procesos en el subapartado 2.2 y la sincronización entre procesos en el subapartado 2.3 de este módulo didáctico. Ved también Podéis ver los espacios lineales en el subapartado 3.2 del módulo didáctico "El sistema de ficheros". Ved también Podéis ver los identificadores de los procesos en el subapartado 1.1 del módulo didáctico "Comunicación y sincronización". Ved también Podéis ver los diferentes valores devueltos para la operación crear_proceso según el tipo de proceso en el caso UNIX en el apartado 4 de este módulo didáctico.

Página 16

Ver fragmento extraído sin normalizar
2.1.1.  Creación de procesos


La creación de un proceso nuevo es el resultado de la ejecución de una llamada
al sistema del tipo crear_proceso, que es invocada, como todas las llamadas, por
un proceso ya existente.

## Página 14

<!-- source-page: 14 -->

GNUFDL • PID_00214802                                                                                  14                                                                                                      La gestión de procesos

La ejecución de la llamada crear_proceso supone la creación￿de￿un￿entorno￿de
ejecución que contiene los elementos siguientes:


•    La memoria donde residirá el código del programa, los datos con los que
     operará el proceso y la pila utilizada para pasar parámetros o guardar va-
     riables locales a las subrutinas.


•    El punto de entrada (dirección inicial) desde donde se ejecutará el progra-
     ma que contenga la memoria.


•    El entorno de entrada/salida con el que el proceso se comunicará con el
     exterior.


•    Los atributos relacionados con los dominios de protección con los que
     el sistema operativo verificará la legalidad de las operaciones que quiera
     efectuar.




























Figura 4

Cada uno de estos elementos del entorno se debe especificar con el sistema
para que éste pueda crear un proceso nuevo. La especificación de estos ele-
mentos se puede llevar a cabo de dos maneras:


a) De manera explícita, con los parámetros de la llamada al sistema que crea
el proceso.


b) De manera implícita, haciendo que el sistema tome unos valores por de-
fecto.


Normalmente, los sistemas combinan las dos alternativas: obligan a especificar
algunos de estos elementos mediante los parámetros de la llamada al sistema
y dejan otros con valores por defecto.

## Página 15

<!-- source-page: 15 -->

GNUFDL • PID_00214802                                                                                  15                                                                                                      La gestión de procesos

Otro aspecto que hay que tener en cuenta es la relación que existe entre el                                 Ved también
entorno desde donde se ejecuta la llamada al sistema que dará lugar al nuevo
proceso y el entorno nuevo que se creará. Para ver esta relación mejor parti-                                 Podéis ver la herencia entre
                                                                                                              procesos en el subapartado 2.2
mos del hecho, ya mencionado, de que los procesos son creados por el sistema                                  y la sincronización entre proce-
                                                                                                              sos en el subapartado 2.3 de
operativo a petición de otros procesos. Esta situación provoca que los procesos                               este módulo didáctico.
se puedan mirar desde el punto de vista de la descendencia, en la que los pro-
cesos tienen relaciones de parentesco como la de padre e hijo. En este ámbito
podemos hablar de los conceptos de herencia￿entre￿procesos y de sincroni-
zación￿entre￿procesos￿padre￿e￿hijo.


Una vez creado el proceso, el sistema le da un nombre (generalmente un nú-                                  Ved también
mero dentro de un espacio lineal) con el que podrá ser referenciado en accio-
nes de control y manipulación, tanto desde otros procesos como directamente                                   Podéis ver los espacios lineales
                                                                                                              en el subapartado 3.2 del mó-
desde el SO. Este nombre debe ser único para cada proceso, no sólo durante la                                 dulo didáctico "El sistema de
                                                                                                              ficheros".
vida del proceso al que haga referencia, sino durante toda la vida del sistema.


La finalidad del hecho de tener un nombre único para cada proceso durante                                   Ved también
toda la vida del sistema es evitar confusiones y malos funcionamientos del SO
a causa de la reutilización de nombres. Por ejemplo, imaginemos dos procesos                                  Podéis ver los identificadores
                                                                                                              de los procesos en el subapar-
(proceso A y proceso B) que colaboran y se sincronizan mediante señales gra-                                  tado 1.1 del módulo didácti-
                                                                                                              co "Comunicación y sincroni-
cias al hecho de que conocen sus identificadores. Si uno (el proceso B) acaba                                 zación".
de manera imprevista y su identificador es reutilizado para crear otro proce-
so, entonces el proceso A se está sincronizando con un proceso que tiene un
identificador B, que es el proceso con el que se había previsto una comunica-
ción. El resultado puede ser que ninguno de los dos procesos funcione correc-
tamente o, lo que es más problemático, que se haya abierto un agujero en la
protección del sistema.


Así, una posible estructura de la llamada crear_proceso podría ser:


Id_proceso = crear_proceso(entorno_memoria,nombre_programa,
punto_ejecución,entorno_E/S, entorno_dominio).


Debemos comentar que en los sistemas en los que el hijo que se crea es una                                  Ved también
copia del padre*, el valor de retorno de crear_proceso debe ser diferente en fun-
ción de si el proceso es el padre o es el hijo. Esto permite diferenciar el com-                              Podéis ver los diferentes valo-
                                                                                                              res devueltos para la operación
portamiento del padre y del hijo, que estarán ejecutándose justo después de                                   crear_proceso según el tipo de
                                                                                                              proceso en el caso UNIX en el
la llamada crear_proceso.                                                                                     apartado 4 de este módulo di-
                                                                                                              dáctico.

Puede resultarle útil a un proceso encontrar información sobre sí mismo. Por
ello existe una llamada que devuelve el identificador del proceso que la invoca.
Esta llamada es:


Id_proceso = quiensoy()

## Página 16

<!-- source-page: 16 -->

GNUFDL • PID_00214802                                                                                  16                                                                                                      La gestión de procesos

Descargar Markdown originalEstudiar este apartado