2. Una de las principales funciones de un sistema operativo es controlar
todos los dispositivos de E/S (entrada/salida) del computador.
Comprende tanto la transferencia entre diversos niveles de la memoria
como la comunicación con los periféricos.
También debe proporcionar una interfaz sencilla y fácil de usar entre los
dispositivos y el resto del sistema.
El SO debe controlar el funcionamiento de todos los dispositivos de E/S
para alcanzar los siguientes objetivos:
Facilitar el manejo de los dispositivos periféricos.
Optimizar la E/S del sistema.
Proporcionar dispositivos virtuales que permitan conectar cualquier
tipo de dispositivos físicos sin que sea necesario remodelar el
sistema de E/S del SO.
Permitir la conexión de dispositivos nuevos de E/S, solventando de
forma automática su instalación usando mecanismos del tipo plug
& play.
3. Se denomina periféricos a los aparatos o
dispositivos auxiliares e independientes
conectados a la unidad central de procesamiento
de una computadora.
Se consideran periféricos tanto a las unidades o
dispositivos a través de los cuales la computadora
se comunica con el mundo exterior, como a los
sistemas que almacenan o archivan la
información, sirviendo de memoria auxiliar de la
memoria principal.
Se pueden clasificar en dos grandes categorías:
Dispositivos de bloques.
Dispositivos de caracteres.
4. Dispositivos de bloques Dispositivos de caracteres
• 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.
• 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.
• Un ejemplo típico de dispositivos
de caracter son las impresoras
de línea, terminales, interfaces
de una red, ratones, etc.
5. Todos los dispositivos de E/S se pueden agrupar en tres grandes grupos:
De interfaz de usuario De almacenamiento De comunicaciones
Permiten la comunicación
entre los usuarios y la
computadora. Dentro de
este grupo se incluyen
todos los dispositivos que
sirven para proporcionar
interfaz con el usuario,
tanto para entrada como
para salida.
Se usan para proporcionar
almacenamiento no volátil
de datos y memoria. Su
función primordial es
abastecer de datos y
almacenamiento a los
programas que se
ejecutan en la UCP.
Según su capacidad y la
inmediatez con que se
puede acceder a los datos
almacenados en estos
dispositivos, se pueden
dividir en almacenamiento
secundario y terciario.
Permiten conectar a la
computadora con otras
computadoras a través de
una red. Los dos tipos de
dispositivos más
importantes de esta clase
son los módem, para
comunicación vía red
telefónica, y las tarjetas de
interfaz a la red, para
conectar la computadora a
una red de área local.
6.
7. Las unidades de E/S tienen una parte mecánica y otra
electrónica.
Un controlador de dispositivo es un programa informático
que permite al sistema operativo interactuar con un
periférico.
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.
8. 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.
9. Esquema Global de Manejadores de Dispositivos
Procesos de usuario
SW independiente del dispositivo
Manejadores de dispositivo
Manejadores de interrupciones
Hardware
Petición de E/S
Respuesta de E/S
Llamada de E/S, formateo de E/S, spooling
Asignación de nombres y dispositivos, protección, bloqueo,
buffering,
Asignación de valores a los registros de dispositivos,
comprobación del estado
Reactivación del manejador cuando se completa la E/S
Realización de la E/S
Esquema de Manejadores de Dispositivos
10.
11. El controlador es el componente más importante desde el punto
de vista del sistema operativo, ya que constituye la interfaz del
dispositivo con el bus de la computadora y es el componente
que se ve desde la CPU.
Hay que recalcar que el controlador al ser una parte crítica del
sistema operativo, el fallo de un controlador puede ser más
grave que otros errores de software, pudiendo bloquear el
ordenador o incluso dañar el hardware. Debido a que el
hardware es (necesariamente) indeterminista, encontrar y
solucionar un fallo en un controlador es una tarea complicada
ya que no sólo hay que monitorizar el programa, sino también
el propio dispositivo.
12. Técnicas de E/S
E/S programada: El procesador
emite una orden de E/S de parte
de un proceso a un modulo de
E/S; el proceso espera entonces
a que termine la operación,
antes de seguir.
E/S dirigida por
interrupciones: El procesador
emite una orden de E/S de parte
de un proceso, continua la
ejecución de las instrucciones
siguientes y el modulo de E/S lo
interrumpe cuan do completa su
trabajo.
Sin
interrupcio-nes
Con
interrupcio-nes
Transferen-cia
de E/S a
memoria a
través del
procesador
E/S
programada
E/S dirigida
por
interrupcione
s
Transferen-cia
de E/S
directa a
memoria
Acceso
directo a
memoria
(DMA)
Acceso Directo a la Memoria (DMA): un modulo de DMA controla el
intercambio de datos entre la memoria principal y un modulo de E/S. El
procesador envía una petición de transferencia de un bloque de datos al
modulo DMA y se interrumpe solo cuando se ha transferido el bloque entero.
13. A medida que han evolucionado los sistemas informáticos, se ha
producido tendencia crecientes en la complejidad y sofisticación de cada
componente individual. En ninguno de los puntos es mas evidente que en
la función de E/S. la etapa de su evolución puede resumirse como lo
siguiente:
1.- El procesador controla directamente los dispositivos periféricos.
2.- Se añade un controlador o modulo de E/S. El procesador utiliza E/S
programada sin interrupciones.
3.- Se añade un controlador o modulo. Pero empleándose interrupciones.
4.- El modulo de E/S recibe el control directo de la memoria, a través de
DMA, Ahora puede mover un bloque de datos a la memoria o desde la
misma sin que intervenga el procesador.
5.- se mejora el modulo de E/S hasta llegar a ser un procesador separado
con un conjunto de instrucciones especializadas para E/S.
6.- El modulo de E/S posee su propia memoria local y es, de hecho un
computador independiente.
14. Funciones de los manejadores
de 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 buffer.
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.
15.
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.
16. Los sistemas operativos actuales son
grandes y complejos, estos deben poseer
una ingeniería correcta para su fácil
actualización y para que puedan cumplir su
función correctamente. La estructura es
generalmente modular, cada modulo cumple
una función determinada e interactúa con los
demás módulos.
17. Los procesos de usuario emiten peticiones de entrada/salida al
sistema operativo. Cuando un proceso solicita una operación de
E/S, el sistema operativo prepara dicha operación y bloquea al
proceso hasta que se recibe una interrupción del controlador del
dispositivo indicando que la operación está completa.
En el manejo de los dispositivos de
E/S es necesario, introducir dos
nuevos términos:
BUFFERING
SPOOLING
18. BUFFERING (uso de memoria
intermedia).
SPOOLING
Trata de mantener ocupados tanto la
CPU como los dispositivos de E/S. Los
datos se leen y se almacenan en un
buffer, una vez que los datos se han
leído y la CPU va a iniciar
inmediatamente la operación con ellos,
el dispositivo de entrada es instruido
para iniciar inmediatamente la siguiente
lectura.
La CPU y el dispositivo de entrada
permanecen ocupados. Cuando la CPU
esté libre para el siguiente grupo de
datos, el dispositivo de entrada habrá
terminado de leerlos. La CPU podrá
empezar el proceso de los últimos datos
leídos, mientras el dispositivo de
entrada iniciará la lectura de los datos
siguientes.
Esta forma de procesamiento se
denomina spooling, utiliza el disco como
un buffer muy grande para leer tan por
delante como sea posible de los
dispositivos de entrada y para
almacenar los ficheros hasta que los
dispositivos de salida sean capaces de
aceptarlos.
Es una característica utilizada en la
mayoría de los sistemas operativos.
19. Tanto en la E/S programada como la basada en
interrupciones, la CPU debe encargarse de la
transferencia de datos una vez que sabe que hay
datos disponibles en el controlador. Una mejora
importante para incrementar la concurrencia entre
la CPU y la E/S consiste en que el controlador del
dispositivo se pueda encargar de efectuar la
transferencia de datos. Esta técnica se denomina
acceso directo a memoria (DMA, Direct Memory
Access).
ACCESO DIRECTO A MEMORIA (DMA)
Este dispositivo permite la transferencia directa de
información entre la memoria y los periféricos o
viceversa, sin requerir intervención alguna por parte
del procesador.
20.
El DMA necesita:
Registro: almacena la dirección de memoria desde donde se
produce la transferencia.
Registro contador: guarda la longitud de bloque a transferir.
Bits: indica si la operación es de lectura o escritura.
Bloque de control: controla el funcionamiento del sistema.
Existen 3 tipos de transferencia para el máximo
aprovechamiento del bus:
Por ráfagas: el DMA toma el control del bus y no lo suelta hasta
terminar la transferencia.
Por robo de ciclo: el DMA toma el bus durante un ciclo enviando
una palabra cada vez.
Transparente: se aprovechan los ciclos en que el procesador no
usa el bus.
21. OPERACIONES DE E/S
Existen varias operaciones, las más importantes son las siguientes:
Lectura:
El canal transfiere a memoria principal un bloque de palabras de
tamaño especificado en el campo número de palabras, en orden
ascendente de direcciones, empezando en la dirección
especificada en el campo dirección del dato.
Escritura:
El canal transfiere datos de memoria principal al dispositivo. Las
palabras se transfieren en el mismo orden que en la operación de
lectura.
Control :
Se utiliza esta orden para enviar instrucciones específicas al
dispositivo de E/S, como rebobinar una cinta magnética, etc.
Bifurcación:
Cumple en el programa de canal la misma función que una
instrucción de salto en un programa normal.
22. Para que un computador pueda ejecutar un programa debe ser
ubicado previamente en la memoria, junto con los datos sobre los
que opera, y para ello debe existir una unidad funcional de entrada
de información capaz de escribir en la memoria desde el exterior.
Análogamente, para conocer los resultados de la ejecución de los
programas, los usuarios deberán poder leer el contenido de la
memoria a través de otra unidad de salida de datos. La unidad de
Entrada/Salida (E/S) soporta estas funciones, realizando las
comunicaciones del computador (memoria) con el mundo exterior
(periféricos). Los dispositivos periféricos que se pueden conectar a
un computador se suelen clasificar en tres grandes grupos:
Dispositivos de presentación de datos. Son dispositivos con los
que interactúan los usuarios, portando datos entre éstos y la
máquina, por ejemplo, ratón, teclado, pantalla, impresora, etc.
Dispositivos de almacenamiento de datos. Son dispositivos que
forman parte de la jerarquía de memoria del computador.
Interactúan de forma autónoma con la máquina, aunque también
sirven para el intercambio de datos con el usuario, por ejemplo,
los discos magnéticos.
Dispositivos de comunicación con otros procesadores. Permiten
la comunicación con procesadores remotos a través de redes,
por ejemplo, las redes de área local o global.
Dispositivos de adquisición de datos. Permiten la comunicación
con sensores y actuadores que operan de forma autónoma en el
entorno del computador. Se utilizan en sistemas de control
automático de procesos por computador y suelen incorporar
conversores de señales A/D y D/A.
Funciones implicadas en
las operaciones de
entrada/salida
23. Casi todos los dispositivos de E/S se representan como ficheros especiales:
/dev/hda1 para la primera partición del primer disco IDE
/dev/lp0 para la impresora.
El acceso a estos ficheros especiales es mediante las llamadas al sistema read y write. Para
cada fichero especial hay asociado un manejador de dispositivo.
Cada manejador tiene un número de dispositivo principal (mayor) que sirve para identificarlo.
Si el manejador sirve a varios dispositivos, cada dispositivo tiene un número de dispositivo
secundario (minor) que lo identifica.
Juntos, el no principal y el secundario especifican de forma única cada dispositivo de E/S
Dos tipos de ficheros especiales:
Fichero especial de bloques ⇒ dispositivos de bloques:
Incluyen discos y cintas
Direccionamiento directo utilizando bloques
El manejador aisla al resto del sistema de pistas, cilindros, etc
Acceso directo (como en /dev/fd0) o a través del S.F
Memoria caché de buffers
Fichero especial de caracteres ⇒ dispositivos de caracteres:
Terminales, impresoras y otros que no usan la caché de buffers
Utilizan también una pequeña memoria intermedia ⇒ listas-C
24. La E/S en Linux se implementa como una
colección de manejadores, uno por tipo de
dispositivo, que aisla al resto del SO de las
peculiaridades del HW
Cada manejador se divide en dos partes:
La mitad superior se ejecuta en el contexto del
invocador y se comunica con el resto del SO
La mitad inferior se ejecuta en el contexto del kernel e
interactúa con el dispositivo
Los manejadores pueden invocar procedimientos
del kernel para asignar memoria, administrar
temporizadores, controlar DMA, etc.
25. Manejadores para dispositivos de caracteres
• Sistema de buffers para caracteres
• Se utilizan unas estructuras de datos llamada listas C, formadas por un bloque
de hasta 64 caracteres, un contador y un puntero al siguiente bloque
• Se tienen dos colas: cola directa y cola canónica
• El paso de la cola directa (flujo no interpretado de caracteres) a la cola canónica
(flujo interpretado de caracteres) se activa con el retorno de carro
• Si el proceso quiere, puede recoger un carácter cada vez que llega uno nuevo
⇒ acceso directo, no interpretado o crudo
• Entrada de caracteres:
Al llegar caracteres se colocan en la cola directa
Los caracteres se pasan por un fragmento de código del kernel llamado
disciplina de líneas, que actúa como filtro, aceptando caracteres en modo no
interpretado, procesándolos y produciendo lo que se conoce como flujo de
cocinado de caracteres
• Salida:
Funciona de manera similar: expandiendo tabulaciones a espacios,
añadiendo caracteres de relleno, etc.
Las salidas pueden pasar por la disciplina de líneas (modo interpretado) o
evitarla (no interpretado)
La salida en modo no interpretado es útil para cuando se quiere enviar
datos binarios a otros ordenadores
26. Manejadores para dispositivos de
bloques
• Objetivo: reducir al mínimo el no de
transferencias reales efectuadas
• Para ello, existe en memoria principal
una caché de buffers (disco o bloques)
entre el sistema de ficheros y los
manejadores de disco
• Cuando se necesita un bloque de
disco por cualquier motivo (nodo-i,
directorio o datos), primero se verifica
si está en el caché de buffers. Si está
se toma, evitando un acceso a disco
• Si el bloque no está, se lee del disco,
se coloca en la caché y de allí se copia
a donde se necesita
• Se utiliza tanto en las lecturas como en
las escrituras
• Para las escrituras, un demonio se
encarga de realizar la actualización en
disco de los bloques modificados de
forma periódica
27. El objetivo del sistema de E/S de Windows 2000 es proporcionar un marco dentro
del cual se maneje con eficiencia una amplia variedad de dispositivos de E/S y sea
fácil agregar nuevos dispositivos
El administrador de E/S es el responsable de todas las operaciones de E/S para el
sistema operativo:
Es responsable de los sistemas de ficheros, del administrador de caché, de los
manejadores de dispositivos y de los manejadores de los protocolos de red
Controla qué sistemas de ficheros están instalados y cargados
Maneja los buffers para las peticiones de E/S
Trabaja con el manejador de memoria virtual para proporcionar E/S de ficheros
mapeados en memoria
El administrador de E/S colabora de forma estrecha con el administrador de Plug
and Play que detecta qué dispositivos están conectados, asigna recursos hardware
(como niveles de interrupción), localiza los manejadores apropiados y los carga en
memoria. También está relacionado con el administrador de consumo eléctrico,
encargado del encendido y apagado de los dispositivos que permiten gestionar el
bajo consumo
28. Está el administrador de caché. Este proporciona una caché centralizada que puede ser usada por todos los
componentes que están bajo el control del administrador de E/S. En especial, la caché la usan los sistemas de
ficheros y los componentes de red.
Windows 2000 realiza un manejo de la E/S síncrona o asíncrona
En la E/S asíncrona un subproceso puede iniciar una operación y luego seguir ejecutándose en paralelo con la E/S.
Los subprocesos cuentan con varias formas de averiguar si ya finalizó la E/S:
Esperar en un handle. El núcleo activa un indicador asociado a un handle cuando una operación sobre ese
handle termina. El subproceso puede esperar en el handle para averiguar cuándo termina la operación de E/S
Esperar en un objeto evento. Permite múltiples solicitudes simultáneas sobre un mismo dispositivo o fichero. El
hilo crea un evento por cada solicitud de E/S que realice. A posteriori puede esperar en uno o varios eventos
para averiguar cuándo terminan las solicitudes
E/S extendida o alertable. Hace uso de una cola conocida como Llamada a Procedimiento Asíncrono. El hilo
realiza una solicitud de E/S indicando que cuando finalice se invoque a una rutina que permitirá el tratamiento
de los datos recibidos. Dicha rutina se almacena en la cola anterior
Puertos de finalización de E/S. Un puerto es un objeto al que se asocian un conjunto de handles e hilos. Al
terminar una operación de E/S sobre uno de los handles se despierta a uno de los hilos para atenderlo
Implementación de E/S en Windows 2000:
La estructura básica del sistema de E/S en Windows está formada por un conjunto de procedimientos
independientes del dispositivo, que se encargan de ciertos aspectos de la E/S, y un conjunto de manejadores
de dispositivos, que se cargan en memoria para comunicarse con los dispositivos
Para un funcionamiento correcto, los manejadores de dispositivo deben ajustarse al modelo de manejadores de
Windows (Windows Driver Model, WDM) que define Windows 2000.
Windows 2000 proporciona un conjunto de herramientas, llamado Driver Development Kit (DDK), que ayuda a
producir manejadores de dispositivo que se ajustan al modelo anterior
29. Los manejadores que se ajusten al modelo de manejadores de Windows deberán
cumplir los siguientes requisitos:
1.-Manejar solicitudes de E/S con un formato estándar. Las solicitudes de E/S
tienen el formato de un paquete estandarizado llamado paquete de solicitud de E/S
(IRP; I/O Request Paquet). Los manejadores deberán aceptarlos y procesarlos
2.-Estar basados en objetos, en el sentido de reconocer una lista específica de
métodos que puede invocar el resto del sistema, así como poder interactuar con
otros objetos
3.-Permitir que se añadan o quiten dispositivos Plug-and-Play dinámicamente. Si el
dispositivo se añade o quita de repente al sistema, el manejador debe estar
preparado para aceptar esta información y actuar en concordancia
4.-Permitir la administración de consumo eléctrico, en su caso. Si el sistema cambia
a modo de hibernación con bajo consumo, los dispositivos capaces de efectuar el
cambio deberán hacerlo para ahorrar energía, así como despertar cuando se les
indique
5.-Ser configurables desde el punto de vista del uso de los recursos, e.d., no incluir
valores fijos de IRQ’s o puertos de E/S
6.-Ser reentrantes para usarse en multiprocesadores. El manejador debe funcionar
de forma correcta aunque esté siendo ejecutado al mismo tiempo por 2 o más
CPU’s. Por tanto, el acceso a las estructuras de datos delicadas debe hacerse de
forma restringida
30.
Windows detecta de forma automática los dispositivos e invoca al administrador de Plug and Play
El administrador de Plug and Play sondea el dispositivo para averiguar el fabricante y el número de
modelo. Con estos datos comprueba si tiene un manejador para ese dispositivo
Si encuentra el manejador lo carga en memoria
Si no lo encuentra, pide al usuario que le indique dónde (disquete o CD-ROM) puede encontrarlo
Entre los procedimientos que debe soportar un manejador de dispositivo están:
DriverEntry: asigna valores iniciales al manejador y se invoca inmediatamente después de
cargarlo. Podría realizar la inicialización de estructuras de datos del manejador, pero no se
comunica con el dispositivo
AddDevice: se invoca una vez por cada dispositivo que va a añadirse (lo llama el administrador de
Plug and Play)
A continuación se invoca al manejador con el primer paquete IRP que establece el vector de
interrupción y asigna valores iniciales al hardware
Otros procedimientos son el de servicio de interrupción, procedimientos para administrar
temporizadores, control de DMA, etc.
Un manejador puede realizar todo el trabajo él solo, pero también es posible apilar manejadores.
En caso de tener manejadores apilados, la solicitud podría pasar por una serie de manejadores,
cada uno de los cuales realiza una parte del trabajo:
Un uso común de manejadores apilados, sería para separar el manejo del bus del dispositivo en sí
Otra posibilidad es tener la capacidad de insertar manejadores filtro, que aplicarían alguna
transformación a los datos como, por ejemplo, comprimir o cifrar los datos