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.
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
Publicar un comentario