2. GENERALIDADES DE LOS SISTEMAS DE E/S
Para los diseñadores de SO, el control de los dispositivos conectados a la
computadora es de primordial interés, debido a que cada dispositivo
cambia sus funciones y velocidad por lo cual se requiere variedad de métodos
para controlarlos.
Estos métodos de E/S forman el subsistema de E/S del kernel, el cual
aisla al resto del kernel de la complejidad de la administración de los
dispositivos de E/S.
La tecnología de E/S exhibe dos tendencias que están en conflicto:
* Creciente estandarización de las interfases de SW y HW con los cual se
ayuda a incorporar en las computadoras y SO generaciones mejoradas
de dispositivos.
3. GENERALIDADES DE LOS SISTEMAS DE E/S
•Nuevos dispositivos que son tan diferentes los anteriores que se son
difíciles de incorporar en las computadoras y SO; por lo que se convierte
en un reto esta incorporación a través de combinación de técnicas de
HW y SW.
Los detalles y peculiaridades de los diferentes dispositivos se encapsulan
en módulos de manejadores de dispositivos (interfaz uniforme de
acceso a dispositivos con el subsistema de E/S). Para lo cual se
estructura al kernel del sistema operativo para que use estos módulos.
4. OBJETIVOS DEL SISTEMA DE E/S
•Proporcionar una interfaz uniforme para el acceso a los dispositivos
(independencia del dispositivo).
•Proporcionar manejadores (drivers) para los dispositivos concretos
•Tratar automáticamente los errores más típicos.
•Para los dispositivos de almacenamiento, utilizar cachés.
•Para los discos, planificar de forma óptima las peticiones.
5. HARDWARE DE E/S
Un dispositivo se comunica con un sistema de cómputo enviando señales a través de un cable
o incluso a través de aire.
El dispositivo se comunica:
•Con la máquina mediante un punto de conexión llamado puerto.
•Si uno o más dispositivos utilizan un conjunto de cables, la conexión se denomina bus.
6. Un controlador es un conjunto de componentes electrónicos que
pueden operar un puerto, un bus o un dispositivo.
Los controladores pueden ser sencillos (controlador de puerto serial) o
complejos (controlador de bus SCSI).
Los dispositivos de E/S que se conectan al ordenador se clasifican en:
BLOQUE: La información se almacena en bloques, esos bloques son
de tamaño fijo. Donde cada bloque tiene una dirección que lo identifica.
Se puede leer o escribir en un bloque independiente de los demás.
Por ejemplo: disquete, CD, DVD, disco duro.
7. CARÁCTER: La información que se generan o reciben son flujos de caracteres
(no bloques). Accede a los datos en secuencia: o sea, para acceder a determinados
datos, la lectura y escritura se debe hacer seguido de los datos anteriores. Por
ejemplo: teclado, pantalla, cinta, ratones.
A continuación un cuadro comparativo de diferentes dispositivos:
9. ESCRUTINIO
Ejemplo de interacción entre el anfitrión y el controlador
Suponemos que se usan 2 bits para coordinar la relación
productor-consumidor entre el controlador y el anfitrión.
El controlador indica su estado mediante el bit busy en el
registro status.
El controlador prende el bit busy cuando está ocupado
trabajando y lo apaga cuando está listo para aceptar el
siguiente comando.
El anfitrión señala sus deseos mediante el bit command-ready
en el registro command.
El anfitrión prende el bit command-ready cuando está
disponible un comando para que el controlador lo ejecute.
10. Siguiendo con el ejemplo:
El anfitrión lee repetidamente el bit busy hasta que dicho bit se apaga.
El anfitrión está en espera ocupada o en escrutinio: está en un ciclo,
leyendo el registro status una y otra vez hasta que el bit busy se apaga.
Para que funcione este método, controlador y el dispositivo deben de
ser rápidos o se perderá los datos que se encuentran en el buffer del
controlador.
En Muchas arquitecturas de computadoras, son suficientes tres ciclos
de instrucción a la CPU para escrutar un dispositivo: leer (read) un
registro de dispositivo, realizar un operación de “y lógico”(logical--and)
para extraer el bit de estado y proceder a una ramificación (branch) si
no es cero.
La operación básica de escrutinio es eficiente; pero se vuelve ineficiente
cuando se intenta repetidamente y pocas veces encuentra un
dispositivo listo para servicio, mientras que otras actividades útiles de
procesamiento permanecen sin realizarse.
11. INTERRUPCIONES
Una interrupción es el
mecanismo que le permite al
controlador de hardware
notificar a la CPU cuando un
dispositivo esta listo para
servicio.
El mecanismo básico de
interrupción habilita a la
CPU para responder a un
evento asíncrono, el cual
puede ser que el controlador
de dispositivo quede listo
para dar servicio
12. ACCESO DIRECTO A MEMORIA
• Evitar usar el proceso de E/S programada cuando se transfieren
datos grandes para no sobrecargar la CPU.
• Transferir parte del trabajo a un procesador de propósito especial
denominado controlador de acceso directo a memoria (DMA).
• Cuando la CPU escribe la dirección del bloque de comandos en
el controlador de DMA, luego sigue con otro trabajo y el
controlador de DMA opera directamente el bus de la memoria
colocando direcciones para realizar transferencias sin ayuda de la
CPU principal.
• Algunas arquitecturas utilizan direcciones de memoria física para
DMA, pero otras efectúan un acceso directo a memoria virtual,
utilizando direcciones virtuales que se traduciran a direcciones de
13. INTERFAZ DE E/S DE LAS APLICACIONES
Flujo de caracteres o bloque: Un dispositivo transfiere los bytes
uno a uno, mientras que un dispositivo de bloque transfiere un
bloque de bytes como una sola unidad.
Acceso Secuencial o aleatorio: Un dispositivo secuencial transfiere
los datos en un orden fijo determinado por el dispositivo, mientras
que el usuario de un dispositivo de acceso aleatorio puede instruir al
dispositivo para que se posicione en cualquiera de las ubicaciones
disponibles de almacenamiento de bits.
Síncrono o asíncrono: Un dispositivo síncrono realiza
transferencias de datos con tiempos de respuesta predecibles. Un
dispositivo asíncrono exhibe unos tiempos de respuesta irregulares o
no predecibles.
14. INTERFAZ DE E/S DE LAS APLICACIONES
Compartible o dedicado: Un dispositivo compartible puede ser
usado de forma concurrente por varios procesos o hebras; un
dispositivo dedicado no puede ser compartido de esta forma.
Velocidad de operación: Las velocidades de los dispositivos van
desde unos pocos bytes por segundo a unos cuantos gigabytes por
segundo.
Lectura-escritura; sólo lectura o sólo escritura: Algunos
dispositivos realizan tanto entrada como salida, pero otros sólo
soportan una única dirección de transferencia de los datos..
15. RELOJES Y TEMPORIZADORES
• Proporciona: la hora, tiempo transcurrido y el valor de un
temporizador para activar la operación X a la hora T (cronómetro).
• El hardware para medir el tiempo transcurrido y activar
operaciones se denomina temporizador de intervalos
programable y se lo usa para fijar una cantidad de tiempo y
genere una interrupción, realice operaciones periódicas.
16. E/S CON BLOQUEO Y SIN BLOQUEO
• Con Bloqueo: se suspende la ejecución de dicha aplicación. La
mayoría de SO la utilizan, puesto que es más fácil de
entender y aplicar.
• Implementación multihilos.
• Algunos procesos a nivel de usuario necesitan E/S sin bloqueo,
ya que no detiene la ejecución de la aplicación por mucho
tiempo, regresando rápidamente con un valor de retorno que
indica cuántos bytes fueron transferidos.
• Asíncrono: llamada que regresa inmediatamente, sin esperar a
que se complete la operación E/S. (difícil de usar)
17. MANEJO DE LAS SOLICITUDES DE E/S
Considere que se esta leyendo un archivo desde el disco
para un proceso:
Determine el dispositivo que pertenece a ese archivo.
Descifrar el nombre que representa a ese archivo.
Si los datos no están en el buffer, realizar una E/S física.
Asignar espacio para recibir datos y planificar E/S.
Realizar transferencia de datos
Determinar estado de solicitud
Retornar el control al proceso.
18. DESEMPEÑO
La actividad de E/S es un factor importante en el desempeño del sistema, por
lo que pone de manifiesto cualquier deficiencia en los mecanismos de manejo
de interrupciones en el kernel.
Demandas de la CPU para ejecutar código de manejadores de dispositivos
ponen en manifiesto cualquier deficiencia en el manejo de interrupciones del
Kernel.
Podemos aplicar varios principios para mejorar la eficiencia de E/S:
1. Reducir el número de conmutaciones de contexto.
2. Reducir el número de datos de copiado.
3. Reducir la frecuencia de las interrupciones.
4. Incrementar la concurrencia.
5. Utilizar DMA.
6. Equilibrar el desempeño de la CPU, el subsistema de memoria, el bus y el
sistema de E/S.