Está en la página 1de 2

Universidad Tecnolgica de Mxico Campus Cuitlahuac Sistemas Operativos Distribuidos - Prof.

: Mario de la Luz Rojas, sbado 19 de octubre de 2013

Universidad Tecnolgica de Mxico


Sistemas Operativos Distribuidos
Prof.: Mario de la Luz Rojas Prctica 4
Procesos Objetivo:
Desarrollo de programas para: o Procesos Creacin de un proceso HIJO a partir del Proceso PADRE Ejecucin de cdigo comn Ejecucin solamente del cdigo que les corresponde Dejar a un proceso hurfano Sincronizacin entre procesos PADRE e HIJO para evitar que este ultimo quede hurfano Creacin de un segundo proceso HIJO Creacin de un proceso NIETO

Procesos
1.- Creando procesos El programa del inciso a muestra la estructura general para, mediante la llamada al sistema fork(), crear un proceso HIJO a partir de un proceso PADRE. a) El siguiente programa utiliza la llamada al sistema fork() para que a partir de un proceso PADRE, se cree un proceso HIJO. De acuerdo al siguiente programa, ambos procesos ejecutan el cdigo que les corresponde y un cdigo comn a ambos a. Mostrar la salida que se muestre en pantalla. b. Generar el rbol de procesos correspondiente, de acuerdo a la salida que se muestre en pantalla.

//********************************************************************** //Nombre del alumno: Nombre ApellidoPaterno ApellidoMaterno //********************************************************************** //Programa: Creacion de un proceso, ESTRUCTURA GENERAL => Nombre de archivo => procesos_1_a.c //EL programa tiene la estructura mas basica para crear un proceso mediante la llamada //al sistema "fork" // //Ambos procesos ejecutan el codigo que les corresponde y TAMBIEN ejecutaran el codigo COMUN a ambos // #include<sys/types.h> //para fork #include<unistd.h> //para getpid y getppid #include<stdio.h> #include<stdlib.h> int main() { int pid; printf("BASH => PID = %d \n", getppid()); if( (pid = fork()) == -1 ) { //Codigo de ERROR, que solamente se ejecutara cuando NO se pueda crear el proceso hijo printf("\nError al crear el proceso HIJO\n"); exit(-1); } else if(pid == 0) { //CODIGO DEL HIJO: Codigo que le pertenece solamente al proceso HIJO, que se acaba de crear printf("Cdigo para ser jecutado por el proceso HIJO\n"); printf("HIJO => PID = %d, PPID = %d \n", getpid(), getppid()); } else {

Universidad Tecnolgica de Mxico Campus Cuitlahuac Sistemas Operativos Distribuidos - Prof.: Mario de la Luz Rojas, sbado 19 de octubre de 2013 //CODIGO DE PADRE:Codigo que le pertenece solamente al proceso PADRE printf("Cdigo para ser jecutado por el proceso PADRE\n"); printf("PADRE => PID = %d, PPID = %d \n", getpid(), getppid()); } //codigo comun: Codigo COMUN que se ejecutara dos veces, una por cada proceso, PADRE e HIJO printf("\n\nCodigo COMUN a ambos procesos\n\n"); return 0; }

b) Modificar el programa del inciso a para hacer que ambos procesos, PADRE e HIJO, solamente ejecuten el cdigo que les corresponde. (el nombre del archivo debe ser procesos_1_b.c). a. Mostrar la salida que se muestre en pantalla. b. Generar el rbol de procesos correspondiente, de acuerdo a la salida que se muestre en pantalla.

c)

Modificar el programa del inciso b para hacer que el proceso PADRE termine su ejecucin antes que el proceso HIJO. (el nombre del archivo debe ser procesos_1_c.c). a. Mostrar la salida que se muestre en pantalla. b. Generar el rbol de procesos correspondiente, de acuerdo a la salida que se muestre en pantalla. c. Quien es el padre del proceso HIJO?

d) Modificar el programa del inciso c para hacer que no importe cuanto se tarde el proceso HIJO en ejecutar el cdigo que le corresponde, siempre el proceso PADRE lo espere. (el nombre del archivo debe ser procesos_1_d.c). a. Mostrar la salida que se muestre en pantalla. b. Generar el rbol de procesos correspondiente, de acuerdo a la salida que se muestre en pantalla. c. Quien es el padre del proceso HIJO?

2.- Creando un proceso HIJO (HIJO 1), y tambin crear un segundo proceso HIJO (HIJO 2) Modificar el programa del inciso d del punto 3 para que despus de que el proceso padre haya creado el proceso HIJO (HIJO 1), nuevamente cree otro proceso HIJO (HIJO 2). Se debe mantener la sincronizacin entre procesos PADRE e HIJOS. (el nombre del archivo debe ser procesos_2_h1h2.c).

3.- Creando, a partir de un proceso PADRE, a un proceso HIJO quien a su vez debe crear a un proceso NIETO Modificar el programa del inciso d del punto 3 para que despus de que el proceso padre haya creado el proceso HIJO, el proceso hijo debe crear a un proceso NIETO. Se debe mantener la sincronizacin entre procesos PADRE, HIJO y NIETO. (el nombre del archivo debe ser procesos_3_h1n1.c).

IMPORTANTE: Al terminar la clase, los archivos creados:


procesos_1_a.c procesos_1_b.c procesos_1_c.c procesos_1_d.c procesos_2_h1h2.c procesos_3_h1n1.c

Deben ser enviados por correo a la siguiente direccin:


Correo: mariodrs72@hotmail.com Con el Asunto: P4_NL_SOD_Nombre_Apellidos Donde NL = Nmero de Lista

También podría gustarte