2.1.2. Destruccion 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.2. Destrucción de procesos
La destrucción de un proceso implica la destrucción del entorno que lo constituye y la liberación de los recursos que tenía asignados.
La destrucción de un proceso por parte del sistema puede ser consecuencia de alguna de las situaciones siguientes:
a) La ejecución de la llamada al sistema destruir_proceso específica para este motivo. En la mayoría de los sistemas esta llamada provoca la destrucción del proceso que la invoca, y no puede ser dirigida a otros procesos.
b) El mal funcionamiento del proceso destruido. Si el sistema operativo detecta que un proceso no funciona correctamente y efectúa operaciones no permitidas, lo destruye. Estas operaciones suelen estar asociadas a las excepciones provocadas por acciones como: acceder a posiciones de memoria que no se tienen asignadas, ejecutar instrucciones privilegiadas o efectuar operaciones aritméticas incorrectas como por ejemplo, una división por cero, etc.
c) El efecto lateral de la ejecución, por parte de otro proceso8, de una llamada al sistema diferente de la llamada destruir_proceso, que provoca una excepción sobre el proceso que es destruido.
Ahora nos centraremos exclusivamente en el primer punto: la destrucción de un proceso como resultado de la ejecución de la llamada al sistema destruir_proceso. Las dos últimas situaciones las veremos más adelante. Todo proceso, cuando finaliza sin incidentes la ejecución del programa que almacena, debe ser destruido. Esta destrucción sólo puede ser el resultado de la
ejecución de la llamada destruir_proceso. A fin de que se lleve a cabo la destrucción, el compilador inserta automáticamente, de manera transparente para el programador, la llamada destruir_proceso al sistema como última instrucción del programa. De manera adicional, el programador puede incluir solicitudes a la llamada destruir_proceso para provocar la finalización del proceso en situaciones controladas por el programa.
La llamada para destruir un proceso podría ser:
Estado = destruir_proceso(id_proceso).
Si esta llamada funciona correctamente, no volverá a aparecer, ya que provocará la destrucción del propio proceso que la invoca.
Notas y pies de figura de la fuente
(8)El proceso que la invoca ha de tener derecho para provocar la destrucción del otro proceso. Ved también Podéis ver la destrucción de procesos como efecto derivado de la ejecución de otros procesos o de las llamadas al sistema pedidas por otros procesos en el subapartado 3.2.1 del módulo didáctico "Comunicación y sincronización".
Página 17
Ver fragmento extraído sin normalizar
2.1.2. Destrucción de procesos
La destrucción de un proceso implica la destrucción del entorno que lo cons-
tituye y la liberación de los recursos que tenía asignados.
La destrucción de un proceso por parte del sistema puede ser consecuencia de
alguna de las situaciones siguientes:
a) La ejecución de la llamada al sistema destruir_proceso específica para este
motivo. En la mayoría de los sistemas esta llamada provoca la destrucción del
proceso que la invoca, y no puede ser dirigida a otros procesos.
b) El mal funcionamiento del proceso destruido. Si el sistema operativo detec-
ta que un proceso no funciona correctamente y efectúa operaciones no per-
mitidas, lo destruye. Estas operaciones suelen estar asociadas a las excepciones
provocadas por acciones como: acceder a posiciones de memoria que no se
tienen asignadas, ejecutar instrucciones privilegiadas o efectuar operaciones
aritméticas incorrectas como por ejemplo, una división por cero, etc.
c) El efecto lateral de la ejecución, por parte de otro proceso8, de una llamada (8)El proceso que la invoca ha de
al sistema diferente de la llamada destruir_proceso, que provoca una excepción tener derecho para provocar la
destrucción del otro proceso.
sobre el proceso que es destruido.
Ved también
Ahora nos centraremos exclusivamente en el primer punto: la destrucción
de un proceso como resultado de la ejecución de la llamada al sistema Podéis ver la destrucción de
procesos como efecto deriva-
destruir_proceso. Las dos últimas situaciones las veremos más adelante. do de la ejecución de otros
procesos o de las llamadas al
sistema pedidas por otros pro-
cesos en el subapartado 3.2.1
Todo proceso, cuando finaliza sin incidentes la ejecución del programa que del módulo didáctico "Comu-
almacena, debe ser destruido. Esta destrucción sólo puede ser el resultado de la nicación y sincronización".
ejecución de la llamada destruir_proceso. A fin de que se lleve a cabo la destruc-
ción, el compilador inserta automáticamente, de manera transparente para el
programador, la llamada destruir_proceso al sistema como última instrucción
del programa. De manera adicional, el programador puede incluir solicitudes
a la llamada destruir_proceso para provocar la finalización del proceso en situa-
ciones controladas por el programa.
La llamada para destruir un proceso podría ser:
Estado = destruir_proceso(id_proceso).
Si esta llamada funciona correctamente, no volverá a aparecer, ya que provo-
cará la destrucción del propio proceso que la invoca.
## Página 17
<!-- source-page: 17 -->
GNUFDL • PID_00214802 17 La gestión de procesos