Está en la página 1de 12

Sistemas Operativos.

Gestión de Entrada/Salida

Índice
Introducción....................................................................................................................................... 2
Tipos de periféricos............................................................................................................................ 3
Objetivos del Sistema de E/S..............................................................................................................4
Software relacionado con la E/S.........................................................................................................5
Driver o controlador........................................................................................................................... 7
Funciones....................................................................................................................................... 7
Estructura...................................................................................................................................... 8
Desarrollador................................................................................................................................. 8
Técnicas de transferencia de E/S........................................................................................................9
E/S programada............................................................................................................................. 9
E/S por interrupciones................................................................................................................. 10
DMA............................................................................................................................................. 11
Almacenamiento intermedio............................................................................................................12
Caching........................................................................................................................................ 12
Buffering...................................................................................................................................... 12
Diferencia entre buffer y caché...............................................................................................13
Spooling....................................................................................................................................... 13

1
Introducción
Todo sistema informático necesita llevar a cabo intercambio de información con usuarios u otros
sistemas informáticos mediante unos dispositivos que denominamos, de manera genérica,
periféricos. Para hacer una operación de E/S entre el Sistema Informático y un periférico, es
necesario conectar estos dispositivos al sistema informático y gestionar de manera adecuada y
eficiente la transferencia de datos.
El Sistema Operativo es el vínculo entre la aplicación de usuario y el hardware de E/S (periféricos)
y, para ello, dispone del Sistema de Entrada/Salida (E/S).
Objetivos del Sistema de E/S:
• El principal objetivo es facilitar las operaciones de E/S entre los periféricos y la memoria o
los registros del procesador.
• Abstraer de la complejidad y peculiaridad hardware de cada periférico, para que las
aplicaciones de usuario los puedan utilizar de una manera estandarizada y más sencilla.

2
Tipos de periféricos
Podemos establecer una primera clasificación de los dispositivos dependiendo de cuál sea el
sentido de flujo de la información:
• De entrada, que introducen en el sistema información externa, como un teclado o un
ratón.
• De salida, que reciben información interna del sistema con el propósito de
proporcionársela al usuario, como es el caso de un monitor o una impresora.
• De entrada/salida, en que el flujo de información es bidireccional, por lo que tanto
introducen como reciben información. Es el caso de un módem o una tarjeta de red.

Otra forma de clasificarlos estaría en función de la velocidad a la que transmiten sus datos, ya que
hay mucha diferencia, por ejemplo, entre dispositivos como un teclado, un disco óptico, un disco
duro o un monitor. En cualquier caso, todos los dispositivos de entrada/salida son mucho más
lentos que la memoria principal.
Hay otra clasificación que depende del modo de envío de los datos:
• Dispositivos de bloques. Se caracterizan por:
- La información se transfiere en bloques de tamaño fijo. Los tamaños más comunes de
los bloques van desde los 512 bytes hasta los 1.024.
- Cada bloque tiene su propia dirección.
- Se puede leer o escribir en un bloque de forma independiente de los demás, en
cualquier momento.
Ejemplos de dispositivos de bloque son: los discos duros, las unidades de estado sólidas
(SSD) o las unidades USB.

• Dispositivos de caracteres. Se caracterizan por:


- La información se transfiere como un flujo de caracteres individuales, sin estructura de
bloque.
- No tienen direcciones propias.
- Al no tener direcciones, no permiten realizar operaciones de búsqueda.
Ejemplos típicos de dispositivos de carácter son: pantalla, ratón, teclado, impresora,
módem, etc.

En definitiva, cada tipo de dispositivo periférico tiene su propia idiosincrasia:


• Funcionalidad diversa: almacenamiento (discos), • Diferentes velocidades (aunque
interfaz de usuario (teclado, ratón), comunicaciones siempre menores que las de la
(tarjetas de red, módem), etc. memoria principal y las de la cpu)
• Diferentes modos de acceso • Diferentes formatos de datos
• Diferentes grados de autonomía e inteligencia • ...

3
Objetivos del Sistema de E/S
El sistema operativo es el vínculo entre la aplicación de usuario y el hardware de E/S
Objetivos del subsistema de E/S del S.O.:
• Ocultar el HW a las aplicaciones
• Proporcionar un interfaz uniforme de acceso (nombres uniformes)
• Garantizar la independencia del dispositivo
• Poder escribir programas capaces de acceder a un dispositivo de E/S sin saber de
antemano de qué dispositivo se trata
• Manejo de errores
• Gestión de distintos tipos de dispositivos:
◦ Compartidos o dedicados
◦ De carácter o de bloque
◦ De acceso secuencial o aleatorio
◦ Etc. . .

4
Software relacionado con la E/S
Es necesario que exista software dedicado a la gestión de la E/S tanto en el lado del Sistema
Operativo como en el lado del periférico.

Sistema Operativo
• Una parte del Sistema de E/S del Sistema Operativo está dedicada a la gestión de la E/S
independientemente del dispositivo.
• El propio Sistema Operativo necesita disponer de otro componente lógico que haga de
interfaz entre él y el periférico. Este componente es el denominado driver o controlador,
que logra abstraer al resto del sistema operativo y a las aplicaciones de usuarios de los
detalles particulares del hardware.

Periférico
• El dispositivo hardware incluye un componente lógico que actúa como interfaz con el
controlador (firmware).

5
Cuando un proceso necesita comunicarse con un
dispositivo, lo hace a través de órdenes comunes a
todos los dispositivos de su tipo y es el driver
(controlador) el encargado de traducir estas órdenes
genéricas a las particulares que necesite ese hardware
específico.
En consecuencia, los drivers son específicos para un
sistema operativo y hardware, de modo que, dos
impresoras de distinto modelo, requerirán sendos
drivers para su funcionamiento en un mismo Sistema
Operativo.

Driver o controlador
Funciones
• Control y temporización: coordinar el tráfico entre los recursos internos y los dispositivos
externos
• Almacenamiento temporal de datos: compensar la diferencia de velocidad entre las
transferencias
◦ Si los datos llegan con demasiada rapidez se almacenan y se van procesando al ritmo
adecuado
◦ Si los datos llegan con demasiada lentitud se van almacenando y se procesan cuando
hay suficientes
• Detección de errores
◦ Defectos mecánicos o eléctricos
◦ Errores de transmisión
• Comunicación con el procesador
◦ Decodificar órdenes provenientes del procesador
◦ Intercambiar datos
◦ Comunicar información de estado y condiciones de error
◦ Reconocimiento de una dirección como correspondiente a uno de los periféricos bajo
control
• Comunicación con el dispositivo: intercambio de señales de control, estado y datos

6
Modo de ejecución
Tradicionalmente, los drivers se ejecutan en modo kernel, lo que provoca problemas cuando
fallan, ya que pueden dar al traste con todo el sistema operativo. Cada vez es más común, sin
embargo, que se ejecuten en modo usuario.

Estructura

Componentes:
• Registro de datos: Almacena los datos que se envían/reciben
• Registro de estado:
◦ Proporciona información del estado actual
◦ Puede funcionar como un registro de control para almacenar la información de control
transmitida por el procesador
• Lógica de entrada/salida
◦ Interactúa con el procesador por medio de líneas de control por las que recibe órdenes
del procesador pero que también puede usar para solicitar recursos (acceso al bus…)
◦ Reconoce y genera los identificadores asociados con cada dispositivo que controla
• Lógica específica de interfaz con cada dispositivo gestionado

7
Desarrollador
Respecto al autor del controlador, podemos encontrar distintos tipos:
• Genéricos, que son los que vienen incorporados en el propio sistema operativo y cubren un
amplio abanico de modelos y marcas, aunque pueden no explotar todas las posibilidades
de un dispositivo concreto o mermar el rendimiento.
• Oficiales, que son los desarrollados y distribuidos por el propio fabricante del software y
requieren su instalación explícita. Por lo general, son los que proporcionan un mejor
rendimiento.
• Libres, que son los desarrollados por la comunidad con la colaboración o sin ayuda del
propio fabricante. Su calidad depende en gran medida de la información que proporcione
el fabricante sobre el diseño del dispositivo.

Técnicas de transferencia de E/S


Toda operación de E/S que se lleva a cabo entre el sistema informático y un periférico es solicitada
y gobernada desde el procesador, es decir, es el procesador quien determina en qué momento se
debe hacer y con qué periférico, si la operación es de lectura o escritura, qué datos se han de
transferir, y también quién da la operación por acabada.
Sin embargo, se distinguen varías técnicas de E/S según la intervención de la CPU. Son las
siguientes:
• Transferencia de E/S a memoria a través de la CPU
◦ E/S programada
◦ E/S por interrupciones
• Transferencia de E/S directa a memoria
◦ Acceso directo a memoria (DMA)

E/S programada
Es la más sencilla de implementar, pero repercute en la velocidad de proceso del ordenador
porque la CPU debe dejar todo lo que está haciendo para ocuparse del proceso de entrada/salida.
Funciona de la siguiente manera:
• Al encontrar una instrucción E/S, el procesador genera una orden de E/S, que es enviada a
un controlador
• El controlador comprueba la disponibilidad del dispositivo y ajusta el valor del registro de
estado, pero no avisa al procesador cuando el dispositivo está listo.
• El procesador debe controlar periódicamente el estado del controlador hasta que
comprueba que el dispositivo está listo.

8
Mientras se lleva a cabo la sincronización, la CPU está dedicada al cien por cien a esta tarea
y, por lo tanto, no puede atender a otros procesos. Si esta espera es muy larga, puede
degradar el nivel de prestaciones de todo el sistema.
• Cuando la CPU detecta que el periférico está preparado, realiza la transferencia. Si es una
operación de lectura (entrada), lee el registro de datos del controlador para recoger el dato
enviado por el periférico, y lo guarda en memoria; si es una operación de escritura (salida),
el procesador toma de la memoria el dato que se quiere enviar al periférico y lo escribe en
el registro de datos del controlador.

E/S por interrupciones

Desde el punto de vista del controlador de E/S


• El controlador recibe una orden del procesador.
• El controlador gestiona la operación con el periférico asociado.
• Cuando el dispositivo está listo, el controlador avisa a la CPU. El aviso se realiza mediante
una petición de interrupción (IRQ por sus siglas en inglés) al procesador.
Una interrupción es una señal que un dispositivo envía al procesador por una línea especial
del bus de control para pedirle que interrumpa el proceso en ejecución y pase a ejecutar
una rutina de tratamiento de la interrupción.

Desde el punto de vista del procesador


• El procesador envía una orden al controlador y luego continúa ejecutando instrucciones,
del mismo programa o de otro distinto.
• Cuando recibe la petición de interrupción, pasa a tratarla. El tratamiento consiste en:
◦ El proceso En ejecución se para y pasa al estado En espera.
◦ La CPU realiza la transferencia, lo que supondrá la actualización de los datos de algún
proceso en memoria con los datos procedentes del periférico o bien la actualización de
la información del periférico con los datos procedentes de un proceso.
Como consecuencia de ello, es posible que un proceso Bloqueado pase a estar En
espera.
◦ Una vez tratada la interrupción, el proceso que decida el planificador, según el
algoritmo que use, ocupará el procesador pasando de En espera a En ejecución.

En este caso, la CPU no pregunta a los controladores, sino que son estos los que le avisan cuando
están preparados. El bus de control de la placa base dispone de líneas específicas para las
peticiones de interrupción. Estas líneas están numeradas y cada una de ellas está dedicada a un
tipo de interrupción diferente. Por ejemplo, antiguamente la IRQ2, estaba dedicada al teclado; o
las IRQ3 y 4 a los puertos serie. En las placas XT sólo había 8 líneas. En las placas AT se aumentaron
las líneas a 16. En los sistemas modernos que usan el controlador APIC diseñado por Intel, hay 24
líneas para interrupciones más ocho líneas extra dedicadas al encaminamiento de interrupciones,

9
y las interrupciones son asignadas dinámicamente por el propio sistema operativo.

DMA
Lo habitual es que los datos que se quieren escribir en el dispositivo o que son leídos del
dispositivo provengan o vayan a la memoria del ordenador y, dado que la cantidad de información
que se mueve entre la memoria y los dispositivos es ingente, muchos dispositivos como tarjetas
gráficas, tarjetas de sonido o dispositivos de almacenamiento, disponen de Acceso Directo a la
Memoria (DMA por sus siglas en inglés), de manera que la transferencia puede llevarse a cabo
directamente desde el dispositivo a la memoria sin pasar previamente por el procesador. Gracias a
ello, la transferencia puede realizarse sin sobrecargar el procesador con muchísimas
interrupciones.
Utilizando la técnica de E/S por DMA se descarga al procesador de la responsabilidad de llevar a
cabo la sincronización y el intercambio de datos entre el periférico y la memoria.
Por otra parte, nos aparece una nueva problemática, ya que hay dos dispositivos –el procesador y
el controlador de DMA– que tienen que acceder de manera concurrente a la memoria y hay que
establecer un mecanismo para resolver este conflicto.

10
Almacenamiento intermedio
Para paliar la diferencia de velocidad entre el procesador y los dispositivos de E/S, se usan diversas
técnicas:

Caching
Se almacenan datos en una memoria temporal de pequeño tamaño y acceso muy rápido de
manera que:
• Cuando se necesita un dato, se comprueba antes de acudir al dispositivo si se encuentra en
la memoria caché, de la cuál es más rápido obtenerlo.
• Mientras haya espacio en la memoria caché, se almacena el dato enviado o recibido del
dispositivo de E/S, por si puede ser útil en una operación posterior, y no se borrará de tal
memoria hasta que no sea estrictamente necesario, porque falte memoria para almacenar
otro dato.

Buffering
Cuando es necesario leer un gran volumen de datos del almacenamiento secundario, el proceso
irá emitiendo solicitudes de bloques de manera consecutiva, que irá procesando de uno en uno.
Como el almacenamiento secundario es mucho más lento, entre una lectura y otra, el proceso,
probablemente, permanecerá en estado Bloqueado. Una vez completada la lectura, tendrá que
esperar en la cola de procesos en estado "En espera" hasta que el Planificador lo elija para su
ejecución.
Para evitar esta situación, se utiliza una técnica denominada buffering, que consiste en que el
sistema operativo realice las lecturas antes de que se produzca la solicitud, almacenándolas en un
área de la memoria principal que recibe el nombre de Buffer.

En este caso, se trataría de un buffer de entrada, porque hemos puesto como ejemplo un proceso
en el que se leen datos, pero se pueden aplicar las mismas consideraciones para procesos que
escriban datos. Cuando un proceso debe enviar datos al dispositivo de salida, envía los datos a un
buffer de salida, no al dispositivo, y continúa su ejecución, mientras el dispositivo puede ir
obteniendo la información del buffer a su ritmo.

11
Diferencia entre buffer y caché
El buffer de memoria es utilizado para gestionar la diferencia de velociadad entre el emisor y el
receptor de los datos, mientras que la caché es una memoria que almacena datos de uso
frecuente para acelerar el acceso a los mismos.
El buffer siempre contiene los datos originales que se envían al receptor, mientras qué la caché
mantiene una copia de los datos originales.
El buffer siempre se implementa en memoria principal, pero la caché se puede implementar en la
RAM o en un disco.

Spooling
Algo parecido puede hacerse cuando disponemos de dispositivos muy lentos que, sin embargo,
pueden recibir grandes volúmenes de datos. En estos casos, puede utilizarse una memoria
intermedia situada en un almacenamiento externo (típicamente, un disco) e ir enviando los datos
poco a poco al dispositivo externo. Esta técnica, aunque es parecida al buffering, recibe el nombre
de spooling y la memoria intermedia recibe el nombre de spool (del inglés, Simultaneous
Peripheral Operations On-Line). Es una técnica que se utiliza habitualmente con las impresoras.

12

También podría gustarte