Vous êtes sur la page 1sur 37

SOFTWARE

DE E/S
Un concepto clave en el diseo del
software de E/S se conoce como
independencia de dispositivos.
Lo que significa es que debe ser
posible escribir programas que
puedan acceder a cualquier
dispositivo de E/S sin tener que
especificar el dispositivo por
adelantado.
Por ejemplo, un programa que lee
un archivo como entrada debe tener
la capacidad de leer un archivo en el
disco duro, un CD-ROM, un DVD o
una memoria USB sin tener que
modificar el programa para cada
dispositivo distinto.
Un objetivo muy relacionado con la independencia de los
dispositivos es la denominacin uniforme.
El nombre de un archivo o dispositivo simplemente debe ser
una cadena o un entero sin depender del dispositivo de ninguna
forma.
En UNIX, todos los discos se pueden integrar en la jerarqua del
sistema de archivos de maneras arbitrarias, por lo que el
usuario no necesita estar al tanto de cul nombre corresponde a
cul dispositivo
Por ejemplo, una memoria USB se puede montar encima del
directorio /usr/ast/respaldo, de manera que al copiar un archivo
a /usr/ast/respaldo/ lunes, este archivo se copie a la memoria
USB. De esta forma, todos los archivos y dispositivos se
direccionan de la misma forma: mediante el nombre de una ruta
Otra cuestin importante relacionada con el software de E/S
es el manejo de errores.
En general, los errores se deben manejar lo ms cerca del
hardware que sea posible.
Si el controlador descubre un error de lectura, debe tratar de
corregir el error por s mismo.
Si no puede, entonces el software controlador del dispositivo
debe manejarlo, tal vez con slo tratar de leer el bloque de
nuevo.
Slo si los niveles inferiores no pueden lidiar con el
problema, los niveles superiores deben saber acerca de ello.
Otra cuestin clave es la de las transferencias sncronas (de
bloqueo) contra las asncronas (controladas por
interrupciones).
La mayora de las operaciones de E/S son asncronas: la
CPU inicia la transferencia y se va a hacer algo ms hasta
que llega la interrupcin.
Los programas de usuario son mucho ms fciles de escribir
si las operaciones de E/S son de bloqueo: despus de una
llamada al sistema read, el programa se suspende de manera
automtica hasta que haya datos disponibles en el bfer.
Otra cuestin relacionada con el software de E/S es el uso de
bfer. A menudo los datos que provienen de un dispositivo
no se pueden almacenar directamente en su destino final.
Por ejemplo, cuando un paquete llega de la red, el sistema
operativo no sabe dnde colocarlo hasta que ha almacenado
el paquete en alguna parte y lo examina.
El concepto final que mencionaremos
aqu es la comparacin entre los
dispositivos compartidos y los
dispositivos dedicados.
Algunos dispositivos de E/S, como los
discos, pueden ser utilizados por
muchos usuarios a la vez.
No se producen problemas debido a
que varios usuarios tengan archivos
abiertos en el mismo disco al mismo
tiempo. Otros dispositivos, como las
unidades de cinta, tienen que estar
dedicados a un solo usuario hasta que
ste termine.
Despus, otro usuario puede tener la
unidad de cinta.
E/S PROGRAMADA
Hay tres maneras fundamentalmente distintas en que se
puede llevar a cabo la E/S.
Es ms simple ilustrar la E/S programada por medio de un
ejemplo. Considere un proceso de usuario que desea
imprimir la cadena de ocho caracteres ABCDEFGH en la
impresora
Primero se copian los datos en el kernel. Despus el sistema
operativo entra a un ciclo estrecho, imprimiendo los
caracteres uno a la vez. El aspecto esencial de la E/S
programada, que se ilustra con claridad en esta figura, es
que despus de imprimir un carcter, la CPU sondea en
forma continua el dispositivo Este comportamiento se
conoce comnmente como sondeo u ocupado en espera.
CAPAS DEL SOFTWARE
DE E/S

Por lo general, el software de E/S se organiza en cuatro


capas.
Cada capa tiene una funcin bien definida que realizar, y una
interfaz bien definida para los niveles adyacentes.
La funcionalidad y las interfaces difieren de un sistema a
otro, por lo que el anlisis que veremos a continuacin, que
examina todas las capas empezando desde el inferior, no es
especfico de una sola mquina.
MANEJADORES DE
INTERRUPCIONES
Aunque la E/S programada es til algunas veces, para la
mayor parte de las operaciones de E/S las interrupciones son
un hecho incmodo de la vida y no se pueden evitar.
Cuando ocurre la interrupcin, el procedimiento de
interrupciones hace todo lo necesario para poder manejarla.
Despus puede desbloquear el controlador que la inici.
En algunos casos slo completar up en un semforo. En
otros casos realizar una llamada a signal en una variable de
condicin en un monitor. En otros ms enviar un mensaje al
controlador bloqueado. En todos los casos, el efecto neto de
la interrupcin ser que un controlador que estaba
bloqueado podr ejecutarse ahora. Este modelo funciona
mejor si los controladores estn estructurados como
procesos del kernel, con sus propios estados, pilas y
contadores del programa.
DRIVERS DE
DISPOSITIVOS
Cada controlador tiene ciertos registros de
dispositivos que se utilizan para darle
comandos o ciertos registros de
dispositivos que se utilizan para leer su
estado, o ambos.
El nmero de registros de dispositivos y la
naturaleza de los comandos varan
radicalmente de un dispositivo a otro.
Por ejemplo, un driver de ratn tiene que
aceptar informacin del ratn que le indica
qu tanto se ha desplazado y cules
botones estn oprimidos en un momento
dado. Por el contrario, un driver de disco
tal vez tenga ques aber todo acerca de los
sectores, pistas, cilindros, cabezas,
movimiento del brazo, los propulsores,etc-
Como consecuencia, cada dispositivo de E/S conectado a
una computadora necesita cierto cdigo especfico para
controlarlo.
Este cdigo, conocido como driver, es escrito por el
fabricante del dispositivo y se incluye junto con el mismo.
Como cada sistema operativo necesita sus propios drivers,
los fabricantes de dispositivos por lo comn los
proporcionan para varios sistemas operativos populares.
Cada driver maneja un tipo de dispositivo o, a lo ms, una
clase de dispositivos estrechamente relacionados.
Por ejemplo, un driver de disco SCSI puede manejar por lo
general varios discos SCSI de distintos tamaos y
velocidades, y tal vez un CD-ROM SCSI tambin.
SOFTWARE DE E/S
INDEPENDIENTE DEL
DISPOSITIVO
Aunque parte del software de E/S es especfico para cada
dispositivo, otras partes de ste son independientes de los
dispositivos.
El lmite exacto entre los controladores y el software
independiente del dispositivo depende del sistema (y del
dispositivo), debido a que ciertas funciones que podran
realizarse de una manera independiente al dispositivo
pueden realizarse en los controladores, por eficiencia u otras
razones
INTERFAZ UNIFORME PARA LOS
CONTROLADORES DE SOFTWARE DE
DISPOSITIVOS
La funcin bsica del software independiente del dispositivo
es realizar las funciones de E/S que son comunes para todos
los dispositivos y proveer una interfaz uniforme para el
software a nivel de usuario.
Para cada clase de dispositivos, como los discos o las
impresoras, el sistema operativo define un conjunto de
funciones que el controlador debe proporcionar.
Para un disco, estas funciones incluyen naturalmente la
lectura y la escritura, pero tambin encender y apagar la
unidad, aplicar formato y otras cosas relacionadas con los
discos. A menudo, el controlador contiene una tabla con
apuntadores a s mismo para estas funciones.
Reporte de errores
Los errores son mucho ms comunes en el
contexto de la E/S que en otros. Cuando ocurren, el
sistema operativo debe manejarlos de la mejor
manera posible. Muchos errores son especficos
de cada dispositivo y el controlador apropiado
debe manejarlos, pero el marco de trabajo para el
manejo de errores es independiente del
dispositivo.
Los errores de programacin son una clase de
errores de E/S. stos ocurren cuando un proceso
pide algo imposible, como escribir en un
dispositivo de entrada (teclado, escner, ratn,
etc.) o leer de un dispositivo de salida (una
impresora o un plotter, por ejemplo).
SOFTWARE DE E/S EN
ESPACIO DE USUARIO
Aunque casi todo el software de E/S est dentro del sistema
operativo, una pequea porcin consiste en bibliotecas
enlazadas junto con los programas de usuario, e incluso en
programas enteros que se ejecutan fuera del ncleo. Los
procedimientos de biblioteca normalmente realizan llamadas al
sistema, incluyendo las correspondientes a la E/S. Cuando un
programa en C contiene la llamada:

contador = write(fd, buffer, nbytes) ;

El procedimiento de biblioteca write debe enlazarse con el


programa por lo que estar contenido en el programa binario
presente en la memoria en tiempo de ejecucin. Una pequea
parte consta de bibliotecas ligadas entre s con los programas
del usuario.
HARDWARE DE DISCO
Los discos son de varios tipos. Los ms comunes son los
discos magnticos (discos duros y flexibles).
Se caracterizan por el hecho de que las operaciones de
lectura y escritura son igual de rpidas, lo que los hace
ideales como memoria secundaria (como paginacin o
sistemas de archivos, por ejemplo).
Algunas veces se utilizan arreglos de estos discos para
ofrecer un almacenamiento altamente confiable.
Para la distribucin de programas, datos y pelculas, son
tambin importantes varios tipos de discos pticos (CD-
ROMs, CD-grabable y DVD).
FORMATO DEL DISCO
Un disco duro consiste en una pila de
platos de aluminio, aleacin de acero o
vidrio, de 5.25 o 3.5pulgadas de dimetro
(o incluso ms pequeos en las
computadoras notebook).
En cada plato se deposita un xido de
metal delgado magnetizable. Despus de
su fabricacin, no hay informacin de
ninguna clase en el disco.
Antes de poder utilizar el disco, cada
plato debe recibir un formato de bajo
nivel mediante software. El formato
consiste en una serie de pistas
concntricas, cada una de las cuales
contiene cierto nmero de sectores, con
huecos cortos entre los sectores.
Una vez que se completa el formato de bajo nivel, el disco se
particiona.
En sentido lgico, cada particin es como un disco
separado. Las particiones son necesarias para permitir que
coexistan varios sistemas operativos.
Adems, en algunos casos se puede utilizar una particin
para el intercambio.
La tabla de particiones proporciona el sector inicial y el tamao de
cada particin. En el Pentium, la tabla de particiones tiene espacio
para cuatro particiones. Si todas ellas son para Windows, se llamarn
C:, D:, E: y F:, y se tratarn como unidades separadas.
Si tres de ellas son para Windows y una es para UNIX, entonces
Windows llamar a sus particiones C:, D: y E:. El primer CD-ROM ser
entonces F:.
Para poder iniciar del disco duro, una particin se debe marcar como
activa en la tabla de particiones.
El paso final de preparacin de un disco para utilizarlo es realizar un
formato de alto nivel de cada particin (por separado). Esta
operacin establece un bloque de inicio, la administracin del
espacio de almacenamiento libre (lista de bloques libres o mapa de
bits), el directorio raz y un sistema de archivos vaco. Tambin
coloca un cdigo en la entrada de la tabla de particiones para
indicarle qu sistema de archivos se va a utilizar en la particin,
debido a que muchos sistemas operativos soportan varios sistemas
de archivos incompatibles (por cuestiones histricas).
En este punto se puede iniciar el sistema.
ALGORITMOS DE
PROGRAMACIN DEL
BRAZO DEL DISCO
En primer lugar hay que considerar cunto tiempo se
requiere para leer o escribir en un bloque de disco. El tiempo
requerido se determina en base a tres factores:
1. Tiempo de bsqueda (el tiempo para desplazar el brazo al
cilindro apropiado).
2. Retraso rotacional (el tiempo para que el sector apropiado
se coloque debajo de la cabeza).
3. Tiempo de transferencia de datos actual.
ALGORITMO FIFO
(PRIMERO EN LLEGAR,
PRIMERO EN SALIR)

Este algoritmo da servicio a las solicitudes de acceso a disco


de la cola segn el orden de llegada. Esta planificacin har
uso de una cola tipo FIFO (First In, First Out Primero en
entrar, primero en salir).
95, 180, 34, 119, 11, 123, 62, 64
ALGORITMO SSF
(SHORTEST SEEK FIRST
PRIMERO LA BSQUEDA
MS CERCANA)

De todas las peticiones atiende primero aquella que se


encuentra mas cerca de la peticin que se est procesando.
Es decir, atiende primero la peticin que requiere el menor
movimiento de la cabeza de lectura/escritura desde su
posicin actual.
ALGORITMO SCAN O
ALGORITMO DEL
ASCENSOR
Este algoritmo recibe el nombre de algoritmo del ascensor
porque se comporta como tal: va atendiendo las solicitudes
que va encontrando en el sentido en el que se van
desplazando las cabezas de lectura/escritura por el disco.
Cuando no hay ms solicitudes en ese sentido, o se llega al
extremo, se invierte el sentido para hacer lo mismo otra vez
pero yendo hacia el otro lado. Por tanto, en este algoritmo es
necesario tener un bit que indique el sentido del movimiento.
MANEJO DE ERRORES
Los defectos de fabricacin incluyen
sectores defectuosos; es decir, sectores
que no leen correctamente el valor que se
acaba de escribir en ellos.
Si el defecto es muy pequeo, por
ejemplo, de unos cuantos bits, es posible
utilizar el sector defectuoso y slo dejar
que el ECC corrija los errores cada vez.
Si el defecto es mayor, el error no se
puede enmascarar.
Hay dos mtodos generales para los
bloques defectuosos: lidiar con ellos en el
controlador o lidiar con ellos en el sistema
operativo. En el primer mtodo, antes de
que el disco salga de la fbrica, se prueba
y se escribe una lista de sectores
defectuosos en el disco. Cada sector
defectuoso se sustituye por uno de los
sectores adicionales.
Si el sistema operativo se est haciendo cargo de la
reasignacin, debe asegurarse que no haya sectores malos
en ningn archivo, y que tampoco haya en la lista libre o
mapa de bits.
Una manera de hacer esto es crear un archivo que consista
de todos los sectores malos. Si este archivo no se introduce
en el sistema de archivos, los usuarios no lo leern por
accidente (o peor an, lo liberarn).
Los sectores defectuosos no son la nica fuente de errores.
Tambin ocurren errores de bsqueda producidos por
problemas mecnicos en el brazo.
El controlador lleva el registro de la posicin del brazo de
manera interna.
Para realizar una bsqueda, emite una serie de pulsos en el
motor del brazo, un pulso por cilindro, para desplazarlo al nuevo
cilindro.
Cuando el brazo llega a su destino, el controlador lee el nmero
del cilindro actual del prembulo del siguiente sector.
Si el brazo est en la posicin incorrecta, ha ocurrido un error
de bsqueda.
La mayora de los controladores de disco duro corrigen los
errores de bsqueda de manera automtica
ALMACENAMIENTO
ESTABLE
Como hemos visto, los discos algunas veces cometen
errores. Los sectores buenos pueden de pronto volverse
defectuosos. Discos completos pueden dejar de funcionar
inesperadamente.
Los RAIDs protegen contra el hecho de que unos cuantos
sectores se vuelvan defectuosos, o incluso que falle una
unidad.
Sin embargo, no protegen contra los errores de escritura que
establecen datos defectuosos en primer lugar.
Tampoco protegen contra las fallas durante las escrituras
que corrompen los datos originales sin reemplazarlos con
datos nuevos.
Para algunas aplicaciones es esencial que los datos nunca se
pierdan o corrompan, incluso frente a errores de disco o de CPU.
En teora, un disco simplemente debe trabajar todo el tiempo sin
errores.
Por desgracia, eso no se puede lograr. Lo que se puede lograr es
un subsistema de disco que tenga la siguiente propiedad: cuando
se emita una escritura, el disco debe escribir correctamente los
datos o no hacer nada, dejando los datos existentes intactos.
A dicho sistema se le conoce como almacenamiento estable y se
implementa en software (Lampson y Sturgis, 1979).
El objetivo es mantener el disco consistente a toda costa.

Vous aimerez peut-être aussi