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.

Una Estructura de Datos es una forma de organizar un conjunto de datos

elementales con el objetivo de facilitar su manipulación. Un dato elemental es la

mínima información que se tiene en un sistema. 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 EIS 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.

Estructura simple o sistema monolítico

El sistema MS-DOS es, sin duda, el mejor sistema operativo para

microcomputadoras. Sin embargo, sus interfaces y niveles de funcionalidad no

están bien definidos. Los programas de aplicación pueden acceder a operaciones

básicas de entrada / salida para escribir directamente en pantalla o discos. Este libre

acceso, hace que el sistema sea vulnerable, ya que un programa de aplicación

puede eliminar por completo un disco rígido por alguna falla. Además, este sistema,

también está limitado al hardware sobre el que corre.

Otra estructura simple es la utilizada por la versión original de UNIX, esta consiste

de dos partes separadas, el kernel y los programas de sistemas. El kernel fue

posteriormente separado en manejadores (drivers) de dispositivos y una serie de

interfaces. El kernel provee el sistema de archivos, la programación de CPU, el

administrador de memoria y otras funciones del sistema operativo que responden a

las llamadas del sistema enunciadas anteriormente.

Es una forma de relación entre el kernel y el software

los sistemas operativos que usaron este sistema fueron freedbsd, unix y linux.


Estructura por capas (layers)

Las nuevas versiones de UNIX se diseñaron para hardware más avanzado. Para

dar mayor soporte al hardware, los sistemas operativos se dividieron en pequeñas

partes. Ahora los sistemas operativos tienen mayor control sobre el hardware y las

aplicaciones que se ejecutan sobre este.

La modularización de un sistema se puede presentar de varias formas, la más

utilizada es la de capas, la cual consiste en dividir al sistema operativo en un numero

de capas. La capa de menor nivel es el hardware y la de mayor nivel es la interfaz

con el usuario.

La principal ventaja es que cada capa cumple con una serie de funciones y servicios

que brinda a las otras capas, esto permite una mejor organización del sistema

operativo y una depuración más fácil de este.

Es una estructura organizada jerárquicamente cada una construidas de menor a

mayor.

Cada capa se implementa solo utilizando las operaciones provistas por la capa de

nivel inferior. Una capa no necesita saber cómo se implementan estas funciones,

solo necesita saber que operaciones puede realizar.

Los procesos de usuario emiten peticiones de E/S 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.


BUFFERING (uso de memoria interna)

Trata de mantener ocupados tanto la CPU como los dispositivos de E/S. Los datos se leen y se almacenan en un buffer, una vez que los datos se han leído y la CPU va a iniciar inmediatamente la operación con ellos, el dispositivo de entrada es introducido para iniciar inmediatamente la siguiente lectura. La CPU y el dispositivo de entrada permanecen ocupados. Cuando la CPU este libre para el siguiente grupo de datos, el dispositivo de entrada habrá terminado de leerlos. La CPU podrá empezar el proceso de los últimos datos leídos, mientras el dispositivo de entrada iniciara la lectura de los datos siguientes.

SPOOLING
Esta forma de procesamiento de denomina spooling, utiliza el disco como un buffer
muy grade para leer tan por delante como sea posible de los dispositivos de entrada
y para almacenar los ficheros hasta que los dispositivos de salida sean capaces de
aceptarlos.
Es una característica utilizada en la mayoría de los sistemas operativos.

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 EIS 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 aplicacionesde usuario.

Sistema Operativo

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 CDROM

o de un teclado.

Manejadores de Interrupción

Un manejador de interrupciones, también conocido como ISR (interrupt service

routine o rutina de servicio de interrupción), es una subrutina callback en un sistema

operativo o en un controlador de dispositivo cuya ejecución es desencadenada por

la recepción de una interrupción. Los manejadores de instrucciones tienen una

multitud de funciones, que varían basadas en el motivo por el cual la interrupción

fue generada y la velocidad en la cual el manejador de interrupciones completa su

tarea. Estos manejadores pueden ser iniciados por interrupciones de hardware o de

software, y son usados para servir a los dispositivos de hardware y transiciones

entre modos protegidos de operación como los llamados de sistema.

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

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

de dispositivos. Cada dispositivo de E/S 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.



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.

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.

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 independiente del

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 módem 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.
  • La gestión de los dispositivos agrupa a su vez tres servicios: nombrado, protección y control de acceso.
  • 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.

Proporcionar una interfaz

El software independiente del dispositivo asocia los nombres simbólicos de los

dispositivos con el nombre adecuado.

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.

Comentarios