Professional Documents
Culture Documents
ndice
Conceptos previos Estructuras Bsicas E/S Sncrona E/S Asncrona Implementacin en Onion Drivers Ejemplos
Entrada/Salida
Introduccin
Funcin del S.O.: controlar los dispositivos de E/S
Cada dispositivo require un tratamiento especial
write_printer write_file write_screen
El S.O. oculta las diferencias y proporciona una interficie comn independiente del dispositivo
Operaciones sobre dispositivos virtuales write
Entrada/Salida
Entrada/Salida
Tipos de dispositivos
Fsicos
Dispositivos hardware ( disco, teclado, ... )
Lgicos
Dispositivos que:
no tienen dispositivo hardware asociado ( Nul , Random , ... ) aaden funcionalidades sobre el dispositivo hardware ( ficheros ) agrupan varios dispositivos hardware ( Consola )
Virtuales
Abstraccin del Sistema con la que trabajan los usuarios
Entrada/Salida
Tipos de Entrada/Salida
Sncrona
El proceso de usuario se queda bloqueado hasta que finaliza la operacin de E/S
Asncrona
El proceso de usuario se ejecuta concurrentemente mientras se realiza la E/S
El Sistema Operativo notifica la proceso cuando esta finaliza
y/o
El proceso dispone de una interficie para consultar el estado de las operaciones pendientes
esperar cancelar estado_es
Programacin ms compleja
Entrada/Salida 6
Principios de diseo
Uniformidad en las operaciones
Mismas LlaS para todos los dispositivos
Misma semntica sobre todos los dispositivos
El sistema comprueba si la operacin es vlida sobre el dispositivo Aumenta la portabilidad y simplicidad de los procesos de usuario
Entrada/Salida
Entrada/Salida
Entrada/Salida
Entrada/Salida
10
Tabla de canales
Guarda las relaciones entre los dispositivos virtuales y los dispositivos fsicos/lgicos
Indexada por n de canal o nombre del dispositivo virtual Una por proceso
aunque puede ser compartida entre threads/clones puede haber otra tabla extra para todo el sistema
S.O. puede asignar los canales (primero libre) o puede dejar que los decida el usuario En Onion: capa Sistema
Entrada/Salida
11
Niveles de Sistema
La E/S tiene dos niveles:
Independiente
Funciones de E/S comunes a todos los dispositivos
Dependiente
Funciones de E/S especifcas de cada dispositivo Aadir un nuevo dispositivo significa modificar este nivel
Entrada/Salida
12
Descriptor de dispositivo
Estructura que contiene la informacin relacionada con un dispositivo
Punteros a las funciones dependientes especficas del dispositivo Aadir un dispositivo es aadir un descriptor y sus funciones relacionadas Tiene dos partes:
Parte comn:
nombre, apuntadores a las operaciones, N de opens, caractersticas
Parte especfica
p.ej. ficheros: pL/E, modo de apertura, identificador_bfs
Entrada/Salida
13
E/S Sncrona
Entrada/Salida
14
E/S Sncrona
SISTEMA INDEPENDIENTE trap () { switch (ax) { case llegir: llegir_indep() } } llegir_indep (canal,buff,lon) { }
Entrada/Salida
15
E/S Sncrona
SISTEMA INDEPENDIENTE trap () { switch (ax) { case llegir: llegir_indep() } } llegir_indep (canal,buff,lon) { } BFS
Entrada/Salida
16
E/S Sncrona
SISTEMA INDEPENDIENTE trap () { switch (ax) { case llegir: llegir_indep() } } llegir_indep (canal,buff,lon) { } SISTEMA DEPENDIENTE Descriptor de Dispositivo llegir Tabla de canales canal disp. llegir_dep (canal,buff,lon) { } BFS
Entrada/Salida
17
E/S Sncrona
SISTEMA INDEPENDIENTE trap () { switch (ax) { case llegir: llegir_indep() } } llegir_indep (canal,buff,lon) { } SISTEMA DEPENDIENTE Descriptor de Dispositivo llegir Tabla de canales canal disp. llegir_dep (canal,buff,lon) { } BFS
Entrada/Salida
18
Gestores
Proceso de sistema encargado de atender y resolver peticiones de E/S
Hay gestores en los 3 niveles Puede haber 1 o ms gestores por dispositivo pseudo-cdigo
for ( ; ; ) {
esperar peticin recoger parmetros realizar E/S notificar finalizacin E/S
Entrada/Salida
19
Gestores (II)
Sincronizacin proceso de usuario/gestor
Mediante semforos Notificacin de una nueva peticin de E/S
El gestor espera a recibir notificaciones mediante un wait La rutina de E/S realiza un signal sobre el semforo del gestor
Entrada/Salida
20
Gestores (III)
Paso de parmetros
Mediante la estructura IORB (Input/Output Request Block)
Las rutinas de E/S rellenan y encolan los IORBs Cada gestor/dispositivo tiene una cola de IORBs con las peticiones pendientes El contenido de los IORBs vara segn el dispositivo
Retorno de resultado
Mediante la estructura io_fin
Contiene el identificador de E/S y su resultado Una cola de resultados por dispositivo El gestor encola el io_fin y la rutina de E/S lo recoge
Entrada/Salida
21
canal
disp.
Tabla de canales
Entrada/Salida
22
preparar parmetros
canal
disp.
Tabla de canales
Entrada/Salida
23
canal
disp.
Tabla de canales
Entrada/Salida
24
canal
disp.
Tabla de canales
Entrada/Salida
25
canal
disp.
Tabla de canales
Entrada/Salida
26
canal
disp.
Tabla de canales
for ( ; ; ) { wait (sem_gestor) recoger parmetros realizar E/S encolar resultado signal (id_io) }
Entrada/Salida
27
canal
disp.
Tabla de canales
Entrada/Salida
28
Gestores (IV)
Simplifican el acceso a las estructuras de datos
Reducen la necesidad de usar exclusiones mutuas
Entrada/Salida
29
E/S Asncrona
SISTEMA INDEPENDIENTE Descriptor de Dispositivo id_io = llegir () llegir_indep (canal,buff,lon) { } llegir } Tabla de canales llegir_dep (canal,buff,lon) { preparar parmetros signal (sem_gestor) retornar id_io
q_iorb
...
canal
disp.
res = esperar(id_io)
for ( ; ; ) { wait (sem_gestor) recoger parmetros realizar E/S encolar resultado signal (id_io) }
q_io_fin
Entrada/Salida
30
PCB
Tabla de Canales
^DD #es id_io id_io id_io
Entrada/Salida
31
IORB io_fin
IORB io_fin
IORB
Entrada/Salida
32
Tipo de operacin:
Lectura o escritura?
id_io:
Identificador de la E/S que representa el IORB
Entrada/Salida
33
DISCO
Entrada/Salida
34
DISPOSITIVO
^leer modo
^DD
#es
id_io
Entrada/Salida
35
id_io
2. wait(id_io)
id_io
id_io
3. Buscar resultado
Entrada/Salida
36
4. Liberar el canal
DISPOSITIVO
^cerrar
Tabla de Canales
^DD
#es
id_io
id_io
Entrada/Salida
37
Device Driver
Software que se comunica directamente con el hardware ( device controller ) a traves de los registros del dispositivo La comunicacin entre el driver y el controlador puede ser de dos maneras:
por encuesta (polling) por interrupciones
Capa Ncleo
Entrada/Salida
38
Encuesta
La CPU esta constantemente consultando el dispositivo para ver si la operacin ya se ha realizado
preparar E/S while ( consultar_dispositivo != FINALIZADO ); finalizar E/S
Sencillo Muy poco eficiente desde el punto de vista del sistema Solo se ha de usar cuando no se pueda hacer de otra manera
Entrada/Salida
39
Interrupciones
La CPU programa la E/S y recibe una interrupcin cuando esta ha finalizado
El proceso se bloquea y cede la CPU hasta que recibe la interrupcin
mejor uso de la CPU en el sistema
Hay que minimizar siempre el trabajo que se hace en la rutina que atiende a la interrupcin
Entrada/Salida
40
Mejoras de la E/S
Buffering
El dispositivo dispone de un buffer donde guarda los datos a enviados/recibidos
El buffer se va llenando/vaciando mientras los procesos trabajan Permite evitar bloqueos
evitando picos de E/S
Doble buffering
Permite que se produzca a la vez movimiento de datos entre usuario sistema y sistema - dispositivo
Buffering circular
Generalizacin del doble buffering
Entrada/Salida
41
Spooling
La E/S se realiza sobre un dispositivo intermedio
El sistema posteriormente la realizar sobre el dispositivo final Permite compartir dispositivos no compartibles El dispositivo intermedio suele ser ms rpido
Gestor auxiliar
Permite evitar bloqueos al gestor principal
Entrada/Salida 42