Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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).