Ahora consideremos el software de salida. Primero analizaremos una salida de ejemplo a una ventana de texto, que es lo que los programadores prefieren utilizar comúnmente. Después consideraremos las interfaces gráficas de usuario, que otros usuarios prefieren a menudo.
Ventanas de texto
La salida es más simple que la entrada cuando se envía secuencialmente en un solo tipo de letra, tamaño y color. En su mayor parte, el programa envía caracteres a la ventana en uso y se muestran ahí. Por lo general, un bloque de caracteres (por ejemplo, una línea) se escribe en una llamada al sistema.
martes, 18 de octubre de 2016
Software De Entrada
La entrada del usuario proviene principalmente del teclado y del ratón; analicemos estos dispositivos. En una computadora personal, el teclado contiene un microprocesador integrado que por lo general se comunica, a través de un puerto serial especializado, con un chip controlador en la tarjeta principal (aunque cada vez con más frecuencia, los teclados se conectan a un puerto USB).
Se genera una interrupción cada vez que se oprime una tecla, y se genera una segunda interrupción cada vez que se suelta. En cada una de estas interrupciones de teclado, el software controlador del mismo extrae la información acerca de lo que ocurre desde el puerto de E/S asociado con el teclado.
Software de teclado
El número en el puerto de E/S es el número de tecla, conocido como código de exploración, no el código ASCII. Los teclados tienen menos de 128 teclas, por lo que sólo se necesitan 7 bits para representar el número de tecla. El octavo bit se establece en 0 cuando se oprime una tecla, y en 1 cuando se suelta. Es responsabilidad del controlador llevar un registro del estado de cada tecla (oprimida o suelta). Por ejemplo, cuando se oprime la tecla A el código de exploración (30) se coloca en un registro de E/S. Es responsabilidad del controlador determinar si es minúscula, mayúscula, CTRL-A, ALT-A, CTRL-ALT-A o alguna otra combinación.
Software De Reloj
odo lo que hace el hardware del reloj es generar interrupciones a intervalos conocidos. Todo lo demás que se relacione con el tiempo debe ser realizado por el software controlador del reloj. Las tareas exactas del controlador del reloj varían de un sistema operativo a otro, pero por lo general incluyen la mayoría de las siguientes tareas:
1. Mantener la hora del día.
2. Evitar que los procesos se ejecuten por más tiempo del que tienen permitido.
3. Contabilizar el uso de la CPU.
4. Manejar la llamada al sistema alarm que realizan los procesos de usuario.
5. Proveer temporizadores guardianes (watchdogs) para ciertas partes del mismo sistema.
6. Realizar perfilamiento, supervisión y recopilación de estadísticas.
La primera función del reloj, mantener la hora del día (también conocida como tiempo real), no es difícil. Sólo requiere incrementar un contador en cada pulso de reloj, como se dijo antes. Tres formas de tener la hora al dia:
Hardware De Reloj
Hay dos tipos de relojes de uso común en las computadoras, y ambos son bastante distintos de los relojes que utilizan las personas. Los relojes más simples están enlazados a la línea de energía de 110 o 220 voltios y producen una interrupción en cada ciclo de voltaje, a 50 o 60 Hz. Estos relojes solían dominar el mercado, pero ahora son raros. El otro tipo de reloj se construye a partir de tres componentes: un oscilador de cristal, un contador y un registro contenedor. Cuando una pieza de cristal de cuarzo se corta en forma apropiada y se monta bajo tensión, puede generar una señal periódica con una precisión muy grande, por lo general en el rango de varios cientos de megahertz, dependiendo del cristal elegido. Mediante el uso de componentes electrónicos, esta señal base puede multiplicarse por un pequeño entero para obtener frecuencias de hasta 1000 MHz o incluso más. Por lo menos uno de esos circuitos se encuentra comúnmente en cualquier computadora, el cual proporciona una señal de sincronización para los diversos circuitos de la misma. Esta señal se alimenta al contador para hacer que cuente en forma descendente hasta cero. Cuando el contador llega a cero, produce una interrupción de la CPU. Ejemplo de un reloj programable:
Formato De Disco
Un disco duro consiste en una pila de platos de aluminio, aleación de acero o vidrio, de 5.25 o 3.5 pulgadas de diámetro (o incluso más pequeños en las computadoras notebook). En cada plato se deposita un óxido de metal delgado magnetizable. Después de su fabricación, no hay información de ninguna clase en el disco. Antes de poder utilizar el disco, cada plato debe recibir un formato de bajo nivel mediante software. El formato consiste en una serie de pistas concéntricas, cada una de las cuales contiene cierto número de sectores, con huecos cortos entre los sectores.
Ejemplo de como esta construdi el sector de un disco duro:
Hardware De Disco
Los discos son de diversos tipos. Los mas comunes son los discos magnetico(disco duro y disquetes).estos se caracteriszan por el hecho de que las lectura y escritura son de igual de rapidas, lo que hace ideales como memorias secundarias (paginacion, sistema de archrchivo).
Aveces se usan grupo de estos didcos para contar con el amacenamiento muy confiable. Para la distribucion de progrmas , datos y peliculas son importantes diversos tipos de discos optico (CD-ROM,CD grabable y DVD). En las secciones que siguen decribiremos primero el hardwae y luego el software de esto dispositivos.
Drivers De Dispositivos
Cada dispositivo de E/S conectado a una computadora necesita cierto código específico para controlarlo. Este código, conocido como driver, es escrito por el fabricante del dispositivo y se incluye junto con el mismo. Como cada sistema operativo necesita sus propios drivers, los fabricantes de dispositivos por lo común los proporcionan para varios sistemas operativos populares. Cada driver maneja un tipo de dispositivo o, a lo más, una clase de dispositivos estrechamente relacionados. Por ejemplo, un driver de disco SCSI puede manejar por lo general varios discos SCSI de distintos tamaños y velocidades, y tal vez un CD-ROM SCSI también. Por otro lado, un ratón y una palanca de mandos son tan distintos que por lo general se requieren controladores diferentes. Sin embargo, no hay una restricción técnica en cuanto a que un driver controle varios dispositivos no relacionados. Simplemente no es una buena idea. Para poder utilizar el hardware del dispositivo (es decir, los registros del controlador físico), el driver por lo general tiene que formar parte del kernel del sistema operativo, cuando menos en las arquitecturas actuales.
Manejadores De Interrupciones
Las interrupciones son desagradables pero inevitables, y deben ocultarse en las profundidades del sistema operativo, con el fin de reducir al mínimo las partes del sistema que tienen conocimiento de ellas. La mejor forma de ocultarlas es hacer que cada proceso inicie un bloqueo de operación de WS hasta que la E/S se haya llevado a cabo y la interrupción ocurra. El proceso puede bloquearse ejecutando un DOWN con un semáforo, un WA con una variable de condición o un RECEIVE con un mensaje, por ejemplo.
Cuando sucede la interrupción, el procedimiento de interrupciones hará lo que tenga que hacer para desbloquear el proceso que la originó. En algunos sistemas se ejecutará un UP con un semáforo; en otros, se ejecutará un SIGNAL con una variable de condición en un monitor. En otros más, se enviará un mensaje al proceso bloqueado. En todos los casos, el efecto neto de la interrupción será que un proceso que estaba bloqueado está ahora en condiciones de ejecutarse.
E/S Mediante El Uso De DMA
Una obvia desventaja de la E/S controlada por interrupciones es que ocurre una interrupción en cada carácter. Las interrupciones requieren tiempo, por lo que este esquema desperdicia cierta cantidad de tiempo de la CPU. Una solución es utilizar DMA. Aquí la idea es permitir que el controlador de DMA alimente los caracteres a la impresora uno a la vez, sin que la CPU se moleste. En esencia, el DMA es E/S programada, sólo que el controlador de DMA realiza todo el trabajo en vez de la CPU principal. Esta estrategia requiere hardware especial (el controlador de DMA) pero libera la CPU durante la E/S para realizar otro trabajo. En la figura 5-10 se muestra un esquema del código.

E/S Controlada Por Interrupciones
E/S controlada por interrupciones:
Elimina bucles de sondeo de forma que entre la cpu y la unidad de antrada y salida existe una linea de comunicación hardware que provoca que cuando un periférico precisa de la extensión de la cpu, la unidad de E/S envía un nivel de extensión que provoca una interrupción en la cpu.
Clasificación de las interrupciones:
Origen
Nro. de lineas
Control de la cpu sobre la interrupción
Identificación de la fuente de la interrupción
Gestión de prioridad
Niveles de interrupción:
Externa =>periféricos. Internas => la propia cpu
linea. Múltiples lineas
Enmascarables. No enmascarables.
Múltiples lineas. Encuestas Vectorizadas
Software. Hardware
Nivel único. Multinivel
Controlador de interrupciones:
Su misión es aumentar el número de lineas y encargarse e la gestión.
Funciones:
1.- Identicar la fuente de interrupciones
2.- Establecer las prioridades de cada periferico
3.- Activar/desactivar las interrupciones
4.- Enviar información a la cpu sobre la petición de interrupción y el periferico atender.
E/S Programada
Hay tres maneras fundamentalmente distintas en que se puede llevar a cabo la E/S. En esta sección analizaremos la primera (E/S programada). En las siguientes dos secciones examinaremos las otras (E/S controlada por interrupciones y E/S mediante el uso de DMA). La forma más simple de E/S es cuando la CPU hace todo el trabajo. A este método se le conoce como E/S programada. Es más simple ilustrar la E/S programada por medio de un ejemplo. Considere un proceso de usuario que desea imprimir la cadena de ocho caracteres “ABCDEFGH” en la impresora. Primero ensambla la cadena en un búfer en espacio de usuario, como se muestra en la figura 5-7(a). Después el proceso de usuario adquiere la impresora para escribir, haciendo una llamada al sistema para abrirla. Si la impresora está actualmente siendo utilizada por otro proceso, esta llamada fallará y devolverá un código de error o se bloqueará hasta que la impresora esté disponible, dependiendo del sistema operativo y los parámetros de la llamada. Una vez que obtiene la impresora, el proceso de usuario hace una llamada al sistema para indicar al sistema operativo que imprima la cadena en la impresora.
Objetivos Del Software E/S
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.
Los objetivos más importantes del software de E/S son:
-Ocultar la complejidad del hardware a los procesos que se ejecutan por encima del sistema operativo.
-Presentar una interfaz de E/S sencilla.
Para conseguir estos objetivos se estructura el software de E/S en capas, de forma que las capas inferiores ocultan la complejidad del hardware a las capas superiores y éstos se encargan de conseguir una interfaz sencilla.







