Volver al temario
Tema 03 · 54 páginas

La gestión de procesos

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

4.1.1. La creacion y la destruccion de procesos

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

4.1.1. La creación y la destrucción de procesos

Las correspondencias entre las llamadas de UNIX y las vistas en este módulo son:

Operación

Crear_proceso

Destruir_proceso

Esperar_finalización

Cargar_imagen

Quiensoy

UNIX ha optado por tratar el tema de la creación y la destrucción de procesos de la manera más sencilla posible. Las llamadas que ofrecen tienen el mínimo número posible de parámetros, y crean y destruyen los procesos a partir de una definición implícita en el sistema. A posteriori, y definiéndolo por programa, el usuario puede cambiar el entorno de ejecución y hacer el proceso a su medida. A continuación veremos cómo actúa cada una de las llamadas vistas en este módulo en el sistema operativo UNIX:

Notas y pies de figura de la fuente

Llamadas de UNIX fork exit wait exec (execl, execlp, execle, execv, execvp, execve) getpid Creación y destrucción de procesos En UNIX, la creación y destrucción de procesos se ajusta a la filosofía general del sistema de ofrecer herramientas de utilización sencilla que permitan desarrollar cualquier política que se necesite.

Página 30

Figura 9

  1. La llamada fork no tiene ningún parámetro y crea un nuevo proceso hijo que es un duplicado del proceso padre. En general, el PCB del hijo es una copia del PCB del padre; el espacio de memoria del proceso hijo es una copia del espacio del padre y las entradas de la tabla de files descriptors apuntan a las mismas entradas de la tabla de punteros de lectura/escritura. El proceso hijo pertenece al mismo usuario y grupo de usuarios que el padre. Los dos procesos continúan la ejecución de manera independiente en el punto posterior a la llamada fork en el sistema.

Normalmente después de hacer la llamada fork el proceso hijo ha de ejecutar un código diferente del código del padre. Para poder distinguirse, la llamada fork devuelve valores diferentes en función de si es el proceso padre o el hijo: el hijo recibe un valor 0 y el padre recibe el identificador (PID) del hijo.

Durante la creación de un nuevo proceso, UNIX controla los aspectos importantes que afectan al conjunto del sistema, como la disponibilidad de recursos11. Un ejemplo concreto de este control es el hecho de que no permite que un usuario normal (no procesos de sistema) ocupe la última entrada de la tabla de procesos, la última área de memoria libre, etc. Si eso sucediera, el sistema quizá no se podría recuperar de situaciones en las que sería necesario poner en marcha algún proceso del sistema de manera urgente. Por ejemplo, si se tuviera que parar rápidamente el sistema, podría ser catastrófico no poder poner en marcha el proceso de parada del sistema (shutdown).

Notas y pies de figura de la fuente

(11)Los recursos del sistema son la memoria, las entradas en la tabla de PCB, etc.

Página 31

  1. La llamada exit destruye un proceso. La destrucción de un proceso mediante esta llamada es idéntica a la que hemos explicado en el caso de la creación y la destrucción de procesos. El proceso que la ejecuta es destruido por el sistema. Con el fin de notificar el estado de finalización se pasa al sistema

operativo un parámetro que el proceso padre podrá recoger mediante la llamada wait.

  1. La llamada wait bloquea12 el proceso que la ha llamado hasta que alguno de sus procesos hijos haya sido destruido. Cuando esto sucede, el sistema le devuelve el PID del proceso destruido y, como parámetro de salida, el estado en el que ha finalizado. Combinando las tres llamadas presentadas en este subapartado, el intérprete de comandos puede ejecutar comandos en las modalidades de primer plano y de fondo (podéis ver la figura 10). UNIX guarda el estado de finalización de los procesos destruidos en su PCB y espera que su proceso padre lo recoja mediante la llamada wait. Por este motivo, UNIX no libera el PCB de un proceso en el momento de su destrucción13.

Los procesos esperan en un estado especial denominado zombie hasta que se ejecuta la llamada wait que permitirá eliminarlos definitivamente. Para evitar la acumulación de procesos en estado zombie se han previsto dos mecanismos:

  1. Cada usuario sólo puede tener en un instante determinado un cierto número de procesos activos, incluidos los zombies.

  2. Los procesos que son destruidos más tarde que sus procesos padre pasan a ser considerados hijos del primer proceso del sistema14, que es el encargado de recoger su estado de finalización.

Figura 10

Notas y pies de figura de la fuente

Ved también Podéis ver la destrucción de procesos en el subapartado 2.1 de este módulo didáctico. (12)Existen otras variantes, como waitpid y waitid, que permiten un control más fino sobre el proceso al que se quiere esperar o los tipos de cambios de estado que se desean monitorizar. (13)Cuando se destruye un proceso se liberan todos los recursos excepto el PCB: se libera memoria, se cierran los canales de entrada/salida, etc. (14)El primer proceso del sistema se llama init y tiene un PID igual a uno.

Página 32

Ver fragmento extraído sin normalizar
4.1.1.  La creación y la destrucción de procesos


Las correspondencias entre las llamadas de UNIX y las vistas en este módulo
son:



Operación                       Llamadas de UNIX

Crear_proceso                   fork

Destruir_proceso                exit

Esperar_finalización            wait

Cargar_imagen                   exec (execl, execlp, execle, execv, execvp, execve)

Quiensoy                        getpid


UNIX ha optado por tratar el tema de la creación y la destrucción de procesos                                        Creación y destrucción de
de la manera más sencilla posible. Las llamadas que ofrecen tienen el mínimo                                         procesos
número posible de parámetros, y crean y destruyen los procesos a partir de una                                         En UNIX, la creación y destruc-
definición implícita en el sistema. A posteriori, y definiéndolo por programa,                                         ción de procesos se ajusta a la
                                                                                                                       filosofía general del sistema de
el usuario puede cambiar el entorno de ejecución y hacer el proceso a su me-                                           ofrecer herramientas de utili-
dida. A continuación veremos cómo actúa cada una de las llamadas vistas en                                             zación sencilla que permitan
                                                                                                                       desarrollar cualquier política
este módulo en el sistema operativo UNIX:                                                                              que se necesite.

## Página 30

<!-- source-page: 30 -->

GNUFDL • PID_00214802                                                                                  30                                                                                                      La gestión de procesos














































    Figura 9

1) La llamada￿fork no tiene ningún parámetro y crea un nuevo proceso hijo
que es un duplicado del proceso padre. En general, el PCB del hijo es una copia
del PCB del padre; el espacio de memoria del proceso hijo es una copia del
espacio del padre y las entradas de la tabla de files descriptors apuntan a las
mismas entradas de la tabla de punteros de lectura/escritura. El proceso hijo
pertenece al mismo usuario y grupo de usuarios que el padre. Los dos procesos
continúan la ejecución de manera independiente en el punto posterior a la
llamada fork en el sistema.


Normalmente después de hacer la llamada fork el proceso hijo ha de ejecutar
un código diferente del código del padre. Para poder distinguirse, la llamada
fork devuelve valores diferentes en función de si es el proceso padre o el hijo:
el hijo recibe un valor 0 y el padre recibe el identificador (PID) del hijo.

Durante la creación de un nuevo proceso, UNIX controla los aspectos impor-                                  (11)Los recursos del sistema son la
tantes que afectan al conjunto del sistema, como la disponibilidad de recur-                                memoria, las entradas en la tabla
                                                                                                            de PCB, etc.
sos11. Un ejemplo concreto de este control es el hecho de que no permite que
un usuario normal (no procesos de sistema) ocupe la última entrada de la tabla
de procesos, la última área de memoria libre, etc. Si eso sucediera, el sistema
quizá no se podría recuperar de situaciones en las que sería necesario poner
en marcha algún proceso del sistema de manera urgente. Por ejemplo, si se
tuviera que parar rápidamente el sistema, podría ser catastrófico no poder po-
ner en marcha el proceso de parada del sistema (shutdown).

## Página 31

<!-- source-page: 31 -->

GNUFDL • PID_00214802                                                                                  31                                                                                                      La gestión de procesos

2) La llamada￿exit destruye un proceso. La destrucción de un proceso me-                                       Ved también
diante esta llamada es idéntica a la que hemos explicado en el caso de la crea-
ción y la destrucción de procesos. El proceso que la ejecuta es destruido por                                   Podéis ver la destrucción de
                                                                                                                procesos en el subapartado 2.1
el sistema. Con el fin de notificar el estado de finalización se pasa al sistema                                de este módulo didáctico.

operativo un parámetro que el proceso padre podrá recoger mediante la lla-
mada wait.

3) La llamada￿wait bloquea12 el proceso que la ha llamado hasta que alguno                                   (12)Existen otras variantes, como
de sus procesos hijos haya sido destruido. Cuando esto sucede, el sistema le                                 waitpid y waitid, que permiten un
                                                                                                             control más fino sobre el proce-
devuelve el PID del proceso destruido y, como parámetro de salida, el estado                                 so al que se quiere esperar o los ti-
                                                                                                             pos de cambios de estado que se
en el que ha finalizado. Combinando las tres llamadas presentadas en este                                    desean monitorizar.
subapartado, el intérprete de comandos puede ejecutar comandos en las mo-
                                                                                                             (13)Cuando se destruye un proce-
dalidades de primer plano y de fondo (podéis ver la figura 10).
                                                                                                             so se liberan todos los recursos ex-
                                                                                                             cepto el PCB: se libera memoria, se
UNIX guarda el estado de finalización de los procesos destruidos en su PCB y                                 cierran los canales de entrada/sali-
                                                                                                             da, etc.
espera que su proceso padre lo recoja mediante la llamada wait. Por este mo-
tivo, UNIX no libera el PCB de un proceso en el momento de su destrucción13.


Los procesos esperan en un estado especial denominado zombie hasta que se
ejecuta la llamada wait que permitirá eliminarlos definitivamente. Para evitar
la acumulación de procesos en estado zombie se han previsto dos mecanismos:


1) Cada usuario sólo puede tener en un instante determinado un cierto nú-
mero de procesos activos, incluidos los zombies.

2) Los procesos que son destruidos más tarde que sus procesos padre pasan a                                  (14)El primer proceso del sistema
ser considerados hijos del primer proceso del sistema14, que es el encargado de                              se llama init y tiene un PID igual a
                                                                                                             uno.
recoger su estado de finalización.





































Figura 10

## Página 32

<!-- source-page: 32 -->

GNUFDL • PID_00214802                                                                                  32                                                                                                      La gestión de procesos

Descargar Markdown originalEstudiar este apartado