0% encontró este documento útil (0 votos)
64 vistas17 páginas

Dispositivos y Controladores de E/S en Ordenadores

El documento describe los principales componentes de entrada y salida de un sistema computacional. Explica que los dispositivos de E/S se pueden clasificar en periféricos, dispositivos de almacenamiento y dispositivos de comunicación. Asimismo, detalla que cada dispositivo de E/S requiere de un controlador que actúa como interfaz entre el dispositivo y el sistema. Finalmente, señala que la gestión eficiente de los dispositivos de E/S es crucial debido a las diferencias en las velocidades entre los dispositivos y la CPU.

Cargado por

RobertoGarcia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
64 vistas17 páginas

Dispositivos y Controladores de E/S en Ordenadores

El documento describe los principales componentes de entrada y salida de un sistema computacional. Explica que los dispositivos de E/S se pueden clasificar en periféricos, dispositivos de almacenamiento y dispositivos de comunicación. Asimismo, detalla que cada dispositivo de E/S requiere de un controlador que actúa como interfaz entre el dispositivo y el sistema. Finalmente, señala que la gestión eficiente de los dispositivos de E/S es crucial debido a las diferencias en las velocidades entre los dispositivos y la CPU.

Cargado por

RobertoGarcia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

1.

INTRODUCCIÓN

La CPU y la memoria componen el “corazón” de un


ordenador, pero no serviría de nada sin:

× Dispositivos de almacenamiento
× Dispositivos periféricos, que le permitan
interactuar con el usuario
× Dispositivos de comunicaciones

La mayor parte del código del núcleo se dedica a la E/S.

Todos estos dispositivos de E/S se pueden agrupar en


tres grandes grupos:
Estructura de un ordenador
× Periféricos – permiten comunicación entre el
usuario y el ordenador proporcionando una
interfaz con el usuario.
▪ Entrada: ratón, teclado…
▪ Salida: impresoras, pantalla…

× Dispositivos de almacenamiento – proporcionan almacenamiento no volátil de datos y


memoria. Función principal: abastecer de datos y almacenamiento a los programas
que se ejecutan en la CPU. Según su capacidad o inmediatez…
▪ Almacenamiento secundario: discos
▪ Almacenamiento terciario: memorias USB, CD-ROM, DVD, cintas…

× Dispositivos de comunicaciones – permiten conectar al ordenador con otros


ordenadores a través de una red. Destacan las tarjetas de red tanto inalámbricas (wifi,
bluetooth) como alámbricas (ethernet).

En la conexión de dispositivos del sistema de E/S se distinguen dos elementos:

× Dispositivo de E/S – elemento electromecánico que proporciona la funcionalidad final.


Ejemplo: monitor.

× Controlador de dispositivo (controller) – elemento electrónico unido a los buses del


sistema que sabe cómo manejar el dispositivo de E/S, es decir, es el componente
electrónico a través del cual se conecta el dispositivo de E/S al sistema. Puede estar
integrado en la placa base.
Ejemplo: la controladora gráfica.
2. CONTROLADOR DE DISPOSITIVOS

El controlador es el componente más importante desde el punto de vista del núcleo: es la


interfaz del dispositivo con el bus del ordenador que proporciona acceso a una serie de
registros del controlador.

Los controladores son muy variados, casi tanto como los dispositivos de E/S. Algunos, como los
de disco, pueden controlar múltiples dispositivos. Otros incluyen su propia CPU (o GPU) y
memoria para controlar la E/S por programa, y evitar así interrupciones continuas con la CPU
del ordenador.

Se tiende a la estandarización: usar un mismo controlador para dispositivos de distintos


fabricantes (SCSI, IDE, SATA, USB…).

3. PROBLEMÁTICA DE LA E/S

Los dispositivos E/S son difíciles de manejar y cada uno tiene sus peculiaridades:

× Interacción con el dispositivo: E/S programada, interrupciones o DMA


× Conexión del dispositivo: puertos o memoria
× Tamaño de la unidad básica de transferencia: flujo (carácter o línea), bloque o paquete
× Errores de E/S
× Velocidades de transferencia y tiempos de acceso
× Cada fabricante es diferente. Y los estándares no siempre son fáciles de implementar

Concretamente, nos centramos en el problema de la velocidad. Concretamente, la diferencia


de velocidad entre la CPU y los dispositivos de E/S:

La mayoría de los dispositivos de E/S tienen tiempos de acceso de milisegundos (hay


excepciones) y velocidades de transferencia muy inferiores a la memoria RAM. Esta diferencia,
y el hecho de que las aplicaciones son cada vez más interactivas y necesitan más E/S, hace que
los sistemas de E/S sean el cuello de botella más importante de los sistemas de computación y
que todos los sistemas operativos dediquen un gran esfuerzo a desarrollar y optimizar todos
los mecanismos de E/S.
El núcleo debe controlar el funcionamiento de todos los dispositivos de E/S para alcanzar los
siguientes objetivos:

× Facilitar el manejo de los dispositivos ofreciendo una interfaz entre los dispositivos y el
resto del sistema que sea sencilla y fácil de utilizar
× Optimizar la E/S del sistema, proporcionando mecanismos de incremento de
prestaciones donde sea necesario
× Solventar de forma autómatica la instalación de dispositivos nuevos de E/S usando
mecanismos del tipo hot-plug y plug and play, lo que permite la conexión y
desconexión de dispositivos nuevos

4. ARQUITECTURA DEL SISTEMA DE E/S

Componentes:

× Software independiente del dispositivo (formado por niveles


superiores del núcleo) - común a todos los dispositivos
Función: ejecutar las funciones de E/S que son comunes a
todos los dispositivos a través de una interfaz uniforme.
Aspectos:
▪ Almacenamiento intermedio: usar buffers del núcleo
para acomodar los diferentes tamaños y velocidades
de acceso
▪ Gestión de dispositivos: nombrado, protección y
control de acceso
▪ Planificación de E/S: colas de peticiones para cada
dispositivo. Se ordenan según una política de
planificación
▪ Gestión de errores: errores transitorios y permanentes

× Manejador de dispositivo (device driver) - propio de cada dispositivo


5. MANEJADOR DE DISPOSITIVOS

El manejador de dispositivos es una parte del sistema


operativo que se encarga de controlar y gestionar el
uso de los dispositivos de entrada/salida (E/S) del
sistema.
Cuando un programa en ejecución necesita acceder a
un dispositivo de E/S, como un disco duro o una
impresora, envía una llamada al sistema solicitando el
acceso al dispositivo. El manejador de dispositivos
recibe esta llamada y se encarga de gestionar el acceso
al dispositivo en cuestión, asegurando que se accede al
mismo de manera segura y sin conflictos con otros
programas que también puedan necesitar acceder al
mismo dispositivo.

Una vez que el manejador de dispositivos ha


gestionado el acceso al dispositivo, controla la
comunicación entre el programa y el dispositivo,
permitiendo que el programa envíe y reciba datos a
través del mismo. Una vez que el programa ha terminado de utilizar el dispositivo, el
manejador de dispositivos libera el acceso al mismo y permite que otros programas puedan
utilizarlo.

· Llamada al sistema bloqueante o no bloqueante

× Bloqueante: proceso bloqueado hasta que la E/S termina. Operación síncrona (fácil de
usar)

× No bloqueante: encola la petición de E/S y el proceso continúa. Operación asíncrona


(interfaz de usuario más compleja)
▪ El proceso continúa ejecutándose en paralelo con la realización de sus
operaciones de E/S
▪ El proceso utiliza algún mecanismo del núcleo para comprobar el estado y la
terminación de sus operaciones de E/S
▪ El proceso puede indicar una función que se ejecutará al completarse la
operación de E/S
6. TÉCNICAS DE E/S: BUFFERING Y SPOOLING

· Buffering

El buffering es una técnica que consiste en


almacenar temporalmente datos en un
buffer (un espacio en memoria) antes de
procesarlos o enviarlos a su destino final.
Esto puede ser útil en situaciones en las que
el procesamiento o el envío de datos es más
lento que su entrada o recepción, ya que
permite evitar tener que esperar a que se
libere el espacio de procesamiento o la
conexión de red para poder continuar
recibiendo o enviando datos.

Por ejemplo, cuando se escribe en un


archivo, el sistema operativo puede usar buffering para almacenar temporalmente los datos
en memoria antes de escribirlos en disco. De esta forma, el proceso de escritura en disco
puede realizarse de manera más eficiente, ya que se pueden escribir varios bloques de datos
de manera consecutiva en lugar de escribir uno a uno.

- Buffer sencillo para dispositivos de bloque

Cuando se lleva a cabo una operación de entrada, por ejemplo, los datos se leen desde
un dispositivo de entrada (como una unidad de disco duro o un teclado) y se
almacenan temporalmente en el buffer. Cuando la operación de entrada ha
terminado, se mueve el contenido del buffer a la zona de memoria del proceso que
está utilizando los datos. Mientras tanto, el proceso puede ser sacado de memoria
para que otro proceso pueda utilizar la CPU, o bien puede estar procesando los datos
almacenados en el buffer mientras se lleva a cabo la siguiente operación de entrada.

El buffering permite al sistema operativo realizar varias operaciones de entrada y


salida de manera más eficiente, ya que no tiene que esperar a que se completen cada
una de ellas antes de poder procesar los datos. Además, almacenar los datos en un
buffer intermedio permite al proceso trabajar con los datos a su propio ritmo, sin
tener que esperar a que se completen las operaciones de entrada y salida.

RESUMEN: se asigna un buffer en la memoria del sistema operativo. Cuando se realiza


una operación de entrada, se guardan los datos en el buffer en lugar de enviarlos
directamente al proceso. Cuando se completa la operación, se mueve el buffer al área
de memoria del proceso y se inicia otra operación de entrada para llenar el buffer de
nuevo. Mientras tanto, el proceso puede seguir trabajando con los datos que ha
recibido anteriormente.
- Buffer sencillo para dispositivos de flujo
A diferencia del caso anterior, hablamos de dispositivos de E/S por línea (como una
impresora o un archivo de texto). En este caso, se asigna un buffer en la memoria del
sistema operativo para almacenar una línea completa de datos. Cuando se realiza una
operación de entrada, el proceso se queda suspendido hasta que se recoge una línea
completa (es decir, hasta que se recibe el fin de línea).

En una operación de salida, el proceso escribe la línea en el buffer y puede seguir


procesando mientras se completa la transferencia del buffer al dispositivo. Si el
proceso quiere realizar otra operación de salida y no se ha completado la transferencia
del buffer anterior, se suspende hasta que se complete la transferencia.

- Buffer circular

Cuando el proceso es más rápido que las transferencias a/desde el dispositivo, se usan
varios buffers que se van reutilizando.

El buffer circular es una estructura de datos que se utiliza para almacenar


temporalmente información que se está procesando o que se va a procesar. Se trata
de una estructura circular en la que se van añadiendo nuevos elementos al final del
buffer mientras que se van eliminando los elementos del principio. Esto permite que el
buffer siempre tenga un tamaño constante y que se utilice de forma eficiente.

En el caso de que el proceso sea más rápido que las transferencias a/desde el
dispositivo, se pueden utilizar varios buffers que se van reutilizando. De esta forma, el
proceso puede seguir procesando información mientras se van realizando las
transferencias, sin tener que esperar a que se completen. Esto permite mejorar el
rendimiento del sistema y evitar que se produzcan cuellos de botella.

Un buffer circular es un tipo de buffer que se utiliza para almacenar temporalmente


datos mientras son transferidos de un lugar a otro. La diferencia con respecto a los
otros dos ejemplos es que el buffer circular es un buffer que "gira" cada vez que se
añade o se elimina un elemento.

En lugar de tener un buffer lineal con un tamaño fijo y un índice de inicio y fin, el
buffer circular tiene un único índice de inicio y un tamaño variable. Cada vez que se
añade un elemento al buffer, el índice de inicio se incrementa en una posición y, si se
llega al final del buffer, se vuelve al principio. De esta manera, el buffer circular
siempre tiene espacio disponible para añadir nuevos elementos, siempre y cuando no
esté lleno.

Un buffer circular es útil cuando se necesita almacenar temporalmente un flujo de


datos que varía en tamaño y no se conoce de antemano cuántos elementos se van a
añadir al buffer. También es útil cuando se quiere evitar tener que realizar muchas
operaciones de copia de memoria, ya que no es necesario mover los elementos del
buffer cada vez que se añade o se elimina un elemento.

Ventajas del buffering:

× Permite adaptar velocidades entre productor y consumidor


× Permite agrupar múltiples transferencias al dispositivo pequeñas en una grande (mejor
rendimiento)

· Spooling

Es un caso particular de buffering en el que se usa el disco como almacenamiento intermedio


porque:

× El dispositivo es mucho más lento que el proceso


× El volumen de datos de cada transferencia puede ser muy elevado

Los trabajos pendientes se encolan en el área de spool y cabe la posibilidad de aplicar


algoritmos de planificación para seleccionar cuál será el siguiente que se procese.

Ejemplos: impresoras, estafeta de correo electrónico.

El objetivo del spooling es permitir que el procesador del ordenador se libere de tareas de
entrada/salida pesadas, como la impresión de documentos o la lectura de archivos de gran
tamaño, y se centre en otras tareas más importantes. De esta manera, se mejora la eficiencia
del sistema y se evitan retrasos innecesarios.

En el caso de la impresión, por ejemplo, cuando se envía un documento a imprimir, éste se


almacena temporalmente en el disco duro en una cola de trabajos pendientes (spool). Una vez
que el procesador del ordenador está disponible, se extrae el documento de la cola y se envía
a la impresora. De esta manera, el procesador no está ocupado durante todo el tiempo que
tarda la impresora en imprimir el documento y puede dedicarse a otras tareas mientras
espera.
7. ALMACENAMIENTO SECUNDARIO. DISCO DURO

Discos: dispositivos básicos para…

× Almacenamiento de datos masivo y no volátil


× Usarse como plataforma para el sistema de intercambio que usa el gestor de memoria
virtual

Se agrupan:

× Según la interfaz de su controlador:


▪ SCSI, IDE, SATA, USB…
× Según la tecnología de fabricación:
▪ Discos duros (magnéticos)
▪ Discos de estado sólido (SSD)
▪ Discos ópticos (CD-ROM o DVD)
▪ Discos extraíbles (discos USB, pen-drive)

Estructura de un disco duro

Características de los discos duros:

× Un disco duro es un dispositivo de gran capacidad compuesto por varias superficies


con material magnético y un bloque de cabezas de lectura/escritura
× Las superficies del disco están divididas en cilindros, con dos pistas por plato (una por
cada cara) y un cierto número de sectores por pista.
× Capacidad del disco = cilindros * pistas por cilindro* sectores por pista* tamaño sector
× Componentes principales del tiempo de acceso:
▪ Búsqueda (mover la cabeza al cilindro). Típico 5-15 ms
▪ Latencia rotacional (esperar a que el sector pase bajo la cabeza).Típico: 2-8 ms.
▪ Lectura/escritura. Típico: << 1 ms
▪ Tiempo de transferencia: memoria → controlador →disco (o a la inversa).
Típico: << 1 ms
× En un disco de estado sólido (SSD), el tiempo de acceso típico es inferior a 0,1 ms
8. PLANIFICACIÓN DE DISCO EFICIENTE

Directrices generales:

× Agrupar operaciones sobre sectores consecutivos: bloque de sectores → Produce


fragmentación interna
× Reducir el tiempo de búsqueda: minimizar los desplazamientos de las cabezas de
lectura/escritura aplicando algoritmos de planificación: FCFS, SSF, SCAN, CSCAN, …

- FCFS (FIFO)
Las peticiones se atienden según llegan.

En este ejemplo, las cabezas se han movido por 640 cilindros.

- Shortest Seek First (SSF)


Objetivo: reducir los desplazamientos de la cabeza.
Se atiende primero la petición más cercana a la posición actual de la cabeza. Puede
causar inanición de algunas peticiones.

En este ejemplo, las cabezas se han movido por 236 cilindros.


- Ascensor (SCAN)
Objetivo: garantizar que no hay inanición.
El movimiento del brazo empieza siempre en un extremo del disco y continúa hasta el
otro. Allí se cambia el sentido y se vuelve al otro extremo.
Solo es óptimo cuando las peticiones están distribuidas uniformemente por todo el
disco.

En este ejemplo, las cabezas se han movido por 236 cilindros.

- Ascensor cíclico (CSCAN)


Objetivo: tiempo de espera uniforme.
Variación del ascensor donde las cabezas se mueven de un extremo a otro del disco y
luego vuelven al principio (movimiento muy rápido). Trata los cilindros como una lista
circular que enlaza el último cilindro con el primero.
No se atienden peticiones mientras las cabezas vuelven a la posición inicial.
Se usa frecuentemente.

En este ejemplo, las cabezas se han movido por 382 cilindros. El número es engañoso,
ya que realmente ir del último al primero se hace en un único movimiento y tarda muy
poco.
· Caché en disco

El núcleo usa parte de la memoria principal como caché para los accesos a disco, mejorando el
rendimiento del sistema al acceder a archivos almacenados en disco.

Cuando se lee un bloque por primera vez, el sistema lo carga en la memoria principal y lo
almacena temporalmente en una caché. De esta forma, las peticiones futuras al mismo bloque
no necesitan acceder a disco y leer el bloque porque ya está en memoria; se puede servir
directamente desde la caché, lo que reduce el tiempo de acceso y mejora el rendimiento del
sistema.

Políticas de escrituras:

× Síncronas (write-through): menor rendimiento, mayor seguridad.


En esta política, cuando se escribe un archivo en la caché, se escribe también en disco
de manera síncrona. Esto garantiza que los cambios en la caché se reflejen de manera
segura en disco, pero puede reducir el rendimiento del sistema ya que se realizan dos
operaciones de escritura (en la caché y en disco).

× Asíncronas (write-back): mayor rendimiento, menor seguridad.


En esta política, cuando se escribe un archivo en la caché, no se escribe
inmediatamente en disco. En su lugar, se marca el archivo como "modificado" y se
espera a que haya un momento más oportuno para escribirlo en disco. Esto puede
mejorar el rendimiento del sistema al reducir el número de operaciones de escritura,
pero tiene el inconveniente de que, en caso de fallo del sistema o corte de energía, es
posible que algunos cambios no se hayan escrito aún en disco y se pierdan. Por tanto,
esta política es menos segura que la política write-through.

9. FIABILIDAD Y TOLERANCIA A FALLOS

El sistema de E/S del disco es uno de los componentes del sistema con mayores exigencias de
fiabilidad, debido a que se usa para almacenar datos y programas de forma permanente.

Las principales técnicas usadas para proporcionar esta fiabilidad y tolerancia a fallos son:

× Códigos detectores y correctores de error, existentes en las cabeceras y colas de los


sectores.
× Redundancia, tanto en datos replicados como en códigos de paridad para detectar
errores y recuperarlos. Esta técnica se implementa mediante el uso de dispositivos
RAID (Redundant Array of Inexpensive Disks).
× Redundancia hardware: conectar un disco a través de dos controladores.
· Gestor de volúmenes

El gestor de volúmenes es un componente del sistema operativo encargado de gestionar el


almacenamiento de datos en disco. Se encarga de organizar los datos en unidades lógicas
llamadas volúmenes, que son las unidades de almacenamiento visibles por el usuario y el
sistema operativo. El gestor de volúmenes puede utilizar diferentes técnicas para proporcionar
fiabilidad y tolerancia a fallos, como códigos detectores y correctores de error, redundancia de
datos y redundancia hardware

· JBOD (concatenación)

JBOD (Just a Bunch of Disks) es una técnica de almacenamiento que consiste en conectar
varios discos duros a un controlador de disco y tratarlos como un único volumen lógico. En
JBOD, cada disco se trata como una unidad independiente y no se utilizan técnicas de
redundancia o protección de datos. Esto hace que JBOD sea menos fiable que otras técnicas de
almacenamiento, como los dispositivos RAID, pero también es más sencillo de implementar y
puede ser más económico.

× Conjunto de discos físicos vistos por el sistema como una sola unidad lógica
× Los discos pueden ser de tamaños diferentes
× Rendimiento: permite hacer operaciones en paralelo si las peticiones son sobre discos
diferentes
× No aporta tolerancia a fallos
10. SISTEMAS RAID

× Conjunto de discos físicos vistos por el sistema como una sola unidad lógica
× Los discos deben ser del mismo tamaño

Según la configuración pueden aportar:

× Aumento de la capacidad de almacenamiento


× Mejora de las prestaciones (rendimiento):
▪ Ancho de banda (varias operaciones en paralelo)
▪ Mejorar el tiempo de búsqueda
× Tolerancia a fallos, con lo que mejora la disponibilidad del sistema (y la seguridad de
los datos)

· Controladoras RAID

Una controladora RAID es un dispositivo hardware o software que se utiliza para implementar
el sistema de almacenamiento en redundancia (RAID) en un sistema informático. El propósito
de la controladora RAID es mejorar el rendimiento, la fiabilidad y la tolerancia a fallos del
almacenamiento de datos.
Veamos los distintos niveles de RAID:

- RAID 0 (seccionado / striping)

Se dividen los datos en fragmentos (bandas) y se distribuyen entre varios discos sin
redundancia (sin copias de seguridad, ya sea mediante réplicas de los datos en varios
discos o mediante códigos de paridad para detectar y corregir errores).
Ofrece mayor rendimiento al poder leer o escribir en paralelo en varios discos, pero si
se produce un fallo en un disco, se pierden todos los datos.

- RAID 1 (espejo / mirror)

Se replican los datos en dos discos, de modo que, si un disco falla, el otro tiene una
copia exacta de los datos. Ofrece alta disponibilidad y protección ante fallos de disco,
pero el rendimiento no mejora significativamente.
- RAID 10 (seccionado + espejo)

RAID 10, también conocido como RAID 1+0, es un nivel de RAID que combina el espejo
(RAID 1) y el stripe (RAID 0). En RAID 10, se dividen los datos en bloques (cada bloque
está numerado) y se escriben en diferentes discos de manera alterna, como en RAID 0.
Además, se hace una copia de cada bloque y se escribe en un disco diferente, como en
RAID 1. Esto proporciona tanto la velocidad de lectura y escritura de RAID 0 como la
redundancia de RAID 1.

- RAID 4

RAID 4 es un nivel de RAID que utiliza una configuración de disco duro de varios discos
y almacena datos en forma de bloques en cada disco. La característica principal de
RAID 4 es que tiene un disco dedicado para almacenar los datos de paridad, que se
utilizan para reconstruir los datos en caso de fallo de un disco. Esto significa que, si un
disco falla, los datos se pueden recuperar a partir de la información de paridad y los
datos almacenados en los demás discos. RAID 4 es más adecuado para entornos de
lectura intensiva y escritura menos frecuente, ya que el rendimiento de escritura
puede ser lento debido a la necesidad de escribir en el disco de paridad además de los
discos de datos.
- RAID 5 (paridad distribuida)

En un sistema RAID 5, los datos se dividen en bloques y se escriben en varios discos


diferentes de manera que cada bloque tiene una copia en un disco diferente. Además,
se calcula un código de paridad para cada bloque y se escribe en un disco especial
dedicado a la paridad. Si un disco falla, los datos del disco dañado se pueden recuperar
utilizando la información de paridad y los datos restantes de los otros discos.

RAID 5 es adecuado para entornos en los que se requiere tolerancia a fallos y un


rendimiento de lectura y escritura aceptable, pero el rendimiento de escritura puede
ser un poco más lento debido al tiempo necesario para calcular y escribir el código de
paridad.

Veamos el concepto de paridad:

· Paridad

La más usual es la paridad XOR.

Supongamos un RAID 4 con 4 discos para datos, 1 para paridad y 1 de repuesto, donde se han
guardado estos datos:

Si el disco 3 falla, se puede recuperar su información a partir del resto de los discos y empezar
a usar el disco de repuesto:

La paridad XOR se calcula mediante una operación lógica XOR (exclusive OR) entre los bits de
los datos y el código de paridad. El resultado de esta operación es un bit adicional que se
almacena junto con los datos. Cuando se reciben los datos, se vuelve a realizar la operación
XOR y si el resultado es distinto de cero, se sabe que hay un error en los datos.

· Otras consideraciones sobre RAID

También podría gustarte