33
Arquitectura de Sistemas Paralelos (1) Introducción a los Sistemas de Entrada/Salida Arquitectura de Sistemas Paralelos (2) Introducción a los sistemas de entrada/salida Índice y bibliografía Introducción Módulos de Entrada/Salida Mapa de Entrada/Salida: común y separado Métodos de Entrada/Salida E/S programada E/S por interrupciones Acceso directo a memoria Ejemplo de dispositivo de E/S Operaciones de E/S desde el SO Bibliografía Organización y Arquitectura de Computadores, William Stalling Linux Device Drivers, Alessandro Rubini and Jonathan Corbet, O’Reilly

Entrada Salida Sistemas operativos

Embed Size (px)

DESCRIPTION

Sistemas operativos , en este trabajo se puede observar lo basico de los sistemas de entrada y salida

Citation preview

  • Arquitectura de Sistemas Paralelos (1)

    Introduccin a los Sistemas de Entrada/Salida

    Arquitectura de Sistemas Paralelos (2)

    Introduccin a los sistemas de entrada/salida ndice y bibliografa

    Introduccin Mdulos de Entrada/Salida Mapa de Entrada/Salida: comn y separado Mtodos de Entrada/Salida

    E/S programada E/S por interrupciones Acceso directo a memoria

    Ejemplo de dispositivo de E/S Operaciones de E/S desde el SO

    Bibliografa Organizacin y Arquitectura de Computadores, William Stalling Linux Device Drivers, Alessandro Rubini and Jonathan Corbet, OReilly

  • Arquitectura de Sistemas Paralelos (3)

    Introduccin a los sistemas de entrada/salida Introduccin (I)

    Un computador no puede estar formado slo por la CPU y la memoria. Para darle alguna utilidad debe de poder comunicarse con el mundo exterior. Esto se realiza a travs del subsistema de entrada/salida (mdulos de E/S)

    La misin principal del subsistema de E/S es la adaptacin de los dispositivos externos para su conexin al bus del sistema. Por qu no pueden conectarse directamente? A menudo, la velocidad de transmisin de datos de los perifricos es

    mucho menor que la de la memoria y la CPU (es necesario amortiguar esa diferencia de velocidades)

    Debido a la gran variedad de perifricos existentes no es posible incorporar toda la lgica necesaria para controlar tal diversidad de dispositivos dentro del procesador

    Los formatos y tamaos de datos de los perifricos suelen ser diferentes a los utilizados por el computador a los que se conectan

    Arquitectura de Sistemas Paralelos (4)

    Entrada/SalidaIntroduccin (II)

    Existen dos esquemas diferentes para la implementacin del subsistema de E/S:a) Disearlo a medida utilizando

    componentes bsicosb) Utilizar dispositivos genricos de E/S y

    programarlos convenientemente

    (b)

    (a)

  • Arquitectura de Sistemas Paralelos (5)

    Mdulos de E/SDefiniciones

    Dispositivo externo: elementos que permiten la transferencia de informacin entre la CPU y el mundo exterior. Funcionan a modo de interfacetransformando la informacin asncrona y analgica del mundo exterior a la informacin sncrona y codificada del computador

    Mdulo de E/S: elementos que permiten la conexin de un dispositivo externo al bus del sistema. Los trminos controlador, procesador de E/S y mdulo de E/S son equivalentes desde el punto de vista funcional:

    Los controladores son mdulos de E/S muy sencillos que tienen el hardware necesario para que funcione el dispositivo externo

    Los procesadores de E/S son autnticos procesadores con un juego especializado de instrucciones orientado a operaciones de E/S, que son programados por la CPU, permitiendo un funcionamiento autnomo

    Un dispositivo externo conectado a un mdulo de E/S se denomina dispositivo perifrico o simplemente perifrico

    Arquitectura de Sistemas Paralelos (6)

    Mdulos de E/SDiagrama de bloques de un dispositivo externo

  • Arquitectura de Sistemas Paralelos (7)

    Mdulos de E/SDiagrama de bloques de un mdulo de E/S

    Arquitectura de Sistemas Paralelos (8)

    Mdulos de E/SFunciones (I)

    Las funciones de un mdulo de E/S son:

    Control y temporizacin

    Comunicacin con el procesador

    Comunicacin con los dispositivos

    Almacenamiento temporal

    Deteccin de errores

  • Arquitectura de Sistemas Paralelos (9)

    Mdulos de E/SFunciones (II)

    Control y temporizacin Son necesarios para coordinar el trfico entre dispositivos internos y externos Por ejemplo, el control de la transferencia de datos desde un dispositivo

    externo al procesador podra implicar la siguiente secuencia de pasos:1. El procesador pregunta por el estado del dispositivo2. El mdulo de E/S devuelve el estado del dispositivo3. Si el dispositivo est listo, el procesador solicita la transferencia al mdulo de E/S4. El mdulo de E/S obtiene los datos5. Los datos se transfieren del mdulo de E/S al procesador

    La comunicacin con el procesador implica: Decodificacin de rdenes Datos Informacin de estado Reconocimiento de direccin

    Arquitectura de Sistemas Paralelos (10)

    Mdulos de E/SFunciones (III)

    La comunicacin con el dispositivo implica: rdenes Informacin de estado Datos

    Almacenamiento temporal de datos Los datos se envan en rfagas rpidas desde la memoria al mdulo de E/S y

    despus se envan al perifrico a la velocidad de ste (el proceso inverso es semejante)

    Los datos se almacenan para no mantener ocupada a la memoria en una operacin de transferencia lenta (evitar una cada en el rendimiento)

    Deteccin de errores Errores debidos a defectos mecnicos o elctricos Errores en la transmisin de informacin (cdigos de deteccin de errores)

  • Arquitectura de Sistemas Paralelos (11)

    Mdulos de E/SFunciones (IV)

    Velocidades tpicas de transferencia en dispositivos de E/S (bps)(Almacenamiento temporal de datos)

    Arquitectura de Sistemas Paralelos (12)

    Mapa de Entrada/Salida: comn y separadoDefinicin

    A la hora de integrar el subsistema de E/S (seleccin del dispositivos y acceso a sus registros) en un computador existen dos posibilidades: E/S comn o asignada/mapeada en memoria: en la que el procesador no

    contempla el acceso a mdulos de E/S. El acceso a los perifricos se hace como si se accediese a un dato almacenado en la memoria principal. A los perifricos se le asigna posiciones de memoria como si fueran variables. Ej: el procesador Motorola 68000

    E/S aislada o separada: el acceso a la E/S est contemplado en la arquitectura. Existen dos mapas de memoria separados: uno para memoria y otro para E/S. Esto implica que existen instrucciones especficas de E/S (inport/outport) y tambin seales especficas. Ej: la familia i80x86

    Aunque el sistema soporte espacios de direcciones separados no todos los dispositivos tienen porqu usar los puertos de E/S: mientras que el uso de los puertos de E/S eran comn en las tarjetas ISA, los dispositivos PCI suelen mapear sus registros en memoria

  • Arquitectura de Sistemas Paralelos (13)

    Mapa de Entrada/Salida: comn y separadoEjemplo: Esquema de direcciones de E/S en un PC

    Arquitectura de Sistemas Paralelos (14)

    Mapa de Entrada/Salida: comn y separadoVentajas e inconvenientes

    Mapear la E/S en memoria tiene como ventajas: no utilizar instrucciones de propsito especfico y aprovechar

    toda la potencia del juegos de instrucciones, permitiendo una mejor programacin

    el acceso a memoria es mucho ms eficiente el compilador tiene mas libertad para elegir el lugar y el modo de

    direccionamiento en el acceso a memoria

    Y como inconveniente: se desperdicia parte del espacio de direcciones

  • Arquitectura de Sistemas Paralelos (15)

    Mapa de Entrada/Salida: comn y separadoLos problemas de la E/S en memoria

    Hay que tener en cuenta que las operaciones de E/S suelen tener efectos colaterales (ej: bandera desactivada cuando se produce una lectura) mientras que la operaciones con memoria no

    Cuando existen efectos colaterales las operaciones de E/S mapeada en memoria pueden ser problemticas

    Como la velocidad de acceso a memoria es crtica en el rendimiento de la CPU, el acceso a memoria (sin efectos colaterales) es optimizado: cach, optimizaciones del compilador y reordenacin hardware de instrucciones

    Para evitar el uso de la cach el espacio de memoria del dispositivo puede ser configurado como memoria no cacheable

    Para evitar la optimizacin del compilador y la reordenacin harware de instrucciones cuando se programa deben utilizarse memory barriers

    Arquitectura de Sistemas Paralelos (16)

    Mtodos de Entrada/SalidaClasificacin

    Debido a la diferencia de velocidad entre procesador y perifricos es necesario proporcionar mecanismos para sincronizar las operaciones de E/S

    A la hora de clasificar los diferentes mtodos para llevar a cabo las operaciones de E/S hay que tener en cuenta los siguientes factores: Inicio de la transferencia (quin comienza la transferencia?) Transferencia (quin realiza la transferencia?)

    Existen tres tcnicas para realizar las operaciones de E/S: E/S programada E/S por interrupciones Acceso directo a memoria

  • Arquitectura de Sistemas Paralelos (17)

    Mtodos de Entrada/SalidaE/S programada

    Tambin llamada por sondeo o encuesta (polling) La CPU tiene el control absoluto de la operacin de E/S: inicia

    y lleva a cabo la transferencia El procesador ejecuta un programa que controla directamente

    la operacin de E/S : Comprobacin del estado Envo de una orden de lectura o escritura Transferencia de datos

    Esta tcnica tiene la ventaja de utilizar un hardware mnimo aunque malgasta tiempo de proceso ya que ha de interrogar continuamente al perifrico (espera activa, en sistemas multiproceso)

    Arquitectura de Sistemas Paralelos (18)

    E/S programadaEjemplo de programacin

    void main () {unsigned char estado;...inicializar_periferico_X();...while (!fin_operacion) {

    estado = inportb (PUERTO_REG_ESTADO_X);if ((estado & MASCARA_BIT_LISTO)!= 0)

    hacer_operacion();}

    }

    ((estado | ~ MASCARA_BIT_LISTO)!= 0xFFFF)

    activo en alta

    activo en baja

  • Arquitectura de Sistemas Paralelos (19)

    Mtodos de Entrada/SalidaE/S por interrupciones

    Para evitar la degradacin en las prestaciones del sistema que supone la espera activa, en este caso es el dispositivo el que solicita la operacin de E/S cuando se encuentra preparado para realizarla (interrupcin)

    La transferencia es llevada a cabo por la CPU de forma semejante a como se haca en la E/S programada

    El esquema bsico de funcionamiento de la E/S por interrupciones es:1. El procesador ejecuta instrucciones de un programa 2. Al finalizar cada instruccin comprueba si se ha producido una interrupcin3. En caso afirmativo el procesador enva una seal de reconocimiento al

    dispositivo, guarda el estado actual del proceso (contador del programa y registros) y comienza a ejecutar la rutina que sirve la interrupcin (manejador de interrupcin o rutina de servicio de interrupcin)

    4. Al finalizar la ejecucin de la rutina de servicio, se recupera el estado de la mquina y se contina ejecutando el proceso que se abort

    Arquitectura de Sistemas Paralelos (20)

    E/S por interrupcionesEsquema de funcionamiento

    PSW=Program Status WordPC=Program Counter

  • Arquitectura de Sistemas Paralelos (21)

    E/S por interrupcionesImplementacin

    En la implementacin de la E/S mediante interrupciones aparecen dos cuestiones: cmo se determina el procesador qu dispositivo ha provocado la

    interrupcin? si se han producido varias interrupciones, cmo decide el

    procesador la que debe atender?

    Hay cuatro tcnicas utilizadas comnmente para implementar la E/S por interrupciones: Mltiples lneas de interrupcin Consulta software (software polling) Conexin en cadena (daisy chain) Arbitraje de bus

    Tcnicas que usan interrupciones vectorizadas

    Arquitectura de Sistemas Paralelos (22)

    Implementacin de la E/S por interrupcionesMltiples lneas de interrupcin

    Consiste en proporcionar varas lneas de interrupcin entre el procesador y los mdulos de E/S

    Es poco prctico porque malgasta terminales del procesador y adems de existir ms perifricos que lneas no se resolvera el problema

    La prioridad viene fijada por el procesador

    CPU

    INT0INT1

    ...INTN

    Perifrico 0 Perifrico 1 Perifrico N

  • Arquitectura de Sistemas Paralelos (23)

    Implementacin de la E/S por interrupcionesConsulta software

    Todos los mdulos de E/S comparten una lnea comn para solicitar interrupciones

    Cuando el procesador detecta una interrupcin, se produce un salto a una subrutina de servicio de interrupcin que se encarga de consultar a cada mdulo de E/S para determinar cul ha producido la interrupcin

    La desventaja de la consulta software est en el tiempo que consume La prioridad viene determinada por el orden en que se hace la encuesta

    Arquitectura de Sistemas Paralelos (24)

    Implementacin de la E/S por interrupcionesConexin en cadena (I)

    Se trata de una consulta o polling hardware Todos los mdulos de E/S comparten una lnea comn para solicitar

    interrupciones La lnea de reconocimiento de interrupcin se conecta encadenando los

    mdulos uno tras otro Cuando el procesador recibe una interrupcin, activa la seal de

    reconocimiento, la cual se propaga a travs de la secuencia de mdulos de E/S hasta que alcanza al que solicit la interrupcin

    El mdulo correspondiente responde colocando una palabra que lo identifica en las lneas de datos (vector)

    El procesador utiliza el vector de interrupcin como puntero a la rutina de servicio (as se evita ejecutar una rutina de servicio general)

    La prioridad viene determinada por el orden en que se conectan los mdulos en la cadena

  • Arquitectura de Sistemas Paralelos (25)

    Implementacin de la E/S por interrupcionesConexin en cadena (II)

    Arquitectura de Sistemas Paralelos (26)

    Implementacin de la E/S por interrupcionesArbitraje de bus

    Con esta tcnica, un mdulo de E/S antes de poder activar la lnea de peticin de interrupcin debe disponer del control del bus

    Mediante el arbitrador de bus se garantiza que slo un mdulo puede activar la seal de peticin en un determinado instante

    Es una tcnica que usa interrupciones vectorizadas como el daisy chain La prioridad viene determinada por el arbitrador

  • Arquitectura de Sistemas Paralelos (27)

    Implementacin de la E/S por interrupcionesEjemplo de arbitrador: PIC 8259 (I)

    Los 80x86 disponen de una sola lnea de peticin de interrupcin(INTR) y una sola lnea de reconocimiento de interrupcin (INTA)

    Para manejar cierta variedad de dispositivos y estructuras de prioridad, se configura un rbitro de interrupciones externo (PIC 8259)

    El 8259 permite manejar hasta 8 mdulos. Si se precisan ms pueden conectarse en cascada permitiendo manejar hasta 64 mdulos

    El esquema de funcionamiento de un sistema basado en el 8259 es el siguiente: El 8259 acepta las solicitudes de interrupcin de los dispositivos

    conectados a l El 8259 determina qu interrupcin tiene la prioridad ms alta e

    indica la peticin al procesador activando la seal INTR El procesador reconoce la solicitud activando la seal INTA El 8259 sita el vector de interrupcin apropiado en el bus El procesador comienza la ejecucin de la rutina de servicio

    Arquitectura de Sistemas Paralelos (28)

    Implementacin de la E/S por interrupcionesEjemplo de arbitrador: PIC 8259 (II)

    El esquema de prioridades es configurable en el 8259. Se permiten los siguientes modos: Completamente anidados: las solicitudes de interrupcin se

    ordenan segn un nivel de prioridad desde 0 (IR0) hasta 7(IR7) Rotatorio: un dispositivo pasa a tener la menor prioridad del grupo

    despus de ser servido (aplicaciones en las que hay dispositivos con igual prioridad de interrupcin)

    Con mscara especial: se permite que el procesador pueda inhibir selectivamente las interrupciones de determinados dispositivos

  • Arquitectura de Sistemas Paralelos (29)

    Implementacin de la E/S por interrupcionesEjemplo de arbitrador: PIC 8259 (III)

    Arquitectura de Sistemas Paralelos (30)

    E/S por interrupcionesHabilitacin/Deshabilitacin de interrupciones

    Las interrupciones pueden ser: enmascarables: se pueden dejar de atender por software no enmascarables: siempre son atendidas

    Existen 3 niveles en los que habilitar/deshabilitar las interrupciones: A nivel de procesador: se deshabilitan todas las interrupciones

    enmascarables A nivel de controlador de interrupciones (PIC): se pueden

    habilitar/deshabilitar todas las interrupciones asociadas a un canal de interrupcin

    A nivel del dispositivo: los dispositivo perifricos suelen tener bits en sus registros de E/S para habilitar/deshabilitar las diferentes interrupciones que pueden generar

  • Arquitectura de Sistemas Paralelos (31)

    E/S por interrupcionesEjemplo de programacin

    void main () {void interrupt (*manejador_antiguo)();...inicializar_periferico_X();antiguo=getvect(INT_X);disable(); /* Se deshabilitan mientras se manipulan

    los vectores de interrupcion */setvect(INT_X, manejador_intr_periferico_X); enable (); ...disable();setvect(INT_X, manejador_antiguo); enable (); }

    void interrupt manejador_intr_periferico_X() { ... /* Se realizan las operaciones necesarias */}

    Arquitectura de Sistemas Paralelos (32)

    Acceso directo a memoriaConcepto

    Tanto la E/S por interrupciones como la E/S programada requieren la intervencin activa del procesador para transferir datos entre la memoria y los mdulos de E/S

    Ambos mtodos tienen un impacto negativo sobre la actividad del procesador y la velocidad de E/S

    Utilizando la E/S programada, el procesador puede transferir datos a alta velocidad al precio de no hacer nada ms

    La E/S con interrupciones libera en parte al procesador a expensas de reducir la velocidad de E/S (debido a la sobrecarga que supone el cambio de contexto)

    Cuando hay que transferir grandes volmenes de datos, se requiere una tcnica ms eficiente: el Acceso Directo a Memoria (DMA)

    En el DMA tanto el inicio de la transferencia como la transferencia en s estn gobernadas por el dispositivo (se libera a la CPU)

  • Arquitectura de Sistemas Paralelos (33)

    Acceso directo a memoriaEl controlador de DMA

    El acceso directo a memoria requiere un mdulo adicional en el bus del sistema: el Controlador de DMA (DMAC)

    La nica tarea de la CPU es programar el DMAC. Hay que enviarle al menos la siguiente informacin: Direccin del perifrico de E/S Posicin inicial de memoria de donde se lee o se escribe El tipo transferencia: lectura o escritura El tamao de la transferencia (nmero de palabras a transferir)

    El DMAC transfiere el bloque de datos completo, palabra a palabra, directamente desde, o hacia, la memoria, sin que tenga que pasar a travs del procesador

    Cuando la transferencia ha concluido el DMAC enva una seal deinterrupcin al procesador (TC, Terminal Count)

    Arquitectura de Sistemas Paralelos (34)

    Acceso directo a memoriaImplementacin (I)

    Existen varias formas de realizar el acceso directo a memoria: Memoria multipuerto: la memoria permite realizar transferencias

    simultneas por parte de la CPU y el DMAC. La memoria tiene dos puertos: uno para la CPU y otro para el DMAC. Es posible el acceso concurrente a un mismo bloque de memoria por lo que hay que establecer mecanismos de control

    Acceso a memoria por robo de ciclo: es una solucin ms econmica y es la utilizada habitualmente. El DMAC cada vez que quiere tomar el control del bus del sistema para realizar una transferencia, lo solicita a la CPU activando una seal (HOLD). La CPU concede el control del bus (se activa la seal HLDA), el DMAC se hace dueo del bus y realiza la transferencia. Ejemplo 80x86 y 8237:

    Transferencia en bloque o rfaga Transferencia bajo demanda Transferencia simple

  • Arquitectura de Sistemas Paralelos (35)

    Acceso directo a memoriaImplementacin (II)

    Acceso a memoria por robo de ciclo

    Arquitectura de Sistemas Paralelos (36)

    Acceso directo a memoriaImplementacin (III)

    La conexin del DMAC al sistema puede realizarse de varias formas diferentes: Bus nico, DMA independiente: El mdulo de DMA acta como un

    procesador suplementario. Es econmica pero ineficiente: la transferencia de cada palabra consume dos ciclos de bus

    Bus nico, DMA-E/S: El nmero de ciclos de bus necesarios puede reducirse sustancialmente si se integran las funciones de DMA y E/S (el camino entre el DMA y los mdulos de E/S no incluye al bus del sistema)

    Bus de E/S: El concepto anterior puede llevarse algo ms lejos conectado los mdulos de E/S a un mdulo de DMA mediante un bus de E/S. Se reduce a uno el nmero de interfaces de E/S en el mdulo de DMA y es una configuracin fcilmente ampliable

  • Arquitectura de Sistemas Paralelos (37)

    Acceso directo a memoriaImplementacin (IV)

    Bus nico, DMA independiente

    Bus nico, DMA-E/S

    Bus de E/S

    Arquitectura de Sistemas Paralelos (38)

    Acceso directo a memoriaEjemplo de mdulo de DMA: DMAC 8237 (I)

    El 8237 es un controlador de DMA de 4 canales programables en 3 modos diferentes, con posibilidad de ser conectado en cascada y que adems de las funciones tradicionales soporta tambin transferencias memoria-memoria

    El bus de datos es de 8 bits y el de direcciones de 16 bits (requiere un latchexterno porque est multiplexado para ahorrar pines)

    Cuando se usa con la familia 80x86 es necesario un latch (registro de pgina) que almacene los 4 bits superiores de la direccin del 80x86 en modo real (20 bits)

    Modos de transferencia: Transferencia nica: El dispositivo es programado para realizar una nica

    transferencia Transferencia de bloque: Se transfieren todas las palabras de las que consta

    la transferencia Transferencia bajo demanda: la transferencia se realiza slo mientras el

    dispositivo siga solicitando el canal de DMA. Esta modalidad permite dejar ciclos a la CPU cuando no es realmente necesario que el DMA opere

  • Arquitectura de Sistemas Paralelos (39)

    Acceso directo a memoriaEjemplo de mdulo de DMA: DMAC 8237 (II)

    El controlador de DMA es realmente un circuito secuencial generador de seales de control y direcciones que permite la transferencia directa de los datos sin necesidad de registros temporales intermedios (transferencia al vuelo)

    Las operaciones memoria-memoria precisan de un registro temporal intermedio, por lo que son al menos dos veces ms lentas que las de E/S (permiten chequeos para finalizar transferencias)

    Cuando el 8237 est inactivo permanece desconectado de los buses del sistema; cuando se produce una peticin de DMA por parte de un dispositivo (con DREQi se pide y con DACKi se confirma), genera una solicitud para apropiarse del bus (HRQ), espera confirmacin (HLDA) y a continuacin genera las seales necesarias para realizar la transferencia. Cuando acaba genera una interrupcin (TC, Terminal Count)

    Dispone de esquemas de prioridad fija (DREQ0 ms prioritaria) y rotativa La operacin que realiza el 8237 es consecuencia de la programacin realizada

    previamente en los registros de comando, modo, base de direccin y contador de palabras a transferir

    Arquitectura de Sistemas Paralelos (40)

    Ejemplo de mdulo de DMA: DMAC 8237Sistema basado en un 8237

  • Arquitectura de Sistemas Paralelos (41)

    Acceso directo a memoriaEjemplo de programacin

    void main () {void interrupt (*manejador_antiguo)();...inicializar_periferico_X();inicializar_DMA (dir, tam, tipo, ...);

    antiguo=getvect(INT_FIN_TRANS);disable(); /* Se deshabilitan mientras se manipulan

    los vectores de interrupcion */setvect(INT_FIN_TRANS, manejador_fin_trans); enable (); ...disable();setvect(INT_FIN_TRANS, manejador_antiguo); enable (); }

    void interrupt manejador_fin_trans () {/* Se comprueban los posibles errores de la transferencia */ ...}

    Arquitectura de Sistemas Paralelos (42)

    Mtodos de E/SResumen

  • Arquitectura de Sistemas Paralelos (43)

    Ejemplo de dispositivo de E/SInterfaz Perifrico Programable 8255

    Caractersticas Diagrama de bloques Direcciones y registros de control Modos de funcionamiento:

    Modo 0 (E/S programada) Modo 1 (E/S por interrupciones) Modo 2 (E/S bidireccional)

    Emulacin interfaz centronics (puerto paralelo impresora) mediante un 8255

    Arquitectura de Sistemas Paralelos (44)

    Interfaz Perifrico Programable 8255Caractersticas

    Dispone de tres puertos de E/S (A, B y C): dos de tamao byte (A y B) y uno de tamao 2x4 bits (C) con control bit a bit

    Los puertos pueden ser configurados como entrada, salida o bidireccionales

    Dispone de lneas de protocolo

  • Arquitectura de Sistemas Paralelos (45)

    Interfaz Perifrico Programable 8255Diagrama de bloques

    Arquitectura de Sistemas Paralelos (46)

    Interfaz Perifrico Programable 8255Direcciones y registros de control

  • Arquitectura de Sistemas Paralelos (47)

    Interfaz Perifrico Programable 8255Modo 0 (E/S Programada)

    Se utilizan los tres puertos (A,B,C) como simples registros donde leer y escribir. La CPU y el/los dispositivo/s externo/s correspondiente/s se encarga/n de leer/escribir de acuerdo a un determinado protocolo previamente definidoEl puerto A (8 bits) se configura como entrada o salida con el bitD4 del registro de control

    El puerto B (8 bits) se configura como entrada o salida con el bitD1 del registro de control

    El puerto C alto (4 bits) se configura como entrada o salida con el bit D3 del registro de control

    El puerto C bajo (4 bits) se configura como entrada o salida con el bit D0 del registro de control

    Arquitectura de Sistemas Paralelos (48)

    Interfaz Perifrico Programable 8255Cronograma Modo 0

  • Arquitectura de Sistemas Paralelos (49)

    Interfaz Perifrico Programable 8255Modo 1 (E/S por interrupciones)

    En este modo se utiliza el protocolo Handshake

    El puerto A (8 bits) se configura como entrada o salida con el bit D4 del registro de control

    El puerto B (8 bits) se configura como entrada o salida con el bit D1 del registro de control

    El puerto C contiene las seales del protocolo

    Arquitectura de Sistemas Paralelos (50)

    Interfaz Perifrico Programable 8255Modo 1 (E/S por interrupciones). Configuracin de entrada

    STBA (strobe input): Un cero en esta lnea de entrada indica que hay dato disponible en el puerto A (activada por el dispositivo externo)

    IBFA (input buffer full): Un uno en esta lnea de salida indica que el dato ya ha sido cargado en el registro del puerto A. IBFA se desactiva cuando se desactiva STBA (el dispositivo externo da su confirmacin) y se produce el flanco de subida de la seal RD (dato ledo por la CPU)

    Seales de protocolo cuando el puerto est configurado como entrada

    Las seales STBB , IBFB son funcionalmente equivalentes

  • Arquitectura de Sistemas Paralelos (51)

    Seales de protocolo cuando el puerto est configurado como salida

    OBFA (output buffer full): esta lnea de salida se pone a cero (activa en baja) para indicarle al dispositivo que la CPU ha escrito un dato en el puerto A. Se activa con el flanco de subida de la seal WR (escritura finalizada) y se desactiva con la confirmacin del dispositivo (ACKA)

    Interfaz Perifrico Programable 8255Modo 1 (E/S por interrupciones) Configuracin de salida

    ACKA (acknowledge input): un cero en esta entrada indica que los datos del puerto A han sido ledos por el dispositivo externo. Esencialmente es una respuesta del dispositivo perifrico indicando que ha sido recibido el dato enviado por la CPU

    Las seales OBFB y ACKB son funcionalmente equivalentes

    Arquitectura de Sistemas Paralelos (52)

    Interfaz Perifrico Programable 8255Modo 1 (E/S por interrupciones). Interrupciones

    Seales de interrupcin se pueden generar en los puertos A y B tanto si estn configurados como entrada (la CPU debe leer un dato) como si lo estn como salida (la CPU ya puede escribir un nuevos dato)

    El bit 4 del puerto C (PC4) es el bit de habilitacin de interrupcin del puerto A (INTEA) cuando est configurado como entrada y el PC6 cuando lo est como salida. El del puerto B (INTEB) es el bit 2 (PC2).

    Para que el 8255 genere una interrupcin asociada al puerto A (seal INTRA) cuando est configurado como entrada, se debe cumplir que:

    STBA es 1, IBFA es 1 e INTEA es 1(semejante para el puerto B)

    Para que el 8255 genere una interrupcin asociada al puerto A (seal INTRA) cuando est configurado como salida, se debe cumplir que:

    ACKA es 1, OBFA es 1 e INTEA es 1(semejante para el puerto B)

  • Arquitectura de Sistemas Paralelos (53)

    Interfaz Perifrico Programable 8255Modo 1 (E/S por interrupciones). Registros y seales

    Arquitectura de Sistemas Paralelos (54)

    Interfaz Perifrico Programable 8255Cronograma Modo 1

    Comienzo de la ejecucin de los manejadores de interrupcin

    21

    34

    5

    12

    3

    45

  • Arquitectura de Sistemas Paralelos (55)

    Interfaz Perifrico Programable 8255Modo 2 (E/S bidireccional)

    El PUERTO A funciona de forma bidireccional. Es como un doble modo 1. El PUERTO B no tiene este modo

    Los cinco lneas superiores del puerto C contienen las seales de protocolo

    Seales de protocolo(semejantes a las descritas en el modo 1)

    STB (strobe input) IBF (input buffer full) ACK (acknowledge) OBF (output buffer full) INTR

    Arquitectura de Sistemas Paralelos (56)

    Interfaz Perifrico Programable 8255Modo 2 (E/S bidireccional). Registro y seales

  • Arquitectura de Sistemas Paralelos (57)

    Interfaz Perifrico Programable 8255Cronograma Modo 2

    Arquitectura de Sistemas Paralelos (58)

    Interfaz Perifrico Programable 8255Emulacin interfaz centronics (puerto paralelo impresora)

  • Arquitectura de Sistemas Paralelos (59)

    Operaciones de E/S desde el SOEl S.O. Linux y la programacin de drivers

    El kernel de Linux ofrece una interfaz de programacin que facilita la creacin de drivers, de manera que el diseador debe mapear llamadas al sistema independientes del driver de carcter estndar con operaciones especficas del driver

    Una caracterstica interesante de esta interfaz de programacin es que los drivers pueden ser implementados fuera del kernel y aadidos a ste en tiempo de ejecucin

    La distincin entre mecanismos (capacidades que se ofrecen) y poltica (uso de esas capacidades) es una de las mejores ideas aplicadas al diseo de sistemas UNIX

    Esta idea se aplica al diseo de drivers: drivers libres de poltica (driver para un floppy). El objetivo es programar cdigo para el kernel que permita el acceso al dispositivo sin forzar ninguna poltica puesto que diferentes usuarios pueden tener necesidades diferentes (acceso flexible, sin restricciones)

    Arquitectura de Sistemas Paralelos (60)

    El S.O. Linux y la programacin de driversEl kernel de Linux

  • Arquitectura de Sistemas Paralelos (61)

    El S.O. Linux y la programacin de driversProgramacin del kernel: Mdulos

    Una de las caractersticas ms significativas de Linux es la posibilidad de ampliar la funcionalidad del kernel en tiempo de ejecucin

    El cdigo que se aade al kernel en tiempo de ejecucin se denomina mdulo

    El kernel de Linux ofrece soporte para diferentes tipos de mdulos incluido los drivers, aunque no limitados a ellos

    Clases de dispositivos y mdulos Dispositivos de caracteres Dispositivos de bloque Interfaces de red

    Arquitectura de Sistemas Paralelos (62)

    Programacin del kernel: MdulosMdulos vs Aplicacin

    Ejecuta una tarea desde que comienza hasta que acaba

    Puede utilizar funciones que no han sido definidas por ella, linkando con las libreras adecuadas (printf)

    Se ejecutan en el espacio de usuario

    Permite atender solicitudes de procesos en ejecucin

    Puede usar slo las funciones que el kernel exporta (printk)

    Se ejecuta en el espacio del kernel

    Aplicacin Mdulo

    Los mdulos que se encuentran cargados en un momento dado pueden conocerse con el comando lsmod o cat /proc/modulesLos dispositivos del sistema pueden conocerse con el comando cat /proc/devices

  • Arquitectura de Sistemas Paralelos (63)

    Programacin del kernel: Mdulos Espacio de usuario y espacio del kernel

    Una de las tareas de un S.O. es proteger de accesos no autorizados a los diferentes recursos del sistema

    Esta tarea del S.O. requiere un componente hardware de proteccin en el procesador: diferentes niveles con funciones diferentes y operaciones no permitidas en niveles inferiores (todos los actuales procesadores disponen de al menos dos niveles)

    Los sistemas Unix utilizan dos niveles de proteccin: Modo superusuario: en el que se ejecuta el kernel (todo est permitido) Modo usuario: en el que se ejecutan las aplicaciones (se evitan accesos

    directos al hardware y accesos a memoria no autorizados) Habitualmente se denominan espacio del kernel y espacio de usuario La aplicaciones y los mdulos del kernel tienen mapas de memoria diferentes.

    Se requieren funciones para realizar transferencias de datos de uno a otro. Ej: copy_to_user y copy_from_user

    El espacio del kernel a diferencia del de usuario es nonswappable (no paginable) y nonpreemptive (de ejecucin no concurrente)

    Arquitectura de Sistemas Paralelos (64)

    El S.O. Linux y la programacin de driversPuertos de E/S y E/S mapeada en memoria

    Un dispositivo perifrico es controlado mediante operaciones de lectura/escritura sobre sus registros internos

    Desde el punto de vista del hardware no hay diferencias conceptuales entre que estos registros estn mapeados en E/S o en memoria (cat /proc/ioport y cat/proc/iomem)

    Para evitar los problemas de los efectos colaterales en la E/S mapeada en memoria: el espacio de memoria del dispositivo debe ser configurado como memoria no

    cacheable (ej: opcin en el espacio de configuracin de los dispositivos PCI) deben utilizarse memory barriers (ej: rmb, wmb, y mb)

    Existen funciones para leer y escribir en los puertos una palabra (operaciones simples) o ms (operaciones complejas). Ej: inb, outb, insb, ..

    Existen funciones para leer y escribir en memoria (operaciones simples y complejas). Ej: readb, writeb, memcpy_fromio, memcpy_toio,

    Algunas plataformas reservan un espacio de memoria no paginable para la E/S mapeada en memoria (no ocurre en ISA/PCI x86). Si el acceso a la memoria asignada est virtualizado se requiere el uso de funciones especiales (ioremap y iounmap)

  • Arquitectura de Sistemas Paralelos (65)

    El Linux existen dos tipos de interrupciones: Rpidas: Deben ser rpidamente atendidas, pues su ejecucin se realiza con

    todas las interrupciones deshabilitadas (interrupcin de un timer) Lentas: Se ejecutan con todas las interrupciones habilitadas excepto la que

    est siendo servida, por lo que su tratamiento puede consumir ms tiempo Para que un mdulo pueda atender las solicitudes de interrupcin de un

    determinado canal debe asignarle un manejador de interrupcin cuando se carga el mdulo (request_irq) y desasignrselo cuando se descarga (free_irq)

    Mediante el comando cat /proc/interrupts se saben las IRQs asociadas a cada dispositivo

    Mediante el comando cat/proc/stat se sabe las veces que se ha ejecutado una IRQ

    Existen funciones para habilitar y deshabilitar las interrupciones: sti, cli, enable_irq, diable_irq,

    El S.O. Linux y la programacin de driversGestin de interrupciones (I)

    Arquitectura de Sistemas Paralelos (66)

    El S.O. Linux y la programacin de driversGestin de interrupciones (II)

    El problema que presenta la gestin de interrupciones es que no pueden realizarse tareas demasiado largas en el manejador

    El manejador necesita acabar cuanto antes para desbloquear las interrupciones (sobre todo en las rpidas)

    Solucin: Dividir la funcionalidad del manejador en dos rutinas: top-halfy bottom-half

    La diferencia principal entre ellas es que todas las interrupciones estn habilitadas durante la ejecucin de la rutina bottom-half

    La rutina top-half (manejador) realizar lo qu debe hacerse de manera inmediata (operacin de E/S) mientras que la rutina bottom-half har el resto (procesado de la informacin)

    Existen diferentes formas de que el kernel comience la ejecucin de la rutina bottom-half (se establecen colas)

    En la rutina de interrupcin (top-half) hay que insertar la tarea planificada (rutina bottom-half) en una de las colas de tareas e indicarle al kernel que la tarea est lista para su ejecucin