21 - El Sistema Operatiu. Gestió D'entrada-Sortida PDF
21 - El Sistema Operatiu. Gestió D'entrada-Sortida PDF
21 - El Sistema Operatiu. Gestió D'entrada-Sortida PDF
Licencia
Este obra de Jess Jimnez Herranz est bajo una licencia Creative Commons Atribucin-
LicenciarIgual 3.0 Espaa.
Basada en una obra en oposcaib.wikispaces.com.
Aplicaciones
Sistema operativo
driver
Controlador
Dispositivo
Polling
El controlador de E/S consulta de forma cclica a todos los dispositivos, buscando si tienen
operaciones pendientes. Es un esquema sencillo, si bien se pierde mucho tiempo de CPU
consultando y esperando, especialmente en dispositivos lentos.
Admite dos enfoques:
Instrucciones especficas: La CPU dispone de instrucciones especiales para el acceso a los
dispositivos de E/S
E/S mapeada en memoria: Se reserva un espacio del direccionamiento de memoria para los
dispositivos de E/S, de manera que toda la informacin que stos presentan en forma de
registros, etc, se hace accesible leyendo esas posiciones de memoria. Igualmente, cualquier
operacin sobre el dispositivo se realiza escribiendo en las posiciones apropiadas de la
memoria. El sistema operativo se encargar de traducir estas lecturas/escrituras a memoria
en las operaciones reales sobre el dispositivo apropiado.
La ventaja de este mtodo es que no requiere implementar instrucciones especficas en la
CPU para la gestin de la E/S, ya que se utilizan las instrucciones convencionales de
lectura/escritura en memoria..
Interrupciones
En este esquema, la CPU dispone de una lnea extra llamada solicitud de interrupcin (IRQ), que
funciona de manera que, cuando se activa, la CPU detiene lo que est haciendo y pasa a ejecutar una
rutina especial, que actuar en funcin de los parmetros de la interrupcin y que, una vez acabada,
devolver el control al flujo de programa que se estuviera utilizando.
Usando este esquema, cada dispositivo puede solicitar la atencin de la CPU cuando lo necesite,
de manera que no es necesario perder tiempo de la CPU monitorizando los dispositivos.
Para gestionar diferentes tipos de interrupcin, en la solicitud de interrupcin se indica un
nmero correspondiente a diferentes tipos de interrupcin. As, el gestor de interrupcin consultar
una tabla o vector de interrupciones, y ejecutar la rutina indicada en la posicin correspondiente.
Las interrupciones se clasifican generalmente en enmascarables o no enmascarables, refirindose
a si la CPU puede inhibir la interrupcin del cdigo por una IRQ. As, generalmente la CPU puede
impedir, para zonas crticas del cdigo, que una interrupcin convencional interrumpa el flujo de
ejecucin. No obstante, las interrupciones no enmascarables se reservan para eventos de alta
prioridad, para los que no se acepta el enmascaramiento. Por ejemplo, una peticin de un disco sera
enmascarable, mientras que el aviso de un inminente corte elctrico no lo sera.
la CPU principal slo intervendra al inicio de la operacin, y al final, cuando el procesador DMA
avisase a la CPU del fin de la transferencia mediante una interrupcin.
Mediante esta catalogacin, el subsistema de E/S del sistema operativo define una interfaz para
el tratamiento de cada clase de dispositivos. Cada dispositivo necesitar nicamente de un pequeo
programa o driver que implemente las operaciones de este interfaz. A continuacin se muestra este
esquema:
Kernel
Subsistema de E/S
Las operaciones asncronas son ms eficientes que las sncronas, ya que evitan las esperas activas
(especialmente graves en dispositivos lentos), si bien el uso de operaciones asncronas complica el
cdigo del programa.
Tipos de dispositivos
A continuacin se muestran algunos detalles de las clases de dispositivos ms comunes:
Los dispositivos de caracteres se suelen utilizar mediante sus operaciones bsicas, y se usan para
aquellos dispositivos que generan/esperan flujos de datos lineales y relativamente asncronos, como
teclados, ratones o impresoras.
Dispositivos de red
Debido a su importancia, para los dispositivos de red, si bien podran manejarse de forma
genrica como un dispositivo de caracteres, se utiliza una abstraccin especfica, que es la de
socket.
Un socket es un flujo de datos al que las aplicaciones pueden conectarse, realizando las
siguientes operaciones:
Conectarse a otro socket en otra mquina remota
Leer o escribir paquetes de datos
Recibir avisos de forma asncrona cuando llegue informacin
Mediante el uso de sockets se facilita notablemente la gestin de las comunicaciones de red, con
independencia del hardware de red o incluso de los protocolos subyacentes, maximizando la
eficiencia y evitando situaciones de espera activa.
Seek: Tiempo necesario para que el cabezal se posicione en la pista apropiada. Depende de
la tecnologa de fabricacin del disco duro, y es, con diferencia, el mayor de los tres.
Latencia: Una vez posicionado el cabezal, tiempo que transcurre hasta que el sector deseado
pasa por el cabezal. Depende de la velocidad de rotacin del disco.
Transferencia: Tiempo que se tarda en recorrer todo el sector para leer/escribir su contenido.
Depende de la velocidad de rotacin y la densidad de los datos.
Generalmente, el tiempo de seek se mueve en torno a los 8-10 ms, mientras que el tiempo de
latencia est en 3-4 ms. Una velocidad de transferencia tpica podran ser 20-30 MB/s, por lo que,
por ejemplo, para leer 100 KB seran necesarios aproximadamente 3 ms.
Dado que el tiempo de posicionamiento del cabezal de un disco duro depende, adems de las
propias caractersticas fsicas del disco, de la posicin desde la que parta, es deseable ordenar
convenientemente las operaciones de E/S para minimizar el movimiento del cabezal y mejorar, por
tanto, el rendimiento del disco duro.
Existen numerosos esquemas de planificacin de operaciones de disco:
FIFO: Las peticiones se procesan en orden de llegada. No tiene un buen rendimiento, pero
tampoco genera desigualdades entre las peticiones.
LIFO: Siempre se procesa en primer lugar la ltima peticin en llegar. Es mejor que FIFO,
ya que aprovecha el principio de localidad que dice que la ltima peticin es probable que
sea a zonas del disco cercanas a las ms recientes. Ahora bien, puede generar inanicin si
continan llegando peticiones mientras otras quedan en espera.
Si desde el sistema operativo se tiene informacin sobre la posicin actual del cabezal, es posible
llevar a cabo polticas ms complejas y eficientes:
SSTF (Shortest Seek Time First): Encolar las peticiones, y enviar cada vez a disco la
peticin ms cercana a la posicin actual del cabezal. Es eficiente, pero puede provocar
inanicin al discriminarse peticiones a zonas lejanas.
SCAN: Ordena las peticiones segn accedan al principio o al fin del disco. Una vez
finalizado un recorrido de principio a fin, hace otro desde el fin hasta el principio. El
problema que tiene, a pesar de que no es posible la inanicin, es que estadsticamente
favorece a las peticiones de los extremos del disco. Una variacin de SCAN es LOOK, en la
que se cambia de direccin en cuanto ya no hay ms operaciones en un sentido.
Este algoritmo se conoce tambin como del ascensor, ya que emula su comportamiento.
SCAN circular: Similar a SCAN, pero una vez acabada una pasada se vuelve a empezar otra
vez desde el principio en lugar de hacer una pasada inversa. De esta forma el tiempo
mximo de espera es globalmente menor y el uso de disco es equitativo.
Estas polticas pueden tener problemas ante la llegada de nuevos trabajos, que si se producen
frecuentemente en las mismas zonas pueden ralentizar las pasadas y discriminar a otras peticiones.
Para evitarlo, se pueden usar diferentes tcnicas:
Cach de disco
Como se ha comentado anteriormente, una tcnica para aumentar el rendimiento es el uso de
memorias cach para las operaciones de disco, de manera que se puedan evitar operaciones al disco
si la informacin solicitada se encuentra en la cach.
La cach de disco puede implementarse de dos formas:
Memoria especfica en el propio dispositivo
Reserva de parte de la memoria RAM como memoria cach
Generalmente se utiliza una combinacin de ambos enfoques, dedicando una memoria de
pequeo tamao en el propio dispositivo, al tiempo que el SO reserva una cantidad variable de
memoria principal como cach (en funcin de la carga del sistema, el tipo de dispositivo y otras
consideraciones).
El uso de cachs de disco plantea dos problemticas:
Polticas de reemplazo
Otro aspecto importante que debe gestionar el SO relacionado con las cachs de disco es qu
bloques de la misma debe descartar cuando haya que cargar bloques nuevos. La incorrecta eleccin
de los bloques a descartar puede provocar problemas importantes de rendimiento si, por ejemplo, un
mismo bloque se descarta y se vuelve a cargar repetidamente.
As, existen principalmente las siguientes polticas de reemplazo de bloques:
LRU (Least Recently Used): Descartar el bloque que hace ms tiempo que no se ha usado.
Para ello, la cach se organiza como una pila, de manera que, cuando se accede a un bloque,
se pone en la cabecera de la pila. As, la implementacin de LRU consiste simplemente en
descartar el bloque que est en la parte inferior de la pila de bloques.
LFU (Least Frequently Used): Descartar el bloque que ha sido usado con menos frecuencia.
Para ello, junto con cada bloque se mantiene un contador que se incrementa con cada acceso.
As, al descartar se elige el bloque cuyo contador es ms bajo.
Aunque en principio pueda parecer que LFU es una estrategia ms apropiada, tiene problemas
con las rfagas de acceso a un bloque, ya que puede suceder que un bloque sea accedido muchas
veces en un instante dado (incrementando as su contador), pero no vuelva a ser accedido
posteriormente. El alto contador generado por la rfaga de accesos impedira el descarte de este
bloque.
Para solucionar este problema, se utiliza una tcnica hbrida entre LRU y LFU, llamada descarte
basado en frecuencia, que consiste en organizar los bloques en tres secciones: