Sei sulla pagina 1di 36

Los dispositivos

de entrada/salida
Teodor Jov Lagunas
P05/75097/00807
Mdulo 4

FUOC P05/75097/00807 Mdulo 4

Los dispositivos de entrada/salida

ndice

Introduccin.............................................................................................

Objetivos ....................................................................................................

1. El concepto de dispositivo de entrada/salida.............................

2. Las caractersticas de los dispositivos...........................................

2.1. Caractersticas fsicas .......................................................................

2.2. Caractersticas de acceso.................................................................. 11


2.3. Caractersticas de control ................................................................ 13
2.4. Consecuencias de la diversidad de dispositivos .............................. 14
3. Los dispositivos reales ....................................................................... 15
3.1. Los dispositivos fsicos..................................................................... 15
3.2. Los dispositivos lgicos ................................................................... 15
4. La independencia de los dispositivos ............................................ 18
4.1. Los dispositivos virtuales................................................................. 18
4.2. Las operaciones uniformes .............................................................. 19
5. La gestin de dispositivos en UNIX................................................ 23
5.1. Las pipes, un caso especial de dispositivo ........................................ 25
5.2. El punto de vista desde las llamadas al sistema .............................. 26
5.3. El punto de vista desde el intrprete de rdenes (shell) .................. 27
Resumen..................................................................................................... 31
Actividades................................................................................................ 33
Ejercicios de autoevaluacin ................................................................ 33
Solucionario.............................................................................................. 34
Glosario...................................................................................................... 35
Bibliografa............................................................................................... 36

FUOC P05/75097/00807 Mdulo 4

Los dispositivos de entrada/salida

Introduccin
En este mdulo didctico se analiza el primer elemento de los que constituyen
el entorno de ejecucin de un programa: los dispositivos.
Nos centraremos en el anlisis de los diferentes tipos de dispositivos, el tratamiento que el sistema hace de los mismos y la percepcin que tiene el usuario
de stos mediante este tratamiento. Para alcanzar estos conocimientos ser necesario confrontarlos con un sistema real y, con esta finalidad, utilizaremos el
sistema operativo UNIX y lo analizaremos, tanto desde el punto de vista del
intrprete de rdenes como desde el punto de vista del programador.

Objetivos
En los materiales didcticos que se facilitan en este mdulo encontraris las
herramientas necesarias para alcanzar los siguientes objetivos:
1. Conocer la variedad de dispositivos que existen y sus modos de trabajo.
2. Distinguir los dispositivos fsicos de los lgicos.
3. Entender la necesidad de independizar los programas de los dispositivos
con los que trabajamos.
4. Aprender el concepto de dispositivo virtual.
5. Conocer el concepto de independencia de los dispositivos basados en los
dispositivos virtuales y en la uniformidad de las operaciones.
6. Aprender el significado de sesin de trabajo con un dispositivo y conocer las
operaciones bsicas que se efectan durante la sesin de trabajo.

Los dispositivos de entrada/salida

FUOC P05/75097/00807 Mdulo 4

Los dispositivos de entrada/salida

1. El concepto de dispositivo de entrada/salida

El concepto de dispositivo de entrada/salida se asocia al de perifrico. Entendemos por perifricos elementos como:
Los teclados, que permiten introducir informacin en el sistema para que
pueda ser manipulada por los procesos.
Las pantallas, que sirven para mostrar al exterior la informacin que elaboran los procesos.
Con el teclado introducimos informacin
en el sistema.

Los discos, que permiten almacenarla.


Los mdems o las redes, destinados a transferirla entre procesos.
A pesar de todo, y como vamos a poder comprobar a lo largo del presente mdulo, un dispositivo de entrada/salida no tiene por qu estar asociado forzosamente a un perifrico, sino que puede ser cualquier objeto de hardware o
software gestionado por el sistema que sea capaz de llevar a cabo el tipo de acciones que hemos descrito.

Un dispositivo de entrada/salida es un objeto gestionado por el sistema


operativo sobre el cual los procesos pueden realizar operaciones de lectura/escritura con la finalidad de obtener, almacenar, mostrar o transferir
informacin.

El sistema operativo (SO) se encarga de gestionar los dispositivos proporcionando las operaciones necesarias para que los procesos puedan acceder a ellos.
Tal y como veremos despus, esta gestin tiene que ofrecer los elementos que
indicamos a continuacin:
Las herramientas que permitan desarrollar diferentes polticas de acceso
en funcin de las necesidades de los usuarios.
Un interfaz de acceso proceso/dispositivo que sea independiente de las
particularidades de cada uno de los dispositivos, pero que al mismo tiempo
permita, en caso de que sea necesario, explotar todas sus caractersticas.
Un entorno portable que permita que las aplicaciones trabajen con diferentes dispositivos sin tener que modificarlas.

El mdem transfiere la informacin


entre procesos.

FUOC P05/75097/00807 Mdulo 4

Los dispositivos de entrada/salida

2. Las caractersticas de los dispositivos

Aparentemente, todos los dispositivos funcionan de la misma forma, es decir, todos llevan a cabo operaciones de entrada/salida de informacin: las impresoras
vierten la informacin en un soporte material como el papel, los teclados permiten entrar datos, las pantallas visualizan las salidas, etc. A pesar de que la funcin
de los diferentes dispositivos es aparentemente la misma, el uso que se hace de
ellos y el resultado final que proporcionan pueden ser muy diferentes en funcin
del tipo y el modelo de dispositivo que utilicemos. As pues, los dispositivos presentan caractersticas singulares que el sistema tiene que gestionar de diferentes
modos.

Por ejemplo,...
... no es lo mismo tener una
impresora de agujas que tener
una de inyeccin de tinta
o una lser. Tambin ser
diferente tener la impresora
conectada al ordenador
mediante un puerto paralelo,
como es habitual, que tenerla
conectada mediante un puerto
serie o directamente colgada
en la red.

Podemos realizar una clasificacin de los dispositivos en funcin de sus caractersticas para analizar las diferencias que presentan. Teniendo en cuenta su elevado nmero y variedad, las hemos agrupado en caractersticas fsicas, de acceso
y de control. De entre todas las caractersticas que citamos a continuacin, slo
comentaremos con un cierto detalle las que afectan de manera directa a los
usuarios. Tenemos que destacar que esta clasificacin es una de las muchas que
podramos hacer basndonos en las caractersticas de los dispositivos y que, en
consecuencia, hay que entenderla como un marco orientativo para conseguir
una comprensin ptima de la diversidad de los dispositivos.

2.1. Caractersticas fsicas

Las caractersticas fsicas hacen referencia a propiedades intrnsecas de los dispositivos. Son las siguientes:

1) Los dispositivos pueden ser extrables o fijos


Hay dispositivos que son fijos, como los discos duros, y otros extrables, formados por una unidad de acceso que permite acceder a contenedores o volmenes de informacin extrables, como pueden ser las unidades de cinta y las
cintas, los lectores de discos compactos y los discos compactos, etc.
Los dispositivos extrables necesitan un tratamiento adicional por parte del
sistema y de los usuarios. As, por ejemplo, es necesario proporcionar los mecanismos precisos para poder hacer lo siguiente:
Asignar estos dispositivos a un nico usuario al mismo tiempo, con el objetivo de evitar que ms de uno intente acceder a la vez a los diferentes contenedores*.

* Contenedores de informacin
como las cintas, disquetes, etc.

FUOC P05/75097/00807 Mdulo 4

Los dispositivos de entrada/salida

Informar al sistema del hecho de que se ha insertado, o que se proceder a


extraer, un volumen de la unidad, ya que el sistema, por cuestiones de eficiencia, puede guardar y manipular en la memoria informacin del estado
del contenedor.

2) La capacidad de almacenamiento de los dispositivos

Los dispositivos pueden ser tiles para visualizar, recoger o almacenar informacin. Los dispositivos de almacenamiento tienen una capacidad o espacio
concreto que puede variar entre los diferentes tipos de dispositivos, y que el
SO se encarga de gestionar. Las caractersticas de estos dispositivos varan en
funcin de los aspectos que ahora presentamos:

a) La geometra. Los dispositivos de almacenamiento pueden tener el espacio organizado de diferentes formas, siguiendo geometras diferentes. Por
ejemplo, un disco organiza el espacio en pistas, caras y sectores; una cinta en
bloques, etc.

b) El tipo de almacenamiento: permanente o temporal. Los dispositivos de


almacenamiento pueden contener la informacin de manera permanente
hasta que se borra explcitamente, o pueden guardarla de forma temporal. En
este ltimo caso, la informacin se borra automticamente cuando se cumple
una condicin concreta. Por ejemplo, en un fichero temporal o en una pipe de
UNIX, la informacin almacenada se destruye al cerrarlos.

Podis ver las caractersticas de las


pipes de UNIX en el subapartado
5.1. de este mdulo didctico.

3) El tipo de unidad de transferencia

Las unidades de transferencia entre el sistema y los dispositivos pueden ser


muy diferentes, pero en general distinguiremos los dos tipos siguientes:

Dispositivos que transfieren caracteres. Por ejemplo, un terminal es un dispositivo de caracteres de entrada/salida que est formado por una pantalla
y un teclado, puesto que cada vez que pulsamos una tecla, el carcter es enviado al sistema.

Dispositivos que transfieren bloques de caracteres. Por ejemplo, el disco es un


dispositivo de bloques, ya que cada vez que se quiere leer o escribir sobre el disco hay que transferir como mnimo un bloque, por ejemplo 512 caracteres.

4) La velocidad de transferencia de los dispositivos

La velocidad de transferencia, o ancho de banda del dispositivo, es otro de los


factores que diferencian los dispositivos. Normalmente, la velocidad de trans-

Por ejemplo,...
... podemos encontrar
mdems que utilizan
diferentes velocidades de
salida. Encontraremos desde
los que van a 110 bits por
segundo hasta los que van
a 921.600 bits por segundo.

FUOC P05/75097/00807 Mdulo 4

10

Los dispositivos de entrada/salida

ferencia de los dispositivos es mucho menor que la velocidad del procesador.


Esta diferencia de velocidades hace que el sistema, en la gestin de los dispositivos, tenga que aplicar tcnicas que permitan reducir el tiempo de espera de
los procesos, como el almacenamiento en la memoria intermedia (buffering) y
la gestin de colas (spooling). A continuacin exponemos estas dos tcnicas
con ms detalle:

a) El almacenamiento en la memoria intermedia (buffering). En algunas ocasiones, la velocidad de los dispositivos no se adapta a la velocidad con que se
est ejecutando el proceso, ya sea porque los dispositivos son ms lentos, ya sea
porque el proceso trabaja a rachas. Con la intencin de solucionar este problema, y que ni los dispositivos ni los procesos tengan que esperar mutuamente, el
SO utiliza la memoria intermedia denominada buffering. As, esta memoria tiene
la funcin de suavizar las diferencias de velocidades.

Figura 1
El almacenamiento
en la memoria intermedia
En el esquema con la
memoria intermedia buffer,
el dispositivo produce
informacin y el proceso la
consume. El dispositivo tiene
que pasar la informacin a la
memoria intermedia y slo
surgen problemas si sta se
encuentre llena. Por otra parte,
el proceso slo consume
informacin de la memoria
intermedia y slo se tiene
que esperar si sta est vaca.

b) La gestin de colas (spooling). La tcnica de la gestin de colas o SPOOL


(Simultaneous Peripherical Operation OnLine) permite que las entradas/salidas
de un proceso tengan un paso intermedio por dispositivos de gran capacidad
de almacenamiento (discos, etc.). Este hecho permitir que el computador trabaje con un proceso en concreto, mientras que, concurrentemente, los dispositivos finales van extrayendo o incorporando informacin de manera ms

Podis consultar la ejecucin


concurrente de procesos en el
subapartado 2.3. del mdulo didctico
Introduccin a los sistemas operativos.

lenta.

Impresin de un documento
Un caso muy corriente es el de trabajar con un procesador de textos y realizar una impresin de un documento relativamente largo. Si no se utiliza la tcnica de la gestin
de colas (spool), el computador, y por lo tanto el usuario, perder su capacidad de operar
hasta que la impresin haya finalizado. Un efecto adicional del uso de la tcnica de la
gestin de colas es la sensacin que tienen los usuarios de estar utilizando todos al mismo tiempo la impresora, a pesar de que se trata de un dispositivo no compartible. Todo
esto es posible gracias al hecho de que el dispositivo intermedio (en este caso, el disco)
es compartible.

Podis ver los dispositivos


compartibles y no compartibles
en el subapartado 2.1. de este mdulo
didctico.

FUOC P05/75097/00807 Mdulo 4

11

Los dispositivos de entrada/salida

Figura 2

5) El tipo de codificacin de la informacin

La informacin que se lee o se escribe en un dispositivo tiene que seguir unas normas de codificacin que dependen de cada dispositivo en concreto. Por ejemplo,
un terminal orientado a caracteres puede visualizar la informacin codificndola
de diferentes maneras, por ejemplo: en ASCII de 7 bits o en ASCII de 8 bits. En este
ltimo caso, los caracteres por encima del cdigo ASCII 127 dependen del alfabeto (cataln, castellano, etc.) y del fabricante. En consecuencia, al visualizarlos, el
resultado que se obtiene puede ser diferente del que se esperaba.

Un ejemplo
sorprendente...
... se da cuando intentamos
visualizar el contenido de un
fichero ejecutable (codificado
en binario) en la pantalla.

6) La estructura de la informacin

La informacin contenida en un dispositivo se puede estructurar de diferentes


maneras. La estructura de la informacin condiciona las operaciones que podemos llevar a cabo con dicha informacin. Por ejemplo, podemos compilar
o editar un fichero que contenga un programa fuente, mientras que un fichero
ejecutable slo se puede ejecutar.

Si el sistema reconoce la estructura de la informacin, puede controlar que las


manipulaciones que se hagan de esta informacin sean correctas.

2.2. Caractersticas de acceso


Las caractersticas de acceso hacen referencia a cmo acceden el SO y los
procesos a la informacin contenida en los dispositivos. Estas caractersticas son las siguientes:
1) Acceso a dispositivos de entrada/salida
Los dispositivos pueden ser de entrada, de salida o de los dos tipos al mismo
tiempo, y en funcin de esta caracterstica una operacin de acceso puede tener
sentido o no. El sistema se encarga de controlar estas situaciones. Por ejemplo,
es correcto hacer una salida sobre una impresora, pero en cambio, es absurdo
hacerla sobre un ratn.

Por ejemplo,...
... la informacin de un fichero
de texto se estructura en prrafos, una base de datos contiene
registros de informacin, etc.

FUOC P05/75097/00807 Mdulo 4

12

Los dispositivos de entrada/salida

2) Acceso compartido o exclusivo


A un dispositivo de uso exclusivo es imposible que acceda ms de un usuario a
la vez, todo lo contrario de lo que sucede con los dispositivos compartidos. Un
ejemplo de dispositivo exclusivo es, por ejemplo, la impresora, puesto que no
puede escribir dos informaciones al mismo tiempo. El sistema tiene que proporcionar mecanismos de exclusin, como pueden ser los semforos, o de compar-

Podis ver el caso de los semforos


en el apartado 4 del mdulo
didctico La concurrencia
y la comunicacin.

ticin, como el spooler.


3) Acceso secuencial, directo o indexado
El acceso a una informacin concreta contenida en un dispositivo de almacenamiento se puede llevar a cabo bsicamente de las tres formas siguientes:
Secuencialmente: se tiene acceso a la informacin que sigue en posicin
a la ltima informacin a la que se ha accedido.
Directamente: se tiene acceso directo a una informacin por posicin.
De manera indexada: se tiene acceso a la informacin mediante una clave
lgica.
Cada dispositivo permite, en funcin de su estructura, uno o ms de estos mtodos de acceso. El sistema, mediante su gestin, puede ofrecer aquellos mtodos que el dispositivo no soporta directamente.
4) Acceso sncrono o asncrono
En el momento de acceder a un dispositivo, puede suceder que la informacin
no se encuentre disponible. Entonces, en funcin del tipo de dispositivo del
que se trate, tenemos estos casos:
En un dispositivo sncrono, si la informacin no se encuentra disponible,
el proceso que efecta el acceso esperar hasta que lo est. La mayor parte
de los dispositivos tiene los accesos sncronos.
En un dispositivo asncrono, si un proceso intenta realizar una entrada y
no hay datos disponibles, se le informa de este hecho y se deja que contine. En algunos dispositivos asncronos, esta funcionalidad se complementa con el hecho de que el dispositivo advierte al proceso cuando los
datos ya estn disponibles.
5) Otras caractersticas del acceso a los dispositivos de entrada

Cuando se entran datos desde algunos dispositivos, como pueden ser los terminales, es necesario ver lo que se entra y, en caso de equivocacin, es nece-

El dispositivo puede advertir


al proceso del hecho de que los
datos estn listos mediante las seales
descritas en el apartado 3 del mdulo
didctico La gestin de procesos.

FUOC P05/75097/00807 Mdulo 4

13

Los dispositivos de entrada/salida

sario que tengamos la posibilidad de rectificar. Estas dos caractersticas de los


terminales hacen referencia respectivamente a lo que se denomina echo (eco)
y al modo de edicin cooked/raw (cocinado/crudo).

El hecho de activar o no el modo echo permite ver o no la entrada que se est


llevando a cabo. En general, lo ms normal es ver los caracteres que se intro-

No utilizamos el echo cuando, por


ejemplo, queremos introducir una
contrasea.

ducen por el teclado; a pesar de ello, algunas situaciones hacen que sea aconsejable que no se vea la entrada por la pantalla.

El modo de edicin cooked hace que algunos caracteres que componen la


entrada se interpreten como rdenes que alteran la informacin que se ha
introducido. Con este modo activado, todos los caracteres que controlan la
edicin se interpretarn y, por tanto, no se entregarn al proceso que efec-

Por ejemplo,...
... el carcter ASCII 127 (delete)
produce la eliminacin de uno
de los caracteres entrados, etc.

ta la operacin de entrada.

As pues, un mismo dispositivo se puede comportar de maneras muy diferentes en funcin de cul de estos dos modos est activo. En general, el sistema
es el encargado de implementarlas por software; no obstante, algunos dispositivos las pueden tener implementadas directamente por hardware.

2.3. Caractersticas de control

Las caractersticas de control hacen referencia a la forma de indicar a los dispositivos lo que queremos que hagan. Podemos distinguir estos dos tipos:

1) Las caractersticas del controlador

El sistema controla los perifricos mediante el acceso a un conjunto de


puertos que pertenecen al hardware denominado controlador. Las caractersticas de estos controladores condicionan la forma que el sistema tiene de
gestionar las entradas/salidas: por interrupciones, por encuesta, con acceso
directo a la memoria (DMA*), etc. El SO esconde a los usuarios todas estas
particularidades.

DMA es la sigla de la expresin


inglesa Direct Memory Access.

2) Los lenguajes de rdenes

Algunos dispositivos utilizan lenguajes de control para configurar el tipo de


entrada/salida que tienen que llevar a cabo. As, por ejemplo, algunas impresoras lser utilizan el lenguaje PostScript para especificar el formato de la informacin que tienen que imprimir. Otro ejemplo podran ser los caracteres
de control que se utilizan en un terminal para editar las entradas o para indicar
si la salida tiene que estar en negrita, subrayada, etc.

Podis ver los caracteres de control


en el subapartado 2.2. de este
mdulo didctico.

FUOC P05/75097/00807 Mdulo 4

14

Los dispositivos de entrada/salida

2.4. Consecuencias de la diversidad de dispositivos


Tal y como se puede apreciar en la relacin de caractersticas que acabamos de
mencionar, los dispositivos son muy diferentes entre s, no slo entre tipos
distintos, sino tambin dentro del mismo tipo. Como consecuencia de estas
diferencias, tienen lugar las siguientes situaciones:
Se accede a los dispositivos y se manipulan mediante operaciones diferentes y con parmetros tambin diferentes.
Los dispositivos pueden producir resultados diferentes como respuesta a
operaciones que en un principio podran parecer iguales.
Finalmente, y como resultado de las dos consideraciones anteriores, los dispositivos producen errores diferentes, incluso en situaciones anlogas.
Esta diversidad hace que, como usuarios, deseemos independizarnos de esta
multitud de casos diferentes. El sistema operativo es el encargado de conseguir
este objetivo; mediante su gestin proporciona una mquina virtual que hace
que toda esta variedad sea transparente para el usuario, y as le ofrece un grado
ms elevado de independencia de los dispositivos.

Recordad que presentamos


el concepto de mquina virtual
en el apartado 1 del mdulo didctico
El sistema operativo: una mquina
virtual.

FUOC P05/75097/00807 Mdulo 4

15

Los dispositivos de entrada/salida

3. Los dispositivos reales

Otra posible clasificacin de los dispositivos distingue los dispositivos fsicos


de los lgicos. Estos dos tipos de dispositivos se denominan dispositivos reales,
en contraposicin a los dispositivos virtuales, que analizaremos ms adelante.

Los dispositivos virtuales se analizan


en el subapartado 4.2. de este
mdulo didctico.

Un dispositivo real es un dispositivo que existe realmente, y que es la


combinacin de diferentes elementos de hardware y software.

3.1. Los dispositivos fsicos

Un dispositivo fsico es un dispositivo que existe fsicamente. Est formado por el perifrico y por su hardware de control, que constituyen la

Las impresoras, los mdems,


los ratones y los escneres, entre
otros, son algunos de los ejemplos
de dispositivos fsicos.

parte fsica, y por el software que los gestiona y que denominamos driver
(observad la figura 3).

Por norma general, son dispositivos fsicos que se encuentran asociados a un perifrico. Sobre la base de este planteamiento tambin podremos considerar
como dispositivos fsicos ciertos elementos del computador como puede ser
la memoria principal, donde la memoria y el gestor de la memoria o MMU
(Memory Management Unit) configuran respectivamente el perifrico y su hardware
de control.

3.2. Los dispositivos lgicos


Los dispositivos fsicos son los dispositivos ms evidentes en un sistema, y rpidamente los identificamos como tales. No obstante, en el sistema encontraremos otros tipos de dispositivos que no estn asociados a un perifrico: los
dispositivos lgicos.

El dispositivo lgico no existe fsicamente. Un dispositivo lgico es el


resultado de un software del sistema que crea este dispositivo. As pues,
los dispositivos lgicos, a diferencia de los fsicos, estn formados nicamente por su driver (observad la figura 3).

Los dispositivos lgicos tambin pueden ser el resultado de la redefinicin mediante un algoritmo de uno o varios dispositivos fsicos. Por ejemplo, un fiche-

Por ejemplo,...
... un disco simulado sobre la
memoria es un dispositivo que
no existe fsicamente, sino que
es el resultado de un algoritmo
que simula, en este caso, un
dispositivo fsico, un disco.

FUOC P05/75097/00807 Mdulo 4

16

Los dispositivos de entrada/salida

ro es un dispositivo lgico que se obtiene como resultado de la redefinicin de


un dispositivo fsico, como puede ser un disco. En este caso, se crea gracias al
software que configura el sistema de ficheros.

Podis ver el software que forma


el sistema de ficheros en el apartado
2 del mdulo didctico El sistema
de ficheros.

A continuacin nos disponemos a presentar algunos ejemplos de dispositivos


lgicos (observad la figura 3):
1) El nulo, que es un dispositivo de entrada/salida sobre el cual podemos escribir todo lo que queramos y siempre se mantiene vaco. En realidad, es un
dispositivo que ignora cualquier cosa que se escriba en l, y que en la lectura
nunca retorna ningn tipo de informacin. Este dispositivo se basa exclusivamente en el software que lo define.

El nulo se utiliza...
... para dejar aparte los mensajes acerca del estado de evolucin de un proceso que por
norma general aparecen
en pantalla e indican que el
proceso trabaja.

2) La ventana, que es un dispositivo lgico de entrada/salida que combina


cuatro dispositivos fsicos: una pantalla, la memoria, un teclado y un dispositivo apuntador, como puede ser un ratn o un lpiz ptico. La ventana es un
rea grfica almacenada en la memoria que se representa total o parcialmente
sobre una pantalla.
De los cuatro dispositivos que se han mencionado, tenemos que:
La pantalla es el dispositivo donde se reflejan las salidas.
El teclado es el medio para realizar las entradas.
El dispositivo apuntador nos permite llevar a cabo ciertas operaciones de
control sobre la ventana, como el hecho de cerrarla, variar su rea y posicin
o seleccionar una entre otras para poder efectuar entradas desde el teclado.

A diferencia del dispositivo nulo, el software que configura las ventanas se basa
en la manipulacin de los drivers de los dispositivos que lo componen.

3) La cola de mensajes, que es un dispositivo de entrada/salida pensado para


comunicar procesos y que puede tener estas dos resoluciones:

a) Una totalmente lgica, que se basa en una estructura de datos y unas operaciones que la manipulan, que se utilizada para comunicar procesos ejecutados en una misma mquina.

b) Otra que se basa en dispositivos fsicos, como el mdem o la placa de acceso a la red, y que se utiliza para comunicar procesos que se ejecutan en mquinas diferentes.

4) El espacio lgico, que es una agrupacin de informacin almacenada en


la memoria fsica mediante el uso de la memoria virtual. El espacio lgico de

Podis ver el paso de mensajes en el


apartado 7 del mdulo didctico
La concurrencia y la comunicacin.

FUOC P05/75097/00807 Mdulo 4

17

Los dispositivos de entrada/salida

un proceso tambin se puede ver como un dispositivo que se puede leer y escribir. Esta visin de los espacios lgicos no se encuentra lejos del concepto de
fichero y, por tanto, puede recibir el mismo tratamiento.

El espacio lgico resulta til para aplicaciones como los depuradores de programas (debugger), que necesitan acceder al espacio lgico del proceso que estn depurando.
Figura 3

Podis ver la memoria virtual en el


apartado 4 del mdulo didctico
La gestin de la memoria.

FUOC P05/75097/00807 Mdulo 4

18

Los dispositivos de entrada/salida

4. La independencia de los dispositivos

Como programadores nos interesa poder realizar programas portables y que se


adapten a situaciones diferentes, y esta necesidad incluir el entorno de entra-

Podis ver las caractersticas de los


dispositivos en el apartado 2 de este
mdulo didctico.

da/salida donde se van a ejecutar. Hemos visto que los dispositivos presentan
caractersticas que hacen que su gestin y las operaciones que se pueden llevar
a cabo sean diferentes. El objetivo del SO es proporcionar una mquina virtual
que uniformice los dispositivos respetando, al mismo tiempo, sus particularidades, para as facilitar a los usuarios su utilizacin. Esto se consigue independizando el cdigo de los programas con respecto a los dispositivos que utilizan
y a las operaciones a que se dirigen.

Algunos casos, como un programa que copia ficheros, una sencilla mquina
de escribir, un editor de lneas y un visualizador de ficheros, se pueden reducir
a un solo programa que escribe en un dispositivo lo que ha ledo en otro. A
pesar de que se pueda hacer esta simplificacin, y teniendo en cuenta que los
dispositivos con los que tendrn que trabajar los programas anteriores son tan
diferentes, resulta difcil que podamos pensar que un nico programa fuente
pueda servir para todos los dispositivos. A lo largo de este apartado veremos
que, gracias a la gestin del SO, es posible efectuar este conjunto de operaciones con un nico cdigo fuente.

Podis ver el ejemplo comodn


del subapartado 5.2. del presente
mdulo didctico.

4.1. Los dispositivos virtuales

El primer paso para independizar los programas del entorno de entrada/


salida con el que trabajarn se basa en el uso de los dispositivos virtuales.
Un dispositivo virtual es un dispositivo que, a priori, no se encuentra
asociado a ningn dispositivo real. Este programa ser utilizado por el
programa igual que cualquier otro dispositivo, pero sin saber de entrada
sobre qu dispositivo en concreto se van a llevar a cabo las operaciones
que se especifican en l. Ser en tiempo de ejecucin del programa cuando el sistema asociar un dispositivo real al dispositivo virtual mediante
el cdigo del SO (observad la figura 3).

Esta asociacin entre dispositivo real y virtual se puede materializar de las


dos maneras siguientes:

a) En la asociacin implcita, tambin denominada redireccionamiento de las


entradas/salidas, el programa ya encuentra la asociacin realizada en el instante
en que inicia su ejecucin. El sistema y el proceso que ha iniciado la ejecucin

Veremos cmo los procesos pueden


establecer la asociacin entre
dispositivo real y virtual por medio
del sistema en el apartado 5 de este
mdulo y en el subapartado 2.4.
del mdulo La gestin de procesos.

FUOC P05/75097/00807 Mdulo 4

19

Los dispositivos de entrada/salida

del programa se encargan de efectuar la asociacin. En general, los dispositivos


virtuales asociados implcitamente reciben el nombre de dispositivos estndar;
en el caso de UNIX tenemos tres: el estndar de entrada (standard input), el de
salida (standard output) y el de error (standard error).

Podis ver los dispositivos estndar


en el apartado 5 de este mdulo
didctico.

b) La asociacin explcita entre un dispositivo real y uno virtual es efectuada


por el mismo programa durante la ejecucin. Para llevarla a cabo necesita una
operacin especfica que, dado un dispositivo real, genere el dispositivo virtual asociado. A partir del momento en que se ha realizado la asociacin, el programa especificar todas las operaciones de entrada/salida del dispositivo
mediante el dispositivo virtual.

Podis ver cmo se usan las


operaciones utilizadas en la
asociacin explcita para llevar
a cabo verificaciones de proteccin
en el apartado 4 del mdulo El sistema
de ficheros.

4.2. Las operaciones uniformes

Para conseguir la independencia de los programas con respecto a las entradas/salidas no es suficiente con el uso de dispositivos virtuales. No sirve de nada hacer
que los programas trabajen sobre dispositivos virtuales si stos tienen que utilizar
operaciones especficas de los dispositivos reales con los cuales estn asociados.
Para evitar que los programas se vean obligados a conocer las particularidades de
los dispositivos reales, el sistema tiene que uniformizar el conjunto de las operaciones que se pueden realizar sobre los dispositivos.

Para hacerlo, es necesario conocer cules son las operaciones ms utilizadas


por los programas y cules son las ms comunes a la mayora de los dispositivos. Estas operaciones se tienen que redefinir en un conjunto nuevo de operaciones independientes de las caractersticas de los dispositivos, que tiene que
ofrecer el sistema. Con el fin de proporcionar esta nueva funcionalidad, el sistema aade una capa de software por encima de los drivers dependientes de los
dispositivos: las operaciones independientes de los dispositivos.

Si analizamos las operaciones de entrada/salida, podemos ver que hay operaciones bsicas de acceso y de control orientadas a proporcionar un acceso uniforme,
y operaciones especficas de control orientadas a gestionar las particularidades de
cada dispositivo. A continuacin vamos a estudiar cada una de estas operaciones.

1) Operaciones bsicas de acceso

Los drivers se han tratado en el


subapartado 3.1. de este mdulo
didctico.

FUOC P05/75097/00807 Mdulo 4

20

Los dispositivos de entrada/salida

Las operaciones bsicas de acceso son dos: leer y escribir, y nos tienen
que permitir acceder a la informacin con independencia del dispositivo.
Su funcionalidad debe ser compatible con la dinmica de funcionalidad
de todos los dispositivos; esta dinmica incluye el tipo de acceso (secuencial o directo) y el tipo y la estructura de los datos que hay que transferir.

El tipo de acceso ms habitual es el secuencial, aunque hay que dar opcin al


hecho de que las aplicaciones puedan realizar accesos directos a la informacin. Para permitirlo, es necesario proporcionar la operacin posicionar, que se
analiza junto con las operaciones bsicas de control.

Para especificar qu informacin hay que transferir es suficiente con dos


parmetros:
La variable desde la cual se extraern o se introducirn los datos con la operacin (buf).
El nmero de datos que hay que transferir (cont).
Si no introducimos ms parmetros, tenemos que suponer que accedemos
siempre al mismo tipo de datos. De no ser as, sera necesario incluir otro parmetro que especificase con qu tipo de datos reconocidos por el sistema se
quiere realizar la operacin de entrada/salida.

Ahora bien, la mayor parte de los sistemas reducen todos los tipos de datos posibles a uno solo, el ms elemental, el byte. El motivo de esta decisin es sencillo: no se pueden reconocer todos los tipos posibles; por ms tipos que
reconociese el sistema, siempre surgiran aplicaciones con tipos nuevos. Por
otro lado, cualquier tratamiento especfico se puede realizar a nivel de librera
o de programa. Esta idea encaja a la perfeccin con uno de los principios de
los SO: ofrecer herramientas para que los usuarios del sistema o su administrador puedan hacer polticas que se adapten a sus necesidades particulares.

Con el fin de completar la lista de parmetros, hay que indicar el dispositivo


virtual sobre el cual se quiere trabajar (disp) y, por ltimo, tras haber ejecutado
estas operaciones, el sistema tiene que volver al estado en que han finalizado.

As pues, las operaciones de acceso mnimas quedan tal y como se indica a continuacin:
Estado = leer(disp, buff, cont).
Estado = escribir(disp, buff, cont).

Podis ver el acceso secuencial en el


subapartado 2.2. de este mdulo
didctico.

FUOC P05/75097/00807 Mdulo 4

21

2) Operaciones bsicas de control

Hay tres operaciones bsicas de control: posicionar, abrir y cerrar, las


cuales permiten llevar a cabo las operaciones de control ms comunes
que se ejecutan sobre los dispositivos.

Tal y como hemos visto en el caso de las operaciones de acceso, es necesario


proporcionar un mecanismo para efectuar accesos directos. La operacin posicionar nos tiene que permitir acceder de manera directa a cualquier posicin
dentro de la informacin de los dispositivos que lo permitan. Los parmetros
necesarios para ejecutar esta operacin son los dos siguientes:
El dispositivo virtual sobre el cual se quiere efectuar la operacin (disp).
La posicin donde o desde donde se quiere llevar a cabo la siguiente operacin de acceso (pos).
El inicio y el final de una sesin de acceso a un dispositivo se definen con las
operaciones abrir y cerrar. Las aplicaciones no suelen acceder a los dispositivos
de manera aislada, sino que por lo general realizan una serie de accesos que
siguen una misma pauta: o bien se escribe todo un fichero de manera secuencial, o bien se modifica parcialmente mediante un acceso directo, o bien se lee
de forma secuencial, etc. En cada una de estas sesiones los accesos que la componen tienen necesidades comunes.
Si no existiesen las operaciones abrir y cerrar que enmarcan todos los accesos
de una sesin, sera necesario cubrir las necesidades comunes de cada acceso
y, en consecuencia, se multiplicara el trabajo que tiene que llevar a cabo el
sistema. Podemos resumir estas necesidades en tres ideas bsicas:
1) Asociar un dispositivo real a un dispositivo virtual de manera explcita.
2) Inicializar las estructuras de datos internos del SO que sean necesarias para
realizar los accesos (secuencial y directo).
3) Verificar los derechos de acceso que tiene el proceso sobre el dispositivo.

Los dispositivos de entrada/salida

FUOC P05/75097/00807 Mdulo 4

22

Los dispositivos de entrada/salida

Al abrir una sesin de trabajo con un dispositivo, mediante la operacin abrir,


debemos indicar los siguientes datos:
El nombre del dispositivo real (nombre).
El tipo de acceso* que se quiere efectuar (op).
Con estos parmetros el sistema debe verificar la existencia del dispositivo y
los derechos de acceso del proceso sobre este dispositivo. Si el dispositivo existe y se tiene derecho de acceso al mismo, el sistema generar un dispositivo
virtual que lo asociar, para esta sesin de trabajo, con el dispositivo real. Al
mismo tiempo, inicializar los punteros de acceso secuencial a los valores necesarios, al inicio de la informacin del dispositivo en caso de lectura y modificacin, y al final de la informacin en caso de escritura.

Al cerrar la sesin de trabajo con el dispositivo, cuando ejecutamos la operacin cerrar, el sistema liberar las estructuras de datos necesarias para el acceso y deshar la asociacin entre el dispositivo virtual y el real.

Las operaciones abrir y cerrar se utilizan para llevar a cabo de manera explcita
el conjunto de operaciones. El sistema, sin embargo, las puede efectuar de manera implcita en el momento de iniciar o finalizar un proceso, tal y como hemos comentado en el caso de la asignacin de dispositivos reales a virtuales.

As pues, las operaciones de control podran ser las siguientes:


Estado = posicionar(disp, pos).
Disp = abrir(nombre, op).
Estado = cerrar(disp).

3) Operaciones especficas de control

Finalmente, el sistema permite, mediante la operacin control, que los


usuarios que lo necesiten puedan utilizar las particularidades de los dispositivos.

Podemos encontrar la operacin de control de las dos maneras siguientes:


a) Como una operacin nica con parmetros variables que dependen de la
funcin que se quiere efectuar y del dispositivo sobre el cual se lleva a cabo.
b) Como tantas operaciones diferentes como funciones hay que realizar.

* Los accesos pueden ser de lectura,


escritura o modificacin.

Podis ver el control de accesos


sobre los dispositivos en el
subapartado 4.3. del mdulo
didctico El sistema de ficheros.

FUOC P05/75097/00807 Mdulo 4

23

5. La gestin de dispositivos en UNIX

UNIX, como todos los SO, ofrece una visin de los dispositivos que hace que
las caractersticas propias de cada uno sean transparentes para el usuario. En
UNIX, un dispositivo es cualquier objeto sobre el cual se pueden realizar operaciones de lectura o escritura.
El punto de vista del usuario de UNIX es de un dispositivo sobre el cual se pueden
escribir o leer secuencias de bytes utilizando un entorno nico y bien definido.
El sistema operativo UNIX reconoce los dos tipos bsicos de dispositivos que
mencionamos a continuacin:
1) Los dispositivos de bloques, como por ejemplo los discos, las cintas y los
ficheros, permiten el acceso directo, ya que la unidad de direccionamiento es
un bloque de tamao fijado por el sistema.
Para estos tipos de dispositivos, UNIX utiliza una memoria cach de bloques
con la finalidad de mejorar el rendimiento en sus accesos.
2) Los dispositivos de caracteres, como los terminales, las impresoras, los ratones, etc. En general, todos aquellos dispositivos que no utilizan la memoria
cach de bloques; suelen ser dispositivos sobre los cuales se tienen que llevar
a cabo los accesos de manera secuencial.
Dispositivos de bloques

Dispositivos de carcteres

Internamente, los diferentes tipos de dispositivos se identifican por su


tipo bsico, bloques o caracteres, y por un nmero denominado major.
Los diferentes dispositivos de un mismo tipo se identifican mediante
otro nmero, denominado minor
As pues, internamente un dispositivo se identifica por completo por el
tro: tipo bsico, major, minor.

Los dispositivos de entrada/salida

FUOC P05/75097/00807 Mdulo 4

24

Los dispositivos de entrada/salida

El sistema gestiona los dispositivos por medio de drivers asociados a cada tipo
de dispositivo, como se muestra en la figura que vemos a continuacin:

Figura 4

El usuario que quiere dirigirse a los dispositivos reales de UNIX, tiene que hacerlo por medio del sistema de ficheros mediante el cual UNIX nombra ficheros especiales.

Por ejemplo,...
... en UNIX la impresora tiene
el nombre /dev/1p0, y el disco se llama /dev/hda.

El acceso bsico a los dispositivos que UNIX ofrece a los procesos es el secuencial, aunque tambin proporciona llamadas para que puedan efectuar accesos
directos.

Otra caracterstica importante es el control de accesos simultneos a un mismo dispositivo. Por defecto, UNIX permite que ms de un proceso acceda de
manera concurrente al mismo dispositivo, a pesar de que proporciona las herramientas necesarias, mediante las llamadas de control, para que los usuarios
puedan trabajar con modelos de exclusin mutua.

Podis ver los modelos de exclusin


mutua en el apartado 2 del mdulo
didctico El estado del arte de los
sistemas operativos actuales.

Los procesos utilizan los file descriptors* para acceder a los dispositivos una vez
han sido abiertos. Desde el punto de vista del usuario, un file descriptor es un
nmero local en el proceso que forma parte de su entorno de ejecucin.

En UNIX encontraremos tres file descriptors que por lo general estn asignados
de manera implcita y por convenio tienen un significado concreto: el 0 o estndar de entrada (standard input), el 1 o estndar de salida (standard output), y el 2

* Los file descriptors son los


dispositivos virtuales de UNIX.

FUOC P05/75097/00807 Mdulo 4

25

Los dispositivos de entrada/salida

o estndar de error (standard error). Los dispositivos estndares de entrada y de


salida hacen referencia a la entrada/salida por defecto, y el dispositivo estndar
de error se utiliza para comunicar las situaciones anmalas o de control en que
se encuentra el proceso durante su ejecucin.

Figura 5

Por ejemplo,...

5.1. Las pipes, un caso especial de dispositivo

Una pipe es un dispositivo lgico destinado a comunicar procesos. Su


funcionamiento es el de una cola de caracteres con una longitud fija en
la que los procesos pueden escribir y leer.

Un proceso, cuando quiere utilizar las pipes, se puede encontrar con los dos
problemas siguientes:

Si intenta leer sobre una pipe vaca se quedar bloqueado hasta que algn
otro proceso escriba en l los caracteres suficientes como para que el proceso bloqueado pueda efectuar la lectura.

Si intenta escribir sobre una pipe llena se quedar bloqueado hasta que algn otro proceso lea suficientes caracteres de la pipe como para que el proceso bloqueado pueda efectuar la escritura.

... un compilador puede leer el


fichero fuente por el estndar
de entrada, escribir el ejecutable por el de salida, e indicar
los errores o hacer advertencias
sobre el estilo del programa
por el estndar de error.

FUOC P05/75097/00807 Mdulo 4

26

Los dispositivos de entrada/salida

Figura 6

Existen dos tipos de pipes: las named pipes y las denominadas simplemente pipes.
1) Una named pipe es un dispositivo normal con un nombre que forma parte
del sistema de ficheros, y cuyo comportamiento es idntico al de cualquier dispositivo.

2) Una pipe es un dispositivo que se crea en el momento en que un proceso lo


abre, y se destruye cuando lo cierra el ltimo proceso lo que tiene abierto. Es un

Podis ver la asociacin implcita


de una pipe a un dispositivo en el
apartado 4 del mdulo didctico
La gestin de procesos.

dispositivo que no se puede abrir de manera explcita mediante la operacin


abrir (open). Una vez ha sido creado, los diferentes procesos que quieren utilizarlo lo tienen que asociar a un dispositivo virtual* de manera implcita. A causa
de esta particularidad, las pipes no tienen asociado ningn nombre que aparezca
en el sistema de ficheros.

5.2. El punto de vista desde las llamadas al sistema


El objetivo de este subapartado es realizar un breve repaso de las principales llamadas al sistema relacionadas con la entrada/salida. En ningn caso pretendemos hacer una descripcin exhaustiva de todas sus posibilidades y sintaxis.
En general, el sistema operativo UNIX posee una estructura de llamadas al sistema idntica a la que hemos descrito a lo largo de este mdulo. Las correspon-

* En UNIX, un dispositivo virtual


es un file descriptor.

FUOC P05/75097/00807 Mdulo 4

27

Los dispositivos de entrada/salida

dencias entre las llamadas de UNIX y las que hemos visto en las operaciones
uniformes son las que mostramos en la siguiente tabla:
Operaciones uniformes
Llamadas al sistema

Llamadas de UNIX

Leer

read

Escribir

write

Posicionar

lseek

Abrir

open

Cerrar

close
ioctl

Control
fcntl

Operaciones de control
ioctl: controla el dispositivo real asociado a un
file descriptor.
fcntl: controla las caractersticas del file descriptor
y de la sesin de entrada/
salida a la que representa.

El proceso comodn
Un ejemplo de uso de las llamadas de entrada/salida de UNIX es un proceso que escribe en
la salida estndar lo que ha ledo en la entrada estndar.

/ * PROCESO COMODIN */
main ( )
{
char buff ;
int fin_in, fin_out;
fin_out = 1;
fin_in = read (0, &buff, 1);
/*mientras la entrada no encuentre fin de fichero,*/
/*y no se produzcan errores de acceso* /
while ((fin_in>0) && (fin_out>0))
{
fin_out = write(1, &buff, 1);
fin_in =read(0, &buff, 1) ;
}
}

Un caso especial son las llamadas pipe y dup:


La llamada al sistema pipe crea una pipe y dos file descriptors, uno para lectura y otro para escritura. Una vez se ha creado, se accede a la pipe como si
fuese un dispositivo ms.
La llamada al sistema dup asocia un nuevo file descriptor al dispositivo relacionado con el file descriptor que se le pasa como parmetro.

5.3. El punto de vista desde el intrprete de rdenes (shell)


En este subapartado, como hicimos en el anterior, introducimos las principales caractersticas de los intrpretes de rdenes o shells de UNIX, sin pretender
ser exhaustivos.

Podis ver cmo se pueden utilizar


las llamadas pipe y dup para
redireccionar y enlazar los file descriptors
de diferentes procesos en el apartado 4
del mdulo La gestin de procesos.

FUOC P05/75097/00807 Mdulo 4

28

Los dispositivos de entrada/salida

El tema ms interesante de UNIX, desde el punto de vista de las entradas/salidas,


es la facilidad con que se pueden redireccionar los files descriptors estndares de los
procesos desde el shell, y el potencial que esto representa.
Para entender este potencial es necesario analizar los dos factores que mencionamos a continuacin:
1) El primer concepto que hay que utilizar es el de filtro. Un filtro es un programa que lee la entrada estndar, manipula la informacin y escribe el resultado de esta manipulacin en la salida estndar, y repite esta operacin hasta
que detecta un final de fichero.
Marca de fin de fichero
El sistema informa a los procesos, mediante la seal de fin de fichero, de que leen de un dispositivo sobre el cual ya no se puede conseguir ms informacin. Por ejemplo, si se accede
secuencialmente a un fichero y se intenta leer informacin ms all del ltimo carcter
almacenado, o en el caso de acceder a una pipe, si se ha ledo toda la informacin que contena y no quedan ms procesos que la tengan abierta para escritura. En UNIX esta seal se traduce en el hecho de que la operacin read retorna un nmero positivo menor que el
nmero de caracteres que se ha solicitado en leer.

2) El redireccionamiento es el segundo concepto. Mediante la sintaxis del


shell se pueden redireccionar los files descriptors estndar de un proceso desde
la rden que los invoca.
El smbolo < se utiliza para redireccionar el estndar de entrada, y el smbolo >
para el estndar de salida.
Ejemplos de redireccionamiento
$ ps

ps muestra por la salida estndar actual el estado


de los procesos.

$ ps > nombre

Guarda el estado de los procesos en un fichero nombre.

$ tail

tail muestra en la salida estndar las ltimas diez lneas


que entran por la entrada estndar.

$ tail < nombre

Muestra por la salida estndar actual las diez ltimas


lneas del fichero nombre.

3) En tercer lugar, desde una rden podemos encadenar la ejecucin de ms


de un programa mediante pipes. Esto se consigue redireccionando la salida estndar de un proceso y la entrada estndar de otro a una pipe.
Para indicar que se conectan dos procesos mediante una pipe se utiliza el smbolo |.
Ejemplo de encadenamiento
Podemos combinar las dos rdenes anteriores con el filtro sort (que ordena lo que lee por
la entrada estndar y lo escribe en la salida estndar) para conseguir los nueve procesos que
utilizan durante ms tiempo la CPU.
La instruccin $ ps aux | sort + 2 3 | tail > nombre enva al fichero nombre
la informacin de los nueve procesos que utilizan durante ms tiempo la CPU.

Ejemplo de filtro
La rden de UNIX tail es un filtro que muestra por la salida
estndar las ltimas diez lneas
que ha ledo por la entrada
estndar.

FUOC P05/75097/00807 Mdulo 4

29

Los dispositivos de entrada/salida

Resultado
ejecutar
aux
Result at dde
execut
ar psps- -aux
USER

PID

%UCP

%MEM

SIZE

RSS

TTY

STAT

START

TIME

COMMAND

root

0.5

1.0

848

336

06:24

0:02

init

root

0.0

0.0

SW

06:24

0:00

(kflushd)

root

0.0

0.0

SW<

06:24

0:00

(kswapd)

root

0.0

0.0

SW

06:24

0:00

(nfsiod)

root

0.0

0.0

SW

06:24

0:00

(nfsiod)

root

0.0

0.0

SW

06:24

0:00

(nfsiod)

root

0.0

0.0

SW

06:24

0:00

(nfsiod)

root

13

0.0

0.8

824

256

06:24

0:00

/sbin/update

root

14

0.0

0.9

836

304

06:24

0:00

/sbin/kerneld

root

60

0.0

1.2

856

392

06:24

0:00

/usr/sbin/syslogd

root

61

0.0

1.8

1104

560

06:24

0:00

/usr/sbin/klogd

root

64

0.0

1.0

844

324

06:24

0:00

/usr/sbin/crond - l10

root

88

0.0

0.9

840

292

06:24

0:00

/sbin/agetty 38400 tt

root

89

0.0

0.9

840

292

06:24

0:00

/sbin/agetty 38400 tt

root

90

0.0

0.9

840

292

06:24

0:00

/sbin/agetty 38400 tt

root

91

0.0

0.9

840

292

06:24

0:00

/sbin/agetty 38400 tt

root

92

0.0

0.9

840

292

06:24

0:00

/sbin/agetty 38400 tt

root

116

0.3

2.1

1188

656

06:28

0:00

-sh

root

126

0.0

1.1

876

356

06:30

0:00

ps - aux

alum1

87

0.0

1.9

1160

604

06:24

0:00

-bash

Result
d execut
$ps- -aux
aux|/ sort
sort ++ 2 -- 33 /|tail
Resultado
deatejecutar
$Sar ps
tail> >nom
nombre
USER

PID

%UCP

%MEM

SIZE

RSS

TTY

STAT

START

TIME

COMMAND

root

90

0.0

0.9

840

292

06:24

0:00

/sbin/agetty 38400 tt

root

91

0.0

0.9

840

292

06:24

0:00

/sbin/agetty 38400 tt

root

92

0.0

0.9

840

292

06:24

0:00

/sbin/agetty 38400 tt

root

127

0.0

1.1

876

356

06:31

0:00

ps - aux

root

128

0.0

2.1

1188

656

06:31

0:00

-sh

root

129

0.0

2.1

1188

656

06:31

0:00

-sh

alum1

87

0.0

1.9

1160

604

06:24

0:00

-bash

root

116

0.3

2.1

1188

656

06:28

0:00

-sh

root

0.5

1.0

848

336

06:24

0:02

init

FUOC P05/75097/00807 Mdulo 4

30

Pues bien, como se puede apreciar, si tenemos un conjunto de filtros que realizan funciones concretas podemos, mediante las pipes y las redirecciones,
efectuar operaciones realmente complejas sin tener que escribir ni una sola lnea de cdigo.
Ejemplo de utilizacin del proceso comodn
Copia el contenido del fichero origen en el fichero destino.

$ comodin < origen > destino

Acta como una mquina de escribir enviando todo lo que escribimos en el terminal hacia
la impresora.

$ comodin < /dev/tty > /dev/1p0

Edita el fichero destino. Acta como un sencillo editor de lneas.

$ comodin < /dev/tty > destino

Muestra el contenido del fichero origen.

$ comodin < origen > /dev/tty

Los dispositivos de entrada/salida

FUOC P05/75097/00807 Mdulo 4

31

Resumen

En este captulo hemos estudiado el concepto de dispositivo de entrada/salida bsicamente desde el punto de vista del usuario del sistema. Asimismo,
hemos podido observar que hay diferentes tipos de dispositivos reales (fsicos y lgicos) con caractersticas y particularidades muy diferentes. Ante esta
realidad, el objetivo del SO consiste en ofrecer una visin de los dispositivos
que, en principio, haga transparentes todas estas particularidades para los
usuarios, con el fin de que las aplicaciones tengan la mxima independencia
con respecto a los dispositivos que utilizan. Ahora bien, el SO tiene que permitir tambin que aquellas aplicaciones que lo necesiten puedan manipular
las caractersticas y extraer todo el rendimiento que stas ofrecen. Para conseguirlo, la gestin de los dispositivos que lleva a cabo el SO proporciona un interfaz
de acceso que est formado por los elementos que anotamos a continuacin:
Operaciones uniformes independientes de las caractersticas concretas de
los dispositivos.
Dispositivos virtuales sobre los cuales trabajan estas operaciones independientes.
Como caso concreto hemos analizado el sistema de entrada/salida de UNIX,
en el que se puede destacar:
El redireccionamiento de los dispositivos estndar de entrada/salida desde el intrprete de rdenes.
Las pipes, como un caso de dispositivo lgico que permite comunicar procesos entre s.
Los programas filtro que permiten efectuar operaciones complejas a partir
del encadenamiento de pequeos programas mediante pipes.

Los dispositivos de entrada/salida

FUOC P05/75097/00807 Mdulo 4

33

Actividades
1. Estudiad en el manual de UNIX qu redireccionamientos se pueden llevar a cabo desde los
intrpretes de rdenes Bourne shell (sh) y Cshell (csh).
2. Analizad las rdenes de UNIX y familiarizaos en especial con aquellos que se puedan considerar filtros.
3. Estudiad, en el apartado 4 del manual de UNIX, los dispositivos tty, mt y sd. Analizad
las caractersticas que tienen y cmo se pueden alterar, tanto desde el intrprete de rdenes
como desde las llamadas al SO.
4. Confrontad vuestra experiencia como usuarios de Windows 95 con lo que hemos estudiado
en este mdulo didctico.

Ejercicios de autoevaluacin
1. Cules de estos ficheros se pueden imprimir?
a) Un fichero con cdigo fuente.
b) Un fichero objeto.
c) Un fichero con ensamblador.
d) Un fichero ejecutable.
Justificad la respuesta.
2. Creis que el reloj del sistema se puede considerar un dispositivo? Justificad vuestra respuesta.
3. Estableced las ventajas y los inconvenientes del hecho de que el SO reconozca la estructura
de la informacin. Justificad la respuesta.
4. En los terminales de UNIX, el carcter ^D (control D) hace que el SO d una seal de fin
de fichero al proceso que est llevando a cabo una lectura. Determinad qu resultado obtenemos si realizamos la siguiente entrada en el terminal:

$ comodin > fichero


Esto es una prueba. ^D
$ comodin < fichero

Indicad qu resultado obtenemos si escribimos la secuencia anterior en un fichero de rdenes


denominado script y ejecutamos:

$ sh <script

Justificad la respuesta.
5. Cules de estos dispositivos utilizan la tcnica del buffering?
a) La pantalla.
b) El ratn.
c) El teclado.
d) El disco.
Justificad la respuesta.
6. Los procesos que utilizan ventanas, en qu caso pueden recibir una seal de fin de fichero?
7. Qu parmetros debera tener una operacin de lectura o escritura que diese acceso secuencial a la informacin si no existiesen las operaciones abrir y cerrar? Y si el acceso fuese directo?
Justificad vuestras respuestas.
8. Los dispositivos virtuales pueden ser asignados a dispositivos reales de manera implcita o
explcita. Qu consecuencias puede tener el hecho de disponer slo de la asignacin explcita? Y si slo tenemos la implcita? Justificad las respuestas.
9. Qu consecuencias tiene el hecho de redireccionar la entrada y la salida estndar del proceso comodn hacia un terminal? Cmo se podra solucionar? Justificad las respuestas.

Los dispositivos de entrada/salida

FUOC P05/75097/00807 Mdulo 4

34

Solucionario
Ejercicios de autoevaluacin
1. Se pueden imprimir a, c, y d, porque la impresora es un dispositivo de tipo orientado a
caracteres y, por lo tanto, todos los ficheros de texto son imprimibles. Debemos tener claro
que puede haber ficheros ejecutables que sean de texto, como los scripts. Los ficheros objeto
o binarios no son imprimibles, puesto que su codificacin no se basa en caracteres, y en caso
de que se impriman, el resultado es ininteligible.
2. S, porque por definicin un dispositivo de entrada/salida es un objeto gestionado por el
SO sobre el cual los procesos pueden realizar una operacin de lectura y/o escritura para obtener, almacenar, mostrar o transferir informacin. Esta definicin se puede aplicar al reloj
del sistema, ya que existe la posibilidad de llevar a cabo tanto operaciones de lectura como
de escritura (consultar la hora actual y poner el reloj en hora, por ejemplo), con la finalidad
de mostrarlo por pantalla, sincronizar procesos, sincronizar mquinas, etc.
3. La principal ventaja del hecho de que el SO reconozca la estructura de la informacin es que
permite controlar que las manipulaciones que se realizan sobre la informacin sean correctas. Por
ejemplo, que slo se puedan editar ficheros de texto y no de dispositivo, o que los directorios no
se puedan crear a mano como lo haramos con un fichero de texto (esto da ms seguridad), etc.
Como principal inconveniente encontramos el hecho de que el sistema no puede prever
todos los posibles tipos de ficheros y, por tanto, puede ser que el hecho de tener que conocer
todos las posibles estructuras de los ficheros se convierta en una barrera que impida la adaptacin del sistema a nuevas situaciones.
Otro inconveniente es que nos aporta menos flexibilidad a la hora de llevar a cabo operaciones que estn fuera de lo habitual, por ejemplo editar un fichero objeto para ver su contenido.
4. Con la primera secuencia se crea el fichero con el contenido Esto es una prueba. El
carcter ^D no se guarda en el fichero, puesto que el dispositivo terminal lo interpreta como
la seal de fin de fichero. Al ejecutar la segunda rden de esta secuencia se visualiza el contenido del fichero.
En la segunda secuencia se han escrito las rdenes de la primera dentro del fichero script.
El intrprete de rdenes tiene su entrada estndar redireccionada desde el fichero. Todas las
rdenes que ejecute tienen, salvo que se indique lo contrario, las mismas entradas/salidas estndar. El resultado de todas estas circunstancias hace que la rden comodin > fichero tenga como estndar de entrada el fichero script. Debido a que el carcter ^D no es
interpretado por los dispositivos ficheros, el programa comodn no detectar el final de fichero hasta que no haya ledo la totalidad del fichero script. As pues, el resultado, a pesar de
que aparentemente tendra que ser igual, es diferente.
5. La utilizan b y c, puesto que ambos son dispositivos de entrada y tienen una velocidad
muy diferente de la del procesador. Con el objetivo de reducir esta diferencia, se utiliza el
almacenamiento en la memoria intermedia, y para poder verlo con ms claridad slo tenemos que fijarnos en que cuando el intrprete de rdenes est ejecutando una rden, ya se
puede escribir la siguiente. Esta segunda rden se guarda en la memoria intermedia hasta que
el intrprete la reclame. De esta manera se agiliza todo el proceso de entrada/salida.
El disco es un dispositivo que tambin trabaja a una velocidad significativamente menor que
la del procesador. A diferencia del teclado y el ratn, el disco es un dispositivo tanto de entrada como de salida, y en ambos casos se puede utilizar la tcnica del almacenamiento en la
memoria intermedia para reducir el impacto de esta diferencia de velocidad. En el caso de la
entrada permitir leer bloques (unidad de transferencia del disco) y almacenarlos en la memoria intermedia hasta que los procesos necesiten la informacin. Y en el caso de la salida,
los procesos dejan la informacin en la memoria intermedia y su ejecucin contina sin esperar que el sistema haya finalizado la escritura sobre el disco.
Por ltimo, la pantalla es un dispositivo que no se encuentra con el problema de las diferencias de velocidad y, por tanto, no necesita utilizar la tcnica de almacenamiento en la memoria intermedia.
6. Una seal de fin de fichero informa a los procesos de que estn leyendo un recurso del que
ya no podrn extraer ms informacin. Se podra deducir que un proceso que utiliza una ventana recibir una seal de fin de fichero cuando se haya cerrado la ventana.
7. Si no existiesen las operaciones abrir y cerrar, el sistema no tendra conocimiento de las
sesiones de trabajo con los ficheros, es decir, no podra distinguir qu operaciones se realizan
en asociacin con una u otra sesin. Como consecuencia de este hecho, no se podra guardar
informacin del estado de cada una de las sesiones y de su evolucin.

Los dispositivos de entrada/salida

FUOC P05/75097/00807 Mdulo 4

35

Todo esto se traducir en lo que ahora apuntamos:


Con los accesos secuenciales, el sistema no tendra constancia de cul era la ltima posicin
accedida. Esta informacin se tendra que gestionar desde los programas y pasarla como parmetro al sistema, de modo que las operaciones de acceso secuencial no existiran, se tendran
que construir por programa mediante operaciones de acceso directo.
Las operaciones de acceso tendran que utilizar dispositivos fsicos o lgicos, pero no virtuales, ya que en la operacin abrir se lleva a cabo la asociacin con estos dispositivos.
Finalmente, a pesar de que esto no afecta a los parmetros de las operaciones de acceso,
hay que destacar que cada operacin de acceso tendra que verificar los derechos de acceso
sobre el dispositivo.
As pues, las operaciones de acceso seran todas directas, y tendran los siguientes parmetros:
Estado = acceso (nombre, pos, buff, cont),
donde nombre es el nombre del dispositivo real, pos es la posicin del dispositivo al que se
quiere acceder, buff es la variable a donde o desde donde se efectuar el acceso, y cont es la
cantidad de informacin que hay que transferir.
8. Si slo se dispusiese de la asignacin explcita, no se podran realizar redireccionamientos de
la entrada/salida de los programas y estaramos limitados a las entradas/salidas definidas en el cdigo. Si slo dispusisemos de la asignacin implcita, los programas no podran especificar qu
dispositivos querran llevar a cabo las entradas/ salidas; estaran obligados a utilizar los dispositivos estndar que el sistema tuviese previstos. El hecho de poder realizar redireccionamientos o
no vendra condicionado por el tipo de mecanismo que proporciona el sistema.
9. La principal consecuencia es que todo lo que se escribe se ve dos veces, una por efecto del
modo echo del terminal como dispositivo de entrada, y otra como resultado de la salida que
efecta el programa comodn. Para evitarlo y ver slo una vez lo que se escribe, se tendra
que desactivar el modo echo del terminal.

Glosario
almacenamiento en la memoria principal
Tcnica de entrada/salida que utiliza una memoria intermedia denominada buffer para aminorar las diferencias de velocidad de los dispositivos con respecto a la velocidad de ejecucin
de los procesos.
sin.: buffering
buffering
Ved almacenamiento en la memoria principal.
cooked/raw (cocinado/crudo)
Modos de edicin que se encuentran asociados a los dispositivos de entrada, como pueden
ser los terminales. El modo cooked hace que algunos caracteres que componen la entrada se
interpreten como rdenes que alteran la informacin que se ha introducido. El modo raw no
interpreta ningn carcter y, por lo tanto, todos los caracteres se entregan al proceso que lleva a cabo la operacin de entrada.
dispositivos de entrada/salida
Objeto gestionado por el SO sobre el cual los procesos pueden realizar operaciones de lectura/escritura para obtener, almacenar o transformar informacin.
dispositivo fsico
Dispositivo que existe fsicamente y que est formado por el perifrico y por su hardware de
control, constituyentes de la parte fsica, y por el software que los gestiona, denominado driver.
dispositivo lgico
Dispositivo que no existe fsicamente y que se obtiene como resultado de un software del sistema que lo crea.
dispositivo nulo
Dispositivo de entrada/salida sobre el cual se puede escribir todo lo que se quiere y siempre
contina vaco. Ignora cualquier cosa que se escriba en el mismo, y en la lectura nunca retorna ningn tipo de informacin. Se basa exclusivamente en el software que lo define.
dispositivo virtual
Dispositivo que no se encuentra asociado a priori a ningn dispositivo real. El programa lo utiliza
igual que lo hara con cualquier otro dispositivo, pero sin conocer a priori sobre qu dispositivo
en concreto se efectuarn las operaciones que se especifican en el mismo. El sistema asociar un
dispositivo real al dispositivo virtual en tiempo de ejecucin mediante el cdigo del SO.

Los dispositivos de entrada/salida

FUOC P05/75097/00807 Mdulo 4

36

driver
Software que gestiona un dispositivo de entrada/salida.
echo
Modo de los dispositivos de entrada/salida, como por ejemplo los terminales, que provoca
que se realice una salida de toda la informacin que se entra por el dispositivo, con el objetivo de verificar, y cuando sea necesario corregir, la informacin que se est entrando.
Ved cooked/raw.
file descriptors
Nombre que reciben los dispositivos virtuales en UNIX.
gestin de colas
Tcnica que utilizan las spool (Simultaneous Peripherical Operation On-Line), que permite que
en las entradas/salidas de un proceso encontremos un paso intermedio por dispositivos de
gran capacidad de almacenamiento. Hacen que el computador trabaje con un proceso en
concreto mientras, concurrentemente, los dispositivos finales van extrayendo e incorporando informacin con una mayor lentitud.
sin.: spooling
independencia de los dispositivos
Objetivo del SO que consiste en proporcionar una mquina virtual que uniformice los dispositivos respetando sus particularidades. Esto se consigue independizando el cdigo de los
programas con respecto a los dispositivos que utilizan y las operaciones con que se dirigen a
stos mediante el uso de dispositivos y operaciones independientes.
major y minor
Par de nmeros que identifican internamente los dispositivos de UNIX. El major identifica el
tipo de dispositivo, y el minor identifica un dispositivo concreto del tipo major.
named pipe
Dispositivo lgico de UNIX que se comporta como una pipe, con la diferencia de que tiene
un nombre que consta en el espacio de nombres del sistema de ficheros.
operaciones uniformes
Uniformizacin de las operaciones que proporciona el SO para conseguir la independencia de los
programas con respecto a las entradas/salidas. Para poder proporcionar esta nueva funcin, el sistema aade una capa de software por encima de los drivers que dependen de los dispositivos: las
operaciones uniformes de entrada/salida (que son independientes de los dispositivos).
pipe
Dispositivo lgico de UNIX que se destina a comunicar procesos, cuyo funcionamiento es el
de una cola de caracteres con una longitud fija en la que los procesos pueden escribir y leer.
Es un dispositivo que no figura en el sistema de ficheros, se crea cuando es abierto por un
proceso y se destruye cuando se cierra el ltimo proceso que lo tiene abierto.
spooling
Ved gestin de colas.

Bibliografa
Bibliografa bsica
Milenkovic, M. (1994). Sistemas operativos, conceptos y diseo (2. ed.; trad. de A. Bautista).
Madrid: McGraw-Hill.
Silberschatz, A.; Peterson, J.; Galvin, P. (1994). Sistemas operativos, conceptos fundamentales (3. ed.; trad. de E. Morales). Wilmington: Addison-Wesley Iberoamericana.
Tanenbaum, A. (1993). Sistemas operativos modernos (trad. de O. Palmas). Mxico: Prentice
Hall Hispanoamericana.

Bibliografa complementaria
Robbins, K.; Robbins, S. (1997). UNIX: programacin prctica. Mxico: Prentice Hall Hispanoamericana.

Los dispositivos de entrada/salida

Potrebbero piacerti anche