Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UNIX Procesos Slides
UNIX Procesos Slides
PROCESOS UNIX
• Cada proceso sólo puede tener un flujo: el concepto “proceso” engloba todo
• Dos llamadas implicadas en la creación de procesos
• crear proceso
• cargar programa
• La relación de procesos es jerárquica: hijos, padres, abuelos...
• El mecanismo de signals permite que el proceso sea avisado de acontecimientos
• A través del sistema de ficheros, los procesos pueden pasarse datos
PROCESOS UNIX
Creación de procesos
#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);
MEMORIA MEMORIA
PCB
IPC fork(); fork();
id:098 IPC sentencia a;
sentencia a;
sentencia b; sentencia b;
......... .........
PCB xxxx
yyyyy
id:098
PCB fork();
xxxx IPC sentencia a;
yyyyy id:103 sentencia b;
.........
xxxx
yyyyy
Antes del fork() Después del fork()
PROCESOS UNIX
#include <unistd.h>
PROCESOS UNIX
Sincronización padre-hijo
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
void _exit(int status);
PROCESOS EN UNIX
PCB de
proceso del
sistema crear un nuevo proceso (hijo)
PROCESOS EN UNIX
PCB de
proceso del
sistema cambiar el estado del proceso
padre a esperar (bloqueado)
fork
fork
dar el control al proceso hijo
call wait
PROCESOS EN UNIX
PCB de
proceso del
cambiar el estado del proceso sistema
hijo a ejecutando
fork
fork
carga el nuevo programa ejecutable
en memoria
call exec
PROCESOS EN UNIX
PCB de PCB de
proceso del proceso del
sistema cambia el estado del padre a preparado sistema
el padre se despierta
call exit
PROCESOS EN UNIX
pid = fork();
switch(pid) {
EJEMPLOS
#include "error.h"
main()
{
int contador=0,r, status;
char c,s[100];
switch (fork()) {
case -1: error("fork",SISTEMA);
PROCESOS EN UNIX
PROCESOS EN UNIX
wait (&stat)
exit (res)
TODO A CEROS
wait (&stat)
número de excepción