viernes, 24 de noviembre de 2017

Sistemas de entrada y salida




        Principios del hardware de entrada y salida

El Hardware se categoriza en 2 partes:

a) Dispositivos por bloques. Es el encargado de almacenar la información en bloques de tamaño fijo, cada uno de ellos deberá contar con su propia dirección.

El direccionamiento de bloque lógico, en inglés logical block addressing (LBA), es un método muy común usado para especificar la localización de los bloques de datos en los sistemas de almacenamiento, principalmente el almacenamiento secundario de una computadora. El término LBA puede referirse también a la «dirección del bloque» al que enlaza. 


LBA es un método de direccionamiento particularmente simple. Los bloques son numerados según un índice, siendo el primer bloque: LBA 0, el segundo: LBA 1, y así sucesivamente.

Este método sucede a otros sistemas anteriores que exponían los detalles físicos de las unidades de almacenamiento al software directamente, con los riesgos que ello conlleva. El pionero de estos sistemas fue Cilindro-Cabezal-Sector (cylinder-head-sector o CHS), donde se les asignaba una dirección a cada bloque mediante una tupla que definía el cilindro, el cabezal y el sector en que se encontraba. Este sistema no funcionaba bien en dispositivos que no fueran discos duros, como las cintas magnéticas, por lo que no era muy usado en esos casos. El sistema CHS debutó en las unidades RLL y MFM. El CHS y su sucesor, el Extended Cylinder-Head-Sector (ECHS), fueron usados en las primeras unidades Integrated Drive Electronics (IDE).

b)Dispositivos por caracteres. Este tipo de dispositivo es el que se encarga de proveer y aceptar una serie de caracteres que son convertidos en corriente eléctrica, Estos dispositivos suministran o aceptan un flujo de caracteres sin estructurarlos en bloques, no es direccionable y no tiene una operación de desplazamiento. Tenemos impresoras, ratones, etc.



Existen además otros dispositivos como los relojes que no son direccionables por bloques pero tampoco aceptan o generan flujo de caracteres y lo único que hacen es generar interrupciones a intervalos de tiempo bien definidos.

 
 


En este diagrama podemos ver, el CPU mas detalladamente , viendo de lo que lo compone, igualmente siendo los buses de direcciones y buses de datos los que llevan la informacion y logra o deja comunicar los unos con los otros, a su vez todos los dispositivos aca vistos son de gran importancia y son requeridos todos para el buen funcionamiento y rendimiento de la CPU.

Principios de software de entrada y salida

Las metas generales del software de entrada y salida son fáciles de establecer. La idea básica es organizar el software como una serie de capas, en donde las capas inferiores se encarguen de ocultar las peculiaridades del hardware a las capas superiores y de forma que estas se preocupen por presentar una interfaz agradable, limpia y regular a los usuarios. 

Objetivos del software de entrada y salida

Un concepto clave en el diseño del software de entrada y salida es la independencia del dispositivo. Debe ser posible escribir programas que se puedan utilizar con archivos en un disco flexible o un disco duro, sin tener que modificar los programas para cada tipo de dispositivo. De hecho, debe ser posible desplazar sin siquiera compilarlo. El sistema operativo debe encargarse de los problemas causados por el hecho de que estos sean distintos y requieran directivas de dispositivos muy diferentes.

El objetivo de lograr nombres uniformes está muy relacionado con el de independencia del dispositivo. El nombre de un archivo o dispositivo debe ser solo una cadena o un entero y no debe depender del dispositivo.

Otro aspecto importante del software de entrada y salida es el manejo de errores. En general, los errores deben manejarse lo más cerca posible del hardware. Si el controlador descubre un error de lectura, debe tratar de corregirlo, en la medida de lo posible. Si no puede corregirlo, entonces el manejador del dispositivo debería controlarlo, tal vez mediante la forma de leer el bloque de nuevo. Mucho errores son momentáneos, tales como los de lectura provocados por partículas de polvo en la cabeza de lectura y desaparecen al repetirse la operación. Solo en el caso en que los niveles inferiores no puedan resolver el problema, se informa a los niveles superiores. En muchos casos, la recuperación del error se puede hacer en forma transparente en un nivel inferior.

Otros de los aspectos claves son las transferencias síncrona (por bloques) o asíncrona (contralada por interruptores). La mayor parte de la entrada y salida en asíncrona (la CPU inicia la transferencia y realiza otras labores hasta una interrupción). Los programas del usuario son mucho mas fáciles de escribir si las operaciones de entrada y salida son por medio de bloques (después de un comando READ, el programa se suspende de forma automática hasta que los datos estén disponibles en el buffer). El sistema operativo se encarga de hacer las operaciones controladas por interruptores parezcan del tipo de bloques para el usuario.

El concepto final que analizaremos en la comparación de los dispositivos que se pueden compartir y los dispositivos de uso exclusivo. Algunos de los dispositivos de entrada y salida, como los discos, pueden ser utilizados por varios usuarios al mismo tiempo. No ocurren problemas si varios usuarios tienen archivos abiertos en el mismo disco dura al mismo tiempo. Otros dispositivos como las impresoras, deben dedicarse a solo un usuario hasta concluir con el. No funcionará la situación si cinco usuarios imprimieran líneas entremezcladas al azar en la impresora. El uso de dispositivos de uso exclusivo presenta también una serie de dificultades. De nuevo el sistema operativo debe administrar los dispositivos compartidos y de uso exclusivo de forma que evite dichos problemas.

Software de entrada y salida independiente del dispositivo
La mayor parte del Sistema de E/S es Software Independiente de Dispositivo, que permite ejecutar las funciones de E/S que son comunes a todos los dispositivos a través de una interfaz uniforme. En este nivel se incluyen el Sistema de Archivos, el Gestor de Redes, el Gestor de Bloques, la Cache de Bloques y una parte de los Manejadores de Dispositivos. Internamente en este nivel se le proporciona:

Acceso al Nivel de Bloques o Caracteres:

En los bloques se hace usando tamaños de bloques 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. De igual manera ocurre con los dispositivos de caracteres algunos de los cuales trabajan con carácter a la vez, como el teclado, mientras otros como el Modem trabajan con flujo de caracteres.

Almacenamiento Intermedio en Memoria del Sistema Operativo:

Permite optimizar la E/S y armonizar las peticiones del usuario, que pueden ser de cualquier tamaño con los bloques que maneja el sistema de archivos se usa para tres cosas: la primera es optimizar la E/S evitando acceso a los dispositivos, la segunda es ocultar las diferencias de velocidad con que cada dispositivo y usuario maneja los datos y por último facilitar la implementación de la semántica de compartición, al existir una copia única de datos en memoria.
 La Gestión de los Dispositivos:

Agrupa tres servicios que son: Nombrado, el cual permite traducir los nombres del usuario a identificadores del Sistema; Protección, este nivel asegura que los requisitos de protección se cumplan; Control, proporciona control de acceso para que un dispositivo dedicado como una impresora, sea accedido por un único usuario a la vez.

Planificación de E/S de los distintos Componentes:

Esta es una de las principales funciones del Sistema de E/S. Para llevarla a cabo se usan colas de peticiones para cada clase de dispositivo, de ellas se extraen las peticiones de cada dispositivo en particular. Cada cola se ordena siguiendo una política de planificación que puede ser distinta en cada nivel.

Gestión de Errores:

Se utiliza para aquellos casos en que el manejador del dispositivo no puede dar solución a un error. En general todos los Sistemas Operativos incluyen alguna forma de control de errores internos y de notificación al exterior de que esos errores no se pueden corregir.

Los principios de software en la entrada/salida se resumen en cuatro puntos: el software debe ofrecer manejadores de interrupciones, manejadores de dispositivos, software que sea independiente de los dispositivos y software para usuarios.

Manejadores de Interrupciones.

El primer objetivo referente a los manejadores de interrupciones consiste en que el programador o el usuario no debe darse cuenta de los manejos de bajo nivel para los casos en que el dispositivo está ocupado y se debe suspender el proceso o sincronizar algunas tareas. Desde el punto de vista del proceso o usuario, el sistema simplemente se tardó más o menos en responder a su petición.

Manejadores de Dispositivos.

El sistema debe proveer los manejadores de dispositivos necesarios para los periféricos, así como ocultar las peculiaridades del manejo interno de cada uno de ellos, tales como el formato de la información, los medios mecánicos, los niveles de voltaje y otros. Por ejemplo, si el sistema tiene varios tipos diferentes de discos duros, para el usuario o programador las diferencias técnicas entre ellos no le deben importar, y los manejado

res le deben ofrecer el mismo conjunto de rutinas para leer y escribir datos.

Software que sea independiente de los dispositivos.


Este es un nivel superior de independencia que el ofrecido por los manejadores de dispositivos. Aquí el sistema operativo debe ser capaz, en lo más posible, de ofrecer un conjunto de utilerías para accesar periféricos o programarlos de una manera consistente. Por ejemplo, que para todos los dispositivos orientados a bloques se tenga una llamada para decidir si se desea usar 'buffers' o no, o para posicionarse en ellos.


Software para Usuarios.

La mayoría de las rutinas de entrada - salida trabajan en modo privilegiado, o son llamadas al sistema que se ligan a los programas del usuario formando parte de sus aplicaciones y que no le dejan ninguna flexibilidad al usuario en cuanto a la apariencia de los datos. Existen otras librerías en donde el usuario si tiene poder de decisión (por ejemplo la llamada a "printf" en el lenguaje"C"). Otra facilidad ofrecida son las áreas de trabajos encolados (spooling areas), tales como las de impresión y correo electrónico.