Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porElicia Gerena Modificado hace 10 años
2
Comunicación y sincronización de procesos Comunicación por tuberías
3
Conceptos básicos •Mecanismo de comunicación entre procesos. •La transmisión se efectúa a través de un canal de comunicación: –Los datos escritos en un extremo del canal se leen en el otro extremo.
4
escritura lectura Conceptos básicos
5
•Comparable con una cola tipo FIFO. •La lectura de los datos es independiente de la escritura. •Ventaja: permite leer de una sola vez datos escritos en varias ocasiones.
6
Conceptos básicos • La gestión de las tuberías está integrada en el sistema de archivos. •El acceso a las tuberías se realiza por los descriptores de entradas/salidas • Tipo de tubería –Tubería anónima. –Tubería con nombre
7
Estructuras básicas •Estructura pipe_inode_info
8
Implementación •Para crear una tubería primero hay que crear un i-nodo •La creación del i-nodo se efectúa por la función get pipe_inode (fs/pipe.c).
9
Tuberías anónimas •La creación se efectúa con do_pipe (fs/pipe.c). •Esta llamada construye una tabla de dos descriptores de archivos –la salida (lectura) –la entrada (escritura)
10
Tuberías con nombre •La creación se efectúa con fifo-open (fs/fifo.c). •Opciones de la creación: –Lectura exclusiva (con o sin bloqueo) –Escritura exclusiva –Lectura y escritura
11
Operaciones de entrada/salida •Las lecturas y las escrituras se efectúan en una memoria intermedia de tamaño PIPE_BUF. •Todas las operaciones de entradas/salidas, ya se trate de tuberías con nombre o anónimas, se encuentran en el archivo fs/pipe.c.
12
Operaciones de entrada/salida •Vemos los detalles y su funcionamiento: –pipe_read lectura en la tubería –pipe_write escritura en la tubería –pipe_ioctl recupera el nº de bytes almacenados –pipe_select para la operación de multiplexado *multiplexado en lectura *multiplexado en escritura: *excepciones
13
Operaciones de entrada/salida •En el contexto de las tuberías con nombre, cuando al crear la tubería, ningún proceso ha abierto la tubería en escritura: –connect_read modifica las operaciones realizables sobre el i-nodo –connect_select modifica el campo f_op en el caso del multiplexado en lectura
14
Operaciones de entrada/salida •Funciones para cerrar descriptores (decrementa el nº de procesos): –pipe_read_release –pipe_write_release –pipe_rdwr_release
15
Operaciones de entrada/salida •Funciones de creación de un nuevo proceso que hereda la tubería (incrementa el nº de procesos): –pipe_read_open –pipe_write_open –pipe_rdwr_open
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.