5.1
Principios del Hardware de I/O
El
enfoque que se considerará tiene que ver con la interfaz que desde el hardware
se presenta al software.
- Comandos que acepta el hardware.
- Funciones que realiza.
- Errores que puede informar
5.1.1 Dispositivos de I/O
Se
pueden clasificar en dos grandes categorías:
- Dispositivos de bloque.
- Dispositivos de carácter.
Las principales características de los dispositivos de bloque son:
- La información se almacena en bloques de tamaño fijo.
- Cada bloque tiene su propia dirección.
- Los tamaños más comunes de los bloques van desde los 128 bytes
hasta los 1.024 bytes.
- Se puede leer o escribir en un bloque de forma independiente de los
demás, en cualquier momento.
- Un ejemplo típico de dispositivos de bloque son los discos.
Las principales características de los dispositivos de carácter son:
- La información se transfiere como un flujo de caracteres, sin
sujetarse a una estructura de bloques.
- No se pueden utilizar direcciones.
- No tienen una operación de búsqueda.
- Unos ejemplos típicos de dispositivos de carácter son las
impresoras de línea, terminales, interfaces de una red, ratones, etc.
Algunos
dispositivos no se ajustan a este esquema de clasificación, por ejemplo los relojes, que no tienen
direcciones por medio de bloques y no generan o aceptan flujos de caracteres.
El sistema de archivos solo trabaja
con dispositivos de bloque
abstractos, por lo que encarga la parte dependiente del dispositivo a
un software de menor nivel, el software
manejador del dispositivo.
5.1.2 Controladores de
dispositivos
Las unidades de e / s generalmente
constan de:
- Un componente
mecánico.
- Un componente electrónico, el controlador del dispositivo o adaptador.
Muchos controladores pueden manejar más
de un dispositivo.
El S. O. generalmente trabaja con el
controlador y no con el dispositivo.
Los modelos más frecuentes de comunicación entre la CPU y los
controladores son:
- Para la mayoría de las micro y mini
computadoras:
- Modelo de bus del sistema.
- Para la mayoría de los mainframes:
- Modelo de varios buses y computadoras
especializadas en e / s llamadas canales de e / s.
La interfaz entre el controlador y el dispositivo es con
frecuencia de muy bajo nivel:
- La comunicación es mediante un flujo de bits en serie que:
- Comienza con un preámbulo.
- Sigue con una serie de bits (de un sector de
disco, por ej.).
- Concluye con una suma para verificación o un
código corrector de errores.
- El preámbulo:
- Se escribe al dar formato al disco.
- Contiene el número de cilindro y sector, el
tamaño de sector y otros datos similares.
El controlador debe:
- Convertir el flujo de bits en serie en un
bloque de bytes.
- Efectuar cualquier corrección de errores
necesaria.
- Copiar el bloque en la memoria principal.
Cada controlador posee registros que
utiliza para comunicarse con la CPU:
- Pueden ser parte del espacio normal de
direcciones de la memoria: e
/ s mapeada a memoria.
- Pueden utilizar un espacio de direcciones
especial para la e / s, asignando a cada controlador una parte de él.
El S. O.
realiza la e / s al escribir comandos en los registros de los controladores; los parámetros de los comandos también se cargan
en los registros de los controladores.
Al aceptar el comando, la CPU puede dejar al controlador y
dedicarse a otro trabajo.
Al terminar el comando, el
controlador provoca una interrupción para permitir que el S.
O.:
- Obtenga el control de la CPU.
- Verifique los resultados de la operación.
La CPU obtiene los resultados y
el estado del dispositivo al leer uno o más bytes de información de los
registros del controlador.
5.2 Principios de Software de I/O
La idea básica es organizar el software como una serie de capas donde:
- Las capas inferiores se
encarguen de ocultar las peculiaridades del hardware a las capas
superiores.
- Las capas superiores deben
presentar una interfaz agradable, limpia y regular a los usuarios.
5.2.1 Objetivos del Software
de I/O
Un
concepto clave es la independencia
del dispositivo:
- Debe ser posible escribir programas que se puedan utilizar con archivos en distintos dispositivos,
sin tener que modificar los programas para cada tipo de dispositivo.
- El problema debe ser resuelto por el S. O.
El objetivo de lograr nombres uniformes está muy
relacionado con el de independencia del dispositivo.
Todos los archivos y dispositivos
adquieren direcciones de la misma forma, es decir mediante el nombre de su ruta de acceso.
Otro
aspecto importante del software es el manejo de errores de e / s:
- Generalmente los
errores deben manejarse lo más cerca posible del hardware.
- Solo si los niveles inferiores no pueden resolver el problema, se
informa a los niveles superiores.
- Generalmente la recuperación se puede hacer en un nivel inferior y
de forma transparente.
Otro aspecto clave son las transferencias síncronas (por
bloques) o asíncronas (controlada
por interruptores):
- La mayoría de la e / s es asíncrona: la CPU inicia la transferencia y realiza
otras tareas hasta una interrupción.
- La programación es más fácil si la e / s es síncrona (por bloques): el
programa se suspende automáticamente hasta que los datos estén disponibles
en el buffer.
El S. O. se encarga de hacer que
operaciones controladas por interruptores parezcan del tipo de bloques para el
usuario.
También
el S. O. debe administrar los dispositivos compartidos (ej.:
discos) y los de uso exclusivo (ej.: impresoras).
Generalmente el software de e / s se estructura en
capas
- Manejadores de interrupciones.
- Directivas de dispositivos.
- Software de S. O. independiente de los dispositivos.
- Software a nivel usuario.
5.2.2 Manejadores de Interrupciones
Las
interrupciones deben ocultarse en el S. O.
- Cada proceso que inicie una operación de e / s
se bloquea hasta que termina la e / s y ocurra la interrupción.
- El procedimiento de interrupción realiza lo necesario para desbloquear el proceso que lo inicio.
5.2.3 Manejador de dispositivos
Todo el código que depende de los dispositivos aparece en los manejadores de dispositivos.
Cada controlador posee uno o más
registros de dispositivos:
- Se utilizan para darle los comandos.
- Los manejadores de dispositivos proveen estos
comandos y verifican su ejecución adecuada.
La labor de un manejador de dispositivos es la
de:
- Aceptar las solicitudes abstractas que le hace
el software independiente del dispositivo.
- Verificar la ejecución de dichas solicitudes.
Si al recibir una solicitud el
manejador está ocupado con otra solicitud, agregara la nueva solicitud a una cola de solicitudes pendientes.
La solicitud de e / s, por ej. Para un
disco, se debe traducir de términos abstractos a términos concretos:
- El manejador
de disco debe:
- Estimar el lugar donde se encuentra en
realidad el bloque solicitado.
- Verificar si el motor de la unidad funciona.
- Verificar si el brazo está colocado en el
cilindro adecuado, etc.
- Resumiendo: debe decidir cuáles son las operaciones
necesarias del controlador y su orden.
- Envía los comandos al controlador al escribir
en los registros de dispositivo del mismo.
- Frecuentemente el manejador del dispositivo
se bloquea hasta que el controlador realiza cierto trabajo; una
interrupción lo libera de este bloqueo.
- Al finalizar la operación debe verificar los
errores.
- Si todo esta correcto transferirá los datos
al software independiente del dispositivo.
- Regresa información de estado sobre los
errores a quien lo llamó.
- Inicia otra solicitud pendiente o queda en espera.
5.2.4 Software de I/0 Independiente de los
dispositivos
Funciones
generalmente realizadas por el software independiente del dispositivo:
- Interfaz uniforme para los manejadores de
dispositivos.
- Nombres de los dispositivos.
- Protección del dispositivo.
- Proporcionar un tamaño de bloque independiente
del dispositivo.
- Uso de buffers.
- Asignación de espacio en los dispositivos por
bloques.
- Asignación y liberación de los dispositivos de
uso exclusivo.
- Informe de errores.
Las
funciones básicas del software independiente del dispositivo son:
- Efectuar las funciones de e / s comunes a
todos los dispositivos.
- Proporcionar una interfaz uniforme del
software a nivel usuario.
El software independiente del
dispositivo asocia los nombres simbólicos de los dispositivos con el nombre
adecuado.
Un nombre de dispositivo determina de
manera única el nodo-i de un archivo especial:
- Este nodo-i contiene el número principal del dispositivo,
que se utiliza para localizar el manejador apropiado.
- El nodo-i contiene también el número secundario de dispositivo,
que se transfiere como parámetro al manejador para determinar la unidad
por leer o escribir.
El software independiente del dispositivo debe:
- Ocultar a los niveles superiores los
diferentes tamaños de sector de los distintos discos.
- Proporcionar un tamaño uniforme de los
bloques, por ej.: considerar varios sectores físicos como un solo bloque
lógico.
5.2.5 Espacio del usuario para software de
I/0
La mayoría del software de e / s está
dentro del S. O.
Una pequeña parte consta de bibliotecas
ligadas entre sí con los programas del usuario.
La biblioteca estándar de e / s
contiene varios procedimientos relacionados con e / s y todos se ejecutan como
parte de los programas del usuario.
Otra categoría importante de software
de e / s a nivel usuario es el sistema de spooling.
El spooling es una forma de trabajar
con los dispositivos de e /s de uso exclusivo en un sistema de multiprogramación:
- El ejemplo típico lo constituye la impresora
de líneas.
- Los procesos de usuario no abren el archivo
correspondiente a la impresora.
- Se crea un proceso especial, llamado demonio en algunos sistemas.
- Se crea un directorio de spooling.
Para imprimir un archivo:
- Un proceso genera todo el archivo por imprimir
y lo coloca en el directorio de spooling.
- El proceso especial, único con permiso para
utilizar el archivo especial de la impresora, debe imprimir los archivos
en el directorio.
- Se evita el posible problema de tener un
proceso de usuario que mantenga un recurso tomado largo tiempo.
Un esquema similar también es aplicable
para la transferencia de archivos entre
equipos conectados:
- Un usuario coloca un archivo en un directorio
de spooling de la red.
- Posteriormente, el proceso especial lo toma y
transmite. Un ej. son los sistemas de correo electrónico.
5.3 Discos RAM
Utilizan una parte de la memoria
principal asignada con anterioridad para almacenar los bloques.
Tienen la ventaja del acceso instantáneo:
- No hay demora rotacional o debida a las
búsquedas.
- Son adecuados para el almacenamiento de
programas o datos con accesos muy frecuentes.
Los bloques de almacenamiento tienen el
mismo tamaño que en los discos reales.
Cuando el manejador debe leer de o escribir
en un bloque de un disco en RAM, calcula el lugar de la memoria donde se
encuentra el bloque solicitado y lee o escribe en el mismo.
5.4 Discos
Las siguientes son las principales ventajas con
respecto del uso de la memoria principal como almacenamiento.
- Mucha mayor capacidad de espacio de
almacenamiento.
- Menor precio por bit.
- La información no se pierde al apagar la
computadora.
Un uso
inapropiado de los discos puede generar ineficiencia, en especial en sistemas
con multiprogramación.
5.4.1 Hardware de discos
Los discos están organizados en
cilindros, pistas y sectores.
El número típico de sectores por pista
varía entre 8 y 32 (o más).
Todos los sectores tienen igual número
de bytes.
Los sectores cercanos a la orilla del
disco serán mayores físicamente que los cercanos al anillo.
Un controlador puede realizar búsquedas
en una o más unidades al mismo tiempo:
- Son las búsquedas traslapadas.
- Mientras el controlador y el software esperan
el fin de una búsqueda en una unidad, el controlador puede iniciar una
búsqueda en otra.
Muchos controladores pueden:
- Leer o escribir en una unidad.
- Buscar en otra.
Los controladores no pueden leer o
escribir en dos unidades al mismo tiempo.
La capacidad
de búsquedas traslapadas puede reducir considerablemente el tiempo promedio de
acceso.
5.5. Relojes
Los relojes o cronómetros son
esenciales para la operación de sistemas de tiempo compartido
Registran la hora del día.
Evitan que un proceso monopolice la CPU.
El software para reloj toma generalmente la forma de un manejador de dispositivo, aunque no es un dispositivo de bloque ni de carácter.
Los relojes más sencillos trabajan con
la línea de corriente eléctrica de 110 o 220 voltios y provocan una
interrupción por cada ciclo de voltaje, a 50 o 60 hz.
Otro tipo de relojes consta de tres
componentes:
- Un oscilador de cristal, un contador y un
registro.
- Una pieza de cristal de cuarzo se monta en una
estructura bajo tensión:
- Genera una señal periódica de muy alta
precisión, generalmente entre 5 y 100 mhz.
- La señal se alimenta en el contador para que
cuente en forma descendente hasta cero.
- Cuando el contador llega a cero, provoca una
interrupción de la CPU.
Los relojes programables tienen varios modos de operación:
- Modo de una
instancia:
- Cuando el reloj se inicializa, copia el valor
del registro en el contador.
- Decremento el contador en cada pulso del
cristal.
- Cuando el contador llega a cero provoca una
interrupción y se detiene hasta ser nuevamente inicializado por el
software.
- Modo de onda
cuadrada:
- Luego de llegar a cero y provocar la
interrupción, el registro se copia de manera automática en el contador.
- Todo el programa se repite en forma
indefinida.
- Las interrupciones periódicas se llaman marcas del reloj.
La ventaja del reloj programable es que su frecuencia de interrupción puede ser
controlada por el software.
5.5.2 Software Reloj
Las principales funciones del software manejador del reloj son:
- Mantener la hora del día o tiempo real.
- Evitar que los procesos se ejecuten durante
más tiempo del permitido.
- Mantener un registro del uso de la CPU.
- Controlar llamadas al sistema tipo “alarm” por
parte de los procesos del usuario.
- Proporcionar cronómetros guardianes de partes
del propio sistema.
- Realizar resúmenes, monitoreo y recolección de
estadísticas.
El software manejador del reloj puede
tener que simular varios relojes
virtuales con un único reloj físico.
5.6 Terminales
Las terminales tienen gran número de
formas distintas.
- El manejador
de la terminal debe ocultar estas diferencias.
- La parte independiente del dispositivo en el S. O. y los programas del usuario no se
tienen que reescribir para cada tipo de terminal.
Desde el punto de vista del S. O. se las puede clasificar en:
- Interfaz RS-232:
- Hardcopy (terminales de impresión).
- TTY “de vidrio” (terminales de video).
- Inteligente (computadoras con CPU y memoria).
- Interfaz mapeada a
memoria:
- Orientada a caracteres.
- Orientada a bits.
Las terminales RS-232 poseen un teclado y un monitor que se
comunican mediante una interfaz
serial, un bit a la vez; las conversiones de bits a bytes y viceversa
las efectúan los chips uart (transmisores - receptores asíncronos universales).
Las terminales mapeadas a memoria:
- No se comunican mediante una línea serial.
- Poseen una interfaz mediante una memoria
especial llamada video RAM:
- Forma parte del espacio de direcciones de la
computadora.
- La CPU se dirige a ella como al resto de la
memoria.
- En la tarjeta de video RAM hay un chip llamado controlador de video:
- Extrae bytes del video RAM y genera la señal
de video utilizada para manejar la pantalla.
- El monitor genera un rayo de electrones que
recorre la pantalla pintando líneas.
- Cada línea está constituida por un cierto
número de puntos o pixeles.
- La señal del controlador de video modula el
rayo de electrones y determina si un pixel debe estar o no iluminado.
- Los monitores de color poseen tres rayos
(rojo, verde y azul) que se modulan independientemente.
En las pantallas mapeadas a caracteres:
- Cada carácter en la pantalla equivale a dos
caracteres de RAM:
- Uno aloja al código (ASCII) del carácter por
exhibir.
- Otro es el byte de atributo, necesario para
determinar el color, el video inverso, el parpadeo, etc.
En las terminales mapeadas a bits:
- Se utiliza el mismo principio.
- Cada bit en el video RAM controla en forma
directa un solo pixel de la pantalla.
- Permite una completa flexibilidad en los tipos
y tamaños de caracteres, varias ventanas y gráficos arbitrarios.
Con las pantallas mapeadas a memoria,
el teclado se desacopla
totalmente de la pantalla:
- El teclado dispone de su propio manejador.
- El manejador del teclado puede operar en modo carácter
o en modo línea.
Las terminales pueden operar con una estructura central de buffers o
con buffers exclusivos para cada
terminal.
Frecuentemente los manejadores de terminales soportan
operaciones tales como:
- Mover el cursor hacia arriba, abajo, a la
izquierda o a la derecha una posición.
- Mover el cursor a x, y.
- Insertar un carácter o una línea en el cursor.
- Eliminar un carácter o una línea en el cursor.
- Recorrer la pantalla hacia arriba o hacia
abajo “n” líneas.
- Limpiar la pantalla desde el cursor hacia el
final de la línea o hasta el final de la pantalla.
- Trabajar en modo de video inverso, subrayado,
parpadeo o normal.
- Crear, construir, mover o controlar las
ventanas.