entrada salida sistemas operativos
DESCRIPTION
Sistemas operativos , en este trabajo se puede observar lo basico de los sistemas de entrada y salidaTRANSCRIPT
-
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