|
| |
Up Definición de Proceso Modelo de Procesos Operaciones sobre Procesos Cambio de Contexto Procesos Cooperantes Threads
Operaciones sobre Procesos
Los procesos en el sistema pueden ejecutarse concurrentemente y
deben ser creados y borrados dinamicamente. Asi el sistema de operación debe crear un
mecanismo para la creación y terminación de procesos.
- Creación de procesos
Cuando
un nuevo proceso se agrega a los que actualmente están siendo administrados, el sistema
de operación construye las estructuras de datos que son usadas para administrar los
procesos (PCB) y le asigana espacio de direcciones. Estas acciones constituyen la
creación de un nuevo proceso.
Hay 4 eventos comunes que conducen a la creación de procesos:
- En un ambiente batch, un proceso es creado en respuesta al
sometimiento a ejecución de un trabajo (job). El sistema de operación tomará el
próximo trabajo a ser ejecutado y creará el respectivo proceso.
- En un ambiente interactivo, un proceso es creado cuando un nuevo
usuario entra al sistema (log on), se crea un proceso shell que espera las
órdenes del usuario. La creación de este proceso es responsabilidad del sistema de
operación.
- El sistema de operación puede crear un proceso para que realice
una función en respuesta a una petición de un programa usuario, sin que el usuario tenga
que esperar. Por ejemplo, si un usuario requiere que se imprima un archivo, el SO puede
crear un proceso que maneje esta impresión, mientras que el proceso que realizó la
petición puede continuar independientemente del tiempo requerido para completar la tarea
de impresión.
- Creación de procesos hijos por parte de procesos usuarios ya
existentes: para propósitos de modularidad o para explotar paralelismo, un programa
usuario puede crear un conjunto de procesos hijos. El proceso que crea se llama proceso
padre.
Cuando un proceso crea un hijo hay dos posibilidades en términos
de ejecución:
- El proceso padre continua ejecutándose concurrentemente con sus
hijos
- El proceso padre espera a que alguno o todos los hijos terminen.
También hay dos posibilidades en términos de espacio de
direcciones del nuevo proceso:
- El proceso hijo es un duplicado del proceso padre (Unix).
- El proceso hijo tiene su propio programa cargado (DEC VMS).
Así mismo, referente a los recursos, en algunos sistemas los
recursos del padre son compartidos con sus hijos y en otros sistemas, como UNIX, el
sistema le otorga recursos nuevos e independientes a los procesos hijos. La creación de
procesos hijos en UNIX, se realiza a través de la llamada al sistema fork().
En el proceso de creación de procesos se genera una jerarquía
de procesos padres e hijos.
- Terminación de procesos
Implica
la liberación de los recursos que este proceso estaba usando.
Un proceso puede terminar por las siguientes razones:
- En forma normal: exit(), Halt(): llamadas al sistema que desasigna
los recursos del proceso.
- Excede el tiempo límite
- Memoria no disponible: el proceso requiere más memoria de la que
el sistema puede proveerle.
- Violación de límites: el proceso trata de accesar una dirección
de memoria que no se le permite accesar.
- Error de protección: el proceso trata de usar un recurso o un
archivo que no le es permitido acceder, o trata de usarlo en forma incorrecta (por
ejemplo, escribir en un archivo read-only).
- Errores aritméticos
- Falla de E/S
- Instrucción inválida
- Instrucción privilegiada
- Error en dato: una pieza de dato tiene un tipo erroneo o no está
inicializada.
- Intervención del SO u operador.
- Terminación del padre: cuando un proceso termina, el SO puede
terminar automáticamente todos sus procesos hijos. Algunos sistemas realizan terminación
en cascada; esto es, si un proceso termina todos sus hijos son automáticamente
terminados.
- Requerimiento del padre: un proceso padre tiene la autoridad para
terminar cualquiera de sus procesos hijos.
Yudith Cardinale
Wed Sep 30 11:36:05 AST 1998
|