domingo, 31 de octubre de 2010

3.2 Principios del Software de E/S

La idea básica es organizar el software como una serie de capas:

  • Las capas inferiores se encarguen de ocultar las peculiaridades del hardware a las capas superiores.
  • Las capas superiores deben presentar una interfaz agradable, limpia y regular a los usuarios

Objetivos del software de E/S

Un concepto clave del diseño del software de E/S se conoce como 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 SO

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 de E/S es el manejo de errores.

  • 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 importante es si las transferencias son síncronas (por bloqueo) o asíncronas (controladas por interrupciones).

  • 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 sistema operativo se encarga de hacer que operaciones controladas por interruptores parezcan del tipo de bloques para el usuario.

También el sistema operativo debe administrar los dispositivos compartidos (ej.: discos) y los de uso exclusivo (ej.: impresoras).

Estos objetivos se pueden lograr de una forma lógica y eficiente estructurando el software de E/S en cuatro capas:

1. Manejadores de interrupciones (capa inferior)

2. Controladores de dispositivos en software

3. Software del sistema operativo independiente del software

4. software de usuario (capa superior)

Manejo 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 conocimientos de ella.

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.

En algunos sistemas se ejecutara un UP con un semáforo; en otros, se ejecutara un SIGNAL con una variable de condición en el monitor. En otros más, se enviara un mensaje al proceso de bloqueo.

Controladores de Dispositivos

Todo el código que depende de los dispositivos aparece en los manejadores de dispositivos.

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 está 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:
    • Estimar el lugar donde se encuentra en realidad el bloque solicitado.
    • Verificar si el motor de la unidad funciona.
    • Verificar si el brazo está colocado en el cilindro adecuado, etc.
    • Resumiendo: debe decidir cuáles 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 está bien transferirá los datos al software independiente del dispositivo.
    • Regresa información de estado sobre los errores a quien lo llamó.
    • Inicia otra solicitud pendiente o queda en espera.

Software de E/S Independiente del Dispositivo

Funciones generalmente realizadas por el software independiente del dispositivo:

  • Interfaz uniforme para los manejadores de dispositivos.
  • Nombres de los dispositivos.
  • Protección del dispositivo.
  • Proporcionar un tamaño de bloque independiente del dispositivo.
  • Uso de buffers.
  • Asignación de espacio en los dispositivos por bloques.
  • Asignación y liberación de los dispositivos de uso exclusivo.
  • Informe de errores.

Las funciones básicas del software independiente del dispositivo son:

  • Efectuar las funciones de E/S comunes a todos los dispositivos.
  • Proporcionar una interfaz uniforme del software a nivel usuario.

El software independiente del dispositivo asocia los nombres simbólicos de los dispositivos con el nombre adecuado.

Un nombre de dispositivo determina de manera única el nodo-i de un archivo especial:

  • Este nodo-i contiene el número principal del dispositivo, que se utiliza para localizar el manejador apropiado.
  • El nodo-i contiene también el número secundario de dispositivo, que se transfiere como parámetro al manejador para determinar la unidad por leer o escribir.

El software independiente del dispositivo debe:

  • Ocultar a los niveles superiores los diferentes tamaños de sector de los distintos discos.
  • Proporcionar un tamaño uniforme de los bloques, por ej.: considerar varios sectores físicos como un solo bloque lógico.

Software de E/S en el Espacio del Usuario

La mayoría del software de E/S está dentro del SO

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.

Otra categoría importante de software de E/S a nivel usuario es el sistema de spooling.

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 proceso 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, ú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.

No hay comentarios:

Publicar un comentario