Sistemas operativos modernos
5.2.1 Metas del software de E/S Un concepto clave en el diseño del software para E/S se conoce como independencia del dis positivo. Esto significa que debe ser posible escribir programas capaces de acceder a cualquier dispositivo de E/S sin tener que especificar por adelantado de qué dispositivo se trata. Por ejem plo, un programa que lee un archivo como entrada deberá poder leerlo de un disco flexible, de un disco duro o de un CD-ROM, sin tener que modificar el programa para cada dispositivo. Asi mismo, deberá ser posible teclear un comando como sort <entrada >salida y lograr que funcione con entradas provenientes de un disquete, un disco IDE, un disco SCSI o el teclado, y que envíe las salidas a cualquier tipo de disco o a la pantalla. Corresponde al sis tema operativo resolver los problemas causados por el hecho de que tales dispositivos en rea lidad son diferentes y requieren sucesiones de comandos muy distintas para leer o escribir. Algo estrechamente relacionado con la independencia del dispositivo es la meta de nom bres uniformes. El nombre de un archivo o dispositivo deberá ser simplemente una cadena o un entero y no depender en absoluto del dispositivo. En UNIX, todos los discos pueden inte grarse a la jerarquía del sistema de archivos de forma arbitraria, así que el usuario no tiene que saber qué nombre corresponde a cuál dispositivo. Por ejemplo, un disco flexible se puede mon tar encima del directorio /usr/ast/respaldo de modo que si se copia un archivo en /usr/ast/res- paldoAunes, dicho archivo se copie en el disquete. Así, lodos los archivos y dispositivos se direccionan del mismo modo: con un nombre de ruta. Otro aspecto importante del software de E/S es el manejo de errores. En general, los erro res deben manejarse tan cerca del hardware como sea posible. Si la controladora descubre un error de lectura, deberá tratar de corregirlo ella misma si puede. Si no puede, el controlador de dispo sitivo deberá corregirlo, tal vez repitiendo el intento de leer el bloque. Muchos errores son tran sitorios, como los de lectura causados por una partícula de polvo en la cabeza de lectura, y desaparecen si se repite la operación. Sólo si las capas inferiores no pueden ocuparse del pro blema deberá informarse de él a las capas superiores. En muchos casos, la recuperación de errores puede efectuarse de manera transparente en un nivel bajo, sin que los niveles superio res se enteren siquiera de que hubo un error. Otro aspecto clave es la diferencia entre las transferencias síncronas (por bloqueo) y asin cronas (controladas por interrupciones). Casi toda la E/S física es síncrona: la CPU inicia la transferencia y se pone a hacer alguna otra cosa hasta que llega la interrupción. Los programas de usuario son mucho más fáciles de escribir si las operaciones de E/S son bloqueadoras: des pués de una llamada al sistema read, el programa se suspende en forma automática hasta que los datos estén en el búfer. Corresponde al sistema operativo hacer que operaciones que en rea lidad son controladas por interrupciones parezcan bloqueadoras desde la perspectiva de los programas de usuario. Otra cosa que el software de E/S debe manejar es el uso de búferes. Es común que los da tos provenientes de un dispositivo no puedan almacenarse en forma directa en su destino final. Por ejemplo, cuando llega un paquete de la red, el sistema operativo no sabe dónde colocarlo
RkJQdWJsaXNoZXIy MjI4NDcx