Sei sulla pagina 1di 16

INSTITUTO TECNOLÓGICO

DE VILLAHERMOSA

Alumno:

Alex Gustavo Calvo Hernández

Materia:

Sistemas Operativos
Fecha de Entrega:
Viernes 14 de marzo de 2020

Docente:

Teresa de Jesús Javier Baeza

Periodo:
Enero- Junio 2020

Tema:
Investigación 4

Administración de entrada/salida
4.1. DISPOSITIVOS Y MANEJADORES DE
DISPOSITIVOS

 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.

El sistema de E/S es la parte del sistema operativo que se ocupa de facilitar el


manejo de los dispositivos de E/S ofreciendo una visión lógica simplificada de
los mismos que pueda ser usada por otros componentes del sistema operativo
(como el sistema de archivos) o incluso por el usuario. Mediante esta visión
lógica se ofrece a los usuarios un mecanismo de abstracción que oculta todos
los detalles relacionados con los dispositivos físicos, así como del
funcionamiento real de los mismos. El sistema operativo debe controlar el
funcionamiento de todos los dispositivos de E/S para alcanzar los siguientes
objetivos:

 Facilitar el manejo de los dispositivos de E/S. Para ello debe ofrecer 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.
 Proporcionar dispositivos virtuales que permitan conectar cualquier tipo
de dispositivo físico sin que sea necesario remodelar el sistema de E/S
del sistema operativo.
 Permitir la conexión de dispositivos nuevos de E/S, solventando de
forma automática su instalación usando mecanismos del tipo plug&play.
 Conexión de un dispositivo de E/S a una computadora En la siguiente
figura se muestra el esquema general de conexión de periféricos a una
computadora. En el modelo de un periférico se distinguen dos
elementos:
 Periféricos o dispositivos de E/S. Elementos que se conectan a la unidad
central de proceso a través de las unidades de entrada/salida. Son el
componente mecánico que se conecta a la computadora.
 Controladores de dispositivos o unidades de E/S. Se encargan de hacer
la transferencia de información entre la memoria principal y los
periféricos. Son el componente electrónico a través del cual se conecta
el dispositivo de E/S. Tienen una conexión al bus de la computadora y
otra para el dispositivo (generalmente mediante cables internos o
externos).

Para empezar una operación de E/S, la UCP tiene que escribir sobre los
registros anteriores los datos de la operación a través de una dirección de E/S
o de memoria asignada únicamente al controlador. Según se haga de una u
otra forma, se distingue entre dispositivos conectados por puertos o
proyectados en memoria. El modelo de dispositivos por puertos es clásico en
las arquitecturas de Intel. En ellas, cuando se instala un dispositivo, a su
controlador se le asigna un puerto de E/S, una interrupción hardware y un
vector de interrupción. Para efectuar una operación de

E/S la UCP ejecuta operaciones por o portout con la dirección de puerto del
dispositivo y con parámetros para indicar qué registro se quiere manipular.
Todas las operaciones de entrada/salida (pantalla gráfica, impresoras, ratón,
discos, etc.) se realizan usando esas dos instrucciones de lenguaje máquina
con los parámetros adecuados. El problema de este tipo de direccionamiento
es que exige conocer las direcciones de E/S y programar las instrucciones
especiales de E/S, lo que es significativamente distinto del modelo de memoria
de la computadora. El otro modelo de direccionamiento de E/S es el modelo
proyectado en memoria. Este modelo, típico de las arquitecturas de Motorola,
asigna a cada dispositivo de E/S un rango de direcciones de memoria a través
de las cuales se escribe sobre los registros del controlador. En este modelo no
hay instrucciones específicas de E/S, sino que las operaciones se llevan a cabo
mediante instrucciones máquina de manejo de memoria, lo que permite
gestionar un mapa único de direcciones de memoria. Sin embargo, para no
tener conflictos con otros accesos a memoria y para optimizar las operaciones,
se reserva una zona de memoria física para asignar las direcciones de E/S.

Los dispositivos de almacenamiento secundario y terciario manejan la


información en unidades de tamaño fijo, denominadas bloques, por lo que a su
vez se denominan dispositivos de bloques. Estos bloques se pueden
direccionar de manera independiente, lo que permite leer o escribir un bloque
con independencia de los demás. Los dispositivos de bloque lo son porque el
hardware fuerza la existencia de accesos de un tamaño determinado. Un disco,
por ejemplo, se divide en sectores de 512 bytes o de 1 KB, siendo un sector la
unidad mínima de transferencia que el controlador del disco puede manejar.
Los dispositivos de caracteres, como los terminales, impresoras, tarjetas de
red, módems, etcétera, no almacenan información en bloques de tamaño fijo.
Gestionan flujos de caracteres de forma lineal y sin ningún tipo de estructura de
bloque. Un teclado es un buen ejemplo de estos dispositivos. Está conectado a
una UART (Universal Asvnchronous Receiver/Transmiter) que recibe un
carácter del teclado cada vez que se pulsa una tecla. No es posible leer un
bloque de teclas de un golpe o buscar dentro del dispositivo por ninguna
unidad. Un terminal por línea serie también es un dispositivo de caracteres. Su
controlador se limita a enviar al periférico el flujo de caracteres que debe
representar en la pantalla y a recibir del mismo los caracteres tecleados por el
usuario.

Un controlador de dispositivo (llamado normalmente controlador, o, en inglés,


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 frecuente


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. Estos controladores pueden ser
genéricos (válidos para más de un modelo del mismo periférico) o específicos
para cada modelo. También se distribuyen actualizaciones a nuevas versiones,
que pueden dar un mejor funcionamiento. Normalmente son los fabricantes del
hardware quienes escriben sus controladores, ya que conocen mejor el
funcionamiento interno de cada aparato, pero también se encuentran
controladores libres, por ejemplo en los sistemas operativos libres. En este
caso, los creadores no son de la empresa fabricante, aunque a veces hay una
cooperación con ellos, cosa que facilita el desarrollo. Si no la hay, el
procedimiento necesita de ingeniería inversa y otros métodos difíciles o con
riesgos legales.
Los controladores son muy variados, casi tanto como los dispositivos de E/S.
Muchos de ellos, como los de disco, pueden controlar múltiples dispositivos.
Otros, como los de canales de E/S, incluyen su propia UCP y bus para
controlar la E/S por programa y evitar interrupciones en la UCP de la
computadora. De cualquier forma, en los últimos años ha existido un esfuerzo
importante de estandarización de los dispositivos, lo que permite usar un
mismo controlador para dispositivos de distintos fabricantes. Un buen ejemplo
lo constituyen los dispositivos SCSI cuyos controladores ofrecen una interfaz
común independientemente de que se trate de un disco, una cinta, un CD-
ROM, etc. Otro buen ejemplo son los controladores IDE (In tegrated Drive
Electronics), que suelen usarse para conectar los discos en todas las
computadoras personales.

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
4.2. MECANISMOS Y FUNCIONES DE LOS
MANEJADORES DE DISPOSITIVOS

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 UCP. 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.
Su programación se lleva a cabo mediante una interfaz de muy bajo nivel que
proporciona acceso a una serie de registros del controlador, incluidos en el
mapa de E/S de la computadora, que se pueden acceder mediante
instrucciones de máquina de E/S. Hay tres registros importantes en casi todos
los controladores: registro de datos, estado y control. El registro de datos sirve
para el intercambio de datos. En él irá el controlador cargando los datos leídos
y de él irá extrayendo los datos para su escritura en el periférico. Un bit del
registro de estado sirve para indicar que el controlador puede transferir una
palabra. En las operaciones de lectura esto significa que ha cargado en el
registro de datos un nuevo valor, mientras que en las de escritura significa que
necesita un nuevo dato. Otros bits de este registro sirven para que el
controlador indique los problemas que ha encontrado en la ejecución de la
última operación de E/S. El registro de control sirve para indicarle al controlador
las operaciones que ha de realizar. Los distintos bits de este registro indican
distintas acciones que ha de realizar el periférico. Para empezar una operación
de E/S, la UCP tiene que escribir sobre los registros anteriores los datos de la
operación a través de una dirección de E/S o de memoria asignada únicamente
al controlador. Este modelo vale tanto para los terminales o la pantalla como
para los discos. Las características del controlador son muy importantes, ya
que definen el aspecto del periférico para el sistema operativo. Atendiendo a
las características del hardware de los dispositivos, se pueden observar los
siguientes aspectos distintivos:

 Dirección de E/S. En general hay dos modelos de direccionamiento de


E/S, los que usan puertos y los que proyectan los registros en memoria.

 Unidad de transferencia. Los dispositivos suelen usar unidades de


transferencia de tamaño fijo. Hay dos modelos clásicos de dispositivos:
de caracteres y de bloques.

 Interacción computadora-controlador. La computadora tiene que


interaccionar con la computadora para realizar las operaciones de E/S y
saber cuándo terminan.

Un controlador de dispositivo o unidad de E/S se encarga de controlar uno o


más dispositivos del mismo tipo y de intercambiar información entre ellos y la
memoria principal o unidad central de proceso de la computadora. El
controlador debe encargarse además de sincronizar la velocidad del
procesador con la del periférico y de detectar los posibles errores que se
produzcan en el acceso a los periféricos. En el caso de un controlador de disco,
éste debe encargarse de convertir un flujo de bits procedente del disco a un
bloque de bytes detectando y corrigiendo, si es posible, los errores que se
produzcan en esta transferencia. Una vez obtenido el bloque y comprobado
que se encuentra libre de errores, deberá encargarse de transferirlo a memoria
principal. La información entre los controladores de dispositivo y la unidad
central de proceso o memoria principal se puede transferir mediante un
programa que ejecuta continuamente y lee o escribe los datos del (al)
controlador. Con esta técnica, que se denomina E/S programada, la
transferencia de información entre un periférico y el procesador se realiza
mediante la ejecución de una instrucción de E/S. Con esta técnica, es el
procesador el responsable de extraer o enviar datos entre el procesador y el
controlador de dispositivo, lo que provoca que el procesador tenga que esperar
mientras se realiza la transferencia entre el periférico y el controlador. Dado
que los periféricos son sensiblemente más lentos que el procesador, éste
deberá esperar una gran cantidad de tiempo hasta que se complete la
operación de E/S. En este caso no existe ningún tipo de concurrencia entre la
E/S y el procesador ya que éste debe esperar a que finalice la operación.
Aunque esta técnica es muy antigua, ya que proviene del tiempo en que los
controladores no tenían interrupciones, actualmente los canales de E/S y
algunos multiprocesadores usan esta técnica para evitar que lleguen a la UCP
de la computadora muchas interrupciones de E/S. En ambos casos, la técnica
es la misma: dedicar una UCP especial para la E/S. La forma de hacerlo es
muestrear continuamente los registros de estado de los controladores para ver
si están disponibles y, en ese caso, leer o escribir los registros. Imagine un
canal de E/S al que hay conectados múltiples buses de E/S que, a su vez,
tienen múltiples dispositivos de E/S. Si la UCP quiere escribir en uno de ellos,
debe mirar su registro de estado hasta que los bits indiquen que no está
ocupado. Cuando esto ocurra, escribirá un bloque en los registros del
controlador y esperará hasta que los bits de estado indiquen que está
disponible. Imagine que quiere leer de otro controlador, deberá esperar a que
los bits de estado le indiquen que está disponible, programar la operación y
esperar a que se indique que los datos están disponibles. Evidentemente,
incluso aunque la UCP esté controlando varios dispositivos de E/S, siempre
existe pérdida de ciclos debido a la existencia de las esperas. Sin embargo,
existen situaciones en que esto no es así.

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.
4.3. Estructuras de datos para manejo de
dispositivos

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 módulo
cumple una función determinada e interactúa con los demás módulos

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. Las peticiones se procesan de forma estructurada en las siguientes
capas:
• Manejadores de interrupción.

• Manejadores de dispositivos o drivers.

•Software de E/S independiente de los dispositivos. Este software está


formado por la parte de alto nivel de los manejadores, el gestor de
cache, el gestor de bloques y el servidor de archivos.

• Interfaz del sistema operativo. Llamadas al sistema que usan las


aplicaciones de usuario.

El sistema operativo estructura el software de gestión de E/S de esta


forma para ofrecer a los usuarios una serie de servicios de E/S independientes
de los dispositivos. Esta independencia implica que deben emplearse los
mismos servicios y operaciones de E/S para leer datos de un disquete, de un
disco duro, de un CD-ROM o de un teclado.

Manejadores de interrupción

Los manejadores de interrupción se encargan de tratar las interrupciones que


generan los controla dores de dispositivos una vez que éstos están listos para
la transferencia de datos o bien han leído o escrito los datos de memoria
principal en caso de acceso directo a memoria. Para tratar dicha interrupción se
ejecuta el correspondiente manejador de interrupción cuyo efecto es el de
salvar los registros, comunicar el evento al manejador del dispositivo y
restaurar la ejecución de un proceso (que no tiene por qué ser el interrumpido).

Los manejadores de interrupción suelen hacer algo más que comunicar el


evento al manejador de dispositivo. Cuando una interrupción ocurre muy
frecuentemente, caso del reloj, o cuando la cantidad de información a transferir
es muy pequeña, caso del teclado, sería muy costoso comunicar siempre el
evento al manejador de dispositivo asociado. En estos casos, el propio
manejador de interrupción registra la ocurrencia del evento, bien mediante el
incremento de una variable global para el reloj o la acumulación de caracteres
en un buffer del teclado. La notificación al manejador se hace únicamente cada
cierto número de ocurrencias del evento, en el caso del reloj, o activando unflag
que indica que hay datos en el buffer del teclado.

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.
Software de E/S independiente del dispositivo

La mayor parte del sistema de E/S es software independiente de


dispositivo. Este nivel incluye el sistema de archivos y el de gestión de red, el
gestor de bloques, la cache de bloques y una parte de los manejadores de
dispositivo. La principal función de esta capa de software es ejecutar las
funciones de E/S que son comunes a todos los dispositivos a través de una
interfaz uniforme.

Internamente, en este nivel se proporciona acceso a nivel de bloques o


caracteres, almacenamiento intermedio, gestión de los dispositivos,
planificación de la E/S y control de errores.

El tamaño de acceso a nivel de bloques se hace usando tamaños de


bloque de acceso comunes para todo un sistema de archivos, lo que permite
ocultar que cada dispositivo puede tener distinto tamaño de sector y distinta
geometría. Estos detalles quedan ocultos por la capa de software in
dependiente de dispositivo que ofrece una interfaz sobre la base de bloques
lógicos del sistema de archivos. Lo mismo ocurre con los dispositivos de
caracteres, algunos de los cuales trabajan con un carácter cada vez, como el
teclado, mientras otros trabajan con flujos de caracteres, como el modem o las
redes.

Para optimizar la E/S y para armonizar las peticiones de usuario, que


pueden ser de cualquier tamaño, con los bloques que maneja el sistema de
archivos, el software de E/S proporciona almacenamiento intermedio en
memoria del sistema operativo. Esta facilidad se usa para tres cosas:

• Optimizar la E/S evitando accesos a los dispositivos.

• Ocultar las diferencias de velocidad con que cada dispositivo y usuario


manejan los datos.

• Facilitar la implementación de la semántica de compartición, al existir


una copia única de los datos en memoria.

El sistema de E/S mantiene buffers en distintos componentes. Por


ejemplo, en la parte del manejador del teclado independiente del dispositivo
existe un buffer para almacenar los caracteres que teclea el usuario hasta que
se pueden entregar a los niveles superiores. Si se usa una línea serie para leer
datos de un sistema remoto y almacenarlos en el disco, se puede usar un
buffer para guardar temporalmente los datos hasta que tengan una cierta
entidad y sea rentable escribirlos a disco. Si se está leyendo o escribiendo un
archivo, se guardan copias de los bloques en memoria para no tener que
acceder al disco si se vuelven a leer.

La gestión de los dispositivos agrupa a su vez tres servicios: nombrado,


protección y control de acceso.

El nombrado permite traducir los nombres de usuario a identificadores


del sistema. Por ejemplo, en UNIX, cada dispositivo tiene un nombre (p. ej.:
/dev/cdrom) que se traduce en un único identificador interno (o nodo-i), que a
su vez se traduce en un único número de dispositivo principal (clase de
dispositivo) y secundario (elemento de la clase). Cada dispositivo tiene
asociada una información de protección (en UNIX mediante 3 bits para dueño,
grupo y mundo) y este nivel de software asegura que los requisitos de
protección se cumplen. Además proporciona control de acceso para que un
dispositivo dedicado, como una impresora, sea accedido por un único usuario
cada vez.

Una de las funciones principales del sistema de E/S es la planificación


de la E/S de los distintos componentes. Para ello se usan colas de peticiones
para cada clase de dispositivo, de las que se extraen las peticiones de cada
dispositivo en particular. Cada una de estas colas se ordena siguiendo una
política de planificación, que puede ser distinta en cada nivel. Imagine el caso
de LINUX, donde existe una cola global de peticiones de E/S, ordenadas en
orden FIFO, para los discos instalados. Cuando un manejador de disco queda
libre, busca la cola global para ver si hay peticiones para él y, si existen, las
traslada a su cola de peticiones particular ordenadas según la política SCAN,
por ejemplo. Este mecanismo permite optimizar la E/S al conceder a cada
mecanismo la importancia que, ajuicio de los diseñadores del sistema
operativo, se merece. En el caso de Windows NT, por ejemplo, el ratón es el
dispositivo de E/S más prioritario del sistema. La razón que hay detrás de esta
política es conseguir un sistema muy interactivo. En otros sistemas, como
UNIX, las operaciones de disco son más prioritarias que las del ratón para
poder desbloquear rápidamente a los procesos que esperan por la E/S. Sea
cual sea el criterio de planificación, todos los sistemas de E/S planifican las
actividades en varios lugares.

Por último, este nivel proporciona gestión de errores para aquellos casos
que el manejador de dispositivo no puede solucionar. Un error transitorio de
lectura de un bloque se resuelve en el manejador reintentando su lectura. Un
error permanente de lectura no puede ser resuelto y debe ser comunicado al
usuario para que tome las medidas adecuadas. En general, todos los sistemas
operativos incluyen alguna forma de control de errores internos y de
notificación al exterior en caso de que esos errores no se puedan resolver.
Imagine, por ejemplo, que una aplicación quiere leer de un dispositivo que no
existe. El sistema de E/S verá que el dispositivo no está y lo notificará a los
niveles superiores hasta que el error llegue a la aplicación. Sin embargo, es
importante resaltar que los sistemas operativos son cada vez más robustos y
cada vez incluyen más control y reparación de errores, para lo cual usan
métodos de paridad, checksums, códigos correctores de error, etc. Además, la
información que proporcionan cuando hay un error es cada vez mayor.
4.4. Operaciones de Entrada /salida
Tanto en la E/S programada como la basada en interrupciones, la UCP
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 UCP y la E/S consiste en que el controlador del
dispositivo se pueda encargar de efectuar la transferencia de datos, liberando
de este trabajo a la UCP, e interrumpir a la UCP sólo cuando haya terminado la
operación completa de EIS. Esta técnica se denomina acceso directo a
memoria (DMA, Direct Memory Access).

Cuando se utiliza acceso directo a memoria, es el controlador el que se


encarga directamente de transferir los datos entre el periférico y la memoria
principal, sin requerir intervención alguna por parte del procesador. Esta técnica
funciona de la siguiente manera: cuando el procesador desea que se imprima
un bloque de datos, envía una orden al controlador indicándole la siguiente
información:

 Tipo de operación: lectura o escritura.


 Periférico involucrado en la operación.
 La dirección de memoria desde la que se va a leer o a la que va a
escribir directamente con el controlador de dispositivo (dirección).
 El número de bytes a transferir (contador).

Donde el campo Operación corresponde al código de operación de las


instrucciones máquina normal. Especifica la operación que debe realizar la
CCW. La unidad de control decodifica este campo y envía las señales
adecuadas de control al dispositivo. 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º 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. El canal ejecuta las CCW en
secuencia, salvo cuando aparece una CCW de este tipo, que utiliza el campo
dirección del dato como la dirección de la siguiente CCW a ejecutar.

Los pasos a seguir en una operación de E/S con DMA son los siguientes:
1. Programación de la operación de E/S. Se indica al controlador la
operación, los datos a transferir y la dirección de memoria sobre la que
se efectuará la operación.
2. El controlador contesta aceptando la petición de E/S.
3. El controlador le ordena al dispositivo que lea (para operación de
lectura) una cierta cantidad de datos desde una posición determinada
del dispositivo a su memoria interna. 7.3.
4. Cuando los datos están listos, el controlador los copia a la posición de
memoria que tiene en sus registros, incrementa dicha posición de
memoria y decrementa el contador de datospendientes de transferir.
5. Los pasos 3 y 4 se repiten hasta que no quedan más datos por leer.
6. Cuando el registro de contador está a cero, el controlador interrumpe
a la UCP para in dicar que la operación de DMA ha terminado.

Inicio y control de los programas de canal

Hemos visto como se utilizan los programas de canal para realizar operaciones
de E/S. Estos programas residen en la memoria principal del computador y se
ejecutan en el canal. Vamos a examinar ahora la forma en que la CPU inicia y
supervisa las operaciones de E/S, es decir, el programa de canal. En el IBM
S/370 existen cuatro instrucciones máquina que la CPU puede utilizar para
estos fines. Son las siguientes:

 START I/O Inicia una operación de E/S. El campo de dirección de la


instrucción se emplea para especificar el canal y el dispositivo de E/S
que participa en la operación.
 HALT I/O Finaliza la operación del canal.
 TEST CHANNEL Prueba el estado del canal.
 TEST I/O Prueba el estado del canal, el subcanal y el dispositivo de E/S.

Una operación de E/S se inicia con la instrucción START I/O. La ubicación del
programa de canal en la memoria principal viene definida en la palabra de
dirección de canal (CAW: Channel Address Word), que siempre está
almacenada en la posición 72 de la memoria principal.

Potrebbero piacerti anche