ENTRADA Y SALIDA
CURSO DE
SISTEMAS
OPERATIVOS
CONTENIDO








Principios del hardware de E/S
Principios del software de E/S
Estancamientos
Panorama general de la e/s en MINIX
Discos de RAM
Discos
Relojes
Terminales
Principios del hardware de
E/S
Entenderemos por hardware de E/S como la programación de
los dispositivos de entrada y salida.
Los dispositivos de E/S se dividen en dos categorías:
dispositivos de bloque y dispositivos de caracteres. Los
dispositivos de bloque transfieren la información en bloques
direccionables de tamaño fijo. Los dispositivos de caracteres
aceptan o entregan un flujo de caracteres sin importar la
estructura.
Controladores de dispositivo
Los dispositivos constan de una parte mecánica y
otra electrónica. A la parte electrónica se le llama
controlador o manejador del dispositivo. El
sistema operativo trata generalmente con el
controlador.
Manejadores de disco
Impresora
Interfaz del controlador y dispositivo
CPU
Memoria
Controlador
de disco
Controlador de
la impresora
Otros
...
controladores
Bus del sistema
Continuación
El trabajo del controlador es convertir un flujo de
bits en serie en un bloque de bytes y realizar
cualquier corrección de errores que se necesite.
Controladores de E/S
Direcciones de E/S
Vector de int.
Reloj
040-043
8
Teclado
060-063
9
RS232 secundaria
2F8-2FF
11
Disco duro
320-32F
13
Impresora
378-37F
15
Despliegue mono.
3B8-3BF
-
Despliegue de color
3D0-3DF
-
Disco flexible
3F0-3F7
14
RS232 primaria
3F8-3FF
12
Acceso directo a memoria
DMA
El acceso directo a memoria se requiere
para liberar a la CPU en la transferencia
de bloque de información de o hacia la
memoria.
La CPU debe especificarle al controlador
de DMA la dirección de la memoria
donde se dirige el bloque y el número
de bytes a transferir.
continuación
Controlador
del disco
CPU
Manejador
Memoria
Buffer
Registros DMA
Conteo
Dirección de la memoria
Conteo
Bus del sistema
Intercalación
7
0
7
0
5
0
6
1
3
4
2
3
5
2
6
1
7
6
4
3
(a)
2
5
(b)
4
1
(c)
(a) Sin intercalación. (b) Intercalación sencilla.
(c) Doble intercalación.
Principios del software de
E/S
Un concepto importante es el de
independencia del dispositivo.
Esto quiere decir que los archivos deben
utilizarse de la misma manera
independientemente de si están en un disco
duro o en un disco flexible.
continuación
Otro aspecto importante es el de nominación,
esto es, los archivos y dispositivos deben
reconocerse con nombres que no dependan del
dispositivo en ninguna manera, como en UNIX.
Por otro lado el manejo de errores debe hacerse
en los estratos más bajo. Y solo se deberá
informar a los estratos superiores si el estrato bajo
no puede manejarlo.
Clasificación de dispositivos
Los dispositivos se clasifican en compartibles
y dedicados.
Los compartibles son como los discos, varios
usuarios pueden hacer uso de ellos al mismo
tiempo sin crear conflictos.
Los dedicados como las impresoras, solo
aceptan un usuario a la vez.
Estratos del software de
E/S
1. Manejadores de interrupciones
2. Manejadores de dispositivos
3. Software del sistema operativo independiente
del dispositivo
4. Software a nivel del usuario
Manejadores de
interrupciones
Las interrupciones son indeseables, una forma de
ocultarlas es bloquear los procesos de E/S
siempre que ocurra un comando de E/S y se
espere una interrupción.
Al recibir la interrupción, el procedimiento de
interrupciones desbloquea al manejador mediante
un semáforo o mediante señales.
Manejadores de dispositivos
En términos generales, el trabajo de un
manejador de dispositivo consiste en aceptar
solicitudes abstractas del software independiente
del dispositivo que está sobre él y observar que
se cumpla la requisición.
Después de que la operación se ha completado
debe verificar si hubo errores.
Si todo está bien, el manejador puede hacer que
pasen los datos al software independiente del
dispositivo.
Software del sist. Oper.
Indep.del dispositivo
La función básica del software independiente del
dispositivo consiste en ejecutar las funciones de
E/S que son comunes a todos los dispositivos y
proporcionar una interfaz uniforme al software a
nivel del usuario.
Funciones
Sincronización uniforme de los manejadores de dispositivos
Nominación de dispositivos
Protección de los dispositivos
Proporción de un tamaño de bloque independiente del
dispositivo
Separación
Asignación del almacenamiento en dispositivo de bloque
Asignación y devolución de dispositivos dedicados
Informe de errores
Software a nivel del usuario
Las llamadas al sistema, entre ellas las llamadas
al sistema se E/S, normalmente son realizadas
por procedimientos de biblioteca.
Estos procedimientos hacen un poco más que
colocar sus parámetros en el sitio adecuado para
la llamada al sistema.
continuación
Otro software a nivel de usuario es el manejo de
la cola de impresión.
La cola es controlada por un software llamado
demonio impresor, el cual maneja un directorio
especial llamado directorio de manejo de cola
de impresión.
Los demonios también se utilizan en la
transferencia de archivos de un sistema a otro.
continuación
Solicitud de E/S
Estrato
Contestación de E/S
Funciones de E/S
Procesos de usuarios
Hacer la llamada a E/S, formatear la E/S;
manejo por cola de impresión
Software independiente
del dispositivo
Nominación, protección, bloqueo,
separación, asignación
Manejadores de dispositivos
Conformar registros de dispositivos;
verificar condición
Manejadores de interrupciones
Desbloquear el manejador cuando
se complete una E/S
Hardware
Realizar la opreación de E/S
Estancamientos
Supóngase que una computadora tiene una
unidad de cinta y una graficadora.
El proceso A solicita la cinta y B, la graficadora.
Ahora A pide la graficadora (sin renunciar a la
cinta) y B pide la cinta (sin renunciar a la
graficadora), de manera que ambos procesos se
bloquean indefinidamente.
A esta situación se le llama estancamiento.
continuación
A
S
D
T
R
B
(a)
(b)
U
C
(c)
A
B
Solicitud de R
Solicitud de S
Liberación de R
Liberación de S
Solicitud de S
Solicitud de T
Liberación de S
Liberación de T
(a)
1. A solicita a R
2. B solicita a S
3. C solicita a T
4. A solicita a S
5. B solicita a T
6. C solicita a R
estancamiento
(d)
C
Solicitud de T
Solicitud de R
Liberación de T
Liberación de R
(b)
(c)
A
B
C
A
B
C
A
B
C
R
S
T
R
S
T
R
S
T
(e)
(f)
(g)
A
B
C
A
B
C
A
B
C
R
S
T
R
S
T
R
S
T
(h)
(i)
(j)
1. A solicita a R
2. C solicita a T
3. A solicita a S
4. C solicita a R
5. A libera a R
6. A libera a S
no hay estancamiento
(k)
A
B
C
A
B
C
A
B
C
R
S
T
R
S
T
R
S
T
(l)
(m)
(n)
A
B
C
A
B
C
A
B
C
R
S
T
R
S
T
R
S
T
(o)
(p)
(q)
Condiciones de
estancamiento
1. Condición de exclusión mutua. Cada recurso se asigna
por lo regular exactamente a un proceso o bien esta
disponible.
2. Condición de contención y espera. Los procesos que
regularmente contienen recursos otorgados antes pueden
solicitar nuevos recursos.
3. Condición de sin prioridad. Los recursos previamente
otorgados no pueden extraerse por la fuerza de un proceso.
Deben ser liberados en forma explícita por el proceso que lo
contiene.
4. Condición de espera circular. Debe haber una cadena
circular de dos o más procesos, cada uno de los cuales esté
esperando un recurso contenido en el siguiente miembro de
la cadena.
Estrategias para trabajar
con los estancamientos
1. Simplemente se ignora el problema por
completo.
2. Detección y recuperación.
3. Prevención, anulando una de las cuatro
condiciones necesarias.
4. Evitación dinámica por medio de una
distribución cuidadosa de los recursos.
Algoritmo del avestruz
En unix simplemente se ignora el problema. Hay
que tomar en cuenta que se pueden producir
estancamientos por causas como: número
limitado de ranuras para procesos (la llamada
fork podría fracasar), el número máximo de
archivos abiertos por el tamaño de la tabla de
nodos i, el espacio para intercambio (swap)
limitado, etc
Detección y recuperación
Esta técnica consiste en eliminar los ciclos
cuando estos se produzcan, esto se hace
eliminando un proceso si se produce un ciclo al
concederle un recurso.
Prevención del
estancamiento
Esta técnica consiste en garantizar que nunca se
produzcan las cuatro condiciones para conducir
al estancamiento. Esto se hace, por ejemplo, con
el demonio impresor, ya que es el único
capacitado para solicitar la impresora teniendo,
por tanto, exclusión mutua.
1. Lectora de tarjetas
2. impresora
3. Graficadora
4. Unidad de cinta
5. Perforadora de tarjetas
(a)
A
B
i
j
(b)
Métodos para la prevención
de estancamientos
Condición
Método
Exclusión mutua
Todo se maneja por cola de
impresión
Contención y espera Inicialmente se piden todos los
recursos
No hay prioridad
Se retiran los recursos
Espera circular
Los recursos se ordenan
numéricamente
Algoritmo del banquero
El banquero sabe que no todos los clientes
necesitarán su límite de crédito máximo de
inmediato, en esta analogía los clientes son
procesos, las unidades son, por ejemplo, unidades
de cinta y el banquero es el sistema operativo.
Algoritmo del banquero
Nombre
Se usa Máximo
Nombre
Se usa Máximo
Nombre
Se usa Máximo
Andy
0
6
Andy
1
6
Andy
1
6
Bárbara
0
5
Bárbara
1
5
Bárbara
2
5
Marvin
0
4
Marvin
2
4
Marvin
2
4
Suzanne
0
7
Suzanne
4
7
Suzanne
4
7
Disponible:10
(a)
Disponible:2
(b)
Disponible:1
(c)
Trayectoria de recursos
En la se aprecia un modelo para trabajar con dos
procesos y dos recursos, una graficadora y una
impresora. El eje horizontal representa el número
de instrucciones ejecutadas por el proceso A. El
eje vertical denota el número de instrucciones
ejecutadas por el proceso B, en I1 A solicita la
impresora; en I2 necesita una graficadora. La
primera la devuelve en I3 y la segunda en I4. El
proceso B necesita la graficadora de I5 a I7 y la
impresora de I6 a I8.
continuación
B
Impresora
u (ambos procesos terminados)
I
I
I
I
8
7
6
t
5
r
Graficadora
s
p
q
I
1
I
2
I
3
I
A
4
Impresora
Graficadora
El algoritmo del banquero para
múltiples recursos
El algoritmo para verificar si un estado es seguro es:
1. Búsquese un renglón, R, cuyo recurso no satisfecho
necesite todos los menores que A. Si no existe tal renglón,
el sistema se estanca porque no ningún proceso puede
ejecutarse hasta terminar.
2. Supóngase que el procesos del renglón elegido solicita
todos los recursos que necesita (lo que garantiza que es
posible) y termina. Márquese este proceso como terminado
y súmese todos sus recursos al vector A.
3. Repítase los pasos 1 y 2 hasta que todos los procesos se
marquen terminados, en cuyo caso el estado inicial era
seguro, o bien hasta que ocurra un estancamiento, en cuyo
caso era riesgoso.
continuación
Proceso
Manejadores de cinta
Graficadoras
Impresoras
Perforadoras
Proceso
Manejadores de cinta
Graficadoras
Impresoras
Perforadoras
A
3
0
1
1
A
1
1
0
0
B
0
1
0
0
B
0
1
1
2
C
1
1
1
0
C
3
1
0
0
D
1
1
0
1
D
0
0
1
0
E
0
0
0
0
E
2
1
1
0
Recursos asignados
Recursos que se siguen necesitando
E=(6342)
P=(5322)
A=(1020)
Panorama general de la e/s
en MINIX
Manejadores de interrupciones en minix
Muchos de los manejadores de dispositivos dan
inicio a algún dispositivo de E/S y después se
bloquean, esperando la llegada de un mensaje.
Otros no dan inicio a ningún dispositivo físico de
E/S (por ejemplo, la lectura de un disco RAM) y
no esperan un mensaje de un dispositivo de E/S.
Comunicación usuario
sistema
Sistema estructurado por procesos
Procesos
Espacio del
usuario
1
Sistema
de archivo
Sistema monolítico
Proceso
del usuario
4
2
3
Manejador
del dispositivo
1-4 son mensajes de solicitud
y de contestación entre tres
procesos independientes.
(a)
Espacio del
kernel
Un proceso
Parte del
espacio
del usuario
Sistema
de archivo
Manejador
del dispositivo
La parte del espacio del usuario llama
a la parte del espacio del kernel con trampa.
El sistema de archivo llama el manejador
del dispositivo como procedimeinto.
Todo el sistema operativo es
parte de cada proceso.
(b)
Tarea de E/S en MINIX
message mess;
/* buffer de mensajes */
io_task()
{
int r, caller;
inicialize();
/* sólo se hace una vez, durante la inic. del sistema */
while (TRUE) {
receive(ANY, &mess);
/* espera una solicitud para trabajar */
caller = mess.m_source;
/* proceso del cual provino el mensaje */
switch(mess.m_type) {
/* maneja cada tipo de solicitud posible */
case READ:
r = do_read(); break;
case WRITE:r = do_write(); break;
case OTHER:r = do_other(); break;
default: r = ERROR;
}
mess.m_type = TASK_REPLY;
mess.REP_STATUS = r;
/* código del resultado */
send(caller, &mess);
/* enviar mensaje de contestación al solicitante */
}
}
Software de E/S en MINIX
Software de E/S independiente del dispositivo
El proceso del sistema de archivo de minix contiene todo el
código de E/S independiente del dispositivo.
Software de E/S a nivel de usuario
Se dispone de procedimientos de biblioteca para hacer
llamadas al sistema y para convertir de binario a ASCII y de
ASCII a binario.
Manejo del estancamiento
Se ignora el problema por completo. El único sitio en que
pueden ocurrir estancamientos es con los recursos
compartidos implícitos, como las ranuras de la tabla de
procesos, ranuras de la tablas de nodos i, etc.
Discos de RAM
La idea que ostenta un disco de RAM es simple.
Un dispositivo de bloque es un medio de
almacenamiento con dos comandos: la escritura
de un bloque y la lectura de un bloque.
Al colocar el directorio raíz en al disco RAM, el
único disco flexible puede montarse y
desmontarse a voluntad, permitiendo que haya
medios removibles. Al tener el dispositivo raíz en
el disco de RAM el sistema se vuelve altamente
flexible: cualquier combinación de discos flexibles
y duros puede montarse en él.
Un disco de RAM
Memoria central (RAM)
Programas
de usuarios
Disco
de RAM
Bloque 1 del disco de RAM
Sistema
Operativo
Las lecturas y escrituras del bloque 0
de RAM utiliza esta memoria
Manejador del disco de RAM
en minix
/dev/ram, es un disco de RAM verdadero. Los dos
dispositivos menores que siguen se utilizan para leer y
escribir memoria física y la memoria del kernel,
respectivamente. Cuando /dev/mem se abre y se lee,
produce el contenido de las localidades de memoria física
que comienzan en 0 absoluto (vectores de interrupción). El
archivo especial /dev/kmem es como /dev/mem, salvo que el
byte 0 de este archivo es el byte 0 de la memoria del kernel
(dirección física 0x600 o bien 1536 decimal en minix).
El último archivo de este grupo, /dev/null, es un archivo
especial que acepta datos y los desecha. Se utiliza
comúnmente en comandos del shell cuando el programa
solicitado genere una salida que no se necesita.
Hardware del disco
Todos los discos reales están organizados en cilindros, donde cada
uno contiene tantas pistas como haya cabezas apiladas
verticalmente. Las pistas se dividen en sectores, donde el número de
sectores en torno a la circunferencia en comúnmente de 8 a 32.
Todos los sectores contienen el mismo número de bytes. Los
parámetros de un disco flexible de la IBM PC se muestran en la tabla
siguiente.
Número de cilindros
40
Tiempo de localización (cilindros adyacentes)
6ms
Pistas por cilindro
2
Tiempo de localización (caso promedio)
77ms
Sectores por pista
9
Tiempo de rotación
200ms
Sectores por disquete
720
Tiempo de arranque/detención del motor
250ms
Bytes por sector
512
Tiempo para transferir un sector
22ms
Bytes por disquete
368640
Algoritmos de planificación del
brazo del disco
P os ic ió n
inic ia l
0
T ie m po
5
S olic itudes
pend ie ntes
10
15
20
25
30 C ilindro
S ecua nc ia de
lo ca lizac io ne s
P os ic ió n
inic ia l
0
T ie m po
5
10
15
20
S ecua nc ia de
lo ca lizac io ne s
25
30 C ilindro
Manejo de errores
Algunos de los más comunes son:
1. Error de programación (por ejemplo, solicitud de un
sector no existente).
2. Error transitorio de la suma de verificación (por
ejemplo, ocasionado por polvo en la cabeza).
3. Error permanente de la suma de verificación (por
ejemplo, bloque del disco físicamente dañado).
4. Error de localización (por ejemplo, el brazo se envió al
cilindro 6 pero se fue al 7).
5. Error del controlador (por ejemplo, el controlador se
niega a aceptar comandos).
manejador del disco flexible
en MINIX
Procedimientos principales que forman el
manejador del disco flexible.
disk_task
do_rdwt
dma_setup
start_motor
Formación de
registros DMA
Encendido del
motor de la
unidad
localización
Desplazamiento
del brazo al
cilindro adecuado
transferencia
Lectura o
escritura
de datos
clock_mess
Iniciación
del cronómetro
guardian
Relojes
Los relojes controlan la hora del día y evitan que
algún proceso monopolice a la CPU, entre otras
cosas.
Oscilador de cristal
El contador se disminuye en cada pulso
El registro de contención se utiliza
para cargar el contador
Software del reloj
Las funciones del manejador de reloj son, entre otras:
1. Conservación de la hora del día.
2. Prevención de que los procesos se ejecuten más
tiempo del que tienen autorizados.
3. Conteo para uso de la CPU.
4. Manejo de la llamada al sistema alarm que hacen los
procesos de los usuarios.
5. Provisión de cronómetros guardianes para cuidar
partes del sistema en sí.
6. Realización de perfiles, monitoreo y recolección de
estadísticas.
Hora del día
64 bits
32 bits
32 bits
Contador en pulsos
Hora del día en pulsos
Número de pulsos en
el segundo corriente
Hora del día en segundos
(a)
(b)
Tiempo de carga del
sistema en segundos
(c)
Simulación de cronómetros
múltiples con un solo reloj
Es posible simular varios relojes con un solo reloj físico. Se puede
utilizar una lista enlazada como en la figura 24. Cada captación de
la lista indica cuántas pulsaciones del reloj después de la anterior se
debe esperar antes de producir una señal. En este ejemplo, las
señales están pendientes para 4203, 4207, 4213, 4215 y 4216.
Tiempo corriente
Encabezado
Siguiente señal
4200
3
del reloj
3
4
6
2
1 x
Panorama del manejador
del reloj en MINIX
El manejador acepta cuatro tipos de mensajes como sigue:
SET_ALARM permite a un proceso fijar un cronómetro que
se agote en un número especificado de pulsaciones de reloj.
También lo utilizan las tareas para los cronómetros
guardianes.
GET_TIME produce el tiempo real corriente con el número de
segundos que han transcurrido desde el 1 de enero de 1970
a las 12:00 a.m. SET_TIME fija el tiempo real.
CLOCK_TICK es el mensaje que se envía al manejador
cuando ocurre una interrupción de reloj.
Terminales
La tarea del manejador de la terminal es ocultar
la diferencias entre las diferentes terminales, de
manera que la parte independiente del
dispositivo del sistema operativo y los
programas de los usuarios no tengan que
reescribirse para cada tipo de terminal.
Tipos de terminales
Terminales
Interfaz de
la RS-232
Copia dura
Tty
de vidrio
Interfaz delineada
en la memoria
Inteligente
Blit
Orientada a
los caracteres
Orientada
a los bits
Terminal RS-232
Computadora
CPU
Bus
Tarjeta de
interfaz de
Memoria RS-232
UART
Terminal
Línea de recepción
Línea de
transmisión
(50 a 9600 bps)
UART
Terminales delineadas en la
memoria
Controlador de video
CPU
Memoria
Tarjeta de la
RAM de video
Monitor
Bus
Señal de video analógica
(por ejemplo, 16MHz)
Puerto paralelo
Teclado
Una imagen en la RAM
Ram de video
Pantalla
Dirección de RAM
A B C D
0 1 2 3
25 líneas
...x3 x 2 x 1 x 0
0xB00A0
...xD x C x B x A
0xB0000
80 caracteres
160 caracteres
(a)
(b)
Software de entrada
El manejador se hace cargo de la edición entre
líneas y simplemente entrega las líneas
corregidas a los programas de los usuarios o
bien puede suministrar los caracteres tal y
como los recibe. El primer modo es el modo
elaborado y el segundo el modo no
elaborado.
Buffer de la terminal
Estructura de datos
de la terminal
Estructura de datos
de la terminal
Terminal
La reserva del
buffer central
Terminal
0
1
0
2
Area del
buffer de la
terminal 0
3
1
(a)
Area del
buffer de la
terminal 1
(b)
Modo elaborado
Carácter
Comentario
Retroceso
Retrocede y suprime un carácter
@
Suprime la línea corriente
\
Escape (acepta el siguiente carácter literalmente)
tab
Posiblemente se extienda a espacios en la salida
CTRL-S
Detiene la salida
CTRL-Q
Inicia la salida
DEL
Interrupción del proceso (SIGINT)
CTRL-\
Obliga un vaciado del núcleo (SIGQUIT)
CTRL-D
Fin de archivo
Panorama general del manejador
de la terminal en MINIX
El manejador de la terminal es el archivo más grande de
MINIX. Este acepta cinco mensajes:
1. Lectura de caracteres desde la terminal (del sistema de
archivo a la mitad de un proceso de usuario).
2. Escritura de caracteres en la terminal (del sistema de
archivo a la mitad de un proceso de usuario).
3. Fijación de los parámetros de la terminal para ioctl (del
sistema de archivo a la mitad de un proceso de usuario).
4. Carácter disponible (del proceso de interrupción).
5. Cancelación de la solicitud de lectura anterior (del
sistema de archivo cuando ocurra una señal).