tema 4: gestión de procesos

155
Puntos Desarrollados en la Sesión Anterior Comunicación entre Procesos Caso de Estudio: UNIX Resumen y Lecturas Recomendadas Tema 4: Gestión de Procesos SSOO - Curso 2005/06 E. Domínguez C. Villarrubia Departamento de Tecnologías y Sistemas de Información Escuela Superior de Informática Universidad de Castilla - La Mancha Marzo de 2006 E. Domínguez, C. Villarrubia Tema 4

Upload: others

Post on 27-Jun-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Tema 4:Gestión de Procesos

SSOO - Curso 2005/06

E. Domínguez C. Villarrubia

Departamento de Tecnologías y Sistemas de InformaciónEscuela Superior de Informática

Universidad de Castilla - La Mancha

Marzo de 2006

E. Domínguez, C. Villarrubia Tema 4

Page 2: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Índice

1 Comunicación entre Procesos

2 Caso de Estudio: UNIXCreación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

E. Domínguez, C. Villarrubia Tema 4

Page 3: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Tema 4: Gestión de Procesos

Sesión 3:Comunicación entre Procesos.Caso de Estudio UNIX

E. Domínguez, C. Villarrubia Tema 4

Page 4: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Resumen de Contenidos de la Sesión Anterior

En la sesión anterior hemos vistoEsquemas de planificación simplesEsquemas de planificación avanzados

E. Domínguez, C. Villarrubia Tema 4

Page 5: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Índice

1 Comunicación entre Procesos

2 Caso de Estudio: UNIXCreación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

E. Domínguez, C. Villarrubia Tema 4

Page 6: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Comunicación entre Procesos

Procesos concurrentesLos procesos se pueden ejecutar de forma concurrente enel sistemaLos procesos concurrentes pueden serIndependientes: No afectan a otros ni son afectados por

ellosCooperativos: Afectan a otros o son afectados por ellos

E. Domínguez, C. Villarrubia Tema 4

Page 7: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Comunicación entre Procesos

Procesos concurrentesLos procesos se pueden ejecutar de forma concurrente enel sistemaLos procesos concurrentes pueden serIndependientes: No afectan a otros ni son afectados por

ellosCooperativos: Afectan a otros o son afectados por ellos

E. Domínguez, C. Villarrubia Tema 4

Page 8: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Comunicación entre Procesos

Procesos concurrentesLos procesos se pueden ejecutar de forma concurrente enel sistemaLos procesos concurrentes pueden serIndependientes: No afectan a otros ni son afectados por

ellosCooperativos: Afectan a otros o son afectados por ellos

E. Domínguez, C. Villarrubia Tema 4

Page 9: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Comunicación entre Procesos

Procesos concurrentesLos procesos se pueden ejecutar de forma concurrente enel sistemaLos procesos concurrentes pueden serIndependientes: No afectan a otros ni son afectados por

ellosCooperativos: Afectan a otros o son afectados por ellos

E. Domínguez, C. Villarrubia Tema 4

Page 10: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Comunicación entre Procesos (cont.)

Razones para permitir la cooperaciónCompartir información

Por ejemplo, compartir un archivoAceleración de los cálculos

Mediante la división de una tarea en subtareas que seejecutan en paralelo

ModularidadConvirtiendo las funciones en procesos individuales

ComodidadPermitir realizar varias tareas al mismo tiempo

E. Domínguez, C. Villarrubia Tema 4

Page 11: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Comunicación entre Procesos (cont.)

Razones para permitir la cooperaciónCompartir información

Por ejemplo, compartir un archivoAceleración de los cálculos

Mediante la división de una tarea en subtareas que seejecutan en paralelo

ModularidadConvirtiendo las funciones en procesos individuales

ComodidadPermitir realizar varias tareas al mismo tiempo

E. Domínguez, C. Villarrubia Tema 4

Page 12: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Comunicación entre Procesos (cont.)

Razones para permitir la cooperaciónCompartir información

Por ejemplo, compartir un archivoAceleración de los cálculos

Mediante la división de una tarea en subtareas que seejecutan en paralelo

ModularidadConvirtiendo las funciones en procesos individuales

ComodidadPermitir realizar varias tareas al mismo tiempo

E. Domínguez, C. Villarrubia Tema 4

Page 13: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Comunicación entre Procesos (cont.)

Razones para permitir la cooperaciónCompartir información

Por ejemplo, compartir un archivoAceleración de los cálculos

Mediante la división de una tarea en subtareas que seejecutan en paralelo

ModularidadConvirtiendo las funciones en procesos individuales

ComodidadPermitir realizar varias tareas al mismo tiempo

E. Domínguez, C. Villarrubia Tema 4

Page 14: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Comunicación entre Procesos (cont.)

RequerimientosMecanismos que permitan a los procesos comunicarseentre sí

Variables compartidas: No es posible si se dispone deespacios de memoria totalmente separadosTransferencia de mensajesArchivos compartidos: Por sí sola no es una solución válida

Mecanismos que permitan a los procesos sincronizar susacciones

Mantenimiento de la consistencia de la informaciónasegurando la ejecución ordenada de las instrucciones delos procesos

E. Domínguez, C. Villarrubia Tema 4

Page 15: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Comunicación entre Procesos (cont.)

RequerimientosMecanismos que permitan a los procesos comunicarseentre sí

Variables compartidas: No es posible si se dispone deespacios de memoria totalmente separadosTransferencia de mensajesArchivos compartidos: Por sí sola no es una solución válida

Mecanismos que permitan a los procesos sincronizar susacciones

Mantenimiento de la consistencia de la informaciónasegurando la ejecución ordenada de las instrucciones delos procesos

E. Domínguez, C. Villarrubia Tema 4

Page 16: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Comunicación entre Procesos (cont.)

RequerimientosMecanismos que permitan a los procesos comunicarseentre sí

Variables compartidas: No es posible si se dispone deespacios de memoria totalmente separadosTransferencia de mensajesArchivos compartidos: Por sí sola no es una solución válida

Mecanismos que permitan a los procesos sincronizar susacciones

Mantenimiento de la consistencia de la informaciónasegurando la ejecución ordenada de las instrucciones delos procesos

E. Domínguez, C. Villarrubia Tema 4

Page 17: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Comunicación entre Procesos (cont.)

RequerimientosMecanismos que permitan a los procesos comunicarseentre sí

Variables compartidas: No es posible si se dispone deespacios de memoria totalmente separadosTransferencia de mensajesArchivos compartidos: Por sí sola no es una solución válida

Mecanismos que permitan a los procesos sincronizar susacciones

Mantenimiento de la consistencia de la informaciónasegurando la ejecución ordenada de las instrucciones delos procesos

E. Domínguez, C. Villarrubia Tema 4

Page 18: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Comunicación entre Procesos (cont.)

RequerimientosMecanismos que permitan a los procesos comunicarseentre sí

Variables compartidas: No es posible si se dispone deespacios de memoria totalmente separadosTransferencia de mensajesArchivos compartidos: Por sí sola no es una solución válida

Mecanismos que permitan a los procesos sincronizar susacciones

Mantenimiento de la consistencia de la informaciónasegurando la ejecución ordenada de las instrucciones delos procesos

E. Domínguez, C. Villarrubia Tema 4

Page 19: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Comunicación entre Procesos (cont.)

RequerimientosMecanismos que permitan a los procesos comunicarseentre sí

Variables compartidas: No es posible si se dispone deespacios de memoria totalmente separadosTransferencia de mensajesArchivos compartidos: Por sí sola no es una solución válida

Mecanismos que permitan a los procesos sincronizar susacciones

Mantenimiento de la consistencia de la informaciónasegurando la ejecución ordenada de las instrucciones delos procesos

E. Domínguez, C. Villarrubia Tema 4

Page 20: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Índice

1 Comunicación entre Procesos

2 Caso de Estudio: UNIXCreación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

E. Domínguez, C. Villarrubia Tema 4

Page 21: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Identificadores de Proceso

DescripciónCada proceso tiene un identificador de proceso (pid)Salvo el primer proceso, denominado init (pid = 1),cualquier proceso es creado por otro (proceso padre). Setiene así un sistema jerárquico de procesos

E. Domínguez, C. Villarrubia Tema 4

Page 22: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Identificadores de Proceso

DescripciónCada proceso tiene un identificador de proceso (pid)Salvo el primer proceso, denominado init (pid = 1),cualquier proceso es creado por otro (proceso padre). Setiene así un sistema jerárquico de procesos

E. Domínguez, C. Villarrubia Tema 4

Page 23: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Descriptores estándares de E/S

DescripciónLos procesos esperan normalmente

Obtener datos a través del descriptor de archivo 0 (entradaestándar)Enviar datos a través del descriptor de archivo 1 (salidaestándar)Notificar errores a través del descriptor de archivo 2 (salidade error estándar)

Típicamente estos descriptores están asociados alterminal

E. Domínguez, C. Villarrubia Tema 4

Page 24: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Descriptores estándares de E/S

DescripciónLos procesos esperan normalmente

Obtener datos a través del descriptor de archivo 0 (entradaestándar)Enviar datos a través del descriptor de archivo 1 (salidaestándar)Notificar errores a través del descriptor de archivo 2 (salidade error estándar)

Típicamente estos descriptores están asociados alterminal

E. Domínguez, C. Villarrubia Tema 4

Page 25: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Descriptores estándares de E/S

DescripciónLos procesos esperan normalmente

Obtener datos a través del descriptor de archivo 0 (entradaestándar)Enviar datos a través del descriptor de archivo 1 (salidaestándar)Notificar errores a través del descriptor de archivo 2 (salidade error estándar)

Típicamente estos descriptores están asociados alterminal

E. Domínguez, C. Villarrubia Tema 4

Page 26: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Descriptores estándares de E/S

DescripciónLos procesos esperan normalmente

Obtener datos a través del descriptor de archivo 0 (entradaestándar)Enviar datos a través del descriptor de archivo 1 (salidaestándar)Notificar errores a través del descriptor de archivo 2 (salidade error estándar)

Típicamente estos descriptores están asociados alterminal

E. Domínguez, C. Villarrubia Tema 4

Page 27: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Descriptores estándares de E/S

DescripciónLos procesos esperan normalmente

Obtener datos a través del descriptor de archivo 0 (entradaestándar)Enviar datos a través del descriptor de archivo 1 (salidaestándar)Notificar errores a través del descriptor de archivo 2 (salidade error estándar)

Típicamente estos descriptores están asociados alterminal

E. Domínguez, C. Villarrubia Tema 4

Page 28: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Índice

1 Comunicación entre Procesos

2 Caso de Estudio: UNIXCreación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

E. Domínguez, C. Villarrubia Tema 4

Page 29: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva fork

1 p id_ t f o r k ( void ) ;

Objeto: Crear un nuevo proceso que será hijo del querealiza la llamadaEn caso de éxito se devuelve al proceso padre elidentificador de proceso del hijo. Al hijo se le devuelve 0Ambos procesos se ejecutan concurrentemente a partir dela instrucción siguiente a la llamadaEn caso de error se devuelve -1 al proceso que hizo lallamada (el proceso hijo no se crea)

E. Domínguez, C. Villarrubia Tema 4

Page 30: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva fork

1 p id_ t f o r k ( void ) ;

Objeto: Crear un nuevo proceso que será hijo del querealiza la llamadaEn caso de éxito se devuelve al proceso padre elidentificador de proceso del hijo. Al hijo se le devuelve 0Ambos procesos se ejecutan concurrentemente a partir dela instrucción siguiente a la llamadaEn caso de error se devuelve -1 al proceso que hizo lallamada (el proceso hijo no se crea)

E. Domínguez, C. Villarrubia Tema 4

Page 31: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva fork

1 p id_ t f o r k ( void ) ;

Objeto: Crear un nuevo proceso que será hijo del querealiza la llamadaEn caso de éxito se devuelve al proceso padre elidentificador de proceso del hijo. Al hijo se le devuelve 0Ambos procesos se ejecutan concurrentemente a partir dela instrucción siguiente a la llamadaEn caso de error se devuelve -1 al proceso que hizo lallamada (el proceso hijo no se crea)

E. Domínguez, C. Villarrubia Tema 4

Page 32: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva fork

1 p id_ t f o r k ( void ) ;

Objeto: Crear un nuevo proceso que será hijo del querealiza la llamadaEn caso de éxito se devuelve al proceso padre elidentificador de proceso del hijo. Al hijo se le devuelve 0Ambos procesos se ejecutan concurrentemente a partir dela instrucción siguiente a la llamadaEn caso de error se devuelve -1 al proceso que hizo lallamada (el proceso hijo no se crea)

E. Domínguez, C. Villarrubia Tema 4

Page 33: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva fork

1 p id_ t f o r k ( void ) ;

Objeto: Crear un nuevo proceso que será hijo del querealiza la llamadaEn caso de éxito se devuelve al proceso padre elidentificador de proceso del hijo. Al hijo se le devuelve 0Ambos procesos se ejecutan concurrentemente a partir dela instrucción siguiente a la llamadaEn caso de error se devuelve -1 al proceso que hizo lallamada (el proceso hijo no se crea)

E. Domínguez, C. Villarrubia Tema 4

Page 34: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Espacios de Direcciones

Cuando se crea un nuevo procesoEl espacio de direcciones del hijo es una copia del espaciode direcciones del padre (zonas de código, datos y pila)El hijo hereda todos los descriptores de archivo abiertosen el padreEl hijo hereda las variables de entorno definidas en elpadre

E. Domínguez, C. Villarrubia Tema 4

Page 35: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Espacios de Direcciones

Cuando se crea un nuevo procesoEl espacio de direcciones del hijo es una copia del espaciode direcciones del padre (zonas de código, datos y pila)El hijo hereda todos los descriptores de archivo abiertosen el padreEl hijo hereda las variables de entorno definidas en elpadre

E. Domínguez, C. Villarrubia Tema 4

Page 36: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Espacios de Direcciones

Cuando se crea un nuevo procesoEl espacio de direcciones del hijo es una copia del espaciode direcciones del padre (zonas de código, datos y pila)El hijo hereda todos los descriptores de archivo abiertosen el padreEl hijo hereda las variables de entorno definidas en elpadre

E. Domínguez, C. Villarrubia Tema 4

Page 37: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Índice

1 Comunicación entre Procesos

2 Caso de Estudio: UNIXCreación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

E. Domínguez, C. Villarrubia Tema 4

Page 38: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva execve

1 i n t execve ( const char ∗ f i lename , char ∗const argv [ ] ,char ∗const envp [ ] ) ;

Objeto: Ejecutar un nuevo programa sobre el espacio dedirecciones de un procesofilename: Un puntero a una cadena de caracteres quecontiene el nombre del archivo donde reside el programaque debe ejecutarseargv: Un puntero a una matriz de punteros a cadenas conlos argumentos de la línea de órdenesenvp: Un puntero a una matriz de punteros a cadenas conlas definiciones de las variables de entorno que se quieranpasar al programa

E. Domínguez, C. Villarrubia Tema 4

Page 39: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva execve

i n t execve ( const char ∗ f i lename , char ∗const argv [ ] ,2 char ∗const envp [ ] ) ;

Objeto: Ejecutar un nuevo programa sobre el espacio dedirecciones de un procesofilename: Un puntero a una cadena de caracteres quecontiene el nombre del archivo donde reside el programaque debe ejecutarseargv: Un puntero a una matriz de punteros a cadenas conlos argumentos de la línea de órdenesenvp: Un puntero a una matriz de punteros a cadenas conlas definiciones de las variables de entorno que se quieranpasar al programa

E. Domínguez, C. Villarrubia Tema 4

Page 40: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva execve

i n t execve ( const char ∗ f i lename , char ∗const argv [ ] ,2 char ∗const envp [ ] ) ;

Objeto: Ejecutar un nuevo programa sobre el espacio dedirecciones de un procesofilename: Un puntero a una cadena de caracteres quecontiene el nombre del archivo donde reside el programaque debe ejecutarseargv: Un puntero a una matriz de punteros a cadenas conlos argumentos de la línea de órdenesenvp: Un puntero a una matriz de punteros a cadenas conlas definiciones de las variables de entorno que se quieranpasar al programa

E. Domínguez, C. Villarrubia Tema 4

Page 41: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva execve

i n t execve ( const char ∗ f i lename , char ∗const argv [ ] ,2 char ∗const envp [ ] ) ;

Objeto: Ejecutar un nuevo programa sobre el espacio dedirecciones de un procesofilename: Un puntero a una cadena de caracteres quecontiene el nombre del archivo donde reside el programaque debe ejecutarseargv: Un puntero a una matriz de punteros a cadenas conlos argumentos de la línea de órdenesenvp: Un puntero a una matriz de punteros a cadenas conlas definiciones de las variables de entorno que se quieranpasar al programa

E. Domínguez, C. Villarrubia Tema 4

Page 42: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva execve

i n t execve ( const char ∗ f i lename , char ∗const argv [ ] ,2 char ∗const envp [ ] ) ;

Objeto: Ejecutar un nuevo programa sobre el espacio dedirecciones de un procesofilename: Un puntero a una cadena de caracteres quecontiene el nombre del archivo donde reside el programaque debe ejecutarseargv: Un puntero a una matriz de punteros a cadenas conlos argumentos de la línea de órdenesenvp: Un puntero a una matriz de punteros a cadenas conlas definiciones de las variables de entorno que se quieranpasar al programa

E. Domínguez, C. Villarrubia Tema 4

Page 43: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva execve (cont.)

i n t execve ( const char ∗ f i lename , char ∗const argv [ ] ,2 char ∗const envp [ ] ) ;

Tanto argv como envp deben tener como último elementoun puntero nuloEn caso de éxito la llamada no retornaEn caso de error se devuelve -1 al proceso que hizo lallamada

E. Domínguez, C. Villarrubia Tema 4

Page 44: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva execve (cont.)

i n t execve ( const char ∗ f i lename , char ∗const argv [ ] ,2 char ∗const envp [ ] ) ;

Tanto argv como envp deben tener como último elementoun puntero nuloEn caso de éxito la llamada no retornaEn caso de error se devuelve -1 al proceso que hizo lallamada

E. Domínguez, C. Villarrubia Tema 4

Page 45: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva execve (cont.)

i n t execve ( const char ∗ f i lename , char ∗const argv [ ] ,2 char ∗const envp [ ] ) ;

Tanto argv como envp deben tener como último elementoun puntero nuloEn caso de éxito la llamada no retornaEn caso de error se devuelve -1 al proceso que hizo lallamada

E. Domínguez, C. Villarrubia Tema 4

Page 46: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva execve (cont.)

i n t execve ( const char ∗ f i lename , char ∗const argv [ ] ,2 char ∗const envp [ ] ) ;

Tanto argv como envp deben tener como último elementoun puntero nuloEn caso de éxito la llamada no retornaEn caso de error se devuelve -1 al proceso que hizo lallamada

E. Domínguez, C. Villarrubia Tema 4

Page 47: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Funciones de biblioteca

Llamadas simplificadasEn UNIX hay una serie de funciones de biblioteca quepermiten llamar a execve de una forma simplificada

execlexecleexeclpexecvexecvp

E. Domínguez, C. Villarrubia Tema 4

Page 48: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execl

i n t execl ( const char ∗path , const char ∗arg , . . . ) ;

path: Tiene el mismo significado que el primer parámetroen execvearg, . . . : Corresponde a la serie de argumentos de la líneade órdenes. El último argumento debe ser un puntero nuloEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 49: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execl

1 i n t execl ( const char ∗path , const char ∗arg , . . . ) ;

path: Tiene el mismo significado que el primer parámetroen execvearg, . . . : Corresponde a la serie de argumentos de la líneade órdenes. El último argumento debe ser un puntero nuloEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 50: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execl

1 i n t execl ( const char ∗path , const char ∗arg , . . . ) ;

path: Tiene el mismo significado que el primer parámetroen execvearg, . . . : Corresponde a la serie de argumentos de la líneade órdenes. El último argumento debe ser un puntero nuloEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 51: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execl

1 i n t execl ( const char ∗path , const char ∗arg , . . . ) ;

path: Tiene el mismo significado que el primer parámetroen execvearg, . . . : Corresponde a la serie de argumentos de la líneade órdenes. El último argumento debe ser un puntero nuloEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 52: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execlp

1 i n t execlp ( const char ∗path , const char ∗arg , . . . ) ;

path: Tiene el mismo significado que el primer parámetroen execveSi path no contiene el carácter / se busca el nombre en losdirectorios citados en la variable de entorno PATH (pororden)arg, . . . : Corresponde a la serie de argumentos de la líneade órdenes. El último argumento debe ser un puntero nuloEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 53: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execlp

1 i n t execlp ( const char ∗path , const char ∗arg , . . . ) ;

path: Tiene el mismo significado que el primer parámetroen execveSi path no contiene el carácter / se busca el nombre en losdirectorios citados en la variable de entorno PATH (pororden)arg, . . . : Corresponde a la serie de argumentos de la líneade órdenes. El último argumento debe ser un puntero nuloEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 54: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execlp

1 i n t execlp ( const char ∗path , const char ∗arg , . . . ) ;

path: Tiene el mismo significado que el primer parámetroen execveSi path no contiene el carácter / se busca el nombre en losdirectorios citados en la variable de entorno PATH (pororden)arg, . . . : Corresponde a la serie de argumentos de la líneade órdenes. El último argumento debe ser un puntero nuloEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 55: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execlp

1 i n t execlp ( const char ∗path , const char ∗arg , . . . ) ;

path: Tiene el mismo significado que el primer parámetroen execveSi path no contiene el carácter / se busca el nombre en losdirectorios citados en la variable de entorno PATH (pororden)arg, . . . : Corresponde a la serie de argumentos de la líneade órdenes. El último argumento debe ser un puntero nuloEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 56: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execlp

1 i n t execlp ( const char ∗path , const char ∗arg , . . . ) ;

path: Tiene el mismo significado que el primer parámetroen execveSi path no contiene el carácter / se busca el nombre en losdirectorios citados en la variable de entorno PATH (pororden)arg, . . . : Corresponde a la serie de argumentos de la líneade órdenes. El último argumento debe ser un puntero nuloEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 57: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execle

1 i n t execle ( const char ∗path , const char ∗arg , . . . ,char ∗const envp [ ] ) ;

path: Tiene el mismo significado que el primer parámetroen execvearg, . . . : Corresponde a la serie de argumentos de la líneade órdenes. El último argumento debe ser un puntero nuloenvp: Tiene el mismo significado que el tercer parámetroen execveEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 58: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execle

i n t execle ( const char ∗path , const char ∗arg , . . . ,2 char ∗const envp [ ] ) ;

path: Tiene el mismo significado que el primer parámetroen execvearg, . . . : Corresponde a la serie de argumentos de la líneade órdenes. El último argumento debe ser un puntero nuloenvp: Tiene el mismo significado que el tercer parámetroen execveEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 59: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execle

i n t execle ( const char ∗path , const char ∗arg , . . . ,2 char ∗const envp [ ] ) ;

path: Tiene el mismo significado que el primer parámetroen execvearg, . . . : Corresponde a la serie de argumentos de la líneade órdenes. El último argumento debe ser un puntero nuloenvp: Tiene el mismo significado que el tercer parámetroen execveEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 60: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execle

i n t execle ( const char ∗path , const char ∗arg , . . . ,2 char ∗const envp [ ] ) ;

path: Tiene el mismo significado que el primer parámetroen execvearg, . . . : Corresponde a la serie de argumentos de la líneade órdenes. El último argumento debe ser un puntero nuloenvp: Tiene el mismo significado que el tercer parámetroen execveEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 61: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execv

i n t execv ( const char ∗path , char ∗const argv [ ] ) ;

path: Tiene el mismo significado que el primer parámetroen execveargv: Tiene el mismo significado que el segundoparámetro en execveEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 62: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execv

1 i n t execv ( const char ∗path , char ∗const argv [ ] ) ;

path: Tiene el mismo significado que el primer parámetroen execveargv: Tiene el mismo significado que el segundoparámetro en execveEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 63: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execv

1 i n t execv ( const char ∗path , char ∗const argv [ ] ) ;

path: Tiene el mismo significado que el primer parámetroen execveargv: Tiene el mismo significado que el segundoparámetro en execveEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 64: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execv

1 i n t execv ( const char ∗path , char ∗const argv [ ] ) ;

path: Tiene el mismo significado que el primer parámetroen execveargv: Tiene el mismo significado que el segundoparámetro en execveEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 65: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execvp

1 i n t execvp ( const char ∗path , char ∗const argv [ ] ) ;

path: Tiene el mismo significado que el primer parámetroen execveSi path no contiene el carácter / se busca el nombre en losdirectorios citados en la variable de entorno PATH (pororden)argv: Tiene el mismo significado que el segundoparámetro en execveEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 66: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execvp

1 i n t execvp ( const char ∗path , char ∗const argv [ ] ) ;

path: Tiene el mismo significado que el primer parámetroen execveSi path no contiene el carácter / se busca el nombre en losdirectorios citados en la variable de entorno PATH (pororden)argv: Tiene el mismo significado que el segundoparámetro en execveEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 67: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execvp

1 i n t execvp ( const char ∗path , char ∗const argv [ ] ) ;

path: Tiene el mismo significado que el primer parámetroen execveSi path no contiene el carácter / se busca el nombre en losdirectorios citados en la variable de entorno PATH (pororden)argv: Tiene el mismo significado que el segundoparámetro en execveEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 68: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execvp

1 i n t execvp ( const char ∗path , char ∗const argv [ ] ) ;

path: Tiene el mismo significado que el primer parámetroen execveSi path no contiene el carácter / se busca el nombre en losdirectorios citados en la variable de entorno PATH (pororden)argv: Tiene el mismo significado que el segundoparámetro en execveEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 69: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Función de Biblioteca execvp

1 i n t execvp ( const char ∗path , char ∗const argv [ ] ) ;

path: Tiene el mismo significado que el primer parámetroen execveSi path no contiene el carácter / se busca el nombre en losdirectorios citados en la variable de entorno PATH (pororden)argv: Tiene el mismo significado que el segundoparámetro en execveEl valor devuelto tiene el mismo significado que en execve

E. Domínguez, C. Villarrubia Tema 4

Page 70: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Funcionamiento Típico de un Shell

Esquema de funcionamiento de un shell

E. Domínguez, C. Villarrubia Tema 4

Page 71: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Índice

1 Comunicación entre Procesos

2 Caso de Estudio: UNIXCreación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

E. Domínguez, C. Villarrubia Tema 4

Page 72: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva _exit

1 void _ e x i t ( i n t s ta tus ) ;

Objeto: Terminar la ejecución de un procesostatus: Un entero que será pasado al proceso padre paraque pueda recuperarlo mediante alguna primitiva de lafamilia waitLa primitiva no retorna

E. Domínguez, C. Villarrubia Tema 4

Page 73: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva _exit

1 void _ e x i t ( i n t s ta tus ) ;

Objeto: Terminar la ejecución de un procesostatus: Un entero que será pasado al proceso padre paraque pueda recuperarlo mediante alguna primitiva de lafamilia waitLa primitiva no retorna

E. Domínguez, C. Villarrubia Tema 4

Page 74: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva _exit

1 void _ e x i t ( i n t s ta tus ) ;

Objeto: Terminar la ejecución de un procesostatus: Un entero que será pasado al proceso padre paraque pueda recuperarlo mediante alguna primitiva de lafamilia waitLa primitiva no retorna

E. Domínguez, C. Villarrubia Tema 4

Page 75: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva _exit

1 void _ e x i t ( i n t s ta tus ) ;

Objeto: Terminar la ejecución de un procesostatus: Un entero que será pasado al proceso padre paraque pueda recuperarlo mediante alguna primitiva de lafamilia waitLa primitiva no retorna

E. Domínguez, C. Villarrubia Tema 4

Page 76: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva wait

1 p id_ t wa i t ( i n t ∗ s ta tus ) ;

Objeto: Suspender la ejecución del proceso en cursohasta que cualquier hijo termina o una señal es recibida.Si el hijo ya había terminado cuando se hace la llamada,ésta retorna inmediatamente y los recursos usados por elhijo son liberadosstatus: Un puntero a un entero donde se recibirá el estadode terminación del hijo. Si el puntero es nulo al llamar, nose devuelve estadoEn caso de éxito se devuelve el pid del proceso hijo o ceroen algún caso especial (ver bibliografía)Se devuelve -1 en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 77: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva wait

1 p id_ t wa i t ( i n t ∗ s ta tus ) ;

Objeto: Suspender la ejecución del proceso en cursohasta que cualquier hijo termina o una señal es recibida.Si el hijo ya había terminado cuando se hace la llamada,ésta retorna inmediatamente y los recursos usados por elhijo son liberadosstatus: Un puntero a un entero donde se recibirá el estadode terminación del hijo. Si el puntero es nulo al llamar, nose devuelve estadoEn caso de éxito se devuelve el pid del proceso hijo o ceroen algún caso especial (ver bibliografía)Se devuelve -1 en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 78: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva wait

1 p id_ t wa i t ( i n t ∗ s ta tus ) ;

Objeto: Suspender la ejecución del proceso en cursohasta que cualquier hijo termina o una señal es recibida.Si el hijo ya había terminado cuando se hace la llamada,ésta retorna inmediatamente y los recursos usados por elhijo son liberadosstatus: Un puntero a un entero donde se recibirá el estadode terminación del hijo. Si el puntero es nulo al llamar, nose devuelve estadoEn caso de éxito se devuelve el pid del proceso hijo o ceroen algún caso especial (ver bibliografía)Se devuelve -1 en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 79: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva wait

1 p id_ t wa i t ( i n t ∗ s ta tus ) ;

Objeto: Suspender la ejecución del proceso en cursohasta que cualquier hijo termina o una señal es recibida.Si el hijo ya había terminado cuando se hace la llamada,ésta retorna inmediatamente y los recursos usados por elhijo son liberadosstatus: Un puntero a un entero donde se recibirá el estadode terminación del hijo. Si el puntero es nulo al llamar, nose devuelve estadoEn caso de éxito se devuelve el pid del proceso hijo o ceroen algún caso especial (ver bibliografía)Se devuelve -1 en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 80: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva wait

1 p id_ t wa i t ( i n t ∗ s ta tus ) ;

Objeto: Suspender la ejecución del proceso en cursohasta que cualquier hijo termina o una señal es recibida.Si el hijo ya había terminado cuando se hace la llamada,ésta retorna inmediatamente y los recursos usados por elhijo son liberadosstatus: Un puntero a un entero donde se recibirá el estadode terminación del hijo. Si el puntero es nulo al llamar, nose devuelve estadoEn caso de éxito se devuelve el pid del proceso hijo o ceroen algún caso especial (ver bibliografía)Se devuelve -1 en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 81: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva waitpid

1 p id_ t wa i t p i d ( p i d_ t pid , i n t ∗ s ta tus , i n t opt ions ) ;

Objeto: Suspender la ejecución del proceso en cursohasta que algún hijo termina o una señal es recibida. Si elhijo ya había terminado cuando se hace la llamada, éstaretorna inmediatamente y los recursos usados por el hijoson liberadospid: Identificador de proceso del hijo cuya terminación seespera (para los detalles ver bibliografía)status: Un puntero a un entero donde se recibirá el estadode terminación del hijo. Si el puntero es nulo al llamar, nose devuelve estado

E. Domínguez, C. Villarrubia Tema 4

Page 82: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva waitpid

1 p id_ t wa i t p i d ( p i d_ t pid , i n t ∗ s ta tus , i n t opt ions ) ;

Objeto: Suspender la ejecución del proceso en cursohasta que algún hijo termina o una señal es recibida. Si elhijo ya había terminado cuando se hace la llamada, éstaretorna inmediatamente y los recursos usados por el hijoson liberadospid: Identificador de proceso del hijo cuya terminación seespera (para los detalles ver bibliografía)status: Un puntero a un entero donde se recibirá el estadode terminación del hijo. Si el puntero es nulo al llamar, nose devuelve estado

E. Domínguez, C. Villarrubia Tema 4

Page 83: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva waitpid

1 p id_ t wa i t p i d ( p i d_ t pid , i n t ∗ s ta tus , i n t opt ions ) ;

Objeto: Suspender la ejecución del proceso en cursohasta que algún hijo termina o una señal es recibida. Si elhijo ya había terminado cuando se hace la llamada, éstaretorna inmediatamente y los recursos usados por el hijoson liberadospid: Identificador de proceso del hijo cuya terminación seespera (para los detalles ver bibliografía)status: Un puntero a un entero donde se recibirá el estadode terminación del hijo. Si el puntero es nulo al llamar, nose devuelve estado

E. Domínguez, C. Villarrubia Tema 4

Page 84: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva waitpid

1 p id_ t wa i t p i d ( p i d_ t pid , i n t ∗ s ta tus , i n t opt ions ) ;

Objeto: Suspender la ejecución del proceso en cursohasta que algún hijo termina o una señal es recibida. Si elhijo ya había terminado cuando se hace la llamada, éstaretorna inmediatamente y los recursos usados por el hijoson liberadospid: Identificador de proceso del hijo cuya terminación seespera (para los detalles ver bibliografía)status: Un puntero a un entero donde se recibirá el estadode terminación del hijo. Si el puntero es nulo al llamar, nose devuelve estado

E. Domínguez, C. Villarrubia Tema 4

Page 85: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva waitpid (cont.)

1 p id_ t wa i t p i d ( p i d_ t pid , i n t ∗ s ta tus , i n t opt ions ) ;

options: Máscara de opciones de terminación de los hijos(ver bibliografía)En caso de éxito se devuelve el pid del proceso hijo o ceroen algún caso especial (ver bibliografía)Se devuelve -1 en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 86: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva waitpid (cont.)

1 p id_ t wa i t p i d ( p i d_ t pid , i n t ∗ s ta tus , i n t opt ions ) ;

options: Máscara de opciones de terminación de los hijos(ver bibliografía)En caso de éxito se devuelve el pid del proceso hijo o ceroen algún caso especial (ver bibliografía)Se devuelve -1 en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 87: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva waitpid (cont.)

1 p id_ t wa i t p i d ( p i d_ t pid , i n t ∗ s ta tus , i n t opt ions ) ;

options: Máscara de opciones de terminación de los hijos(ver bibliografía)En caso de éxito se devuelve el pid del proceso hijo o ceroen algún caso especial (ver bibliografía)Se devuelve -1 en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 88: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva waitpid (cont.)

1 p id_ t wa i t p i d ( p i d_ t pid , i n t ∗ s ta tus , i n t opt ions ) ;

options: Máscara de opciones de terminación de los hijos(ver bibliografía)En caso de éxito se devuelve el pid del proceso hijo o ceroen algún caso especial (ver bibliografía)Se devuelve -1 en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 89: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Adopción de Procesos

Cuando un proceso padre terminaEl sistema operativo hace que todos sus hijos sean”adoptados” por el proceso init (pid = 1)De esa forma se mantiene la estructura de árbol en elconjunto de procesos

E. Domínguez, C. Villarrubia Tema 4

Page 90: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Adopción de Procesos

Cuando un proceso padre terminaEl sistema operativo hace que todos sus hijos sean”adoptados” por el proceso init (pid = 1)De esa forma se mantiene la estructura de árbol en elconjunto de procesos

E. Domínguez, C. Villarrubia Tema 4

Page 91: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva getpid

1 p id_ t ge tp id ( void ) ;

Objeto: Obtener el pid del proceso en cursoSe devuelve el pid del proceso en curso

E. Domínguez, C. Villarrubia Tema 4

Page 92: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva getpid

1 p id_ t ge tp id ( void ) ;

Objeto: Obtener el pid del proceso en cursoSe devuelve el pid del proceso en curso

E. Domínguez, C. Villarrubia Tema 4

Page 93: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva getpid

1 p id_ t ge tp id ( void ) ;

Objeto: Obtener el pid del proceso en cursoSe devuelve el pid del proceso en curso

E. Domínguez, C. Villarrubia Tema 4

Page 94: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva getppid

1 p id_ t getpp id ( void ) ;

Objeto: Obtener el pid del proceso padre del actualSe devuelve el pid del proceso padre del actual

E. Domínguez, C. Villarrubia Tema 4

Page 95: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva getppid

1 p id_ t getpp id ( void ) ;

Objeto: Obtener el pid del proceso padre del actualSe devuelve el pid del proceso padre del actual

E. Domínguez, C. Villarrubia Tema 4

Page 96: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva getppid

1 p id_ t getpp id ( void ) ;

Objeto: Obtener el pid del proceso padre del actualSe devuelve el pid del proceso padre del actual

E. Domínguez, C. Villarrubia Tema 4

Page 97: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Ejemplo: minishell

1 /∗ ∗∗∗∗∗∗∗∗∗∗ ARCHIVO minish . c ∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ /# inc lude < s t d i o . h>

3 # inc lude < s t r i n g . h># inc lude <un is td . h>

5 # inc lude <sys / types . h># inc lude <sys / wa i t . h>

7

# def ine MAXCOMANDO 5129 # def ine CEXIT "exit"

# def ine PROMPT "minish> "

E. Domínguez, C. Villarrubia Tema 4

Page 98: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Ejemplo: minishell (cont.)

i n t main ( ) {2 char comando [MAXCOMANDO + 1 ] ;

4 while ( 1 ) {/∗ Lectura de l comando ∗ /

6 p r i n t f ("%s" , PROMPT) ;gets ( comando ) ;

8 i f ( s t r l e n ( comando ) == 0) continue ;i f ( strcmp ( comando , CEXIT ) == 0) break ;

E. Domínguez, C. Villarrubia Tema 4

Page 99: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Ejemplo: minishell (cont.)

1 /∗ Ejecucion de l comando ∗ /switch ( f o r k ( ) ) {

3 case −1:/∗ Er ro r ∗ /

5 f p r i n t f ( s tde r r , "No se puede crear el \proceso\n" ) ;

7 break ;case 0:

9 /∗ Proceso h i j o ∗ /execlp ( comando , comando , NULL ) ;

11 /∗ Lo s i gu i e n te so lo se e jecu ta s i execlpf a l l a ∗ /

13 f p r i n t f ( s tde r r , "Error al ejecutar el \comando\n" ) ;

15 return 1;

E. Domínguez, C. Villarrubia Tema 4

Page 100: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Ejemplo: minishell (cont.)

1 defaul t :/∗ Proceso padre ∗ /

3 wai t (NULL ) ;break ;

5 }}

7 return 0;}

E. Domínguez, C. Villarrubia Tema 4

Page 101: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Índice

1 Comunicación entre Procesos

2 Caso de Estudio: UNIXCreación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

E. Domínguez, C. Villarrubia Tema 4

Page 102: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Comunicación entre Procesos

MecanismosUNIX usa dos mecanismos de comunicación específicosdel sistema: las señales y las tuberías (pipes)

El mecanismo de señales no permite el intercambio dedatos, y su uso no es portable entre los distintos sistemasUNIXLa tuberías permiten el intercambio de datos entreprocesos y su uso es portable entre distintos sistemasUNIX

Son de uso común en las órdenes del shell

who | sort

UNIX dispone de mecanismos de comunicación entreprocesos (IPC) más generales, definidos por POSIX, perono serán estudiados aquí

E. Domínguez, C. Villarrubia Tema 4

Page 103: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Comunicación entre Procesos

MecanismosUNIX usa dos mecanismos de comunicación específicosdel sistema: las señales y las tuberías (pipes)

El mecanismo de señales no permite el intercambio dedatos, y su uso no es portable entre los distintos sistemasUNIXLa tuberías permiten el intercambio de datos entreprocesos y su uso es portable entre distintos sistemasUNIX

Son de uso común en las órdenes del shell

who | sort

UNIX dispone de mecanismos de comunicación entreprocesos (IPC) más generales, definidos por POSIX, perono serán estudiados aquí

E. Domínguez, C. Villarrubia Tema 4

Page 104: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Comunicación entre Procesos

MecanismosUNIX usa dos mecanismos de comunicación específicosdel sistema: las señales y las tuberías (pipes)

El mecanismo de señales no permite el intercambio dedatos, y su uso no es portable entre los distintos sistemasUNIXLa tuberías permiten el intercambio de datos entreprocesos y su uso es portable entre distintos sistemasUNIX

Son de uso común en las órdenes del shell

who | sort

UNIX dispone de mecanismos de comunicación entreprocesos (IPC) más generales, definidos por POSIX, perono serán estudiados aquí

E. Domínguez, C. Villarrubia Tema 4

Page 105: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Comunicación entre Procesos

MecanismosUNIX usa dos mecanismos de comunicación específicosdel sistema: las señales y las tuberías (pipes)

El mecanismo de señales no permite el intercambio dedatos, y su uso no es portable entre los distintos sistemasUNIXLa tuberías permiten el intercambio de datos entreprocesos y su uso es portable entre distintos sistemasUNIX

Son de uso común en las órdenes del shell

who | sort

UNIX dispone de mecanismos de comunicación entreprocesos (IPC) más generales, definidos por POSIX, perono serán estudiados aquí

E. Domínguez, C. Villarrubia Tema 4

Page 106: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Comunicación entre Procesos

MecanismosUNIX usa dos mecanismos de comunicación específicosdel sistema: las señales y las tuberías (pipes)

El mecanismo de señales no permite el intercambio dedatos, y su uso no es portable entre los distintos sistemasUNIXLa tuberías permiten el intercambio de datos entreprocesos y su uso es portable entre distintos sistemasUNIX

Son de uso común en las órdenes del shell

who | sort

UNIX dispone de mecanismos de comunicación entreprocesos (IPC) más generales, definidos por POSIX, perono serán estudiados aquí

E. Domínguez, C. Villarrubia Tema 4

Page 107: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Señales

Definición y propiedadesLa señales son notificaciones a los procesos, procedentesde otros procesos o del sistema operativo (para indicareventos procedentes del hardware o hechos de interéspara el proceso)Las señales pueden ser bloqueadas (no todas), ignoradas(no todas) o atendidas mediante la ejecución de unafunción definible (no en todos los casos) por el procesoreceptor de la señal

E. Domínguez, C. Villarrubia Tema 4

Page 108: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Señales

Definición y propiedadesLa señales son notificaciones a los procesos, procedentesde otros procesos o del sistema operativo (para indicareventos procedentes del hardware o hechos de interéspara el proceso)Las señales pueden ser bloqueadas (no todas), ignoradas(no todas) o atendidas mediante la ejecución de unafunción definible (no en todos los casos) por el procesoreceptor de la señal

E. Domínguez, C. Villarrubia Tema 4

Page 109: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Señales (cont.)

TiposExiste un mínimo de 15 señalesLa numeración de las señales no coincide en losdiferentes sistemas UNIX, pero las señales tienen nombrey las más comunes tienen nombres que sí son los mismosen diferentes sistemas UNIX

E. Domínguez, C. Villarrubia Tema 4

Page 110: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Señales (cont.)

TiposExiste un mínimo de 15 señalesLa numeración de las señales no coincide en losdiferentes sistemas UNIX, pero las señales tienen nombrey las más comunes tienen nombres que sí son los mismosen diferentes sistemas UNIX

E. Domínguez, C. Villarrubia Tema 4

Page 111: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Señales (cont.)

Señales comunesSIGTERM: Terminación normal de un proceso

SIGHUP: Terminal desconectadoSIGFPE: Excepción de punto flotanteSIGILL: Instrucción ilegal

SIGSEGV: Excepción de direccionamientoSIGINT: Petición de interrupción del proceso por teclado

SIGCHLD (o SIGCLD): Proceso hijo terminado o paradoSIGALRM: El temporizador ha agotado el tiempo

SIGKILL: No puede ser ignorada y termina el proceso

E. Domínguez, C. Villarrubia Tema 4

Page 112: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Señales (cont.)

Señales comunesSIGTERM: Terminación normal de un proceso

SIGHUP: Terminal desconectadoSIGFPE: Excepción de punto flotanteSIGILL: Instrucción ilegal

SIGSEGV: Excepción de direccionamientoSIGINT: Petición de interrupción del proceso por teclado

SIGCHLD (o SIGCLD): Proceso hijo terminado o paradoSIGALRM: El temporizador ha agotado el tiempo

SIGKILL: No puede ser ignorada y termina el proceso

E. Domínguez, C. Villarrubia Tema 4

Page 113: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Señales (cont.)

Señales comunesSIGTERM: Terminación normal de un proceso

SIGHUP: Terminal desconectadoSIGFPE: Excepción de punto flotanteSIGILL: Instrucción ilegal

SIGSEGV: Excepción de direccionamientoSIGINT: Petición de interrupción del proceso por teclado

SIGCHLD (o SIGCLD): Proceso hijo terminado o paradoSIGALRM: El temporizador ha agotado el tiempo

SIGKILL: No puede ser ignorada y termina el proceso

E. Domínguez, C. Villarrubia Tema 4

Page 114: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Señales (cont.)

Señales comunesSIGTERM: Terminación normal de un proceso

SIGHUP: Terminal desconectadoSIGFPE: Excepción de punto flotanteSIGILL: Instrucción ilegal

SIGSEGV: Excepción de direccionamientoSIGINT: Petición de interrupción del proceso por teclado

SIGCHLD (o SIGCLD): Proceso hijo terminado o paradoSIGALRM: El temporizador ha agotado el tiempo

SIGKILL: No puede ser ignorada y termina el proceso

E. Domínguez, C. Villarrubia Tema 4

Page 115: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Señales (cont.)

Señales comunesSIGTERM: Terminación normal de un proceso

SIGHUP: Terminal desconectadoSIGFPE: Excepción de punto flotanteSIGILL: Instrucción ilegal

SIGSEGV: Excepción de direccionamientoSIGINT: Petición de interrupción del proceso por teclado

SIGCHLD (o SIGCLD): Proceso hijo terminado o paradoSIGALRM: El temporizador ha agotado el tiempo

SIGKILL: No puede ser ignorada y termina el proceso

E. Domínguez, C. Villarrubia Tema 4

Page 116: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Señales (cont.)

Señales comunesSIGTERM: Terminación normal de un proceso

SIGHUP: Terminal desconectadoSIGFPE: Excepción de punto flotanteSIGILL: Instrucción ilegal

SIGSEGV: Excepción de direccionamientoSIGINT: Petición de interrupción del proceso por teclado

SIGCHLD (o SIGCLD): Proceso hijo terminado o paradoSIGALRM: El temporizador ha agotado el tiempo

SIGKILL: No puede ser ignorada y termina el proceso

E. Domínguez, C. Villarrubia Tema 4

Page 117: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Señales (cont.)

Señales comunesSIGTERM: Terminación normal de un proceso

SIGHUP: Terminal desconectadoSIGFPE: Excepción de punto flotanteSIGILL: Instrucción ilegal

SIGSEGV: Excepción de direccionamientoSIGINT: Petición de interrupción del proceso por teclado

SIGCHLD (o SIGCLD): Proceso hijo terminado o paradoSIGALRM: El temporizador ha agotado el tiempo

SIGKILL: No puede ser ignorada y termina el proceso

E. Domínguez, C. Villarrubia Tema 4

Page 118: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Señales (cont.)

Señales comunesSIGTERM: Terminación normal de un proceso

SIGHUP: Terminal desconectadoSIGFPE: Excepción de punto flotanteSIGILL: Instrucción ilegal

SIGSEGV: Excepción de direccionamientoSIGINT: Petición de interrupción del proceso por teclado

SIGCHLD (o SIGCLD): Proceso hijo terminado o paradoSIGALRM: El temporizador ha agotado el tiempo

SIGKILL: No puede ser ignorada y termina el proceso

E. Domínguez, C. Villarrubia Tema 4

Page 119: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Señales (cont.)

Señales comunesSIGTERM: Terminación normal de un proceso

SIGHUP: Terminal desconectadoSIGFPE: Excepción de punto flotanteSIGILL: Instrucción ilegal

SIGSEGV: Excepción de direccionamientoSIGINT: Petición de interrupción del proceso por teclado

SIGCHLD (o SIGCLD): Proceso hijo terminado o paradoSIGALRM: El temporizador ha agotado el tiempo

SIGKILL: No puede ser ignorada y termina el proceso

E. Domínguez, C. Villarrubia Tema 4

Page 120: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva signal

s ighand le r_ t s i g n a l ( i n t signum ,2 s ighand le r_ t handler ) ;

Objeto: Instalar un manejador para una señalsignum: Valor de la señal que activará el manejadorhandler: Una función con un argumento int y que nodevuelve nada(typedef void (*sighandler_t)(int);)Se devuelve el manejador previo en caso de éxito oSIG_ERR en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 121: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva signal

s ighand le r_ t s i g n a l ( i n t signum ,2 s ighand le r_ t handler ) ;

Objeto: Instalar un manejador para una señalsignum: Valor de la señal que activará el manejadorhandler: Una función con un argumento int y que nodevuelve nada(typedef void (*sighandler_t)(int);)Se devuelve el manejador previo en caso de éxito oSIG_ERR en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 122: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva signal

s ighand le r_ t s i g n a l ( i n t signum ,2 s ighand le r_ t handler ) ;

Objeto: Instalar un manejador para una señalsignum: Valor de la señal que activará el manejadorhandler: Una función con un argumento int y que nodevuelve nada(typedef void (*sighandler_t)(int);)Se devuelve el manejador previo en caso de éxito oSIG_ERR en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 123: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva signal

s ighand le r_ t s i g n a l ( i n t signum ,2 s ighand le r_ t handler ) ;

Objeto: Instalar un manejador para una señalsignum: Valor de la señal que activará el manejadorhandler: Una función con un argumento int y que nodevuelve nada(typedef void (*sighandler_t)(int);)Se devuelve el manejador previo en caso de éxito oSIG_ERR en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 124: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva signal

s ighand le r_ t s i g n a l ( i n t signum ,2 s ighand le r_ t handler ) ;

Objeto: Instalar un manejador para una señalsignum: Valor de la señal que activará el manejadorhandler: Una función con un argumento int y que nodevuelve nada(typedef void (*sighandler_t)(int);)Se devuelve el manejador previo en caso de éxito oSIG_ERR en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 125: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva kill

i n t k i l l ( p i d_ t pid , i n t s ig ) ;

Objeto: Enviar una señal a un procesopid: Identificador del proceso destinatario (para posiblesvalores de pid ver bibliografía)sig: Identificador de la señalSe devuelve 0 en caso de éxito y -1 en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 126: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva kill

1 i n t k i l l ( p i d_ t pid , i n t s ig ) ;

Objeto: Enviar una señal a un procesopid: Identificador del proceso destinatario (para posiblesvalores de pid ver bibliografía)sig: Identificador de la señalSe devuelve 0 en caso de éxito y -1 en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 127: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva kill

1 i n t k i l l ( p i d_ t pid , i n t s ig ) ;

Objeto: Enviar una señal a un procesopid: Identificador del proceso destinatario (para posiblesvalores de pid ver bibliografía)sig: Identificador de la señalSe devuelve 0 en caso de éxito y -1 en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 128: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva kill

1 i n t k i l l ( p i d_ t pid , i n t s ig ) ;

Objeto: Enviar una señal a un procesopid: Identificador del proceso destinatario (para posiblesvalores de pid ver bibliografía)sig: Identificador de la señalSe devuelve 0 en caso de éxito y -1 en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 129: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva kill

1 i n t k i l l ( p i d_ t pid , i n t s ig ) ;

Objeto: Enviar una señal a un procesopid: Identificador del proceso destinatario (para posiblesvalores de pid ver bibliografía)sig: Identificador de la señalSe devuelve 0 en caso de éxito y -1 en caso de error

E. Domínguez, C. Villarrubia Tema 4

Page 130: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva alarm

1 unsigned i n t alarm ( unsigned i n t seconds ) ;

Objeto: Enviar al proceso en curso una señal SIGALRM alcabo de un tiemposeconds: Tiempo en segundos al cabo del cual se enviarála señal SIGALRMSe devuelve el tiempo en segundos restante para haberenviado una señal SIGALRM correspondiente a unaalarma pendiente. Si no había ninguna alarma pendientese devuelve 0

E. Domínguez, C. Villarrubia Tema 4

Page 131: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva alarm

1 unsigned i n t alarm ( unsigned i n t seconds ) ;

Objeto: Enviar al proceso en curso una señal SIGALRM alcabo de un tiemposeconds: Tiempo en segundos al cabo del cual se enviarála señal SIGALRMSe devuelve el tiempo en segundos restante para haberenviado una señal SIGALRM correspondiente a unaalarma pendiente. Si no había ninguna alarma pendientese devuelve 0

E. Domínguez, C. Villarrubia Tema 4

Page 132: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva alarm

1 unsigned i n t alarm ( unsigned i n t seconds ) ;

Objeto: Enviar al proceso en curso una señal SIGALRM alcabo de un tiemposeconds: Tiempo en segundos al cabo del cual se enviarála señal SIGALRMSe devuelve el tiempo en segundos restante para haberenviado una señal SIGALRM correspondiente a unaalarma pendiente. Si no había ninguna alarma pendientese devuelve 0

E. Domínguez, C. Villarrubia Tema 4

Page 133: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva alarm

1 unsigned i n t alarm ( unsigned i n t seconds ) ;

Objeto: Enviar al proceso en curso una señal SIGALRM alcabo de un tiemposeconds: Tiempo en segundos al cabo del cual se enviarála señal SIGALRMSe devuelve el tiempo en segundos restante para haberenviado una señal SIGALRM correspondiente a unaalarma pendiente. Si no había ninguna alarma pendientese devuelve 0

E. Domínguez, C. Villarrubia Tema 4

Page 134: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva pause

1 i n t pause ( void ) ;

Objeto: Suspender la ejecución de un proceso hasta quese reciba una señalSólo retorna cuando una señal ha sido capturada, y enese caso su valor de retorno es -1

E. Domínguez, C. Villarrubia Tema 4

Page 135: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva pause

1 i n t pause ( void ) ;

Objeto: Suspender la ejecución de un proceso hasta quese reciba una señalSólo retorna cuando una señal ha sido capturada, y enese caso su valor de retorno es -1

E. Domínguez, C. Villarrubia Tema 4

Page 136: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva pause

1 i n t pause ( void ) ;

Objeto: Suspender la ejecución de un proceso hasta quese reciba una señalSólo retorna cuando una señal ha sido capturada, y enese caso su valor de retorno es -1

E. Domínguez, C. Villarrubia Tema 4

Page 137: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Tuberías

Definición y propiedadesSon canales de comunicación con una capacidad limitadaSe manejan mediante dos descriptores de archivoalmacenados en una matriz fd[2]

fd[0]: Descriptor de lectura en el canalfd[1]: Descriptor de escritura en el canal

E. Domínguez, C. Villarrubia Tema 4

Page 138: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Tuberías

Definición y propiedadesSon canales de comunicación con una capacidad limitadaSe manejan mediante dos descriptores de archivoalmacenados en una matriz fd[2]

fd[0]: Descriptor de lectura en el canalfd[1]: Descriptor de escritura en el canal

E. Domínguez, C. Villarrubia Tema 4

Page 139: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Tuberías

Definición y propiedadesSon canales de comunicación con una capacidad limitadaSe manejan mediante dos descriptores de archivoalmacenados en una matriz fd[2]

fd[0]: Descriptor de lectura en el canalfd[1]: Descriptor de escritura en el canal

E. Domínguez, C. Villarrubia Tema 4

Page 140: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Tuberías

Definición y propiedadesSon canales de comunicación con una capacidad limitadaSe manejan mediante dos descriptores de archivoalmacenados en una matriz fd[2]

fd[0]: Descriptor de lectura en el canalfd[1]: Descriptor de escritura en el canal

E. Domínguez, C. Villarrubia Tema 4

Page 141: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva pipe

1 i n t pipe ( i n t f i l e d e s [ 2 ] ) ;

Objeto: Crear una tuberíafiledes: Una matriz de dos enteros destinada a albergar losdos descriptores de la tuberíaSe devuelve 0 en caso de éxito (-1 en caso de error)

E. Domínguez, C. Villarrubia Tema 4

Page 142: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva pipe

1 i n t pipe ( i n t f i l e d e s [ 2 ] ) ;

Objeto: Crear una tuberíafiledes: Una matriz de dos enteros destinada a albergar losdos descriptores de la tuberíaSe devuelve 0 en caso de éxito (-1 en caso de error)

E. Domínguez, C. Villarrubia Tema 4

Page 143: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva pipe

1 i n t pipe ( i n t f i l e d e s [ 2 ] ) ;

Objeto: Crear una tuberíafiledes: Una matriz de dos enteros destinada a albergar losdos descriptores de la tuberíaSe devuelve 0 en caso de éxito (-1 en caso de error)

E. Domínguez, C. Villarrubia Tema 4

Page 144: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

La Primitiva pipe

1 i n t pipe ( i n t f i l e d e s [ 2 ] ) ;

Objeto: Crear una tuberíafiledes: Una matriz de dos enteros destinada a albergar losdos descriptores de la tuberíaSe devuelve 0 en caso de éxito (-1 en caso de error)

E. Domínguez, C. Villarrubia Tema 4

Page 145: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Uso de las Tuberías

Llamadas al sistemawrite

Escritura de datos en orden de llegadaPuede ser bloqueante (en caso que el pipe esté lleno) o nobloqueante

readLectura de datos en orden de llegadaBloqueante en general si no hay datos en la tubería. Si eldescriptor de escritura ha sido cerrado, un intento delectura resultará en un EOF

closeLibera el descriptor de archivoSi se realiza sobre el descriptor de escritura, proporcionaráuna marca de fin de archivo al lector

E. Domínguez, C. Villarrubia Tema 4

Page 146: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Uso de las Tuberías

Llamadas al sistemawrite

Escritura de datos en orden de llegadaPuede ser bloqueante (en caso que el pipe esté lleno) o nobloqueante

readLectura de datos en orden de llegadaBloqueante en general si no hay datos en la tubería. Si eldescriptor de escritura ha sido cerrado, un intento delectura resultará en un EOF

closeLibera el descriptor de archivoSi se realiza sobre el descriptor de escritura, proporcionaráuna marca de fin de archivo al lector

E. Domínguez, C. Villarrubia Tema 4

Page 147: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Uso de las Tuberías

Llamadas al sistemawrite

Escritura de datos en orden de llegadaPuede ser bloqueante (en caso que el pipe esté lleno) o nobloqueante

readLectura de datos en orden de llegadaBloqueante en general si no hay datos en la tubería. Si eldescriptor de escritura ha sido cerrado, un intento delectura resultará en un EOF

closeLibera el descriptor de archivoSi se realiza sobre el descriptor de escritura, proporcionaráuna marca de fin de archivo al lector

E. Domínguez, C. Villarrubia Tema 4

Page 148: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Uso de las Tuberías

Llamadas al sistemawrite

Escritura de datos en orden de llegadaPuede ser bloqueante (en caso que el pipe esté lleno) o nobloqueante

readLectura de datos en orden de llegadaBloqueante en general si no hay datos en la tubería. Si eldescriptor de escritura ha sido cerrado, un intento delectura resultará en un EOF

closeLibera el descriptor de archivoSi se realiza sobre el descriptor de escritura, proporcionaráuna marca de fin de archivo al lector

E. Domínguez, C. Villarrubia Tema 4

Page 149: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Uso de las Tuberías

Llamadas al sistemawrite

Escritura de datos en orden de llegadaPuede ser bloqueante (en caso que el pipe esté lleno) o nobloqueante

readLectura de datos en orden de llegadaBloqueante en general si no hay datos en la tubería. Si eldescriptor de escritura ha sido cerrado, un intento delectura resultará en un EOF

closeLibera el descriptor de archivoSi se realiza sobre el descriptor de escritura, proporcionaráuna marca de fin de archivo al lector

E. Domínguez, C. Villarrubia Tema 4

Page 150: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Uso de las Tuberías

Llamadas al sistemawrite

Escritura de datos en orden de llegadaPuede ser bloqueante (en caso que el pipe esté lleno) o nobloqueante

readLectura de datos en orden de llegadaBloqueante en general si no hay datos en la tubería. Si eldescriptor de escritura ha sido cerrado, un intento delectura resultará en un EOF

closeLibera el descriptor de archivoSi se realiza sobre el descriptor de escritura, proporcionaráuna marca de fin de archivo al lector

E. Domínguez, C. Villarrubia Tema 4

Page 151: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Uso de las Tuberías

Llamadas al sistemawrite

Escritura de datos en orden de llegadaPuede ser bloqueante (en caso que el pipe esté lleno) o nobloqueante

readLectura de datos en orden de llegadaBloqueante en general si no hay datos en la tubería. Si eldescriptor de escritura ha sido cerrado, un intento delectura resultará en un EOF

closeLibera el descriptor de archivoSi se realiza sobre el descriptor de escritura, proporcionaráuna marca de fin de archivo al lector

E. Domínguez, C. Villarrubia Tema 4

Page 152: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Uso de las Tuberías

Llamadas al sistemawrite

Escritura de datos en orden de llegadaPuede ser bloqueante (en caso que el pipe esté lleno) o nobloqueante

readLectura de datos en orden de llegadaBloqueante en general si no hay datos en la tubería. Si eldescriptor de escritura ha sido cerrado, un intento delectura resultará en un EOF

closeLibera el descriptor de archivoSi se realiza sobre el descriptor de escritura, proporcionaráuna marca de fin de archivo al lector

E. Domínguez, C. Villarrubia Tema 4

Page 153: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

Creación de ProcesosRecubrimiento de ProcesosTerminación de ProcesosComunicación entre Procesos

Uso de las Tuberías

Llamadas al sistemawrite

Escritura de datos en orden de llegadaPuede ser bloqueante (en caso que el pipe esté lleno) o nobloqueante

readLectura de datos en orden de llegadaBloqueante en general si no hay datos en la tubería. Si eldescriptor de escritura ha sido cerrado, un intento delectura resultará en un EOF

closeLibera el descriptor de archivoSi se realiza sobre el descriptor de escritura, proporcionaráuna marca de fin de archivo al lector

E. Domínguez, C. Villarrubia Tema 4

Page 154: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

ResumenLecturas Recomendadas

Resumen

En esta sesión hemos vistoVentajas y problemas de la comunicación entre procesosCaso de estudio UNIX

E. Domínguez, C. Villarrubia Tema 4

Page 155: Tema 4: Gestión de Procesos

Puntos Desarrollados en la Sesión AnteriorComunicación entre Procesos

Caso de Estudio: UNIXResumen y Lecturas Recomendadas

ResumenLecturas Recomendadas

Lecturas Recomendadas

Lecturas recomendadasA. Silberschatz, P. Galvin. Sistemas Operativos. 5a ed.Addison Wesley. Capítulo 4: Procesos. Sección 4.6Consultar manual Linux para las primitivas citadas

E. Domínguez, C. Villarrubia Tema 4