Volver al temario
Tema 03 · 54 páginas

La gestión de procesos

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

2.4.1. Cambio de imagen

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

2.4.1. Cambio de imagen

El sistema operativo ha de permitir que los procesos carguen nuevos programas a la memoria con el fin de ser ejecutados. Esta acción se puede llevar a cabo de dos modos posibles:

a) Al mismo tiempo que se crea un nuevo proceso. Por ejemplo, en el sistema operativo Windows se cambia la imagen en el momento en el que se crea un nuevo proceso.

b) A posteriori, una vez creado el proceso, mediante una llamada específica (cargar_imagen). Por ejemplo, en el sistema operativo UNIX sólo se cambia la imagen si se invoca explícitamente una llamada a sistema para cargar una nueva imagen. En el momento en el que se crea un nuevo proceso no se puede modificar la imagen, sino que el sistema realiza una copia de la imagen del proceso padre.

En función del SO, se ofrecerán combinaciones diferentes de estas dos posibilidades. Aquí enfocaremos la explicación partiendo de un SO que sólo ofrece la segunda posibilidad. Consideraremos, pues, que los procesos nuevos inicialmente siempre ejecutan el mismo código que el proceso padre, ya sea porque lo comparten, o porque se ha copiado. A posteriori, una vez iniciada la ejecución del nuevo proceso, éste decidirá si debe cargar un nuevo código o no.

Éste es el caso del funcionamiento del intérprete de comandos, que, como veremos más adelante, primeramente obtendría por la entrada estándar la orden que debería llevar a cabo, analizaría si había algún ejecutable que lo pudiera hacer y, en este caso, crearía un nuevo proceso igual. Este nuevo proceso, al ejecutarse, cargaría la aplicación que da servicio al comando recibido.

La carga de un nuevo ejecutable provoca la reconfiguración total del espacio lógico del proceso sobre el que se efectúa. Por lo tanto, todos los valores de variables y constantes, los procedimientos y las funciones que se encontraban dentro del espacio lógico del proceso antes de la carga desaparecen. Con el fin de que el código cargado pueda utilizar información elaborada por el código anterior a la carga, debe utilizar mecanismos o dispositivos de almacenamiento que sirvan de puente entre los dos. Una manera sencilla de hacerlo es utilizar el sistema de ficheros o, en general, un dispositivo de almacenamiento. No obstante, los SO ofrecen la posibilidad de pasar información a través de ellos en forma de parámetros de la llamada cargar_imagen, los cuales son recibidos por el nuevo programa como parámetros de entrada de la función principal.

El paso de código en C

Si se utiliza el lenguaje C, el nuevo programa recibirá la información del código anterior a su carga como parámetros de la función main:

Notas y pies de figura de la fuente

Ved también Podéis ver el funcionamiento del intérprete de comandos en el subapartado 4.2 de este módulo didáctico.

Página 24

main(argc,argv,env) int argc;

char **argv,**env;

Hemos de advertir que la llamada cargar_imagen sólo afecta a la estructura y al contenido de la memoria, y también al contador de programa, que nos indica la próxima instrucción que hay que ejecutar. El resto de los elementos que configuran el entorno del proceso no tienen por qué verse afectados, de manera que el nuevo ejecutable debe encontrar el mismo entorno de entrada/salida y el mismo entorno de protección. No obstante, esta afirmación puede variar en función de si el SO asigna otras funciones a la llamada cargar_imagen.

La llamada cargar_imagen podría tener la siguiente forma:

Estado = cargar_imagen(nombre_ejecutable,parámetros).

Esta llamada devuelve un valor sólo en caso de error, ya que si tiene éxito, todo el código y los datos del programa que la contenían habrán desaparecido de la memoria.

Notas y pies de figura de la fuente

Ved también Podéis ver las funciones de la llamada cargar_imagen en el caso de UNIX en el subapartado 4.4 de este módulo didáctico.

Ver fragmento extraído sin normalizar
2.4.1.  Cambio de imagen


El sistema operativo ha de permitir que los procesos carguen nuevos programas
a la memoria con el fin de ser ejecutados. Esta acción se puede llevar a cabo
de dos modos posibles:


a) Al mismo tiempo que se crea un nuevo proceso. Por ejemplo, en el sistema
operativo Windows se cambia la imagen en el momento en el que se crea un
nuevo proceso.


b) A posteriori, una vez creado el proceso, mediante una llamada específica
(cargar_imagen). Por ejemplo, en el sistema operativo UNIX sólo se cambia la
imagen si se invoca explícitamente una llamada a sistema para cargar una
nueva imagen. En el momento en el que se crea un nuevo proceso no se puede
modificar la imagen, sino que el sistema realiza una copia de la imagen del
proceso padre.


En función del SO, se ofrecerán combinaciones diferentes de estas dos posibi-
lidades. Aquí enfocaremos la explicación partiendo de un SO que sólo ofrece la
segunda posibilidad. Consideraremos, pues, que los procesos nuevos inicial-
mente siempre ejecutan el mismo código que el proceso padre, ya sea porque
lo comparten, o porque se ha copiado. A posteriori, una vez iniciada la ejecu-
ción del nuevo proceso, éste decidirá si debe cargar un nuevo código o no.


Éste es el caso del funcionamiento del intérprete de comandos, que, como ve-                             Ved también
remos más adelante, primeramente obtendría por la entrada estándar la orden
que debería llevar a cabo, analizaría si había algún ejecutable que lo pudiera                             Podéis ver el funcionamiento
                                                                                                           del intérprete de comandos en
hacer y, en este caso, crearía un nuevo proceso igual. Este nuevo proceso, al                              el subapartado 4.2 de este mó-
                                                                                                           dulo didáctico.
ejecutarse, cargaría la aplicación que da servicio al comando recibido.


La carga de un nuevo ejecutable provoca la reconfiguración total del espacio
lógico del proceso sobre el que se efectúa. Por lo tanto, todos los valores de
variables y constantes, los procedimientos y las funciones que se encontraban
dentro del espacio lógico del proceso antes de la carga desaparecen. Con el fin
de que el código cargado pueda utilizar información elaborada por el código
anterior a la carga, debe utilizar mecanismos o dispositivos de almacenamien-
to que sirvan de puente entre los dos. Una manera sencilla de hacerlo es utili-
zar el sistema de ficheros o, en general, un dispositivo de almacenamiento. No
obstante, los SO ofrecen la posibilidad de pasar información a través de ellos
en forma de parámetros de la llamada cargar_imagen, los cuales son recibidos
por el nuevo programa como parámetros de entrada de la función principal.

El paso de código en C


Si se utiliza el lenguaje C, el nuevo programa recibirá la información del código
anterior a su carga como parámetros de la función main:

## Página 24

<!-- source-page: 24 -->

GNUFDL • PID_00214802                                                                                  24                                                                                                      La gestión de procesos


    main(argc,argv,env)
    int argc;

    char **argv,**env;


Hemos de advertir que la llamada cargar_imagen sólo afecta a la estructura y al                            Ved también
contenido de la memoria, y también al contador de programa, que nos indica
la próxima instrucción que hay que ejecutar. El resto de los elementos que                                   Podéis ver las funciones de la
                                                                                                             llamada cargar_imagen en el
configuran el entorno del proceso no tienen por qué verse afectados, de ma-                                  caso de UNIX en el subaparta-
                                                                                                             do 4.4 de este módulo didácti-
nera que el nuevo ejecutable debe encontrar el mismo entorno de entrada/sa-                                  co.
lida y el mismo entorno de protección. No obstante, esta afirmación puede
variar en función de si el SO asigna otras funciones a la llamada cargar_imagen.


La llamada cargar_imagen podría tener la siguiente forma:


Estado = cargar_imagen(nombre_ejecutable,parámetros).


Esta llamada devuelve un valor sólo en caso de error, ya que si tiene éxito,
todo el código y los datos del programa que la contenían habrán desaparecido
de la memoria.


Descargar Markdown originalEstudiar este apartado