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