Volver al temario
Tema 03 · 54 páginas

La gestión de procesos

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

2.2. La herencia entre procesos

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

2.2. La herencia entre procesos

La herencia entre procesos es la relación que existe entre los diferentes elementos que configuran el entorno del proceso padre y los que configuran el entorno del proceso hijo.

En concreto, tenemos tres tipos de herencia:

  1. Compartición: el proceso padre y el proceso hijo comparten un mismo elemento. Por lo tanto, las manipulaciones que se hagan de este elemento afectarán a los dos procesos de la misma manera.

  2. Copia: el SO crea los elementos que configuran el entorno del proceso hijo como una copia de los elementos del proceso padre en el momento de invocar la operación de creación. A partir del momento en el que el proceso hijo ha sido creado, los dos entornos tienen evoluciones diferentes.

  3. Valores nuevos: en este caso el SO crea los elementos del proceso hijo de nuevo y lo hace sin tener en cuenta los del proceso padre.

Cada elemento que configura el entorno puede tener una herencia diferente que puede venir predeterminada por el sistema o puede ser establecida mediante los parámetros de la llamada de creación al sistema. A continuación analizamos lo que representan estas posibilidades con respecto a cada uno de los elementos del entorno:

  1. La memoria y su contenido. La memoria, tal como hemos visto anteriormente, se puede organizar por segmentos. Para simplificar la exposición nos centraremos en tres segmentos: el código, los datos y la pila. Los atributos de herencia pueden ser diferentes para cada segmento. El código y los datos pueden tener cualquiera de los tres atributos de herencia, mientras que la pila sólo puede tener herencia de copia o de valores nuevos, pero no compartida, ya que refleja el estado de llamada a procedimientos y a variables locales de cada proceso. Esto último se debe al hecho de que la pila es necesaria para garantizar que los dos procesos (padre e hijo) evolucionen de manera independiente. Así pues, las herencias posibles para la memoria son las siguientes:

a) Compartición: los procesos hijo y padre comparten el mismo segmento de memoria física. Ésta es la situación más conveniente para segmentos de código y, en general, para segmentos que contengan información que sólo ha de ser leída. En caso de compartición de un segmento de datos, cualquier modificación que haga uno de los dos procesos alterará el estado de la memoria. Esta situación permite la colaboración de los procesos mediante la compartición de información.

Notas y pies de figura de la fuente

Ved también Podéis ver la segmentación de la memoria en el subapartado 3.1 del módulo didáctico "La gestión de la memoria". Ved también Podéis ver la problemática asociada a la compartición de la información en el apartado 2 del módulo didáctico "Comunicación y sincronización".

Página 18

b) Copia: los segmentos del proceso hijo son una copia exacta de los del padre en el instante de la creación. Cuando se crea un proceso por duplicación del proceso padre, se deben copiar, como mínimo, todos los segmentos que durante la ejecución independiente del proceso padre y del hijo pueden ser modificados. Éstos son los segmentos de datos y de pila. Otro caso es cuando se crea un proceso por compartición y padre e hijo comparten código y datos. En esta situación, el segmento de pila no puede ser compartido y ha de ser copiado. El motivo, tal como se ha expuesto anteriormente, es que la pila refleja el estado de las llamadas a procedimientos y a variables locales de cada proceso que son fruto de la ejecución independiente de cada proceso.

c) Valores nuevos: en este caso se carga un fichero ejecutable que definirá de nuevo el contenido de la memoria.

  1. El punto de ejecución dentro de la memoria. El punto de inicio de ejecución del programa depende del contenido de la memoria, en concreto del contenido del segmento de código. En caso de copiar o compartir el código con el proceso padre, el punto de ejecución puede ser o bien el mismo que el del proceso padre o bien una dirección que se introduce como parámetro de la operación de creación. En caso de cargar en la memoria un programa nuevo, el punto inicial de ejecución ya es especificado en el fichero ejecutable.

Así pues, las herencias posibles son las siguientes:

a) Copia: el punto de ejecución del proceso padre se copia en el hijo. Este caso sólo es posible si se comparten o se copian los segmentos de código y de datos. Para poder distinguir el proceso padre del proceso hijo lo más habitual es que los dos procesos reciban valores de retorno diferentes de la llamada de creación al sistema.

b) Valores nuevos: el punto de ejecución es definido por los parámetros de la llamada al SO o por el fichero ejecutable que definirá el contenido de la memoria.

El entorno de compartición no es posible, ya que los procesos padre e hijo tienen ejecuciones independientes.

  1. El entorno de entrada/salida. La herencia del entorno de entrada/salida es independiente de la de memoria. El concepto de entorno de entrada/salida hace referencia a las sesiones de acceso a dispositivos que el proceso encontrará abiertas de manera implícita.

El entorno de entrada/salida puede tener las tres modalidades de herencia siguientes:

Notas y pies de figura de la fuente

Ved también Podéis ver la coincidencia de los puntos de ejecución de los procesos padre e hijo en el apartado 4 de este módulo didáctico.

Página 19

a) Compartición: el proceso padre comparte con el proceso hijo las sesiones de trabajo con los dispositivos que tenga abiertos en el momento de la creación. Las modificaciones que se hagan sobre estas sesiones de trabajo con uno de los dos procesos también afectarán al otro. Por ejemplo, en caso de una sesión de acceso secuencial, los dos procesos compartirán un único puntero de acceso. Las sesiones de acceso a los dispositivos que abran a partir del momento de la creación serán independientes en cada proceso.

b) Copia: el proceso hijo encuentra abiertas las mismas sesiones de acceso a los dispositivos que tenía abiertas el padre, pero con la diferencia de que las acciones que se efectúen en estas sesiones no afectarán a las del otro.

c) Valores nuevos: en este tercer caso el proceso hijo encuentra abiertas un conjunto de sesiones de acceso a los dispositivos que se especifican como parámetros de la llamada al sistema.

  1. El dominio de protección. El dominio de protección que hereda un proceso está formado por los atributos de los dominios a los que pertenecerá por sus derechos asociados. En el caso de un sistema con protecciones basadas en capabilities, la herencia también incluye la lista de capabilities inicial del proceso nuevo. Las capabilities tienen un comportamiento análogo al de los dispositivos virtuales.

Por lo tanto, en la descripción siguiente sólo haremos referencia a los atributos de dominio. Consideraremos que éstos no pueden ser copiados, de manera que el dominio de protección puede tener las dos modalidades de herencia siguientes:

a) Compartición: el proceso hijo pertenece al mismo dominio que el proceso padre o, lo que generalmente es lo mismo, pertenecen al mismo usuario. Ésta es la situación más habitual, e implica que las acciones del proceso hijo son imputables al mismo usuario que las del proceso padre.

b) Valores nuevos: a veces, sin embargo, el proceso hijo necesita unos privilegios diferentes de los que tiene asociados el usuario al que pertenece el proceso padre. En este caso, y bajo condiciones controladas de protección, se puede especificar un nuevo dominio para el proceso hijo. El cambio de dominio suele ir acompañado de un cambio de programa. Para mantener el sistema protegido, el programa nuevo debe haber sido escrito por el usuario que configura el nuevo dominio, o ser de su total confianza.

Notas y pies de figura de la fuente

Ved también Podéis ver las capabilities en el subapartado 4.4 del módulo didáctico "El sistema de ficheros".

Página 20

Ver fragmento extraído sin normalizar
2.2.  La herencia entre procesos


La herencia entre procesos es la relación que existe entre los diferentes ele-
mentos que configuran el entorno del proceso padre y los que configuran el
entorno del proceso hijo.


En concreto, tenemos tres￿tipos￿de￿herencia:


1)￿Compartición: el proceso padre y el proceso hijo comparten un mismo
elemento. Por lo tanto, las manipulaciones que se hagan de este elemento
afectarán a los dos procesos de la misma manera.


2)￿Copia: el SO crea los elementos que configuran el entorno del proceso hijo
como una copia de los elementos del proceso padre en el momento de invocar
la operación de creación. A partir del momento en el que el proceso hijo ha
sido creado, los dos entornos tienen evoluciones diferentes.


3)￿Valores￿nuevos: en este caso el SO crea los elementos del proceso hijo de
nuevo y lo hace sin tener en cuenta los del proceso padre.


Cada elemento que configura el entorno puede tener una herencia diferente
que puede venir predeterminada por el sistema o puede ser establecida me-
diante los parámetros de la llamada de creación al sistema. A continuación
analizamos lo que representan estas posibilidades con respecto a cada uno de
los elementos del entorno:


1)￿La￿memoria￿y￿su￿contenido. La memoria, tal como hemos visto anterior-                                 Ved también
mente, se puede organizar por segmentos. Para simplificar la exposición nos
centraremos en tres segmentos: el código, los datos y la pila. Los atributos de                            Podéis ver la segmentación de
                                                                                                           la memoria en el subapartado
herencia pueden ser diferentes para cada segmento. El código y los datos pue-                              3.1 del módulo didáctico "La
                                                                                                           gestión de la memoria".
den tener cualquiera de los tres atributos de herencia, mientras que la pila sólo
puede tener herencia de copia o de valores nuevos, pero no compartida, ya
que refleja el estado de llamada a procedimientos y a variables locales de cada
proceso. Esto último se debe al hecho de que la pila es necesaria para garanti-
zar que los dos procesos (padre e hijo) evolucionen de manera independiente.
Así pues, las herencias posibles para la memoria son las siguientes:


a) Compartición: los procesos hijo y padre comparten el mismo segmento de                                Ved también
memoria física. Ésta es la situación más conveniente para segmentos de código
y, en general, para segmentos que contengan información que sólo ha de ser                                 Podéis ver la problemática aso-
                                                                                                           ciada a la compartición de la
leída. En caso de compartición de un segmento de datos, cualquier modifica-                                información en el apartado 2
                                                                                                           del módulo didáctico "Comu-
ción que haga uno de los dos procesos alterará el estado de la memoria. Esta                               nicación y sincronización".
situación permite la colaboración de los procesos mediante la compartición
de información.

## Página 18

<!-- source-page: 18 -->

GNUFDL • PID_00214802                                                                                  18                                                                                                      La gestión de procesos

b) Copia: los segmentos del proceso hijo son una copia exacta de los del pa-
dre en el instante de la creación. Cuando se crea un proceso por duplicación
del proceso padre, se deben copiar, como mínimo, todos los segmentos que
durante la ejecución independiente del proceso padre y del hijo pueden ser
modificados. Éstos son los segmentos de datos y de pila. Otro caso es cuando
se crea un proceso por compartición y padre e hijo comparten código y datos.
En esta situación, el segmento de pila no puede ser compartido y ha de ser
copiado. El motivo, tal como se ha expuesto anteriormente, es que la pila re-
fleja el estado de las llamadas a procedimientos y a variables locales de cada
proceso que son fruto de la ejecución independiente de cada proceso.


c) Valores nuevos: en este caso se carga un fichero ejecutable que definirá de
nuevo el contenido de la memoria.


2)￿El￿punto￿de￿ejecución￿dentro￿de￿la￿memoria. El punto de inicio de eje-                                 Ved también
cución del programa depende del contenido de la memoria, en concreto del
contenido del segmento de código. En caso de copiar o compartir el código                                  Podéis ver la coincidencia de
                                                                                                           los puntos de ejecución de los
con el proceso padre, el punto de ejecución puede ser o bien el mismo que el                               procesos padre e hijo en el
                                                                                                           apartado 4 de este módulo di-
del proceso padre o bien una dirección que se introduce como parámetro de la                               dáctico.
operación de creación. En caso de cargar en la memoria un programa nuevo,
el punto inicial de ejecución ya es especificado en el fichero ejecutable.


Así pues, las herencias posibles son las siguientes:


a) Copia: el punto de ejecución del proceso padre se copia en el hijo. Este
caso sólo es posible si se comparten o se copian los segmentos de código y de
datos. Para poder distinguir el proceso padre del proceso hijo lo más habitual
es que los dos procesos reciban valores de retorno diferentes de la llamada de
creación al sistema.


b) Valores nuevos: el punto de ejecución es definido por los parámetros de
la llamada al SO o por el fichero ejecutable que definirá el contenido de la
memoria.


El entorno de compartición no es posible, ya que los procesos padre e hijo
tienen ejecuciones independientes.


3)￿El￿entorno￿de￿entrada/salida. La herencia del entorno de entrada/salida
es independiente de la de memoria. El concepto de entorno de entrada/salida
hace referencia a las sesiones de acceso a dispositivos que el proceso encontrará
abiertas de manera implícita.


El entorno de entrada/salida puede tener las tres modalidades de herencia si-
guientes:

## Página 19

<!-- source-page: 19 -->

GNUFDL • PID_00214802                                                                                  19                                                                                                      La gestión de procesos

a) Compartición: el proceso padre comparte con el proceso hijo las sesiones de
trabajo con los dispositivos que tenga abiertos en el momento de la creación.
Las modificaciones que se hagan sobre estas sesiones de trabajo con uno de los
dos procesos también afectarán al otro. Por ejemplo, en caso de una sesión de
acceso secuencial, los dos procesos compartirán un único puntero de acceso.
Las sesiones de acceso a los dispositivos que abran a partir del momento de la
creación serán independientes en cada proceso.


b) Copia: el proceso hijo encuentra abiertas las mismas sesiones de acceso a
los dispositivos que tenía abiertas el padre, pero con la diferencia de que las
acciones que se efectúen en estas sesiones no afectarán a las del otro.


c) Valores nuevos: en este tercer caso el proceso hijo encuentra abiertas un
conjunto de sesiones de acceso a los dispositivos que se especifican como pa-
rámetros de la llamada al sistema.


4)￿El￿dominio￿de￿protección. El dominio de protección que hereda un pro-                                   Ved también
ceso está formado por los atributos de los dominios a los que pertenecerá por
sus derechos asociados. En el caso de un sistema con protecciones basadas en                                Podéis ver las capabilities en el
                                                                                                            subapartado 4.4 del módulo
capabilities, la herencia también incluye la lista de capabilities inicial del pro-                         didáctico "El sistema de fiche-
                                                                                                            ros".
ceso nuevo. Las capabilities tienen un comportamiento análogo al de los dis-
positivos virtuales.


Por lo tanto, en la descripción siguiente sólo haremos referencia a los atributos
de dominio. Consideraremos que éstos no pueden ser copiados, de manera
que el dominio de protección puede tener las dos modalidades de herencia
siguientes:


a) Compartición: el proceso hijo pertenece al mismo dominio que el proceso
padre o, lo que generalmente es lo mismo, pertenecen al mismo usuario. Ésta
es la situación más habitual, e implica que las acciones del proceso hijo son
imputables al mismo usuario que las del proceso padre.


b) Valores nuevos: a veces, sin embargo, el proceso hijo necesita unos privile-
gios diferentes de los que tiene asociados el usuario al que pertenece el proceso
padre. En este caso, y bajo condiciones controladas de protección, se puede
especificar un nuevo dominio para el proceso hijo. El cambio de dominio suele
ir acompañado de un cambio de programa. Para mantener el sistema protegi-
do, el programa nuevo debe haber sido escrito por el usuario que configura el
nuevo dominio, o ser de su total confianza.

## Página 20

<!-- source-page: 20 -->

GNUFDL • PID_00214802                                                                                  20                                                                                                      La gestión de procesos

Descargar Markdown originalEstudiar este apartado