0% encontró este documento útil (0 votos)
31 vistas16 páginas

Procesos en UNIX: Creación y Gestión

Cargado por

hanokah685
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
31 vistas16 páginas

Procesos en UNIX: Creación y Gestión

Cargado por

hanokah685
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd

PRÁCTICA

Procesos UNIX

1
Creación de procesos

 Los S.O. como el UNIX son sistemas multitareas que


tienen la capacidad de crear varios “procesos”.
 Un proceso es un programa en ejecución con su propio
“espacio de direcciones” virtual independiente (sus
propias variables) que es administado por el S.O.
 El S.O. decide cuando el proceso se ejecuta (toma el control del
CPU) y cuando deja de hacerlo.
 Los procesos pueden comunicarse entre ellos (se verá
más adelante).

2
Creación de procesos

 Hay aplicaciones que se diseñan como múltiples


procesos concurrentes, que pueden comunicarse o no
entre sí.
 En la Informática Industrial es una forma adecuada de
representar el hecho de que se trata con el “mundo
real” en que las cosas suceden de forma simultánea y
asíncrona.
 Los Sistemas de Tiempo Real planifican la ejecución
de los procesos (que lidian con eventos del mundo real)
de modo que se cumplan las restricciones temporales
establecidas.

3
Creación de procesos

 Un proceso se crea mediante una llamada al sistema. Cada proceso se


identifica con un número (pid)
 El proceso creador se denomina padre, y el creado, hijo. Los hijos
pueden a su vez crear otros procesos, formando un árbol de procesos
 Ejecución:
 Padre e hijos se ejecutan concurrentemente.
 El padre espera a que algunos de los hijos o todos terminen.
 Espacio de direcciones:
 El proceso hijo es un duplicado del proceso padre.
 El proceso padre y el hijo comparten código pero no el contenido de
las variables.
 Se carga un programa en el proceso hijo.

4
Creación de procesos en UNIX

 La llamada al sistema fork crea un nuevo proceso


 El proceso 0 es el único que no se crea con fork. Se
crea al arrancar el sistema y al hacer un fork se
convierte en el proceso intercambiador. El proceso
hijo se llama init y su PID vale 1. Todos los procesos
son hijos de este.

5
Creación de procesos en UNIX
 Una secuencia de código típica para manejar la llamada fork:

int pid;
....
pid = fork() ;
if (pid == 0)
/* codigo que va a ejecutar el proceso hijo */
else
/* codigo que va a ejecutar el proceso padre */

6
Creación de procesos en UNIX
 Después del fork uno de los dos procesos puede utilizar la
llamada al sistema exec para reemplazar su espacio de
memoria por un nuevo programa. La familia de funciones exec
permite cargar un programa en la zona de memoria del proceso
que ejecuta la llamada. El contexto a nivel de usuario es
sustituido con el nuevo programa. El programa viejo es
sustituido por el nuevo y nunca retornaremos a él para proseguir
su ejecución.
 Este es el mecanismo que utiliza el intérprete de comandos
(Shell) para ejecutar los programas que el usuario le indique.

7
Creación de procesos en UNIX:Shell

proceso shell proceso padre proceso shell

fork wait

proceso zombi
proceso hijo

exec
exit
programa

se ejecuta programa

8
Terminación de procesos

 Un proceso termina cuando finaliza la ejecución


de su último enunciado y le pide al sistema
operativo que lo elimine invocando una llamada
al sistema específica (ej:exit).
 También si se genera una excepción y el S.O.
decide abortarlo
 Podría existir una llamada al sistema para
abortar otro proceso

9
Terminación de procesos en UNIX
 El proceso padre puede esperar a que termine el hijo antes de
continuar su ejecución (p.e. intérpretes de órdenes).
 Para poder sincronizar los procesos padre e hijo se emplean las
llamadas exit y wait.
 exit:
 descarga el proceso de memoria, cerrando ficheros abiertos
 si el padre ha ejecutado wait se le comunica el estado
 si el padre no ha ejecutado wait el hijo pasa a zombi (se
descarga de memo y solo ocupa una entrada en la tabla de
proc.)
 wait suspende la ejecución del proceso que la invoca hasta que
alguno de los hijos termina.

10
11
Compilar programas con gcc:
[Link] fork.c

Compila el programa: ejecutable por defecto en [Link].

[Link] fork.c –o [Link]

Compila y nombra el ejecutable como [Link].

12
13
14
Modificar programa de manera que entre
el padre y el hijo impriman los
números enteros del 0 al 20:

•El padre imprimirá los pares


•El hijo imprimirá los impares.

15
Comandos de UNIX de interés
ps (lista los procesos)
ps –fe (listas todos los procesos
del sistema)
grep (se utiliza para hacer
búsquedas de determinados patrones en
el texto)
Usando filtros:
 ps –fe|grep usuario (lista los procesos
del usuario
dado)
kill pid (manda señales al proceso
pid, es especial la señal
de terminación) 16

También podría gustarte