Tuberias - Pipes
Tuberias - Pipes
Tuberias - Pipes
Grupo: 2TM3
TEMA: PIPES
---En informtica, una tubera (pipe, cauce o '|') consiste en una cadena de
procesos conectados de forma tal que la salida de cada elemento de la cadena
es la entrada del prximo. Permiten la comunicacin y sincronizacin entre
procesos. Es comn el uso de buffer de datos entre elementos consecutivos.
La comunicacin por medio de tuberas se basa en la interaccin
productor/consumidor, los procesos productores (aquellos que envan datos) se
comunican con los procesos consumidores (que reciben datos) siguiendo un
orden FIFO. Una vez que el proceso consumidor recibe un dato, este se elimina
de la tubera.
Las tuberas (pipes) estn implementadas en forma muy eficiente en los
sistemas operativos multitarea, iniciando todos los procesos al mismo tiempo,
y atendiendo automticamente los requerimientos de lectura de datos para
cada proceso cuando los datos son escritos por el proceso anterior. De esta
manera el planificador de corto plazo va a dar el uso de la CPU a cada proceso
a medida que pueda ejecutarse minimizando los tiempos muertos.
Para mejorar el rendimiento, la mayora de los sistemas operativos
implementan las tuberas usando buffers, lo que permite al proceso proveedor
generar ms datos que lo que el proceso consumidor puede atender
inmediatamente.
Podemos distinguir dos tipos de tuberas:
- Tubera sin nombre: Las tuberas sin nombre tienen asociado un fichero en
memoria principal, por lo tanto, son temporales y se eliminan cuando no estn
siendo usados ni por productores ni por consumidores. Permiten la
comunicacin entre el proceso que crea un cauce y y procesos hijos tras las
creacin de la tubera.
- Tubera con nombre: Su diferencia respecto a las tuberas sin nombre radica
en que el cauce se crea en el sistema de archivos, y por lo tanto no tienen
carcter temporal. Sea mediante llamadas al sistema (open, close, read y
write) como el resto de ficheros del sistema. Permiten la comunicacin entre
los procesos que usen dicha tubera, aunque no exista una conexin
jerrquica entre ellos.
Pipes en Linux
-----------Pipes a nivel shell
da como resultado que si el padre escribe en p[1], el hijo puede leer en p[0], o
viceversa.
Un pipe sirve solamente para una comunicacin unidireccional, si es necesario
que padre e hijo se comuniquen en ambos sentidos, debern usarse dos pipes.
Al respecto, comenta Ramrez (2016), Si el pipe es para que el padre escriba en
p[1] se recomienda que cierre p[0] (y que el cliente cierre p[1]). Es decir que
cada parte cierre el extremo del pipe que no va a usar. Una de las razones para
hacer esto es que mientas no se haga, el lector del pipe no recibir EOF cuando
el otro lado cierre el pipe, ya que todava habr un extremo abierto (aunque no
utilizado ni tenido en cuenta).
Referencias