La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Funciones Útiles fork() Sistemas Operativos.

Presentaciones similares


Presentación del tema: "Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Funciones Útiles fork() Sistemas Operativos."— Transcripción de la presentación:

1 Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Funciones Útiles fork() Sistemas Operativos

2 Fork() – Caso base #include int main (void) { char c; printf("Ingrese un caracter\n"); c = getchar(); printf(Se ingresó: %c\n", c); } ¿Cómo puedo hacer si quiero que si el usuario no presiona ninguna tecla imprima en pantalla el mensaje nuevamente cada un segundo?

3 Fork() – Introducción Proceso ejecutando - Código (solo lectura) - Datos (memoria dinámica) - Stack (asignaciones estáticas) Identificador único (PID) Padre único Tres estructuras de memoria

4 Fork() – Introducción UID PID PPID C STIME TTY TIME CMD root :41 ? 00:00:00 init [2] :41 ? 00:00:00 /usr/sbin/exim4 -bd -q30m root :41 ? 00:00:00 /usr/sbin/inetd root :41 ? 00:00:00 /usr/sbin/sshd statd :41 ? 00:00:00 /sbin/rpc.statd daemon :41 ? 00:00:00 /usr/sbin/atd root :41 ? 00:00:00 /usr/sbin/cron root :41 tty1 00:00:00 /bin/login -- root :41 tty2 00:00:00 /sbin/getty tty2 root :41 tty3 00:00:00 /sbin/getty tty3 root :41 tty4 00:00:00 /sbin/getty tty4 root :41 tty5 00:00:00 /sbin/getty tty5 root :41 tty6 00:00:00 /sbin/getty tty6 root :42 tty1 00:00:00 -bash

5 Fork() – Introducción fork() Proceso en ejecución (PID x) Proceso Padre (PID x)Proceso Hijo (PID Y / PPID X)

6 Fork() – ¿Para Qué? Respuesta 1: Que los dos procesos sean iguales no quiere decir que tengan que seguir haciendo lo mismo. fork() Proceso en ejecución (PID x) Proceso en ejecución (PID x). ahora padre de Y Proceso en ejecución (PID Y). Hijo de X Leer_de_teclado() Escribir_en_archivo()

7 Fork() – ¿Para Qué? Respuesta 1: Que los dos procesos sean iguales no quiere decir que tengan que seguir haciendo lo mismo. int main() { int pid = 0, status = 0; pid = fork() if (pid == 0) { /* SOLO Proceso Hijo */ printf(``El PID de mi proceso padre es %d\n'', getppid()); exit(1); } else { /* SOLO Proceso Padre */ printf(``Mi PID es el %d y el de mi hijo es %d\n'', getpid(), pid); exit(0); }

8 Fork() – Notas - El proceso hijo comparte el entorno con el proceso padre. (Descriptores abiertos) -El proceso padre debe esperar la muerte del proceso hijo para que este no sea un zombie. funcion wait() - Todo proceso puede a su vez ser padre - Al morir un hijo se recibe la señal SIGCHLD - Al morir un padre deben morir sus hijos

9 Fork() – Exec*() La familia de funciones exec() reemplaza la imagen de proceso actual con la imagen de un proceso nuevo. fork() Proceso en ejecución (PID x) if (pid == 0) { // hijo execv(/bin/ls, NULL); // nunca se ejecuta exit(0); } else { // padre wait (pid); exit(0); }


Descargar ppt "Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Funciones Útiles fork() Sistemas Operativos."

Presentaciones similares


Anuncios Google