MX2007014338A - Metodo para suministrar interrupciones a unidades de modo de usuario. - Google Patents

Metodo para suministrar interrupciones a unidades de modo de usuario.

Info

Publication number
MX2007014338A
MX2007014338A MX2007014338A MX2007014338A MX2007014338A MX 2007014338 A MX2007014338 A MX 2007014338A MX 2007014338 A MX2007014338 A MX 2007014338A MX 2007014338 A MX2007014338 A MX 2007014338A MX 2007014338 A MX2007014338 A MX 2007014338A
Authority
MX
Mexico
Prior art keywords
interruption
user mode
units
user
mode
Prior art date
Application number
MX2007014338A
Other languages
English (en)
Inventor
Jeff L Havens
Madhusudhan Talluri
J Smith Frederik Iv
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of MX2007014338A publication Critical patent/MX2007014338A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Stored Programmes (AREA)

Abstract

Se proporcionan sistemas y metodos para proveer una estructura dentro de la cual unidades de dispositivo pueden correr. Una caracteristica generica de plataforma (por ejemplo, APIC) o conductor comun (conductor comun de PCI) se utiliza para sacar al CPU del modo de interrupcion sin tener que esperar a que una unidad de nivel de usuario elimine la interrupcion del dispositivo. Esto permite la escritura de la unidad de dispositivo completa en el espacio de usuario. La unidad de dispositivo sigue obteniendo notificaciones o interrupciones, pero no a una prioridad de interrupcion. El mismo esquema puede ser extendido a interrupciones compartidas, en donde multiples dispositivos comparten una linea de interrupcion individual.

Description

MÉTODO PARA SUMINISTRAR INTERRUPCIONES A UNIDADES MODO DE USUARIO CAMPO DE LA INVENCIÓN La invención se refiere en general al campo de unidades de dispositivo de hardware de computadora. Más particularmente, esta invención se refiere a un sistema y método para proporcionar y controlar interrupciones en modo de usuario más que en modo de núcleo.
ANTEDCEDENTES DE LA INVENCIÓN Las unidades en el sistema operativo de MICROSOFT WINDOWS y otro sistema operativo pueden correr en cualquier modo de usuario o modo de núcleo. Las unidades de modo de usuario corren en el modo de procesador no privilegiado en el cual otro código de aplicación, que incluye código de subsistema protegido, se ejecuta. Las unidades de modo de usuario no pueden obtener acceso a datos de sistema excepto al llamar una API que, a su vez, llama a servicios de sistema. Las unidades de modo de núcleo corren como parte del ejecutivo de sistema operativo, el componente de sistema operativo base que soporta uno o más subsistemas protegidos. Las unidades de modo de usuario y de modo de núcleo tienen diferentes estructuras, diferentes puntos de entrada, y diferentes interfases de sistema. Si un dispositivo requiere una unidad de modo de usuario o de modo de núcleo depende del tipo de dispositivo y el soporte ya proporcionado para este en el sistema operativo. La mayoría de las unidades del dispositivo corren en el modo de núcleo. Las unidades de modo de núcleo pueden realizar ciertas operaciones protegidas y pueden acceder a estructuras de sistema que las unidades de modo de usuario no pueden acceder. Cuando un dispositivo de hardware interrumpe la CPU, la CPU responde al enmascarar internamente todas las interrupciones (a nivel de CPU), y al invocar una rutina de control de excepción de sistema operativo diseñado para servir a la interrupción. Típicamente, esta rutina programará la APIC para enmascarar interrupciones en y por abajo del nivel de interrupción actual, y entonces vuelve a permitir interrupciones en el nivel de CPU. Después la rutina de servicio de interrupción (ISR) para la unidad que sirve al dispositivo que generó la interrupción se invocará. En el caso de una interrupción compartida, los ISRs se llamarán a su vez hasta que uno de los ISRs indique que se controle la interrupción. En este punto, la interrupción debe controlarse, y la rutina de US limpia interrupciones en el nivel de APIC y regresa. Este procedimiento completo corre en el contexto de la secuencia que se ejecutó cuando ocurrió la interrupción, y corre en IRQL elevados. El código de ISR, por lo tanto corre en un ambiente altamente controlado, que claramente es apropiado para código de modo de núcleo, (es decir, el código ejecutado, y los datos accedidos por el código no deben compaginarse. El código no puede bloquear, etc.). Las unidades de dispositivo que necesitan controlar interrupciones convencionalmente corren en modo de núcleo debido a la falta de soporte para controlar interrupciones en el modo de usuario. Por consiguiente, existe una necesidad de un mecanismo de sistema operativo para entregar interrupciones en modo de usuario tal como clases adicionales o dispositivos pueden utilizar unidades de modo de usuario. La presente invención proporciona tal solución.
BREVE DESCRIPCIÓN DE LA INVENCIÓN La presente invención se dirige a sistemas y métodos para permitir que las unidades de dispositivo corran en un nivel de modo de usuario. Una plataforma (por ejemplo, APIC) o característica genérica de conductor común (conductor común de PCI) se utiliza para enmascarar interrupciones hasta que pueda programarse el ISR y el modo del usuario para limpiar la interrupción de dispositivos. Los controladores de interrupción de esa forma pueden escribirse como código de modo de usuario, en un ambiente de modo de usuario estándar. Esto permite a una clase de unidades que previamente se escribieron como unidades de modo de núcleo, simplemente para su necesidad de controlar interrupciones portarse a modo de usuario. La unidad de dispositivo aún recibe notificaciones en interrupciones pero no en prioridad de interrupción. El mismo esquema puede extenderse a interrupciones compartidas, en donde múltiples dispositivos comparten una línea de interrupción individual. De acuerdo con una característica de la invención, un servicio de núcleo se proporciona que actúa como una funcionalidad de interrupción genérica. Un mecanismo de IPC permite a los componentes comunicarse uno con otro. Un Administrador de l/O realiza distribución/inicio/orquesta de recurso de los componentes. El servicio de interrupción proporciona una interfase de fábrica al administrador de l/O para distribuir un objeto de interrupción para pasarse a las unidades. El servicio de interrupción expone una segunda interfase con la cual las unidades de modo de usuario pueden llamar cuando están listas para recibir una interrupción. De regreso esta llamada implica que una interrupción de hardware ocurrió y que el controlador debe comunicarse/manipular el dispositivo. Las características y ventajas adicionales de la invención serán evidentes a partir de la siguiente descripción detallada de modalidades ilustrativas que prosigue con referencia a los dibujos anexos.
B REVÉ DESCRIPCIÓN DE LOS DIBUJOS La breve descripción anterior, así como la descripción detallada siguiente de modalidades preferidas, se entiende mejor cuando se lee en conjunto con los dibujos anexos. Para el propósito de ilustrar la invención, se muestran en los dibujos construcciones ilustrativas de la invención; sin embargo, la invención no se limita a los métodos específicos e instrumentos descritos. En los dibujos: La Figura 1 es un diagrama de bloques que muestra un ambiente de cómputo ilustrativo en los cuales pueden implementarse los aspectos de la invención; La Figura 2 muestra una arquitectura típica de un dispositivo de cómputo, tal como el de la Figura 1; La Figura 3 ilustra una línea de tiempo para un método convencional para controlar interrupciones, en donde la unidad de dispositivo reside en el modo de núcleo; y Las Figuras 4-5, ilustran líneas de tiempo para controlar interrupciones de acuerdo con la presente invención.
DESCRIPCIÓN DETALLADA DE MODALIDADES PREFERIDAS Ambiente de Cómputo Ilustrativo La Figura 1 ilustra un ejemplo de un ambiente de sistema de cómputo adecuado 100, en donde la invención puede ser implementada. El ambiente de sistema de cómputo 100 es solo un ejemplo de un ambiente de cómputo adecuado y no pretende sugerir ninguna limitación en cuanto al alcance de uso o funcionalidad de la invención. Ni el ambiente de cómputo 100 debe ser interpretado como teniendo cualquier dependencia o requerimiento relacionado con cualquiera o una combinación de componentes ilustrados en el ambiente operativo 100 ilustrativo. La invención es operacional con numerosos otros ambientes de configuraciones de sistemas de cómputo de propósito general o propósito especial. Ejemplos de sistemas de cómputo bien conocidos, ambientes y/o configuraciones que pueden ser adecuados con la invención incluyen, pero no se limitan a, computadoras personales, computadoras de servidor, dispositivos móviles o portátiles, sistemas de multiprocesador, sistemas a base de microprocesador, cajas de tv por cable, electrónica de consumidor programable, PCs de red, minicomputadoras, macrocomputadoras, ambientes de cómputo distribuidos que incluyen cualquier de los sistemas y dispositivos anteriores y similares. La invención puede describirse en el contexto general de instrucciones ejecutables por computadora, tal como módulos de programa, que se ejecutan por una computadora. Generalmente, los módulos de programa incluyen rutinas, programas, objetos, componentes, estructuras de datos, etc. que realizan tareas particulares o implementan tipos de datos abstractos particulares. La invención también puede practicarse en ambientes de cómputo distribuidos en donde las tareas se realizan por dispositivos de procesamiento remotos que se enlazan a través de una red de comunicaciones u otro medio de transmisión de datos. En un ambiente de cómputo distribuido, los módulos de programa y otros datos pueden localizarse en medios de almacenamiento de computadora locales y remotos que incluyen dispositivos de almacenamiento de memoria. Con referencia a la Figura 1, un sistema ilustrativo para ¡mplementar la invención incluye un dispositivo de cómputo de propósito general en la forma de una computadora 110. Los componentes de la computadora 110 pueden incluir, pero no se limitan a, una unidad de procesamiento 120, una memoria de sistema 130, y un conductor común de sistema 121 que acopla varios componentes de sistema que incluyen la memoria de sistema a la unidad de procesamiento 120. El conductor común de sistema 121 puede ser cualquiera de varios tipos de estructuras de conductor común que incluyen un conductor común de memoria o controlador de memoria, un conductor común periférico, y un conductor común local que utiliza cualquiera de una variedad de arquitecturas de conductor común. A manera de ejemplo, y no de limitación, tales arquitecturas incluyen un conductor común de Arquitectura de Estándar de Industria (ISA), Conductor común de arquitectura de micro canal (MCA), conductor común de ISA mejorado (EISA), conductor común local de Asociación de Estándares de Electrónicos de Video (VESA), Conductor Común de Interconexión de Componente Periférico (PCI) (también conocido como conductor común de Mezanine), interconexión de componente periférico express (PCI-Express), y conductor común de manejo de sistemas (Conductor Común de SM).
La computadora 110 típicamente incluye una variedad de medios legibles por computadora. Los medios legibles por computadora pueden ser cualquier medio disponible que puede accederse por la computadora 110 e incluye tanto medios volátiles como no volátiles, medios removibles y no removibles. A manera de ejemplo, y no de limitación, los medios legibles por computadora pueden comprender medios de almacenamiento de computadora y medios de comunicación. Los medios de almacenamiento por computadora incluyen tanto medios volátiles como no volátiles, removibles y no removibles implementados en cualquier método o tecnología para almacenamiento de información tal como instrucciones legibles por computadora, estructuras de datos, módulos de programa u otros datos. Los medios de almacenamiento de computadora incluyen, pero no se limita a, RAM, ROM, EEPROM, memoria flash u otra tecnología de memoria, CD-ROM, discos versátiles digitales (DVD) u otro almacenamiento de disco óptico, cassettes magnéticos, cinta magnética, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, o cualquier otro medio que puede utilizarse para almacenar la información deseada y que pueda accederse por la computadora 110. Los medios de comunicación típicamente representan instrucciones legibles por computadora, estructuras de datos, módulos de programa u otros datos en una señal de datos modulada tal como una onda portadora u otro mecanismo de transporte e incluye cualquier medio de entrega de información. El término "señal de datos modulada" significa una señal que tiene una o más de sus características establecidas o cambiadas de tal forma para codificar información en la señal. A manera de ejemplo, y no limitación, los medios de comunicación incluyen medios por cable tal como red por cable o conexión por cable directa, y medios inalámbricos tal como medios acústicos, RF, infrarrojos y otros inalámbricos. Combinaciones de cualquiera de los anteriores también deben incluirse dentro del alcance de medios legibles por computadora. La memoria de sistema 130 incluye medios de almacenamiento de computadora en la forma de memoria volátil y/o no volátil tal como ROM 131 y RAM 132. El sistema de entrada/salida básico 133 (BIOS), que contiene en las rutinas básicas que ayudan a transferir información entre elementos dentro de la computadora 110, tal como durante el arranque, típicamente se almacena en ROM 131. La RAM 132 típicamente contiene datos y/o módulos de programa que son inmediatamente accesibles hacia y/o actualmente se operan por la unidad de procesamiento 120. A manera de ejemplo, y no de limitación, la Figura 1 ilustra el sistema operativo 134, programas de aplicación 135, otros módulos de programa 136, y datos de programa 137. La computadora 110 también puede incluir otros medios de almacenamiento de computadora removibles/no removibles, volátiles/no volátiles. A manera de ejemplo solamente, la Figura 1 ilustra una unidad de disco duro 141 que lee de o escribe a medios magnéticos no removibles, no volátiles, unidad de disco magnético 151 que lee de o escribe a un disco magnético removible, no volátil 152, y una unidad de disco óptico 155 que lee de o escribe a un disco óptico removible, no volátil 156, tal como un CD-ROM u otros medios ópticos. Los medios de almacenamiento por computadora removibles/no removibles, volátiles/no volátiles que pueden utilizarse en el ambiente operativo ilustrativo incluyen, pero no se limitan a, cassettes de cinta magnética, tarjetas de memoria flash, discos versátiles digitales, cinta de video digital, RAM de estado sólido, ROM de estado sólido, y similares. La unidad de disco duro 141 típicamente se conecta al conductor común de sistema 121 a través de una interfase de memoria no removible tal como interfase 140, y unidad de disco magnético 151 y unidad de disco óptico 155 que típicamente se conectan al conductor común de sistema 121 por una interfase de memoria removible, tal como interfase 150. Las unidades y sus medios de almacenamiento de computadora asociados, discutidos anteriormente e ilustrados en la Figura 1, proporcionan almacenamiento de instrucciones legibles por computadora, estructuras de datos, módulos de programa y otros datos para la computadora 110. En la Figura 1, por ejemplo, la unidad de disco duro 141 se ilustra como almacenando el sistema operativo 144, programas de aplicación 145, otros módulos de programas 146, y datos de programa 147. Se debe notar que estos componentes pueden ser. los mismos que o diferentes al sistema operativo 134, programas de aplicación 135, otros módulos de programa 136, y datos de programa 137. El sistema operativo 144, programas de aplicación 145, otros módulos de programa 146 y datos de programa 147 aquí se les proporcionan números diferentes para ilustrar que, en un mínimo, son copias diferentes. Un usuario puede ingresar comandos e información en la computadora 110 a través de dispositivos de entrada tal como un teclado 162 y dispositivo de señalamiento 161, comúnmente denominado como un ratón, seguibola o almohadilla sensible al tacto. Otros dispositivos de entrada (no mostrado) pueden incluir un micrófono, palanca de manos, almohadilla de juegos, antena parabólica, escáner, o similares. Estos y otros dispositivos de entrada frecuentemente se conectan a la unidad de procesamiento 120 a través de una interfase de entrada de usuario 160 que se acople al conductor común de sistema, pero puede conectarse por otra interfase y estructuras de conductor común, tal como un puerto paralelo, puerto de juegos o un conductor común en serie universal (USB). Un monitor 191 u otro tipo de dispositivo de presentación también se conecta al conductor común de sistema 121 a través de una interfase, tal como una interfase de video 190. Además del monitor, las computadoras también pueden incluir otros dispositivos de salida periféricos tal como bocinas 197 e impresoras 196, que pueden conectarse a través de una interfase periférica de salida 195. La computadora 110 puede operar en un ambiente en red que utiliza conexiones lógicas a una o más computadoras remotas, tal como una computadora remota 180. La computadora remota 180 puede ser una computadora personal, un servidor, un enrutador, una PC de red, un dispositivo par u otro nodo de red común, típicamente incluye muchos o todos los elementos descritos anteriormente relativos a la computadora 110, aunque solo se ilustró un dispositivo de almacenamiento de memoria 181 ¡lustrado en la Figura 1. Las conexiones lógicas ilustradas incluyen una red de área local (LAN) 171 y una red de área ancha (WAN) 173, pero también pueden incluir otras redes. Tales ambientes en red comúnmente están ubicados en oficinas, redes de computadora extendidas en empresa, intranets e Internet. Cuando se utilizan en red de LAN, la computadora 110 se conecta a la LAN 171 a través de una interfase en red o adaptador 170. Cuando se utiliza un ambiente en red WAN, la computadora 110 típicamente incluye un modem 172 u otros medios para establecer comunicaciones en la WAN 173, tal como Internet. El módem 172, que puede ser interno o externo, puede conectarse al conductor común de sistema 121 a través de la interfase de entrada de usuario 160, u otro mecanismo apropiado. En un ambiente en red, los módulos de programa ilustrados relativos a la computadora 110, o porciones de la misma, pueden almacenarse en el dispositivo de almacenamiento de memoria remota. A manera de ejemplo, y no de limitación, la Figura 1 ilustra programas de aplicación remotas 185 como residentes en el dispositivo de memoria 181. Se apreciará que las conexiones en red mostradas son ilustrativas y pueden utilizarse otros medios para establecer un enlace de comunicaciones entre las computadoras.
Modalidades Ilustrativas La presente invención implementa sistemas y métodos que utilizan una plataforma (por ejemplo, APIC) o característica genérica de conductor común (conductor común de PCI) para llevar a la CPU 120 fuera del modo de interrupción sin tener que esperar una unidad de modo de usuario para limpiar la interrupción de dispositivos. Esto ventajosamente permite a una unidad de dispositivo escribirse de modo de usuario. La unidad de dispositivo de modo de usuario recibe notificaciones sobre interrupciones pero no en claridad de interrupción alta. Como se describirá posteriormente, la presente invención puede extenderse para interrupciones compartidas, en donde múltiples dispositivos comparten una línea de interrupción individual. Haciendo referencia ahora a la Figura 2, se muestra una arquitectura típica dentro del dispositivo de cómputo. Una o más CPUs 120 se conectan a un l/O APIC 200 (es decir, un controlador de l/O) y un conductor común/puente de PCI 202. En la arquitectura de INTEL, puede haber tantos como ocho APICs de l/O en un sistema. Recolectan señales de interrupción de dispositivos l/O y envían mensajes a la APICs locales cuando necesitan interrumpirse. Cuando APIC de l/O tiene un numero arbitrario de entradas de interrupción (o IRQs). Se proporcionan varios conductores de sistema 121, tal como un conductor común de ISA 210, conductor común de PCI 203, a los cuales se conectan los dispositivos 204. Los dispositivos 204 que se conectan al conductor común de PCI 203 se incluyen registros de PCI 205, como se conoce por aquellos expertos en la técnica. Una interrupción generada por el dispositivo 204 se enruta al controlador de interrupción 200 y eventualmente a la CPU 120. Existe una trayectoria de la CPU al dispositivo 204 para que una unidad que ejecuta la CPU 120 puede acceder/manipular el dispositivo de hardware 204. Haciendo referencia a la Figura 3, se ilustra una línea de tiempo para un método convencional de interrupciones de control, en donde las unidades de dispositivo residen en el modo del núcleo. Inicialmente, una unidad de dispositivo registra su rutina de servicio de interrupción (ISR) en una etapa de preámbulo. Cuando ocurren interrupción en T0, se enmascara por la CPU en T1 para que el procesador no se interrumpa continuamente. En T2, el sistema operativo llama al ISR de controlador y el controlador maneja la interrupción en T3 para limpiar la interrupción. En T4, el control regresa de su ISR y en T5, el sistema operativo detiene el enmascaramiento de la interrupción para que se pueda controlar una siguiente interrupción, si es necesario. Debido al procesamiento convencional de la Figura 3, Las llamadas de ISRs de unidad ocurre en IRQL elevado, y de esa forma el modelo no permite un código ISR escrito en el modo de usuario. Para proporcionar ISRs de modo de usuario se requiere que podamos enmascarar la interrupción (a un nivel tan cerca al dispositivo como sea posible) hasta que pueda programarse el código de ISR de modo de usuario. La presente invención permite que pueden correr una o más unidades de dispositivo mientras el modo de usuarios de programa/procesa. Se proporciona un servicio de núcleo que actúa como una funcionalidad de interrupción genérica. Las interrupciones se enmarcaron en un nivel inferior (es decir, bajo el nivel de CPU, como se describió posteriormente) hasta que el código en la unidad de modo de usuario despierta y maneja la interrupción. El servicio de interrupción de la presente invención expone una interfase (por ejemplo, "esperar_por_interrupción") que se llama por las unidades de modo de usuario cuando estén listas para recibir una interrupción. El servicio de interrupción proporciona una interfase a un administrador de l/O para distribuir un objeto de interrupción para pasarse a unidades. Cuando inicia una unidad de dispositivo, el administrador de l/O utiliza la interfase para crear un objeto de interrupción y la pasa a la unidad de dispositivo que le da acceso a una línea de interrupción especifica. La unidad llama a esperar_por_interrupción cuando está lista para recibir una interrupción y/o espera una. Regresar esta llamada implica que una interrupción de hardware ocurrió y que la unidad debe comunicarse/manipular el dispositivo. Antes de llamar esperar_por_interrupción para esperar a la siguiente interrupción, la unidad preferiblemente completa cualquier actividad que realiza para el dispositivo y limpia la causa de interrupción de dispositivo. La siguiente interrupción del dispositivo causará que regrese hasta esperar_por_interrupción. Una secuencia dedicada (preferiblemente no la secuencia principal) se utiliza para que este procedimiento de espera y previa elevada pueda aplicarse a ésta. El servicio de interrupción enmascara interrupciones para alcanzar la CPU en una forma independiente al dispositivo para unidades de modo de usuario. Por ejemplo, la línea de interrupción en particular puede enmascararse en un APIC típico. Ciertos conductores comunes tal como PCI 2.3 tienen un problema en la configuración de espacio que puede deshabilitarse/habilitarse en una forma específica de conductor común. De acuerdo con la presente invención, el enmascarado de interrupción en una forma independiente de dispositivo es un mecanismo para deshabilitar interrupciones en el dispositivo (o enmascáralos) sin programar el dispositivo en una forma especifica del dispositivo. El ISR de modo de usuario es el código para la rutina de servicio de interrupción que se localiza dentro, y corre dentro del contexto de una secuencia de modo de usuario, como se describió posteriormente. La Figura 4 ilustra una línea de tiempo para un mecanismo de interrupción de modo de usuario no compartido. El mecanismo trabaja para dispositivo que no comparten una línea de interrupción, los dispositivos que utilizan interrupciones señaladas por mensaje, o para dispositivos que comparten una línea de interrupción (que utilizan unidades de usuario de núcleo) pero en un conductor común que soporta un mecanismo independiente del dispositivo para enmascarar las interrupciones de dispositivo. Haciendo referencia ahora a la Figura 4, el dispositivo de interrupción se inicia al deshabilitar o enmascarar todas las interrupciones en una forma independiente de dispositivo en una etapa de preámbulo. Cuando una unidad llama esperar_por_interrupción en TO para detener una secuencia en el servicio, esa interrupción particular se habilita/desenmascara en T1. Cuando un dispositivo asociado con la unidad causa una interrupción o un estado pendiente cuando se habilitaron las interrupciones en T1, ocurre un evento y la CPU se interrumpe en T2. El evento puede auto-restablecerse para limpiarse. Un controlador de interrupción de modo de núcleo genérico registrado para la interrupción se llama en T3, que deshabilita/reemascara la línea de interrupción en T4. Estos se hace a un nivel inferior que la CPU (por ejemplo, en la APIC de l/O 200, conductor común/puente de PCI 202, el sistema operativo, etc.). En otras palabras, la interrupción de dispositivos preferiblemente se deshabilita tan cerca del dispositivo 204 como sea posible en T4. El procesador entonces sale del modo de interrupción en T5 y la secuencia de interrupción de modo de usuario se programa en T6 para llamar a la unidad que espera esa interrupción. La unidad procesa la interrupción en T7 y regresa. Las líneas de interrupción se habilitan de nuevo para la siguiente interrupción. Un problema con interrupciones de participación para ISRs de nivel de usuario es una emisión de latencia. En general, es deseable mantener interrupciones enmascaradas por la cantidad más cota de tiempo posible. En el caso de una ISR de modo de usuario, la interrupción se enmascara hasta que corre la ISR. Esto puede tomar una cantidad de tiempo significativa. Un dispositivo que comparte la misma línea de interrupción tendrá sus interrupciones bloqueadas hasta que las interrupciones para la línea se desenmascaren de nuevo. Por lo tanto, a menos que todas las unidades con una ISR de modo de usuario que comparten en una línea de interrupción dada espera una interrupción, la línea se enmascara. Haciendo referencia ahora a la Figura 5, existe una línea de tiempo ilustrativa para un mecanismo de interrupción de modo de usuario compartido en un conductor común que no soporta enmascarado de interrupción por dispositivo. Inicialmente, la interrupción para cada uno de los dispositivos que comparten interrupción se enmascara en el conductor común a un nivel de dispositivo. Aquí de nuevo, es preferible enmascarar la interrupción al nivel más bajo posible, sin embargo, algunas veces es más conveniente enmascarar en un nivel u otro. En este caso la presente invención puede enmascarar al nivel de dispositivo o al nivel de conductor común. El enmascarar a un nivel de conductor común es una característica que proporciona una forma de enmascarar interrupciones generadas por un dispositivo dado. Esto es una característica de conductor común, con granularidad del nivel de dispositivo. Además para la interrupción de dispositivo de esta forma, el sistema puede continuar funcionando hasta que el código de ISR de modo de usuario pueda programarse para limpiar la interrupción en el nivel de dispositivo en una forma específica de dispositivo. Después en TO, la unidad(es) de modo de usuario para el dispositivo(s) espera una interrupción llamando al método de esperar para Interrupción en su objeto de interrupción. Existen un contador (inicialmente establecido a números de unidades que comparten interrupción) que se disminuye cada vez que una unidad invoca el método de Esperar para Interrupción, la secuencia subsecuentemente bloquea en el objeto de evento para la línea de interrupción dada. Cuando el contador mencionado va a cero, lo que significa que todo las unidades de dispositivo de modo de usuario que comparten la línea de interrupción dada esperan interrupciones, el método de esperar por Interrupción desenmascarara interrupciones para el dispositivo que se controla (T1). En un tiempo después que se desenmascaran las interrupciones de dispositivo, puede ocurrir una interrupción (T2). Cuando ocurre una interrupción, la rutina de servicio de interrupción de modo de núcleo genérico (ISR) registrada para la interrupción se invocará (T3). El sistema controla hasta esta interrupción substancialmente de la misma forma que se controlan las interrupciones de modo de núcleo en el sistema convencional. El ISR primero renmascarará la interrupción de dispositivo (T4), y entonces señala el evento en donde el ISR de modo de usuario está bloqueado. El contador de línea por interrupción entonces se restablece al número de unidades que comparten la línea de interrupción. El procesador entonces sale del módulo de interrupción (T5). La secuencia(s) de modo de usuario ahora se despertará. (T6). Cada secuencia prueba si el hardware que controla generó la interrupción, si es así, sirve la interrupción (T7).
Cuando se completa, se llama de nuevo a Esperar para Interrupción.
De acuerdo con la presente invención, compartir interrupciones entre componentes de modo de usuario y de modo de núcleo es similar a compartirlas solo con componentes de modo de usuario. La diferencia es en cómo trabaja el ISR de núcleo genérico. En este escenario, el ISR de modo de núcleo genérico se invoca después que los ISRs para las unidades de modo de núcleo comparten la línea de interrupción. De esta forma si el dispositivo que genera la interrupción es un dispositivo de modo de núcleo, puede servirse rápidamente en el núcleo y no despertará los ISRs de modo de usuario. Con la excepción de latencia en aumento, debido a que la línea de interrupción se enmascara más frecuentemente, las unidades de núcleo no se afectan por este esquema. Además, las unidades de modo de núcleo no se incluyen en la cuenta de cuántas unidades comparte la línea de interrupción. De acuerdo con lo anterior, la presente invención es capaz de controlar interrupciones en una forma genérica de sistema operativo sin la necesidad de una unidad específica para cada dispositivo mientras cualquier interrupción de dispositivo puede deshabilitarse sin reconocimiento del dispositivo. Esto es generalmente debido a que el sistema operativo tiene conocimiento del CPI de l/O 200 y puede deshabilitar interrupciones en al menos este nivel. Como se notó anteriormente, es preferible controlar interrupciones tan cerca del dispositivo como sea posible. La presente invención también proporciona una unidad que falla al registrarse con el sistema operativo. Si una interrupción se genera por un dispositivo cuya unidad de dispositivo falló al registrarse, o se desconoce, la interrupción se apaga en el nivel de dispositivo y el dispositivo se deshabilita para prevenir cualquier otra interrupción. Alternativamente, bajo un esquema de control común, cuando otras unidades registradas reportan que la interrupción "no es suya", la interrupción se deshabilita para apagar efectivamente el dispositivo.
Mientras la presente invención se describió en conexión con las modalidades preferidas de las varias figuras, se debe entender que pueden utilizarse otras modalidades similares o pueden hacerse modificaciones y adiciones a modalidades descritas para realizar la misma función de la presente invención sin desviarse de las mismas. Por ejemplo, un experto en la técnica reconocerá que la presente invención como se describió en la presente solicitud puede aplicarse a cualquier dispositivo de cómputo o ambiente, si es por cable o inalámbrico, y puede aplicarse a cualquier número de tales dispositivos de cómputo conectados a través de una red de comunicaciones, y que interactúan a través de la red. Además, se debe apreciar que una variedad de plataformas de computadoras, que incluyen sistemas operativos de dispositivos portátiles y otros sistemas operativos específicos de aplicación se contemplan, especialmente mientras el número de dispositivos en red inalámbricos continúa proliferando. Además, la presente invención puede implementarse en o a través de una pluralidad de circuitos integrados (chips) de • procesamiento o dispositivos, y el almacenamiento puede realizarse similarmente a través de una pluralidad de dispositivos. Por lo tanto, la presente invención no debe limitarse a ninguna modalidad individual, más que eso debe interpretarse en amplitud y alcance de acuerdo con las reivindicaciones anexas.

Claims (20)

REIVINDICACIONES
1.- Un método independiente de dispositivo para controlar interrupciones, que comprende: registrar una unidad de dispositivo con un sistema operativo; proporcionar un servicio de interrupción independiente de dispositivo como un servicio de núcleo; exponer una interfase que se llamó por la unidad para permitir una interrupción; correr una rutina de servicio de interrupción genérica con el recibo de dicha interrupción; y controlar dicha interrupción por dicha unidad de dispositivo.
2.- El método de acuerdo con la reivindicación 1, que además comprende: enmascarar dicha interrupción en un procesador antes que corra dicha rutina de servicio de interrupción; deshabilitar dicha interrupción a un nivel inferior a dicho procesador para prevenir que . dicha interrupción alcance dicho procesador; desenmascarar dicha interrupción en dicho procesador; y permitir dicha interrupción a dicho nivel inferior que dicho procesador después de controlar dicha interrupción.
3.- El método de acuerdo con la reivindicación 2, en donde dicha deshabilitación de dicha interrupción ocurre en una de un APIC o un controlador de conductor común.
4.- El método de acuerdo con la reivindicación 1, que además comprende: proporcionar un mecanismo de programación para compartir dicha interrupción; llamar a todas las unidades que comparten dicha interrupción; y mantener dicha deshabilitación de dicha interrupción hasta que todas las unidades regresan de dicha interrupción de control.
5.- El método de acuerdo con la reivindicación 4, que además comprende establecer un contador a un número de unidades que comparten dicha interrupción.
6.- El método de acuerdo con la reivindicación 5, que además comprende disminuir dicho contador a cero antes de habilitar dicha interrupción.
7.- El método de acuerdo con la reivindicación 4, en donde una segunda unidad se proporciona a un nivel de modo de núcleo, y dicho método se realiza tanto para unidades de modo de usuario como de modo de núcleo.
8.- El método de acuerdo con la reivindicación 1, en donde dicho servicio de núcleo es un servicio genérico independiente de un dispositivo controlado por dicha unidad, y en donde dicha unidad es una unidad de modo de usuario.
9.- Un método para controlar unidades de dispositivo de modo de usuario, que comprende: registrar dichas unidades de dispositivo de modo de usuario con un sistema operativo; y proporcionar un servicio de interrupción genérica como un servicio de núcleo, dicho servicio de interrupción exponiendo una interfase que es llamada por dichas unidades de dispositivos de modo de usuario; enmascarar dicha interrupción en un procesador antes de correr dicha rutina de servicio de interrupción genérica; y deshabilitar dicha interrupción en un nivel inferior a dicho procesador para prevenir que dicha interrupción alcance a dicho procesador.
10.- El método de acuerdo con la reivindicación 9, que además comprende: habilitar dicha interrupción cuando una unidad de dispositivo de modo de usuario llama a dicha ¡nterfase; y habilitar dicha interrupción a dicho nivel inferior que dicho procesador después que una unidad de dispositivo de modo de usuario apropiada controla dicha interrupción.
11.- El método de acuerdo con la reivindicación 10, en donde dicha deshabilitación de dicha interrupción ocurre en uno de un APIC o un controlador de conductor común.
12.- El método de acuerdo con la reivindicación 10, que además comprende: proporcionar un mecanismo de programación para interrupciones compartidas; llamar a todas las unidades de dispositivo de modo de usuario asociadas con dichas interrupciones compartidas; y mantener dicha deshabilitación de dicha interrupción hasta que todas las unidades de dispositivo de modo de usuario regresan de controlar dicha interrupción.
13.- El método de acuerdo con la reivindicación 12, que además comprende: ejecutar dicho mecanismo de programación para dispositivos no registrados o no conocidos'; y deshabilitar dichos dispositivos no registrados o desconocidos.
14.- El método de acuerdo con la reivindicación 9, en donde las unidades de dispositivo de modo de núcleo son, y dicho método se realiza por ambas unidades de dispositivo de modo de usuario y unidades de dispositivo de modo de núcleo.
15.- Un medio legible por computadora que tiene almacenadas en él instrucciones para controlar unidades de dispositivo de modo de usuario, dichas instrucciones realizan un método que comprende: registrar dichas unidades de dispositivo de modo de usuario con un sistema operativo; proporcionar un servicio de interrupción como un servicio de núcleo, dicho servicio de interrupción exponiendo una interfase que es llamada por dichas unidades de dispositivo de modo de usuario; y proporcionar una rutina de servicio de interrupción genérica independiente de dispositivos asociados con dichas unidades de dispositivo de modo de usuario.
16.- El medio legible por computadora de acuerdo con la reivindicación 15, que además comprende instrucciones' para: habilitar dicha interrupción cuando una unidad de dispositivo de modo de usuario llama a dicha interfase; y deshabilitar dicha interrupción a un nivel inferior que un procesador después de ejecutar dicha rutina de servicio de interrupción genérica para prevenir que dicha interrupción alcance dicho procesador; y habilitar dicha interrupción después que corre dicho servicio de interrupción genérico.
17.- El medio legible por computadora de acuerdo con la reivindicación 16, dicha deshabilitación de dicha interrupción ocurriendo en uno de un APIC o un controlador de conductor común.
18.- El medio legible por computadora de acuerdo con la reivindicación 16, que además comprende instrucciones para: proporcionar un mecanismo de programación para interrupciones compartidas; llamar a todas las unidades de dispositivo de modo de usuario asociadas con dichas interrupciones compartidas; y mantener dicha deshabilitación de dicha interrupción hasta que toda las unidades de dispositivo de modo de usuario regresan de controlar dicha interrupción.
19.- El medio legible por computadora de acuerdo con la reivindicación 18, que además comprende instrucciones para: ejecutar dicho mecanismo de programación para dispositivos no registrados o desconocidos; y deshabilitar dicho dispositivo no registrado o desconocido.
20.- El medio legible por computadora de acuerdo con la reivindicación 18, en donde las unidades de dispositivo de modo de núcleo es tal, y dichas instrucciones se realizan tanto para unidades de dispositivo de modo de usuario como para unidades de dispositivo de modo de núcleo.
MX2007014338A 2005-05-16 2006-05-16 Metodo para suministrar interrupciones a unidades de modo de usuario. MX2007014338A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/129,802 US7581051B2 (en) 2005-05-16 2005-05-16 Method for delivering interrupts to user mode drivers
PCT/US2006/018928 WO2006124905A2 (en) 2005-05-16 2006-05-16 Method for delivering interrupts to user mode drivers

Publications (1)

Publication Number Publication Date
MX2007014338A true MX2007014338A (es) 2008-02-12

Family

ID=37420515

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2007014338A MX2007014338A (es) 2005-05-16 2006-05-16 Metodo para suministrar interrupciones a unidades de modo de usuario.

Country Status (13)

Country Link
US (1) US7581051B2 (es)
EP (1) EP1889165B1 (es)
JP (1) JP4840945B2 (es)
KR (1) KR20080013914A (es)
CN (1) CN101176084B (es)
AT (1) ATE538436T1 (es)
BR (1) BRPI0610159A2 (es)
CA (1) CA2608081A1 (es)
HK (1) HK1112305A1 (es)
MX (1) MX2007014338A (es)
NO (1) NO20075837L (es)
RU (1) RU2417413C2 (es)
WO (1) WO2006124905A2 (es)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7950025B1 (en) * 2007-06-29 2011-05-24 Emc Corporation Common software environment
US7950022B1 (en) * 2007-06-29 2011-05-24 Emc Corporation Techniques for use with device drivers in a common software environment
US8434098B2 (en) * 2008-02-07 2013-04-30 Microsoft Corporation Synchronizing split user-mode/kernel-mode device driver architecture
US20090210888A1 (en) * 2008-02-14 2009-08-20 Microsoft Corporation Software isolated device driver architecture
US8387075B1 (en) * 2008-03-28 2013-02-26 Emc Corporation Common scheduling and synchronization primitives
US8255603B2 (en) * 2009-08-14 2012-08-28 Advanced Micro Devices, Inc. User-level interrupt mechanism for multi-core architectures
US8806511B2 (en) 2010-11-18 2014-08-12 International Business Machines Corporation Executing a kernel device driver as a user space process
US9075985B2 (en) 2013-05-31 2015-07-07 Microsoft Technology Licensing, Llc Restricted transmogrifying driver platform
US9921984B2 (en) * 2014-12-23 2018-03-20 Intel Corporation Delivering interrupts to user-level applications
US9672173B2 (en) * 2015-02-26 2017-06-06 Red Hat Israel, Ltd. Shared PCI interrupt line management
US9465617B1 (en) * 2015-06-29 2016-10-11 Vmware, Inc. Implementing upcall from secure to non-secure mode by injecting exception into non-secure mode
KR102085899B1 (ko) * 2018-12-10 2020-03-06 현대오트론 주식회사 자동차 전자제어장치의 사용량 모니터링 방법 및 모니터링 유닛
EP3819776B1 (en) * 2019-11-05 2021-12-29 Shenzhen Goodix Technology Co., Ltd. Method and apparatus for aborting blocked bus access between a master controller and connected peripherals

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IN171220B (es) * 1987-07-01 1992-08-15 Digital Equipment Corp
JPH01145751A (ja) * 1987-12-01 1989-06-07 Pfu Ltd 入出力制御方式
JPH02170237A (ja) * 1988-12-23 1990-07-02 Fujitsu Ltd 割り込み制御方式
US5297282A (en) * 1991-05-29 1994-03-22 Toshiba America Information Systems, Inc. Resume processing function for the OS/2 operating system
US5469571A (en) * 1991-07-15 1995-11-21 Lynx Real-Time Systems, Inc. Operating system architecture using multiple priority light weight kernel task based interrupt handling
JPH05108507A (ja) * 1991-10-17 1993-04-30 Ricoh Co Ltd バスエラー処理回路
US5438677A (en) * 1992-08-17 1995-08-01 Intel Corporation Mutual exclusion for computer system
JP3242508B2 (ja) * 1993-11-05 2001-12-25 松下電器産業株式会社 マイクロコンピュータ
US5566346A (en) * 1993-12-21 1996-10-15 Taligent, Inc. System for constructing hardware device interface software systems independent of operating systems including capability of installing and removing interrupt handlers
US6732138B1 (en) * 1995-07-26 2004-05-04 International Business Machines Corporation Method and system for accessing system resources of a data processing system utilizing a kernel-only thread within a user process
US6412035B1 (en) * 1997-02-03 2002-06-25 Real Time, Inc. Apparatus and method for decreasing the response times of interrupt service routines
US6212574B1 (en) * 1997-04-04 2001-04-03 Microsoft Corporation User mode proxy of kernel mode operations in a computer operating system
US5926775A (en) * 1997-10-08 1999-07-20 National Instruments Corporation Mini driver software architecture for a data acquisition system
US6871350B2 (en) * 1998-12-15 2005-03-22 Microsoft Corporation User mode device driver interface for translating source code from the user mode device driver to be executed in the kernel mode or user mode
US6785894B1 (en) * 1999-04-09 2004-08-31 Sun Microsystems, Inc. Virtual device driver
US6598169B1 (en) * 1999-07-26 2003-07-22 Microsoft Corporation System and method for accessing information made available by a kernel mode driver
US6957432B2 (en) * 2000-03-21 2005-10-18 Microsoft Corporation Real-time scheduler
US6766398B2 (en) * 2001-04-17 2004-07-20 International Business Machines Corporation Method for processing PCI interrupt signals in a logically partitioned guest operating system
US7024672B2 (en) * 2002-06-26 2006-04-04 Microsoft Corporation Process-mode independent driver model
CN1208721C (zh) * 2003-09-19 2005-06-29 清华大学 基于PowerPC处理器结构的分级任务切换方法
US7149832B2 (en) * 2004-11-10 2006-12-12 Microsoft Corporation System and method for interrupt handling

Also Published As

Publication number Publication date
BRPI0610159A2 (pt) 2010-06-01
WO2006124905A3 (en) 2007-06-07
US20060259675A1 (en) 2006-11-16
NO20075837L (no) 2007-12-11
HK1112305A1 (en) 2008-08-29
JP2008541306A (ja) 2008-11-20
RU2417413C2 (ru) 2011-04-27
EP1889165A4 (en) 2009-09-16
EP1889165A2 (en) 2008-02-20
CN101176084B (zh) 2010-05-19
US7581051B2 (en) 2009-08-25
JP4840945B2 (ja) 2011-12-21
CN101176084A (zh) 2008-05-07
KR20080013914A (ko) 2008-02-13
ATE538436T1 (de) 2012-01-15
WO2006124905A2 (en) 2006-11-23
EP1889165B1 (en) 2011-12-21
RU2007142279A (ru) 2009-05-27
CA2608081A1 (en) 2006-11-23

Similar Documents

Publication Publication Date Title
MX2007014338A (es) Metodo para suministrar interrupciones a unidades de modo de usuario.
US9619308B2 (en) Executing a kernel device driver as a user space process
US9442868B2 (en) Delivering interrupts directly to a virtual processor
US7458066B2 (en) Computer system and method for transferring executables between partitions
US20180241655A1 (en) Rps support for nfv by system call bypass
US20020116563A1 (en) Apparatus and method to reduce interrupt latency in shared interrupt systems
US8713582B2 (en) Providing policy-based operating system services in an operating system on a computing system
US20060047877A1 (en) Message based interrupt table
CN102567109A (zh) 中断分配方案
US20100014525A1 (en) Methods, systems, and computer program products for an n-port network adaptor interchangeable between a network switch/router and a network adaptor
US6470408B1 (en) Apparatus and method for delivering interrupts via an APIC bus to IA-32 processors
TW201030623A (en) Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller
US6694401B2 (en) Method and apparatus for executing real-mode interrupts from within extended SMRAM handler
US6789142B2 (en) Method, system, and program for handling interrupt requests
JP2006164266A (ja) オペレーティングシステムのパフォーマンスの改善
US6990669B1 (en) Real-time scheduler
US5819095A (en) Method and apparatus for allowing an interrupt controller on an adapter to control a computer system
CN117272412B (zh) 中断控制寄存器保护方法、装置、计算机设备及存储介质
US20110072247A1 (en) Fast application programmable timers

Legal Events

Date Code Title Description
FG Grant or registration