PDF de programación - Sesión 12: tuberías - Sistemas Operativos

Imágen de pdf Sesión 12: tuberías - Sistemas Operativos

Sesión 12: tuberías - Sistemas Operativosgráfica de visualizaciones

Publicado el 3 de Junio del 2019
703 visualizaciones desde el 3 de Junio del 2019
2,0 MB
53 paginas
Creado hace 12a (10/10/2011)
Sistemas Operativos

sesión 12: tuberías

Grado en Ingeniería Informática

Universidad Carlos III de Madrid

ARCOS @ UC3M
Alejandro Calderón Mateos

Agenda

Linux

Comunicación
con tuberías

Ejercicios

2

ARCOS @ UC3M
Alejandro Calderón Mateos

Agenda

Linux

Comunicación
con tuberías

Ejercicios

3

ARCOS @ UC3M
Alejandro Calderón Mateos

Contenidos

• Redirección

• Tuberías (pipes)

4

ARCOS @ UC3M
Alejandro Calderón Mateos

Contenidos

• Redirección

• Tuberías (pipes)

5

ARCOS @ UC3M
Alejandro Calderón Mateos

Ejemplo de redirección de entrada

uno,

cuatro,

siete,

diez,

dos,

cinco,

ocho,

once,

f1.txt

tres

seis

nueve

doce

uno, dos, tres
cuatro, cinco, seis
siete, ocho, nueve
diez, once, doce

grep ocho < f1 1

ARCOS @ UC3M
Alejandro Calderón Mateos

Ejemplo de redirección de salida

uno,

cuatro,

siete,

diez,

dos,

cinco,

ocho,

once,

f1.txt

tres

seis

nueve

doce

uno, dos, tres
cuatro, cinco, seis
siete, ocho, nueve
diez, once, doce

siete, ocho, nueve

grep ocho < f1 > s1

ARCOS @ UC3M
Alejandro Calderón Mateos

Ejemplo de redirección de salida

uno,

cuatro,

siete,

diez,

dos,

cinco,

ocho,

once,

f1.txt

tres

seis

nueve

doce

siete, ocho, nueve

grep ocho f1 1> s1

ARCOS @ UC3M
Alejandro Calderón Mateos

Ejemplo de redirección de error

uno,

cuatro,

siete,

diez,

dos,

cinco,

ocho,

once,

f1.txt

tres

seis

nueve

doce

grep: f2: No existe el archivo o el directorio

grep ocho xx 2> s1

ARCOS @ UC3M
Alejandro Calderón Mateos

Contenidos

• Redirección

• Tuberías (pipes)

10

ARCOS @ UC3M
Alejandro Calderón Mateos

Ejemplo de uso de tuberías

uno,

cuatro,

siete,

diez,

dos,

cinco,

ocho,

once,

f1.txt

tres

seis

nueve

doce

uno, dos, tres
cuatro, cinco, seis
siete, ocho, nueve
diez, once, doce

uno, dos, tres
cuatro, cinco, seis
siete, ocho, nueve

siete, ocho, nueve

cat f1 | head -3 | tail -1

ARCOS @ UC3M
Alejandro Calderón Mateos

Agenda

Linux

Comunicación
con tuberías

Ejercicios

12

ARCOS @ UC3M
Alejandro Calderón Mateos

Contenidos

• Los descriptores de ficheros

– Redirección y duplicado

• Los descriptores de ficheros y fork()

• Tuberías

13

ARCOS @ UC3M
Alejandro Calderón Mateos

Contenidos

• Los descriptores de ficheros

– Redirección y duplicado

• Los descriptores de ficheros y fork()

• Tuberías

14

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros



..

3

2

1

0

..

..

..

..

Proceso 1

Los descriptores de ficheros son el índice de la tabla que hay por proceso
que identifica los posibles ficheros (o dispositivos) con los que comunicarse

15

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros



..

3

2

1

0

..

..

..

..

Proceso 1

Salida de errores

Salida estándar

Por defecto se utilizan los tres primeros para la entrada estándar, salida estándar y salida
de error respectivamente.

16

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros

abstracción ofrecida



..

3

2

1

0

..

..

..

..

Proceso 1

Los descriptores de ficheros son una abstracción ofrecida por el sistema operativo para
referenciar los dispositivos reales. Igual que una llave numerada para una consigna.

17

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros

abstracción ofrecida



..

3

2

1

0

..

..

..

..

Proceso 1



...

3

2

1

0

...

...

...

...

El sistema operativo mantiene una tabla interna con la información real de contacto con
los dispositivos y ficheros con los que los procesos piden comunicarse…

18

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros

abstracción ofrecida



..

3

2

1

0

..

1

1

0

Proceso 1



...

3

2

1

0

...

...

...

...

…Y los descriptores de ficheros son el índice de la tabla que hay por proceso, cuyo
contenido es a su vez el índice de la tabla interna del sistema operativo.

19

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros

abstracción ofrecida



..

3

2

1

0

2

1

1

0

Proceso 1



...

3

2

1

0

...

...

...

...

Cuando se pide un nuevo descriptor de ficheros (al abrir un fichero) se busca el primero
hueco libre de la tabla y el índice de esa posición es el descriptor asignado.

20

ARCOS @ UC3M
Alejandro Calderón Mateos

Contenidos

• Los descriptores de ficheros

– Redirección y duplicado

• Los descriptores de ficheros y fork()

• Tuberías

21

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros

redirección a fichero



..

3

2

1

0

2

1

1

0

Proceso 1



...

3

2

1

0

...

...

...

...

¿

close(2) ;

1.
2. open(“/tmp/errores.txt”) ;

?

22

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros

redirección a fichero



..

3

2

1

0

2

1

1

0

Proceso 1



...

3

2

1

0

...

...

...

...

close(2) ;

1.
2. open(“/tmp/errores.txt”) ;

23

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros

redirección a fichero



..

3

2

1

0

2

1

1

0

Proceso 1



...

3

2

1

0

...

...

...

...

close(2) ;

1.
2. open(“/tmp/errores.txt”) ;

24

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros

redirección a fichero



..

3

2

1

0

2

1

1

0

Proceso 1



...

3

2

1

0

...

...

...

...

close(2) + open(“/tmp/errores.txt”)
Es posible cambiar el archivo asociado a un descriptor.

25

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros

duplicación de descriptor



...

3

2

1

0

...

...

...

...



..

3

2

1

0

2

1

1

0

Proceso 1

¿

close(3) ;

1.
2. dup(2) ;

?

26

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros

duplicación de descriptor



...

3

2

1

0

...

...

...

...



..

3

2

1

0

2

1

1

0

Proceso 1

close(3) ;

1.
2. dup(2) ;

27

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros

duplicación de descriptor



...

3

2

1

0

...

...

...

...



..

3

2

1

0

2

1

1

0

Proceso 1

1.
close(3) ;
2. dup(2) ;

28

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros

duplicación de descriptor



..

3

2

1

0

2

1

1

0

Proceso 1



...

3

2

1

0

...

...

...

...

close(3) + dup(2)
Permite acceder a un mismo fichero desde dos descriptores diferentes

29

ARCOS @ UC3M
Alejandro Calderón Mateos

Contenidos

• Los descriptores de ficheros

– Redirección y duplicado

• Los descriptores de ficheros y fork()

• Tuberías

30

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros

llamada fork()

Proceso 1



..

2

1

0

1

1

0



...

3

2

1

0

...

...

...

...

fork() crea un duplicado del hijo

31

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros

llamada fork()

Proceso 1

Proceso 2



2

1

0



2

1

0

..

1

1

0

..

1

1

0



...

3

2

1

0

...

...

...

...

• Ambos tienen descriptores iguales (redirecciones antes del fork() se heredan)
• Ambos referencian los mismos elementos (posición L/E después del fork() común)

32

ARCOS @ UC3M
Alejandro Calderón Mateos

Descriptores de ficheros

llamada fork()

1) read(2,…)

Proceso 1

2) write(2,…)

Proceso 2



2

1

0



2

1

0

..

1

1

0

..

1

1

0



...

3

2

1

0

...

...

...

...

• Ambos tienen descriptores iguales (redirecciones antes del fork() se heredan)
• Ambos referencian los mismos elementos (posición L/E después del fork() común)

33

ARCOS @ UC3M
Alejandro Calderón Mateos

Contenidos

• Los descriptores de ficheros

– Redirección y duplicado

• Los descriptores de ficheros y fork()

• Tuberías

34

ARCOS @ UC3M
Alejandro Calderón Mateos

Tubería

1 creación

int p1[2] ;

pipe(p1) ;


Proceso 1



..

4

..

3

2

1

0

..

..

..

..

Una tubería es un fichero especial que se crea con la llamada al sistema pipe()

35

ARCOS @ UC3M
Alejandro Calderón Mateos

Tubería

1 creación

pipe

int p1[2] ;

pipe(p1) ;


Proceso 1



..

4

..

3

2

1

0

..

..

..

..

Una tubería es un fichero especial que se crea con la llamada al sistema pipe()

36

ARCOS @ UC3M
Alejandro Calderón Mateos

Tubería

1 creación



..

int p1[2] ;

pipe(p1) ;


Proceso 1

p1[1]

4

p1[0]

3

2

1

0

..

..

..

..

..

write(p1[1],…)

pipe

read(p1[0],…)

Una tubería es un fichero especial que se crea con la llamada al sistema pipe()
Dicha llamada crea la tubería y reserva dos descriptores de ficheros: lectura y escritura

37

ARCOS @ UC3M
Alejandro Calderón Mateos

Tubería

1 creación



..

int p1[2] ;

pipe(p1) ;


Proceso 1

p1[1]

4

p1[0]

3

2

1

0

..

..

..

..

..

write(p1[1],…)

pipe

read(p1[0],…)

• Si se escribe en una tubería llena, se bloquea la ejecución del proceso hasta poder escribir.
• Si se lee de una tubería vacía, se bloquea la ejecución del proceso hasta poder leer algo.

38

ARCOS @ UC3M
Alejandro Calderón Mateos

Tubería

1 creación



..

int p1[2] ;

pipe(p1) ;


Proceso 1

p1[1]

4

p1[0]

3

2

1

0

..

..

..

..

..

write(p1[1],…)

pipe

read(p1[0],…)

<EOF>

• Cuando todos los procesos escritores cierren la parte de escritura,

entonces se manda un final de fichero (EOF) a los lectores.

39

ARCOS @ UC3M
Alejandro Calderón Mateos

Tubería

2 fork()



..

p1[1]

4

p1[0]

3

Proceso 1

2

1

0

..

..

..

..

..

pipe() + fork() -> padre e hijo ven la misma tubería


fork();


40



..

p1[1]

4

p1[0]

3

2

1

0

..

..

..

..

..

Proceso 2

ARCOS @ UC3M
Alejandro Calderón Mateos

Tubería

2 fork()

p1[1]

p1[0]

pipe



..

p1[1]

4

p1[0]

3

2

1

0

..

..

..

..

..

Proceso 2



..

p1[1]

4

p1[0]

3

Proceso 1

2

1

0

..

..

..

..

..

pipe() + fork() -> padre e hijo ven la misma tubería

-> ambos podrían leer y escribir en ella

ARCOS @ UC3M
Alejandro Calderón Mateos


fork();


41

Tubería

3 redirección

p1[1]

p1[0]

pipe



..

p1[1]

4

p1[0]

3

2

1

0

..

..

..

..

..


clos
  • Links de descarga
http://lwp-l.com/pdf16029

Comentarios de: Sesión 12: tuberías - Sistemas Operativos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad