4.4 Operaciones de entrada/salida
Funciones que realizan
Vamos a señalar las funciones que debe realizar un
computador para ejecutar trabajos de entrada/salida:
- Direccionamiento o selección del dispositivo que debe
llevar a cabo la operación de E/S.
- Transferencia de los datos entre el procesador y el
dispositivo (en uno u otro sentido).
- Sincronización y coordinación de las operaciones.
Esta ultima función es necesaria debido a la deferencia
de velocidades entre los dispositivos y la CPU y a la independencia que debe
existir entre los periféricos y la CPU (por ejemplo, suelen tener relojes
diferentes).
Se define una transferencia elemental de información como
la transmisión de una sola unidad de información (normalmente un byte) entre el
procesador y el periférico o viceversa. Para efectuar una transferencia
elemental de información son precisas las siguientes funciones:
- Establecimiento de una comunicación física entre el
procesador y el periférico para la transmisión de la unidad de información.
- Control de los periféricos, en que se incluyen
operaciones como prueba y modificación del estado del periférico. Para realizar
estas funciones la CPU gestionara las líneas de control necesarias.
Definiremos una operación de E/S como el conjunto de
acciones necesarias para la transferencia de un conjunto de datos (es decir,
una transferencia completa de datos). Para la realización de una operación de
E/S se deben efectuar las siguientes funciones:
- Recuento de las unidades de información transferidas
(normalmente bytes) para reconocer el fin de operación.
- Sincronización de velocidad entre la CPU y el
periférico.
- Detección de errores (e incluso corrección) mediante la
utilización de los códigos necesarios (bits de paridad, códigos de redundancia
cíclica, etc.)
- Almacenamiento temporal de la información. Es más
eficiente utilizar un buffer temporal específico para las operaciones de E/S
que utilizan el área de datos del programa.
4.3 Estructura de datos para manejo de dispositivos
¿Qué es una estructura?
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.
Estructura simple
El sistema MS-DOS es, sin duda, el mejor sistema
operativo para microcomputadoras. Sin embargo, sus interfaces y niveles de
funcionalidad no están bien definidos. Los programas de aplicación pueden
acceder a operaciones básicas de entrada / salida para escribir directamente en
pantalla o discos. Este libre acceso, hace que el sistema sea vulnerable, ya
que un programa de aplicación puede eliminar por completo un disco rígido por
alguna falla. Además este sistema, también esta limitado al hardware sobre el
que corre.
Otra estructura simple es la utilizada por la versión
original de UNIX, esta consiste de dos partes separadas, el kernel y los
programas de sistemas . El kernel fue posteriormente separado en manejadores
(drivers) de dispositivos y una serie de interfaces. El kernel provee el
sistema de archivos, la programación de CPU, el administrador de memoria y
otras funciones del sistema operativo que responden a las llamadas del sistema
enunciadas anteriormente.
Estructura por capas (layers)
Las nuevas versiones de UNIX se diseñaron para hardware
mas avanzado. Para dar mayor soporte al hardware, los sistemas operativos se
dividieron en pequeñas partes. Ahora los sistemas operativos tienen mayor
control sobre el hardware y las aplicaciones que se ejecutan sobre este.
La modularizacion de un sistema se puede presentar de
varias formas, la mas utilizada es la de capas, la cual consiste en dividir al
sistema operativo en un numero de capas. La capa de menor nivel es el hardware
y la de mayor nivel es la interfaz con el usuario.
La principal ventaja es que cada capa cumple con una
serie de funciones y servicios que brinda a las otras capas, esto permite una
mejor organización del sistema operativo y una depuración más fácil de este.
Cada capa se implementa solo utilizando las operaciones
provistas por la capa de nivel inferior. Una capa no necesita saber cómo se
implementan estas funciones, solo necesita saber que operaciones puede
realizar.
Un controlador de dispositivo, llamado normalmente
controlador (en inglés, device driver) es un programa informático que permite
al sistema operativo interactuar con un periférico, haciendo una abstracción
del hardware y proporcionando una interfaz -posiblemente estandarizada- para
usarlo. Se puede esquematizar como un manual de instrucciones que le indica
cómo debe controlar y comunicarse con un dispositivo en particular. Por tanto,
es una pieza esencial, sin la cual no se podría usar el hardware
Existen tantos tipos de controladores como tipos de
periféricos, y es común encontrar más de un controlador posible para el mismo
dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades. Por
ejemplo, aparte de los oficiales (normalmente disponibles en la página web del
fabricante), se pueden encontrar también los proporcionados por el sistema
operativo, o también versiones no oficiales hechas por terceros.
Debido que el software de controladores de dispositivos
se ejecuta como parte del sistema operativo, con acceso sin restricciones a
todo el equipo, resulta esencial que sólo se permitan los controladores de
dispositivos autorizados. La firma y el almacenamiento provisional de los
paquetes de controladores de dispositivos en los equipos cliente, mediante las
técnicas descritas en esta guía, proporcionan las ventajas siguientes:
- Seguridad mejorada. Puesto que los usuarios estándar no
pueden instalar controladores de dispositivos que no estén firmados o que estén
firmados por un editor que no es de confianza, los administradores tendrán un
control riguroso respecto a los controladores de dispositivos que pueden usarse
en una organización. Podrán impedirse los controladores de dispositivos
desconocidos, así como cualquier controlador de dispositivo que el
administrador no permita expresamente. Mediante el uso de directivas de grupo,
un administrador puede proporcionar a todos los equipos cliente de una
organización los certificados de los editores que se consideren de confianza,
permitiendo la instalación de los controladores sin intervención del usuario,
para comprobar que se trata de una firma digital de confianza.
- Reducción de los costes de soporte técnico. Los
usuarios sólo podrán instalar los dispositivos que hayan sido probados y
admitidos por la organización. En consecuencia, el sistema permite mantener la
seguridad del equipo, al tiempo que se reducen las solicitudes del departamento
de soporte técnico.
-Experiencia de usuario mejorada. Un paquete de
controladores firmado por un editor de confianza y almacenado provisionalmente
en el almacén de controladores funciona de modo automático, cuando el usuario
conecta el dispositivo al equipo. No se requiere acción alguna por parte del
usuario.
En esta sección se incluyen las tareas principales para
la seguridad de los paquetes de controladores de dispositivos:
Los controladores de dispositivo (device drivers en
inglés) son programas añadidos al núcleo del sistema operativo, concebidos
inicialmente para gestionar periféricos y dispositivos especiales. Los
controladores de dispositivo pueden ser de dos tipos: orientados a caracteres
(tales como los dispositivos NUL, AUX, PRN, del sistema) o bien orientados a
bloques, constituyendo las conocidas unidades de disco. La diferencia
fundamental entre ambos tipos de controladores es que los primeros reciben o
envían la información carácter a carácter; en cambio, los controladores de
dispositivo de bloques procesan, como su propio nombre indica, bloques de
cierta longitud en bytes (sectores). Los controladores de dispositivo,
aparecidos con el DOS 2.0, permiten añadir nuevos componentes al ordenador sin
necesidad de rediseñar el sistema operativo.Los controladores de dispositivo
han sido tradicionalmente programas binarios puros, similares a los COM aunque
ensamblados con un ORG 0, a los que se les colocaba una extensión SYS. Sin
embargo, no hay razón para que ello sea así ya que un controlador de
dispositivo puede estar incluido dentro de un programa EXE, con la condición de
que el código del controlador sea el primer segmento de dicho programa. El
EMM386.EXE del MS-DOS 5.0 sorprendió a más de uno en su dia, ya que llamaba la
atención observar como se podía cargar con DEVICE: lo cierto es que esto es
factible incluso desde el DOS 2.0 (pese a lo que pueda indicar algún libro),
pero ha sido mantenido casi en secreto. Actualmente es relativamente frecuente
encontrar programas de este tipo. La ventaja de un controlador de dispositivo
de tipo EXE es que puede ser ejecutado desde el DOS para modificar sus
condiciones de operación, sin complicar su uso por parte del usuario con otro
programa adicional. Además, un controlador de dispositivo EXE puede superar el
limite de los 64 Kb, ya que el DOS se encarga de relocalizar las referencias
absolutas a segmentos como en cualquier programa EXE ordinario.
También existen fallos en los controladores.
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 monitorear el programa, sino también el
propio dispositivo.
APLICACIONES PARA EL CONTROLADOR
Debido a la diversidad de las modernas de hardware y
sistemas operativos, controladores de operar en muchos entornos diferentes.
Drivers may interface with: Los conductores pueden interfaz con:
- printers impresoras
- video adapters (adaptadores de vídeo)
- network cards (tarjetas de red)
- Sound cards (Tarjetas de Sonido)
- los autobuses
- ancho de banda
- almacenamiento informatico
- sistemas de archivos
- escaneres de imagenes
- camaras digitales
Común de los niveles de abstracción para los
controladores de dispositivos son:
Para el hardware:
- la interconexión directa
- la escritura o lectura de un dispositivo de control de
Registro
Para el software:
- permitiendo que el sistema operativo el acceso directo
al hardware de los recursos.
- la aplicación de los primitivos sólo
- la aplicación de una interfaz para el software no
conductor (por ejemplo, con TWAIN)
- la aplicación de un idioma, a veces muy alto nivel (por
ejemplo, PostScript)
CONTROLADORES ABIERTOS
Impresoras: CUPS.
Scanners: SANE.
Escáners: SANE.
Video: Vidix , Direct
Rendering Infrastructure.
4.1 DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS: DEVICE
DRIVER
Dispositivos de E / SSe 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 que almacenan la
información en bloques de tamaño fijo (discos)
Dispositivos de caracteres: maneja la información
mediante un flujo de caracteres sin estructurarlos en bloques (mouse, teclado,
impresora)
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.
Todos los dispositivos de E/S se pueden agrupar en tres
grandes grupos:
Dispositivos de interfaz de usuario. Se llama así a los
dispositivos que 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 (ratón, teclado, etc.)
como para salida (impresoras, pantalla, etc.). Existen periféricos menos
habituales, pero más sofisticados, tales como un escáner, lectores de huella
digital, lectores de cinta magnética, instrumentos musicales digitales (MIDI),
etc.
Dispositivos de almacenamiento. 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 (discos y disquetes) y terciario (cintas).
Dispositivos de comunicaciones. 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.
En cualquier caso, y sea como sea el controlador, su
misión es convertir los datos del formato interno del dispositivo a uno externo
que se ofrezca a través de una interfaz de programación bien definida. Los
controladores de dispositivo se suelen agrupar en alguna de las siguientes
categorías o clases:
Adaptadores de audio (tarjetas de sonido).
Dispositivos de comunicación (infrarrojos, módems, etc).
Dispositivos de visualización; pantallas (displays).
Teclados.
Ratón (“mouse” y otros señaladores gráficos).
Dispositivos multimedia.
Dispositivos de Red.
Impresoras.
Almacenamiento
Algunos dispositivos de entrada y salida:
Entrada:
Teclado
Ratón
Joystick
Lápiz óptico
Micrófono
Webcam
Escáner
Escáner de código de barras
Salida:
Monitor
Altavoz
Auriculares
Impresora
Plotter
Proyector
Entrada/salida (mixtos):
Unidades de almacenamiento: CD,DVD, Blu-ray, Memory
cards, Disco Duro Externo, Disco duro, Pendrive USB.
Módem
Router
Pantalla táctil
Tarjeta de red
Controladores de Dispositivos
Un controlador (instaladores) de dispositivos,
normalmente llamado controlador en inglés (device driver) es un programa que
informático que permite al sistema operativo interactuar con un periférico,
haciendo una abstracción del hardware del dispositivo y proporcionando una
interfaz- posiblemente estandarizada - para usarlo. Se puede esquematizar como
un manual de instrucciones que se indica al sistema operativo, cómo debe
controlar y comunicarse con un dispositivo en particular. Por lo tanto es una
pieza esencial, sin el cual, no se podría usar el hardware. Los controladores
de dispositivos son programas añadidos al núcleo del sistema para gestionar
periféricos y dispositivos oficiales.
Existen tantos tipos de controladores como tipos de
periféricos y es común más de un tipo de controlador posible para el mismo
dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades. Por
ejemplo, aparte de los oficiales (normalmente disponibles en la página web del
fabricante se pueden encontrar también los proporcionados por el sistema
operativo o también versiones no oficiales hechas por terceros.
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.
Manejadores de Dispositivos
Cada dispositivo de E/S, o cada clase de dispositivos,
tiene un manejador asociado en el sistema operativo.
Dicho manejador incluye: código independiente del
dispositivo para proporcionar al nivel superior del sistema operativo una
interfaz de alto nivel y el código dependiente del dispositivo necesario para
programar el controlador del dispositivo a través de sus registros y datos. La
tarea de un manejador de dispositivo es aceptar peticiones en formato
abstracto, de la parte del código de E/S independiente del dispositivo,
traducir dichas peticiones a términos que entienda el controlador, enviar al
mismo las órdenes adecuadas en la secuencia correcta y esperar a que se
cumplan. La siguiente figura muestra un diagrama de flujo con las operaciones
de un manejador.
Todos los manejadores tienen una lista de peticiones
pendientes por dispositivo donde se encolan las peticiones que llegan de
niveles superiores. El manejador explora la lista de peticiones, extrae una
petición pendiente y ordena su ejecución. La política de extracción de
peticiones de la lista es dependiente de manejador y puede ser FIFO. Una vez
enviada la petición al controlador, el manejador se bloquea o no, dependiendo
de la velocidad del dispositivo. Para los lentos (discos) se bloquea esperando
una interrupción. Para los rápidos (pantalla, discos RAM, etcétera) responde
inmediatamente. Después de recibir el fin de operación, controla la existencia
de errores y devuelve al nivel superior el estado de terminación de la
operación. Si tiene operaciones pendientes en la cola de peticiones, atiende a
la siguiente, en caso de que le toque ejecutar después de la operación de E/S.
En caso contrario se bloquea.
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 esta 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: (ver figura 4.1.2)
Estimar el lugar donde se encuentra en realidad el bloque
solicitado.
Verificar si el motor de la unidad funciona.
Verificar si el brazo esta colocado en el cilindro
adecuado, etc.
Resumiendo: debe decidir cuales 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 o.k. transferirá los datos al software
independiente del dispositivo.
Regresa información de estado sobre los errores a quien
lo llamo.
Inicia otra solicitud pendiente o queda en espera.
4.1 Administracion de Entrada/Salida
Dentro del presente proyecto, destacara primordialmente
cada uno de los temas que destacan en la planificación de la materia, en el
método de formación representada, lo primero que encontraremos será los
dispositivos y manejadores de dispositivos en el cual a través de ello se
lograra entender a cerca de su postura y su manifieste, luego Mecanismos
Funciones Manejadores Dispositivos el cual nos dará a entender la explicación
enfocada de cómo funciona los manejadores de dispositivos, también veremos
Estructura de datos para manejo de dispositivos y por ultimo operaciones de
entrada y salida.
No hay comentarios:
Publicar un comentario