Beruflich Dokumente
Kultur Dokumente
FACULTAD DE INGENIERA
TACNA PER
2017
1
NDICE GENERAL
Pg.
I. OBJETIVOS...........................................................................................................3
II. FUNDAMENTO TERICO..................................................................................3
III. MATERIAL Y EQUIPO.........................................................................................3
IV. PROCEDIMIENTO Y DESARROLLO.................................................................4
4.1. PARTE 1: Identificacin de procesos hijos..................................................................4
4.2. PARTE 2: Procesos padres e hijos...............................................................................5
4.3. PARTE 3. Funcin fork().............................................................................................6
4.3.1. Ejemplo 03...............................................................................................................6
Ejecucin del programa......................................................................................................6
4.3.2. Ejemplo 04...............................................................................................................6
Ejecucin del programa......................................................................................................7
4.3.3. Ejemplo 05...............................................................................................................7
Ejecucin del programa......................................................................................................7
4.3.4. Ejemplo 06...............................................................................................................8
Ejecucin del programa......................................................................................................8
4.3.5. Ejemplo 07...............................................................................................................8
Ejecucin del programa......................................................................................................9
4.3.6. Ejemplo 08...............................................................................................................9
Ejecucin del programa......................................................................................................9
4.3.7. Ejemplo 09.............................................................................................................10
4.4. PARTE 4. Funcin exec ().........................................................................................10
4.4.1. Ejemplo 10.............................................................................................................10
4.4.2. Ejemplo 11..............................................................................................................11
V. TAREA PROGRAMADA....................................................................................12
5.1. Primer programa procesos ligeros........................................................................12
5.2. Segundo programa -procesos ligeros....................................................................14
VI. CONCLUSIONES................................................................................................17
VII. REFERENCIAS BIBLIOGRFICAS..................................................................18
2
INFORME DE LABORATORIO N09
I. OBJETIVOS
2.1. Proceso
2.4. Multitarea
3
Un computador con Virtual Box instalado
#include<stdio.h>
#include<unistd.h>
void main(void)
{
int pid;
pid = getpid();
printf("El nmero de indentificacin del proceso
es %d\n", pid);
}
4
Ejecucin del programa
Interpretacin:
5
Primero se almacena en la variable pid el nmero de identificacin
c.
Fundamente su respuesta
que lo lanz.
#include<stdio.h>
#include<unistd.h>
void main(void){
int ppid;
ppid = getppid();
printf("EL nmero de identificacin del proceso
padre es: %d\n", ppid);
}
6
Busque el id que obtuvo de salida de su programa en la lista
Por que?
4.3.1. Ejemplo 03
#include<stdio.h>
#include<unistd.h>
void main(void){
fork();
printf("Hola alumnos de sistemas
operativos\n");
}
Interpretacin:
7
4.3.2. Ejemplo 04
#include<stdio.h>
#include<unistd.h>
void main(void){
printf("Demoestracin de la funcin
fork()\n");
fork();
printf("Hola alumnos de sistemas
operativos\n");
}
Interpretacin:
padre.
4.3.3. Ejemplo 05
8
Ejecucin del programa
Interpretacin:
4.3.4. Ejemplo 06
#include<stdio.h>
#include<unistd.h>
void main(void){
fork();
printf("El PID es: %d\n",getpid());
}
Ejecucin del programa
Interpretacin:
hijo que sera el duplicado del padre pero el cual no tendra el mismo
PID ,ya que cada proceso hijo creado est asociado a un identificador
9
4.3.5. Ejemplo 07
#include<stdio.h>
#include<unistd.h>
void main(void){
int pid;
pid = fork();
if(pid > 0){
printf("El PID del proceso padre es:
%d\n", getpid());
}
}
Ejecucin del programa
Interpretacin:
variable pid con una valor mayor a 0 .Si tiene un valor menor a 0
4.3.6. Ejemplo 08
10
Ejecucin del programa
Interpretacin:
4.3.7. Ejemplo 09
Interpretacin:
11
valor de la variable pid debe tomar el valor de 0 y en el segundo
4.4.1. Ejemplo 10
#include<stdio.h>
#include<unistd.h>
void main(void){
printf("Antes de exec mi PID es: %d\n",
getpid());
printf("El id del proceso padre es: %d\n",
getppid());
printf("exec inicia...\n");
execl(" /bin/ls","ls",(char *)0);
printf("Esto no se imprimir\n");
}
Ejecucin del programa
Interpretacin:
4.4.2. Ejemplo 11
12
#include<stdio.h>
#include<unistd.h>
void main(void){
int pid;
pid = fork();
if (pid == 0)
{
printf("exec inicia... \n");
execl(" /bin/ls","ls",(char *)0);
}
else
{
wait(0);
printf("Padre:ls se ha completado en
el hijo\n");
}
}
Interpretacin:
en pantalla.
V. TAREA PROGRAMADA
#include<stdio.h>
#include<pthread.h>
#include<stdlib.h>
#include<unistd.h>
13
void *hilo1(void *arg)
{
int i;
for(i=0; i<10; i++)
{
printf("Mensaje generado por hilo1\n");
}
return (NULL);
}
int main(void)
{
pthread_t mihilo;
int i;
printf("Esperando finalizacion de hilos \n");
if(pthread_create(&mihilo, NULL, hilo1, NULL))
{
printf("Error creando el hilo 1 ");
abort();
}
for(i=0;i<10;i++)
{
printf("Mensaje generado por main\n ");
}
if(pthread_join(mihilo, NULL))
{
printf("Error esperando finalizacion
de hilos ");
abort();
}
printf("Fin ejecucion de hilos\n");
exit(0);
14
Ejecucin del programa
Interpretacin:
Se ejecuta 10 veces el hilo1. Se crea el hilo. se tiene una funcin para cada
tarea que se realiza en un hilo. Se impone que toda funcin que vaya a
15
V.2. Segundo programa -procesos ligeros
#include<stdio.h>
#include<pthread.h>
#include<stdlib.h>
#include<unistd.h>
void *hilo1(void *arg)
{
int i;
for(i=0; i<10; i++)
{
printf("Mensaje generado por hilo1\n");
}
return (NULL);
}
void *hilo2(void *arg)
{
int i;
for(i=0; i<10; i++)
{
printf("Mensaje generado por
hilo2\n");
}
return (NULL);
}
void *hilo3(void *arg)
{
int i;
for(i=0; i<10; i++)
{
printf("Mensaje generado por
hilo3\n");
}
return (NULL);
}
int main(void)
{
pthread_t mihilo_1;
pthread_t mihilo_2;
pthread_t mihilo_3;
if(pthread_create(&mihilo_1, NULL, hilo1, NULL))
{
printf("Error creando el hilo ");
abort();
16
}
if(pthread_create(&mihilo_2, NULL, hilo2,
NULL))
{
printf("Error creando el hilo ");
abort();
}
if(pthread_create(&mihilo_3, NULL, hilo3, NULL))
{
printf("Error creando el hilo ");
abort();
}
printf("Esperando finalizacion de hilos \n");
int i;
for(i=0;i<10;i++)
{
printf("Mensaje generado por main\n ");
sleep(1);
}
if(pthread_join(mihilo_1, NULL))
{
printf("Error esperando finalizacion
HILO 1 ");
abort();
}
if(pthread_join(mihilo_2, NULL))
{
printf("Error esperando finalizacion
HILO 2 ");
abort();
}
if(pthread_join(mihilo_3, NULL))
{
printf("Error esperando finalizacion
HILO 3 ");
abort();
}
17
Ejecucin del programa
Interpretacin:
18
Se impone que toda funcin que vaya a ejecutarse en un hilo debe
VI. CONCLUSIONES
En Linux hay dos funciones para la creacin de procesos: fork() y clone(). Las
dos crean un nuevo proceso a partir del proceso padre, pero de una manera
la llamada al sistema fork, el proceso hijo creado es una copia exacta del padre
(salvo por el PID y la memoria que ocupa). Al proceso hijo se le facilita una
importante destacar que las variables del proceso hijo son una copia de las del
algn momento son hijos, todos menos el proceso init. En el caso de que un
proceso sea creado mediante la shell (ejecutado desde esta), la shell ser el
padre.
19
VII. REFERENCIAS BIBLIOGRFICAS
20