Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Practica 04
Practica 04
Gustavo Romero L
opez
Arquitectura y Tecnologa de Computadores
10 de febrero de 2016
Gustavo Romero L
opez
Pr
actica 4: Procesos
1 / 10
Objetivos
Medicion de tiempos.
Comunicacion entre procesos padre/hijo.
Comunicacion mediante memoria compartida (opcional).
Comunicacion mediante paso de mensajes (opcional).
Gustavo Romero L
opez
Pr
actica 4: Procesos
2 / 10
Makefile
https://pccito.ugr.es/~gustavo/as/practicas/04/Makefile
1
2
SRC = $ ( wildcard *. c *. cc )
EXE = $ ( basename $ ( SRC ) )
3
4
5
6
7
8
all :
$ ( EXE )
9
10
11
clean :
$ ( RM ) - rf $ { EXE } *~ core .*
12
13
Gustavo Romero L
opez
Pr
actica 4: Procesos
3 / 10
Gustavo Romero L
opez
Pr
actica 4: Procesos
4 / 10
fork.cc
https://pccito.ugr.es/~gustavo/as/practicas/04/fork.cc
1
2
3
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // fork . cc
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4
5
6
7
8
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
9
10
11
12
13
14
15
16
17
18
19
int main ()
{
switch ( fork () )
{
case -1: std :: cout << " fallo en fork () ! " ; break ;
case 0: std :: cout << " hijo " ;
break ;
default : std :: cout << " padre " ;
break ;
}
std :: cout << " \ t [ " << getpid () << " ] " << std :: endl ;
}
20
21
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
22
Gustavo Romero L
opez
Pr
actica 4: Procesos
5 / 10
Gustavo Romero L
opez
Pr
actica 4: Procesos
6 / 10
Gustavo Romero L
opez
Pr
actica 4: Procesos
7 / 10
Pr
actica 4: Procesos
8 / 10
Busque informaci
on sobre las funciones shmget() y
shmctl() de la cabecera #include <sys/shm.h>.
Escriba un programa que enve un mensaje entre dos procesos
haciendo uso de memoria compartida.
El proceso es mucho mas sencillo combinando el uso de
fork() y mmap() para conseguir crear los dos procesos y
disponer de un area de memoria compartida.
Gustavo Romero L
opez
Pr
actica 4: Procesos
9 / 10
Busque informaci
on sobre las funciones msgctl(), msgget(),
msgsnd() y msgrcv() de la cabecera
#include <sys/msg.h>.
Escriba un programa que enve un mensaje entre dos procesos
haciendo uso de este tipo de paso de mensajes.
Gustavo Romero L
opez
Pr
actica 4: Procesos
10 / 10