Entrada/Salida.

Anuncio
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
S.O.: Entrada salida, E/S, (Input Output I/O)
Gorka Guardiola
Laboratorio de Sistemas,
Grupo de Sistemas y Comunicaciones,
URJC
27 de agosto de 2010
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
(cc) 2008 Grupo de Sistemas y Comunicaciones.
Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Attribution-ShareAlike.
Para obtener la licencia completa, véase http://creativecommons.org/licenses/by-sa/2.1/es. También puede
solicitarse a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Comunicación
I
Procesos con el exterior
I
I
Entre ellos
I
I
red, discos duros, teclado
pipes, fifos
Hacen falta protocolos
I
Tcp, lı́nea de comandos, mensajes en buses
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Interfaces
I
Controlador hw - Controlador sw (device driver) - Dispositivo
(registros, memoria compartida)
I
driver - Resto del sistema operativo
I
Proceso - Interfaz del SO para el dispositivo
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Caracteres y bloques
I
bloque
I
I
I
I
bloque, se comunica a bloques (leer y escribir)
si quiero escribir parte tengo que leer y luego escribir
discos duros, cdroms
carácter
I
I
stream (flujo de comunicación)
ratón, teclado
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Bloqueante
I
si es bloqueante, leo, me quedo esperando hasta que hay
respuesta, si no es instantánea
I
¿si leo de un ratón, me quedo bloqueado o devuelve el último?
I
A veces el dispositivo es bloqueante pero el interfaz no o al
revés
I
acceso exclusivo
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Entrada salida programada (pio)
I
mmio (memory mapped i/o)
I
I
I
Proyectada en memoria
Comparte cables con el acceso a memoria
pmio (port mapped i/o)
I
I
I
I
Bus separado, patas del procesador
Puerto/dirección (donde en el otro habı́a direcciones fı́sicas de
memoria)
Número de puerto, indicando el dispositivo
Instrucciones especials (IN/OUT)
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
mmio
0x00000000
Bus direcciones
Bus datos
CPU
MEMORIA
0x00e00000
CONTROLADOR /
BRIDGE
DISPOSITIVO
Registro 0x34
Registro 0x34
0xfeff0045
Direcciones
de memoria
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
pmio
Bus direcciones
Bus datos
CPU
MEMORIA
CONTROLADOR /
BRIDGE
datos
puerto/direcc.
BUS de E/S
DISPOSITIVO
Registro 0x34
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
DMA
I
Desperdicio el procesador con PIO
I
Si tengo que copiar 500 palabras son 500 instrucciones
I
El dispositivo (o un controlador) toma el bus de memoria y
copia a la memoria directamente
I
El procesador puede hacer otras cosas mientras (tira de la
caché de instrucciones/datos)
I
Para no bloquear durante mucho rato hay buffers en el
dispositivo
I
Aviso con una interrupción (mejor) o en la propia memoria
(por ejemplo USB), o PIO
I
Tengo que tener cuidado condiciones de carrera (dispositivo y
cpu accediendo a la memoria)
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
DMA
CPU
Memoria
DMA
buffer
HD
2
Controlador
del disco
Disco
duro
PIO
1
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Northbridge/Southbridge
I
MCH, memory controller hub (antes Northbridge)
I
ICH, I/O controller hub (antes Southbridge)
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Northbridge/Southbridge
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Northbridge/Southbridge
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
MCH/ICH
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Interrupción y polling
I
Polling es espera activa comprobando un valor, mmio o pmio
I
Ejemplo, busy flag
I
Interrupción, el dispositivo me interrumpe cuando tiene algo
para el lector y el SO lo recoge, o despierta al proceso y se lo
da
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Maestro esclavo (master slave)
I
Quién controla el bus
I
Un bus no es más que un cable, uno puede usarlo el resto no
I
Algunos usan tdm o cmda etc.
I
A veces hay un árbitro (máster) y otros arbitrados (slaves)
esclavos
I
Tambien se pueden negociar entre ellos cual se queda con el
bus
I
O negociar cual es el máster
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Discos
I
Dispositivos de bloques
I
Usan direccionados normales (LBA, bloques lógicos), raros,
I
otros usan direccionados vectoriales, ya más raro (CHS,
cylinder, head, sector)
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Discos
I
Antes exponı́an la geometrı́a (discos apilados con cabezas)
I
Antes se optimizaba, algoritmo del ascensor etc.
I
Ahora no tiene mucho sentido.
I
Velocidad (de los magnéticos) todavı́a limitada por seeks
(mover la cabeza)
I
Dentro flash, caches, traducción de direcciones (también hay
de estado sólido, flash)
I
El hw de los discos está optimizado para localidad temporal,
leer junto lo que se escribe junto
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Relojes
I
Varios tipos
I
Marca de tiempo, cálculo de diferencias (rápido, precisa a
corto plazo, profiling)
I
Interrupción de reloj (planificación)
I
Hora del dı́a (precisa a largo plazo)
I
Suele accederse a los valores por mmio.
Se pone una lista de alarmas y una interrupción
I
I
I
I
Cuando salta la interrupción, saco la cabeza
Pongo una interrupción para la nueva cabeza
Para dar de alta un nuevo timer meto un elemento, si va el
primero, cambio la interrupción
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Ethernet
I
En unix no se expone como tal
I
Tiene un anillo para mandar y recibir tramas (buffering), sw y
a veces hw
I
Pilas de protocolos unas encima de otras tcp/ip etc.
I
En Unix al final hay sockets para el usuario (descriptores de
fichero con propiedades extra)
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Terminales
I
Dispositivos virtuales (se los inventa el sistema operativo)
I
Texto o gráficos
I
Conexión, memoria (chan), red (ssh, telnet), serie
I
Procesamiento
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Procesamiento
I
Procesamiento, ninguno (mando los caracteres y ya)
I
eco (hago eco local para que el usuario lo vea)
disciplina de lı́nea, modos
I
I
I
Crudo, mando y recibo sin intervernir
Cocinado, le dejo al usuario editar la lı́nea hasta que de al enter
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Nombrado
I
Mayor/minor Unix (major, asociado al driver, minor el
dispositivo), mknod crea el fichero
I
Path, un fichero directamente en Plan9 #c/cons
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Buffering
I
Desacoplo, mejor rendimiento, no hago esperar a los
implicados
I
ejemplo buffering de pipes, buffering de youtube
I
Audio, video etc.
I
Si lleno el buffer, el escritor espera, si lo vacı́o el lector espera
I
Productor/Consumidor
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Entrada salida Controlador, driver, dispositivo Caracteres y bloques Bloqueante Interrupción y polling Entrada salida programada
Copias
I
Evitar copyin, copyout
I
aparecen en pilas de protocolos, pila tcp/ip, en discos (buffer
de read, buffer de disco)
I
Complicado con DMA (direcciones fı́sicas, tamaños de bloque
fijos) y buffers de usuario, pequeños
I
Necesito espacio para las cabeceras y no sé cuales van a ser
(trozos separados de memoria)
I
cortocircuitar copias si se puede
I
paso por referencia, anillo de páginas para el usuario,
gather/scatter, iommu,
S.O.: Entrada salida, E/S, (Input Output I/O)
Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC
Descargar