Herramientas de usuario

Herramientas del sitio


so_procplani

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
so_procplani [2019/08/25 23:48] marianoso_procplani [2019/08/26 00:02] (actual) mariano
Línea 49: Línea 49:
   - El proceso hijo es un duplicado del proceso padre (usa el mismo programa y los mismos datos que el padre).    - El proceso hijo es un duplicado del proceso padre (usa el mismo programa y los mismos datos que el padre). 
   - El proceso hijo carga un nuevo programa.    - El proceso hijo carga un nuevo programa. 
 +
 +Para ilustrar estas diferencias, consideremos en primer lugar el sistema operativo UNIX. En UNIX, cada proceso se identifica mediante su identificador de proceso, que es un entero unívoco. Puede crearse un proceso nuevo mediante la llamada al sistema fork ( ). El nuevo proceso consta de una copia del espacio de direcciones del proceso original. Este mecanismo permite al proceso padre comunicarse fácilmente con su proceso hijo. Ambos procesos (padre e hijo) continúan la ejecución en la instrucción que sigue a fork ( ), con una diferencia: el código de retorno para fork () es cero en el caso del proceso nuevo (hijo), mientras que al padre se le devuelve el identificador de proceso (distinto de cero) del hijo. 
 +
 +Normalmente, uno de los dos procesos utiliza la llamada al sistema exec ( ) después de una llamada al sistema fork (), con el fin de sustituir el espacio de memoria del proceso con un nuevo programa. La llamada al sistema exec () carga un archivo binario en memoria (destruyendo la imagen en memoria del programa que contiene la llamada al sistema exec ( ) ) e inicia su ejecución. De esta manera, los dos procesos pueden comunicarse y seguir luego caminos separados, El padre puede crear más hijos, o, si no tiene nada que hacer mientras se ejecuta el hijo, puede ejecutar una llamada al sistema wait () para auto-excluirse de la cola de procesos preparados hasta que el proceso hijo se complete.
 +
 +==== Terminación de procesos ====
 +
 +Un proceso termina cuando ejecuta su última instrucción y pide al sistema operativo que lo elimine usando la llamada al sistema exit ( ) . En este momento, el proceso puede devolver un valor de estado (normalmente, un entero) a su proceso padre (a través de la llamada al sistema wait() ). El sistema operativo libera la asignación de todos los recursos del proceso, incluyendo las memorias física y virtual, los archivos abiertos y los búferes de E/S. 
 +
 +La terminación puede producirse también en otras circunstancias. Un proceso puede causar la terminación de otro proceso a través de la adecuada llamada al sistema (por ejemplo, TerminateProcess en Win32). Normalmente, dicha llamada al sistema sólo puede ser invocada por el padre del proceso-que se va a terminar. En caso contrario, los usuarios podrían terminar arbitrariamente los trabajos de otros usuarios. Observe que un padre necesita conocer las identidades de sus hijos. Por tanto, cuando un proceso crea un proceso nuevo, se pasa al padre la identidad del proceso que se acaba de crear. 
 +
 +Un padre puede terminar la ejecución de uno de sus hijos por diversas razones, como por ejemplo, las siguientes: 
 +
 +  * El proceso hijo ha excedido el uso de algunos de los recursos que se le han asignado. Para determinar si tal cosa ha ocurrido, el padre debe disponer de un mecanismo para inspeccionar el estado de sus hijos. 
 +  * La tarea asignada al proceso hijo ya no es necesaria. 
 +  * El padre abandona el sistema, y el sistema operativo no permite que un proceso hijo continúe si su padre ya ha terminado. 
 +
 +Algunos sistemas, incluyendo VMS, no permiten que un hijo siga existiendo si su proceso padre se ha completado. En tales sistemas, si un proceso termina (sea normal o anormalmente), entonces todos sus hijos también deben terminarse. Este fenómeno, conocido como terminación en cascada, normalmente lo inicia el sistema operativo. 
 +
 +Para ilustrar la ejecución y terminación de procesos, considere que, en UNIX, podemos terminar un proceso usando la llamada al sistema exit ( ); su proceso padre puede esperar a la terminación del proceso hijo usando la llamada al sistema wait ( ). La llamada al sistema wait ( ) devuelve el identificador de un proceso hijo completado, con el fin de que el padre puede saber cuál de sus muchos hijos ha terminado. Sin embargo, si el proceso padre se ha completado, a todos sus procesos hijo se les asigna el proceso init como su nuevo padre. Por tanto, los hijos todavía tienen un padre al que proporcionar su estado y sus estadísticas de ejecución.
 +
  
  
× iphelper toolbox

you see this when javscript or css is not working correct

Untested
IP Address:
First usable:
Subnet:
Last usable:
CIDR:
Amount of usable:
Network address:
Reverse address:
Broadcast address:

so_procplani.1566776924.txt.gz · Última modificación: 2019/08/25 23:48 por mariano