domingo, 11 de mayo de 2014

Operaciones de Entrada /salida

Tanto en la E/S programada como la basada en interrupciones, el 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 el CPU y la E/S consiste en que el controlador del dispositivo se pueda encargar de efectuar la transferencia de datos, liberando de este trabajo al CPU, e interrumpirlo sólo cuando haya terminado la operación completa de E/S. Esta técnica se denomina acceso directo a memoria (DMA, Direct Memory Access). 
Si se lee el disco sin DMA: 

  • El controlador lee en serie el bloque (uno o más sectores) de la unidad: 
    • La lectura es bit por bit. 
    • Los bits del bloque se graban en el buffer interno del controlador. 
  • Se calcula la suma de verificación para corroborar que no existen errores de lectura. 
  • El controlador provoca una interrupción. 
  • El S. O. lee el bloque del disco por medio del buffer del controlador: 
    • La lectura es por byte o palabra a la vez. 
    • En cada iteración de este ciclo se lee un byte o una palabra del registro del controlador 
  • Se desperdicia tiempo del CPU. 

DMA se ideó para liberar al CPU de este trabajo de bajo nivel. 

El CPU le proporciona al controlador:

  • La dirección del bloque en el disco. 
  • La dirección en memoria a donde debe ir el bloque. 
  • El número de bytes por transferir. 

Luego de que el controlador leyó todo el bloque del dispositivo a su buffer y de que corroboró la suma de verificación: 


  • Copia el primer byte o palabra a la memoria principal. 
  • Lo hace en la dirección especificada por medio de la dirección de memoria de DMA. 
  • Incrementa la dirección DMA y decrementa el contador DMA en el número de bytes que acaba de transferir. 
  • Se repite este proceso hasta que el contador se anula y por lo tanto el controlador provoca una interrupción. 
  • Al iniciar su ejecución el S. O. luego de la interrupción provocada, no debe copiar el bloque en la memoria, porque ya se encuentra ahí y se almacena en memoria.

Espacio de usuario para software de E/S


La mayoría del software de e / s está dentro del S. O. Una pequeña parte consta de bibliotecas ligadas entre sí con los programas del usuario. La biblioteca estándar de e / s contiene varios procedimientos relacionados con e / s y todos se ejecutan como parte de los programas del usuario. 
El spooling es una forma de trabajar con los dispositivos de e /s de uso exclusivo en un sistema de multiprogramación: 

  •  El ejemplo típico lo constituye la impresora de líneas. 
  •  Los procesos de usuario no abren el archivo correspondiente a la impresora. 
  •  Se crea un proceso especial, llamado demonio en algunos sistemas. 
  •  Se crea un directorio de spooling. 

Para imprimir un archivo: 

  • Un proceso genera todo el archivo por imprimir y lo coloca en el directorio de spooling. 
  • El proceso especial (demonio), único con permiso para utilizar el archivo especial de la impresora, debe imprimir los archivos en el directorio. 
  • Se evita el posible problema de tener un proceso de usuario que mantenga un recurso tomado largo tiempo. 

Un esquema similar también es aplicable para la transferencia de archivos entre equipos conectados: 

  • Un usuario coloca un archivo en un directorio de spooling de la red. 
  • Posteriormente, el proceso especial lo toma y transmite. Un ej. son los sistemas de correo electrónico.

Estructuras de datos para manejo de dispositivos

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

miércoles, 7 de mayo de 2014

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 el CPU. El S. O. generalmente trabaja con el controlador y no con el dispositivo. 
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 
    • 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 el CPU: 
    •  Pueden ser parte del espacio normal de direcciones de la 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, el 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 del CPU. 
  • Verifique los resultados de la operación. 
El 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 
  •  control

Drivers

Un controlador de dispositivo 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 para usarlo.
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.
Los controladores de dispositivo se suelen agrupar en alguna de las siguientes categorías o clases:
  • Adaptadores de audio
  • Teclados
  • Ratón
  • Dispositivos multimedia
  • Dispositivos de Red
  • Impresoras
  • Almacenamiento

Dispositivos entrada-salida

Se pueden clasificar en dos grandes categorías según el tipo de transmisión de información:

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. 

Dispositivos de caracter 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. 
  • Un ejemplo típico de dispositivos de caracter son las impresoras de línea, terminales, interfaces de una red, ratones, etc.

Funciones principales de un sistema operativo



Una de las funciones principales de un sistema operativo es el control de todos los dispositivos de entrada/salida de la computadora .
  • Enviar comandos a los dispositivos. 
  • Detectar las interrupciones. 
  • Controlar los errores. 
  • Proporcionar una interfaz entre los dispositivos y el resto del sistema.
  • El código de entrada/salida representa una fracción significativa del sistema operativo
El uso inapropiado de los dispositivos de entrada/salida frecuentemente genera ineficiencias del sistema, lo que afecta al performance global.