Sistemas operativos modernos

es todo. Por lo regular, el proceso hijo ejecuta después execve o una llamada al sistema simi­ lar para modificar su imagen de memoria y ejecutar un programa nuevo. Por ejemplo, cuando un usuario teclea un comando en el shell, digamos sort, el shell produce un proceso hijo y éste ejecuta sort. Estos dos pasos sirven para dar al proceso hijo la oportunidad de manipular sus des­ criptores de archivos después del fork, pero antes del execve, y así redirigir la entrada, la sali­ da y el error estándar. En Windows, en cambio, una sola llamada de Win32, CreateProcess, se encarga tanto de crear procesos como de cargar el programa correcto en el proceso nuevo. Esta llamada tie­ ne 10 parámetros, que incluyen el programa a ejecutar, los parámetros de línea de comandos que se suministrarán a ese programa, diversos atributos de seguridad, bits que controlan si los archivos abiertos se heredan o no, información de prioridad, una especificación de la ventana a crear para el proceso (si existe) y un apuntador a una estructura en la que al invocador se le devuelve información acerca del proceso recién creado. Además de CreateProcess, Win32 tiene cerca de 100 funciones más para administrar y sincronizar procesos, y actividades rela­ cionadas. Tanto en UNIX como en Windows, una vez que se crea un proceso, tanto el padre como el hijo tienen sus propios espacios de direcciones distintos. Si cualquiera de los procesos modifi­ ca una palabra en su espacio de direcciones, el otro proceso no verá el cambio. En UNIX, el espacio de direcciones inicial del hijo es una copia del que tiene el padre, pero son dos espa­ cios de direcciones distintos; no se comparte memoria en la que pueda escribirse (algunas im­ plementaciones de UNIX les permiten compartir el texto del programa, pues no puede modificarse). No obstante, es posible que un proceso recién creado comparta algunos de los otros recursos de su creador, como los archivos abiertos. En Windows, los espacios de direc­ ciones del padre y del hijo son diferentes desde un principio. 2.1.3 Terminación de procesos Una vez creados, los procesos se ejecutan y realizan la labor que se les encomendó. Sin em­ bargo, nada es eterno y los procesos no son la excepción. Tarde o temprano el proceso nuevo terminará, por lo regular debido a una de las siguientes condiciones; 1. Terminación normal (voluntaria). 2. Terminación por error (voluntaria). 3. Error fatal (involuntaria). 4. Terminado por otro proceso (involuntaria). La mayoría de los procesos termina porque ya realizó su trabajo. Una vez que un compi­ lador ha compilado el programa que se le alimentó, ejecuta una llamada para indicar al siste­ ma operativo que ya terminó. Esta llamada es exit en UNIX y ExitProcess en Windows. Los programas por pantalla también suelen terminar en forma voluntaria. Los procesadores de tex­ to, navegadores de Internet y programas similares siempre tienen un icono o elemento de me

RkJQdWJsaXNoZXIy MjI4NDcx