ES2336892T3 - Sustitucion logica del control del procesador en un entorno informatico emulado. - Google Patents

Sustitucion logica del control del procesador en un entorno informatico emulado. Download PDF

Info

Publication number
ES2336892T3
ES2336892T3 ES01991342T ES01991342T ES2336892T3 ES 2336892 T3 ES2336892 T3 ES 2336892T3 ES 01991342 T ES01991342 T ES 01991342T ES 01991342 T ES01991342 T ES 01991342T ES 2336892 T3 ES2336892 T3 ES 2336892T3
Authority
ES
Spain
Prior art keywords
processor
operating system
host
hypervisor
configuration
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
ES01991342T
Other languages
English (en)
Inventor
Eric P. Traut
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
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
Application granted granted Critical
Publication of ES2336892T3 publication Critical patent/ES2336892T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Hardware Redundancy (AREA)

Abstract

Un procedimiento para un emulador para desacoplar de forma lógica un sistema operativo anfitrión de un sistema informático anfitrión de un procesador del sistema informático anfitrión, que comprende los pasos de: (a) emular en el sistema informático anfitrión el funcionamiento de un sistema operativo huésped; caracterizado por los pasos de (b) sustituir en el procesador una primera configuración del procesador con una segunda configuración del procesador, estando asociada la primera configuración del procesador con la funcionalidad de hardware proporcionada por el sistema operativo anfitrión y estando asociada la segunda configuración del procesador con la funcionalidad de hardware proporcionada por el sistema operativo huésped; y (c) controlar directamente el procesador con respecto a la funcionalidad asociada con la configuración sustituida del procesador.

Description

Sustitución lógica del control del procesador en un entorno informático emulado.
La presente invención versa, en general, acerca del campo de la emulación de un sistema informático y, más en particular, acerca de un procedimiento para desacoplar de forma transparente el sistema operativo anfitrión del procesador del sistema informático a favor del control por el procesador por parte del sistema operativo huésped.
Los ordenadores incluyen unidades centrales de procesamiento (CPU) de uso general que están diseñadas para ejecutar un conjunto específico de instrucciones del sistema. Se puede considerar a un grupo de procesadores que tienen especificaciones similares de arquitectura o de diseño miembros de la misma familia de procesadores. Los ejemplos de familias actuales de procesadores incluyen la familiar de procesadores Motorola 680X0, fabricados por Motorola, Inc. de Phoenix, Arizona, EE. UU.; la familia de procesadores Intel 80X86, fabricados por Intel Corporation de Sunnyvale, California, EE. UU.; y la familia de procesadores PowerPC, fabricados por Motorola, Inc. y que son utilizados en ordenadores fabricados por Apple Computer, Inc. de Cupertino, California, EE. UU. Aunque un grupo de procesadores puede estar en la misma familia debido a sus consideraciones similares de arquitectura y de diseño, los procesadores pueden variar ampliamente dentro de una familia conforme a su velocidad de reloj y otros parámetros de rendimiento.
Cada familia de microprocesadores ejecuta instrucciones que son únicas a la familia de procesadores. El conjunto colectivo de instrucciones que un procesador o que una familia de procesadores puede ejecutar es conocido como el conjunto de instrucciones del procesador. Como un ejemplo, el conjunto de instrucciones utilizado por la familia de procesadores Intel 80X86 es incompatible con el conjunto de instrucciones utilizado por la familia de procesadores PowerPC. El conjunto de instrucciones de Intel 80X86 está basado en el formato de Ordenador de Grupos de Instrucciones Complejas (CISC). El conjunto de instrucciones de Motorola PowerPC está basado en el formato Ordenador con Grupo Reducido de Instrucciones (RISC). Los procesadores CISC utilizan un gran número de instrucciones, algunas de las cuales pueden llevar a cabo funciones bastante complicadas, pero que, en general, requieren muchos ciclos de reloj para ser ejecutadas. Los procesadores RISC utilizan un menor número de instrucciones disponibles para llevar a cabo un conjunto más sencillo de funciones que son ejecutadas a una velocidad mucho
mayor.
Normalmente, la exclusividad de la familia de procesadores entre los sistemas informáticos también tiene como resultado la incompatibilidad entre los otros elementos de la arquitectura de hardware de los sistemas informáticos. Un sistema informático fabricado con un procesador de la familia de procesadores Intel 80X86 tendrá una arquitectura de hardware que es distinta que la arquitectura de hardware de un sistema informático fabricado con un procesador de una familia de procesadores PowerPC. Debido a la exclusividad del conjunto de instrucciones del procesador y a la arquitectura de hardware de un sistema informático, los programas informáticos de aplicación están escritos para correr en un sistema informático particular que ejecuta un sistema operativo particular.
Un fabricando de ordenadores querrá maximizar su cuota de mercado al tener más en vez de menos aplicaciones que corran en la familia de microprocesadores asociada con la línea de producción del fabricante de ordenadores. Para expandir el número de sistemas operativos y de programas de aplicación que pueden correr en un sistema informático, se ha desarrollado un campo de tecnología en el que un ordenador dado que tiene un tipo de CPU, denominada anfitrión, ("HOST") incluirá un programa emulador que permite que el ordenador anfitrión emule las instrucciones de un tipo de CPU no relacionada, denominada huésped ("GUEST"). Así, el ordenador anfitrión ejecutará una aplicación que hará que sean llamadas una o más instrucciones anfitrionas en respuesta a una instrucción huésped dada. Así, el ordenador anfitrión puede correr tanto software diseñado para su propia arquitectura de hardware como software escrito para ordenadores que tienen una arquitectura no relacionada de hardware. Como ejemplo más específico, un sistema informático fabricado por Apple Computer, por ejemplo, puede correr sistemas operativos y programas escritos para sistemas informáticos basados en PC. Puede ser posible utilizar un programa emulador para funcionar de manera concurrente en una única CPU múltiples sistemas operativos incompatibles. En esta disposición, aunque cada sistema operativo es incompatible con el otro, un programa emulador puede hacer de anfitrión a uno de los dos sistemas operativos, permitiendo que el sistema operativo de otra forma incompatible corra de forma concurrente en el mismo sistema informático.
Cuando se emula un sistema informático huésped en un sistema informático anfitrión, se dice que el sistema informático huésped es una máquina virtual, dado que el sistema informático anfitrión solo existe como una representación de software del funcionamiento de la arquitectura de hardware del sistema informático huésped. A veces, se utilizan los términos emulador y máquina virtual de forma intercambiable para denotar la capacidad de imitar o de emular la arquitectura de hardware de un sistema informático completo. Como un ejemplo, el software Virtual PC creado por Connectix Corporation de San Mateo, California, EE. UU. emula un ordenador completo que incluye un procesador Intel 80X86 Pentium y diversos componentes de placa base y tarjetas. El funcionamiento de estos componentes se emula en la máquina virtual que está siendo ejecutada en la máquina anfitriona. Un programa emulador que está siendo ejecutado en la arquitectura de software y de hardware del sistema operativo del ordenador anfitrión, como un sistema informático que tiene un procesador PowerPC, imita el funcionamiento del sistema informático huésped completo. El programa emulador actúa como el intercambio entre la arquitectura de hardware de la máquina anfitriona y las instrucciones trasmitidas por el software que corre en el entorno emulado.
Un hipervisor es un programa de control que existe cerca del nivel del núcleo de un sistema operativo anfitrión y que funciona para permitir que uno o más sistemas operativos secundarios, distintos del sistema operativo anfitrión, utilicen el hardware del sistema informático, incluyendo el procesador del sistema informático. Un hipervisor de un sistema operativo emula el entorno operativo del sistema operativo secundario, de forma que el sistema operativo secundario cree que está funcionando en su hardware y/o entorno de sistema operativo habituales y que tiene un control lógico del sistema informático, cuando puede estar funcionando de hecho en otro hardware y/o entorno de sistema operativo y el sistema operativo anfitrión puede tener un control lógico del sistema informático. Muchos sistemas operativos funcionan de tal forma que el sistema operativo debe funcionar como si tuviera un control lógico exclusivo del hardware del sistema informático. Para que múltiples sistemas operativos funcionen de forma simultánea en un único sistema informático, el hipervisor de cada sistema operativo debe funcionar para enmascarar la presencia de los otros sistemas operativos, de forma que cada sistema operativo funcione como si tuviese el control exclusivo del sistema informático completo.
Si se desea emular la arquitectura completa de hardware del sistema huésped, a menudo es útil o deseable hacer un uso máximo del hardware en el sistema informático anfitrión, incluyendo, por ejemplo, la unidad de gestión de memoria, el hardware de cambio de contexto, los vectores de gestión de excepciones, los punteros a las rutinas de interrupciones, y las unidades de coma flotante del procesador anfitrión, y la memoria del sistema informático anfitrión. Sin embargo, este hardware se encuentra, normalmente, bajo el control del sistema operativo anfitrión y está protegido del acceso a nivel de usuario o por software de aplicación. Una excepción es un caso que se da en el sistema informático que no puede ser resuelto por el procesador. Una interrupción es una solicitud enviada al procesador para que interrumpa temporalmente el chorro actual de instrucciones para llevar a cabo alguna otra operación.
Una opción para evitar esta dificultad es emplear un programa de emulación que no intente utilizar el hardware de bajo nivel del sistema informático anfitrión. A menudo, se utiliza este tipo de enfoque en el caso de un programa de emulación que reside como un programa de aplicación y corre en el sistema informático anfitrión. Por supuesto, estos programas de aplicación de emulación están sujetos a las penalizaciones de rendimiento de ser un programa de aplicación que corre en el sistema operativo anfitrión de un sistema informático anfitrión. Además, estos programas de aplicación de emulación solo obtienen acceso a las características de hardware que están expuestas al programa de aplicación de emulación por el sistema operativo anfitrión. Como un ejemplo, un programa de emulación que corre como una aplicación en el sistema operativo anfitrión puede incluir un gestor de excepciones. La dificultad es que el gestor de excepciones del programa de emulación está separado del procesador del sistema informático anfitrión por varias capas de software, que crean una latencia entre el momento en el que el procesador anfitrión lanza una excepción y el momento en el que se identifica la excepción al gestor de excepciones del programa de emulación. Otra opción es que el programa de emulación comparta el hardware con el sistema operativo anfitrión, suponiendo que se pueda escribir el soporte para la compartición de un sistema operativo por parte de un programa de emulación en el hipervisor del sistema operativo anfitrión.
Otra dificultad de utilizar un hipervisor en un entorno informático emulado es gestionar el espacio de memoria del sistema informático emulado junto con el espacio de memoria del propio hipervisor. Para mejorar el funcionamiento del sistema informático emulado, normalmente el hipervisor buscará manipular las tablas de páginas del sistema informático anfitrión, de forma que las tablas de páginas del sistema informático anfitrión reflejen en buena medida las tablas de páginas del sistema operativo huésped. Una dificultad de este enfoque es que el código del hipervisor y sus datos asociados no están correlacionados en las tablas de páginas del sistema operativo huésped. Este es el caso necesariamente, dado que el sistema informático emulado no está al tanto de que un hipervisor esté ejecutando el sistema en el hardware del sistema informático anfitrión. Como tal, la tabla de páginas del hipervisor no coincide completamente a la tabla de páginas del sistema informático anfitrión. La tabla de páginas del hipervisor incluye el establecimiento de una correspondencia del código y de los datos del propio hipervisor.
El reflejo de las tablas de páginas del sistema operativo huésped por parte del hipervisor suscita la posibilidad de que la correlación de direcciones del sistema operativo huésped entrará en conflicto con la correlación de direcciones del hipervisor, dado que la correlación de direcciones del sistema operativo huésped puede incluir el establecimiento de una correspondencia de direcciones en las ubicaciones correlacionadas del código y de los datos del propio hipervisor. Una solución a este problema de correlaciones de páginas en conflicto es alterar la tabla de páginas del sistema operativo huésped cuando el establecimiento de una correspondencia de la memoria lógica del sistema operativo huésped entra en conflicto con la correlación dictada por la tabla de páginas casi idéntica del hipervisor. Sin embargo, no es deseable la alteración de la tabla de páginas del sistema informático emulado porque introduciría al sistema informático emulado un cambio inesperado a sus tablas de páginas, introduciendo posiblemente otras incompatibilidades o fallos en el sistema operativo huésped.
El documento DE 42 17 444 A describe un sistema de una máquina virtual que tiene una pluralidad de máquinas virtuales, en el que cada máquina virtual puede ser reubicada a una nueva área de almacenamiento principal sin interferir con ninguna otra máquina virtual. La reubicación se lleva a cabo mediante instrucciones move lanzadas por un procesador de servicio al recibir una instrucción relocate. Estas instrucciones pasan el control a una sección de control que ordena a un procesador de instrucciones lógicas que controla la sección que detenga temporalmente el procesador de instrucciones lógicas de la máquina virtual particular. A continuación, se lleva a cabo una comprobación por medio de la sección de gestión de recursos para determinar si se puede mover la máquina virtual. Una vez se ha comprobado, se reubica la máquina virtual en el área de almacenamiento principal conforme a una dirección designadas mediante la instrucción relocate y la sección de control restaura el funcionamiento de la máquina virtual.
El documento FR-A-2587519 versa acerca de un sistema de máquina virtual en el que se utiliza una disposición de cambio de modo para cambiar el modo de funcionamiento del sistema. Se utiliza una memoria de modo para almacenar datos de modo que indican uno de tres modos distintos, concretamente un modo de máquina no virtual, un modo de monitorización de máquina virtual o un modo de sistema operativo de máquina virtual. Un registro de instrucciones proporciona una instrucción para seleccionar uno de los datos de manera que se cargue entonces en un registro de modo, de forma que haga funcionar el sistema de la máquina virtual en el modo indicado por los datos de modo almacenados en el registro de modo.
Es un objetivo de la presente invención proporcionar un procedimiento para un emulador para desacoplar de forma lógica un sistema operativo anfitrión de un sistema informático anfitrión del procesador del sistema informático anfitrión.
El objetivo se soluciona mediante el contenido de la reivindicación independiente. Las realizaciones preferentes de la presente invención son definidas mediante las reivindicaciones dependientes.
La presente invención versa acerca de una técnica para desacoplar de forma lógica un sistema operativo anfitrión de un procesador del sistema informático. Conforme al procedimiento de la presente invención, un hipervisor de un programa emulador introduce por lectura un conjunto de configuraciones de procesador del procesador. Estas configuraciones del procesador son guardadas por el hipervisor en la memoria principal. El hipervisor sustituye estas configuraciones del procesador con un conjunto de configuraciones del procesador asociado con rutinas de software o estructuras de datos proporcionadas por el sistema operativo huésped. Estas rutinas de software o estructuras de datos pueden incluir rutinas de gestión de excepciones e interrupciones y tablas de páginas. Como resultado de la sustitución de las configuraciones del procesador, se desacopla el sistema operativo anfitrión del control del procesador en el sentido de que al menos algunos de las configuraciones de procesador del procesador están asociados con las rutinas de software o las estructuras de datos proporcionadas por el sistema operativo huésped, y ya no están asociadas con las rutinas de software o las estructuras de datos proporcionadas por el sistema operativo anfitrión. Para volver a acoplar el sistema operativo anfitrión al procesador, el hipervisor introduce por lectura las configuraciones guardadas del procesador de la memoria y escribe estas configuraciones del procesador en los registros apropiados del procesador.
Durante el periodo que está acoplado el hipervisor al procesador, la tabla de páginas del hipervisor refleja en buena medida la tabla de páginas del sistema operativo huésped, siendo la diferencia principal que la tabla de páginas del hipervisor incluye las ubicaciones correlacionadas del propio código del hipervisor. Para evitar conflictos entre las tablas de páginas del sistema operativo huésped y las tablas de páginas del hipervisor, se reasigna la tabla de páginas del hipervisor si un cambio en la tabla de páginas del sistema operativo huésped tiene como resultado que la ubicación correlacionada en la memoria en el sistema operativo huésped se solape con la ubicación correlacionada del código del hipervisor y la tabla de páginas del hipervisor.
El procedimiento de desacoplamiento y de un nuevo acoplamiento dado a conocer en el presente documento es ventajoso en el sentido de que permite que el sistema operativo huésped esté alineado más estrechamente con el procesador para alguna funcionalidad que puede ser proporcionada por el sistema operativo huésped. De esta forma, las llamadas al gestor de excepciones, las llamadas al gestor de interrupciones y las llamadas a la gestión de memoria no es preciso que pasen del procesador al sistema operativo anfitrión antes de ser pasadas al sistema operativo huésped. Más bien, estas llamadas del procesador son pasados directamente al sistema operativo huésped por medio del hipervisor del programa de emulación.
El procedimiento dado a conocer en el presente documento es también ventajoso en el sentido de que el hipervisor o la herramienta de desacoplamiento del programa de emulación no tienen por qué tener acceso al código fuente del sistema operativo anfitrión. Antes bien, el hipervisor desacopla el sistema operativo anfitrión del procesador de forma que es transparente al sistema operativo anfitrión, que no tiene conciencia de que ha sido desacoplado o ha sido acoplado de nuevo al procesador.
El procedimiento dado a conocer en el presente documento es ventajoso también en el sentido de que si el sistema operativo anfitrión está desacoplado del procesador con respecto a alguna funcionalidad proporcionada normalmente por el sistema operativo anfitrión, el sistema operativo anfitrión permanece acoplado al procesador anfitrión durante el resto de la funcionalidad del procesador anfitrión. Durante este periodo, el sistema operativo anfitrión continúa gestionando gran parte de la funcionalidad del hardware del sistema informático, permitiendo que el sistema operativo huésped encamine una solicitud de impresión a través del sistema operativo anfitrión.
Una ventaja de reasignar la tabla de páginas del hipervisor en el caso de un conflicto con el sistema informático huésped es que la reasignación de la tabla de páginas permite que la tabla de páginas del hipervisor sea copia de la tabla de páginas del sistema operativo huésped, mientras que, al mismo tiempo, se correlacione el código del propio hipervisor. En este entorno, los cambios a la tabla de páginas del sistema operativo huésped no tienen como resultado un conflicto entre las tablas de páginas del sistema operativo huésped y del hipervisor. Además, la reasignación de la tabla de páginas del hipervisor es transparente al funcionamiento del sistema operativo huésped, evitando la posibilidad de crear conflictos a nivel de sistema en el sistema operativo huésped.
Serán muy evidentes otras ventajas técnicas de la presente invención al experto en la técnica a partir de las siguientes figuras, descripciones y reivindicaciones.
Breve descripción de los dibujos
Se puede lograr una comprensión más completa de la presente invención y de las ventajas de la misma al hacer referencia a la siguiente descripción tomada en conjunto con los dibujos adjuntos, en lo que los números de referencia similares indican características similares, y en los que:
La Figura 1 es un diagrama de la relación lógica de los elementos de un sistema informático emulado que corre en un sistema informático anfitrión;
la Figura 2 es un diagrama de flujo del procedimiento para acoplar de forma lógica un hipervisor de un programa de emulación al procesador del sistema informático;
la Figura 3 es un diagrama de una relación lógica de los elementos de un sistema informático emulado en el que un hipervisor está acoplado de forma lógica al procesador del sistema informático; y
la Figura 4 es un diagrama de flujo de un procedimiento para correlacionar las tablas de páginas de un sistema operativo huésped.
\vskip1.000000\baselineskip
Descripción detallada de la invención
La presente invención proporciona un entorno de emulación que permite el acceso del software de emulación a los componentes de hardware de menor nivel del sistema informático anfitrión. La invención conlleva un programa de emulación que incluye un hipervisor que es transparente al sistema operativo anfitrión. El hipervisor del programa de emulación desconecta o desacopla de forma lógica el sistema operativo de un control exclusivo del sistema informático anfitrión durante periodos breves, momento durante el cual se pone al hipervisor del programa de emulación en control del hardware del sistema informático anfitrión, permitiendo que el programa de emulación esté lógicamente cerca, durante periodos breves, de ciertas características de hardware del sistema informático anfitrión.
El estado de procesador del procesador es una copia dinámica de todas las configuraciones del procesador en un único punto en el tiempo. Estas configuraciones incluyen tanto datos que el procesador está manipulando como los contadores, punteros y otros indicadores operativos de programas utilizados por el procesador. Debido a que los datos que están siendo manipulados por el procesador y muchas otras configuraciones del procesador pueden cambiar con cada ciclo del procesador, el estado del procesador puede cambiar asimismo con cada ciclo de procesador, y puede cambiar tan a menudo como muchos millones de veces por segundo.
Un subconjunto del estado del procesador es el estado del usuario. Tomados en conjunto, los datos que están siendo manipulados por el procesador y el contador de programas del procesador comprenden el estado del usuario del procesador. El estado del usuario se denomina así debido a que los valores que comprenden el estado del usuario pueden ser manipulados por un programa de nivel de aplicación. El resto de las configuraciones del procesador del estado del procesador comprenden el estado supervisor o el estado privilegiado del procesador. Los valores del estado supervisor solo pueden ser modificados mediante software que es parte del sistema operativo del sistema informático. No se puede acceder a las configuraciones del estado supervisor o estado privilegiado del estado del procesador por medio de un programa a nivel de aplicación. La separación de las configuraciones del procesador entre un estado del usuario, al que se puede acceder por medio de programas a nivel de aplicación, y un estado supervisor, al que no se puede acceder por medio de programas a nivel de aplicación, permite que el sistema operativo siga siendo funcional incluso si el programa a nivel de aplicación muere o provoca un error fatal.
En general, las configuraciones del estado supervisor del procesador caen en una entre varias categorías. Una categoría del estado supervisor del procesador es los indicadores de modo del procesador, que incluyen las configuraciones que instruyen al procesador para que opere conforme a uno entre varios modos para soportar ciertas situaciones de cálculo, el comportamiento en caso de excepciones, el soporte de programas de retrocompatibilidad, u otro uso selectivo de características más novedosas del procesador. Otra categoría de configuraciones del estado del procesador son las configuraciones que controlan el acceso externo de hardware. A menudo, los procesadores soportan varias configuraciones operativas para la comunicación entre el procesador y el hardware externo al procesador, como cachés, memoria, y otros dispositivos de entrada y de salida. Debido a que estas configuraciones de funcionamiento, incluyendo la velocidad y el ancho de banda de la comunicación, por ejemplo, solo pueden ser modificadas por medio de código a nivel privilegiado o de supervisor, son considerados parte del estado supervisor del
procesador.
Otra categoría de configuraciones del estado privilegiado del procesador son las excepciones y los punteros a las rutinas de interrupciones. Cuando el procesador encuentra una excepción o se le solicita una interrupción, el procesador para la ejecución en la dirección de contador del programa actual y comienza la ejecución en una dirección predeterminada de rutina de excepciones. Las ubicaciones de estas rutinas de excepciones son identificadas mediante el uso de punteros a rutinas de excepciones. Para algunos procesadores, las rutinas de excepciones están ubicadas en direcciones de memoria codificadas en el hardware. Sin embargo, en la mayoría de procesadores sus ubicaciones son programables y los valores de estas ubicaciones son considerados parte del estado supervisor del procesador.
Un conjunto de punteros a estructuras de datos forma otra categoría del estado privilegiado del procesador. Debido a que algunas estructuras de datos del estado del procesador son demasiado grandes para ser almacenadas en el procesador, se almacenan estas estructuras de datos en la memoria principal y se almacena un puntero a la estructura de datos en el procesador. Un ejemplo de este tipo de gran estructura de datos son las tablas de páginas del procesador. Estas tablas definen para el procesador la conversión lógica a física de las direcciones de memoria que son necesarios para la conversión de los accesos de memoria virtual a las ubicaciones de memoria física. Se consideran tanto la tabla de páginas como el puntero a la tabla de páginas, que es almacenado en el procesador, parte del estado supervisor del procesador. Otro ejemplo de una estructura de datos del estado supervisor del procesador que se almacena en la memoria principal es una tabla de punteros a rutinas de excepciones. En vez de almacenar el puntero para cada rutina de excepción en el procesador, un único puntero almacenado en el procesador puede apuntar a una tabla de punteros a rutinas de excepciones. El puntero a la excepción o la tabla de vectores incluirán un listado de punteros a direcciones a los gestores de excepciones al que podrá acceder el procesador. Tanto el puntero a la rutina de excepción que es almacenado en el procesador como la tabla de punteros a rutinas de excepciones son considerados parte del estado supervisor.
Normalmente, el sistema operativo anfitrión establece para el procesador los vectores o punteros a las excepciones y rutinas del gestor de interrupciones. Por ejemplo, si se le dan instrucciones al procesador de que procese un conjunto de instrucciones que harán que el procesador divida por cero, el procesador llamará a la rutina del gestor de excepciones que gestiona la excepción de dividir por cero. Al hacerlo, el procesador puede llamar a una rutina del gestor de excepciones que está apuntado por un vector almacenado en el procesador. De forma alternativa, el procesador puede examinar la tabla de vectores de excepción en busca del gestor de excepciones correcto para la condición de excepción y luego llamar al gestor de excepciones utilizando el vector o el puntero de la excepción asociados con el gestor de excepciones aplicable.
Cuando el sistema operativo anfitrión tiene el control lógico del procesador anfitrión, el sistema operativo anfitrión define para el procesador anfitrión los vectores de excepción y todos los otros vectores que serán necesitados por el procesador anfitrión, y que serán soportados por el mismo. Si encontrase el procesador una condición de excepción o necesitase acceder a otra rutina que esté referenciada por un vector, tal como rutinas de la tabla de páginas y el vector de tablas de páginas, el procesador ejecuta el gestor de excepciones del sistema operativo anfitrión.
En el caso de un sistema informático emulado, un programa de emulación proporciona un entorno operativo emulado en el sistema informático anfitrión. En la Figura 1 se muestra un diagrama de las capas lógicas de la arquitectura de hardware y de software para un entorno operativo emulado en un sistema informático 10. Un programa 14 de emulación corre en un sistema operativo anfitrión que se ejecuta en el hardware o en el procesador 11 del sistema informático anfitrión. El programa 14 de emulación emula un sistema informático huésped 16, incluyendo un sistema operativo huésped 18. Los programas de aplicación huéspedes son capaces de ejecutarse en el sistema operativo huésped 18. En el entorno operativo emulado de la Figura 1, debido al funcionamiento del programa 14 de emulación, la aplicación huésped 20 puede correr en el sistema informático 10 incluso aunque la aplicación 20 huésped esté diseñada para correr en un sistema operativo que es generalmente incompatible con el sistema operativo anfitrión 12 y el hardware 11 del sistema informático anfitrión. En la arquitectura de la Figura 1, el sistema operativo huésped 18 está separado del hardware 11 del sistema informático anfitrión en varias capas lógicas y de software, incluyendo el sistema operativo anfitrión 12. Esta separación lógica introduce latencia y dificultades del rendimiento en aquellos casos en los que el sistema operativo huésped intenta comunicarse directamente con el hardware 11 del sistema informático anfitrión.
En el ejemplo de la Figura 1, el sistema operativo anfitrión 12 tiene el control operativo exclusivo del hardware 11 del sistema informático anfitrión, incluyendo el procesador del sistema informático anfitrión. El sistema operativo anfitrión habrá establecido para el procesador del sistema informático anfitrión un número de las configuraciones del estado del procesador. Por ejemplo, el sistema operativo anfitrión 12 puede tener establecido un conjunto de vectores del gestor de excepciones, bien ubicados en una tabla de vectores o bien en los registros del procesador anfitrión, un conjunto de gestores de interrupciones, y un vector de la tabla de páginas. Así, cuando el procesador realiza llamadas al gestor de excepciones, llamadas al gestor de interrupciones, o llamadas a la gestión de memoria, las configuraciones del procesador para estas llamadas están proporcionadas exclusivamente por el sistema operativo anfitrión. Debido a que el sistema operativo anfitrión estableció las configuraciones del estado supervisor o privilegiado del procesador, se dice que el sistema operativo anfitrión tiene el control lógico del procesador del sistema informático anfitrión.
Conforme a la técnica de emulación de la presente invención, el propio programa de emulación incluye un hipervisor que es capaz de desconectar o desacoplar de forma lógica el sistema operativo anfitrión del control exclusivo del procesador y de otro hardware 11 del sistema informático anfitrión. El hipervisor del programa 14 de emulación logra el paso de desconexión lógica al introducir por lectura y guardar en una ubicación de memoria los vectores y otros punteros a direcciones que son utilizados por el procesador anfitrión. En la Figura 2 se muestra un diagrama de flujo de los pasos tomados por el hipervisor para desconectar de forma lógica el sistema operativo anfitrión del control exclusivo del sistema informático anfitrión y para conectar o acoplar de forma lógica el hipervisor del programa de emulación al sistema informático anfitrión. Cuando el hipervisor del programa de emulación quiere ejercer el control sobre al menos algunas de las configuraciones de procesador del procesador, el hipervisor introduce por lectura, en el paso 24, algunas de las configuraciones, o todas ellas, del estado supervisor o privilegiado del procesador. Conforme a una realización de la invención, el procesador introduce por lectura los punteros a direcciones de los registros aplicables del procesador, incluyendo los vectores de excepción o el puntero a la tabla de vectores de excepción, los punteros a interrupciones o el puntero a la tabla de rutinas de interrupción, y el puntero a la tabla de páginas. En el paso 26, el hipervisor guarda estas configuraciones del procesador, junto con una identificación de su ubicación asociada de almacenamiento en el procesador anfitrión, en la memoria. A continuación, el hipervisor sustituye, en el paso 28, el estado del procesador a nivel de usuario del sistema operativo huésped y el estado a nivel privilegiado del hipervisor del programa de emulación. Como resultado, las configuraciones de procesador del procesador anfitrión son sustituidas con una combinación del estado del procesador a nivel usuario del sistema operativo huésped y el estado a nivel privilegiado asociado con el hipervisor del programa de emulación. Al hacerlo, el hipervisor almacena en los registros apropiados del procesador los vectores y otros punteros de direcciones a los gestores de excepciones, a las rutinas de interrupción y a los mapas de páginas del hipervisor del programa de emulación y del sistema operativo huésped.
Debido a que las configuraciones del procesador sustituidas por el hipervisor del programa de emulación son configuraciones a nivel supervisor o privilegiado, el hipervisor del programa de emulación tiene un control lógico del procesador para todas las configuraciones sustituidas del procesador. De esta forma, el sistema informático emulado tiene el control lógico de la funcionalidad del hardware del sistema informático anfitrión para la funcionalidad gobernada por las configuraciones sustituidas del procesador. En la Figura 3 se muestra un diagrama de la relación lógica del programa 14 de emulación después de la sustitución de las configuraciones del procesador. En la Figura 3 se muestra el hipervisor 22 como un componente del programa 14 de emulación, que se muestra como que tiene un enlace lógico de comunicaciones con el procesador y el hardware anfitrión 11.
Como ejemplo del control lógico del programa de emulación del hardware anfitrión 11, si se produjese una excepción durante este periodo, el procesador llamaría a un gestor de excepciones proporcionado por el hipervisor del programa de emulación. De forma similar, si se llama al procesador para que convierta una dirección de memoria virtual en una dirección de memoria física, el procesador accederá a la tabla de páginas asociada con el sistema operativo huésped. Así, se han sustituido muchas configuraciones de los estados del procesador, de forma que el procesador está llamando o accediendo a software o a estructuras de datos proporcionadas directamente por el sistema operativo huésped. Esto permite que el sistema operativo huésped se alinee por sí mismo de forma lógica más estrechamente con el procesador del sistema informático, y elimina la latencia causada al separar el sistema operativo huésped del procesador del sistema informático en el sistema operativo anfitrión. En el caso de una excepción, el gestor de excepciones del hipervisor puede gestionar él mismo la excepción o el gestor de excepciones del hipervisor puede invocar al gestor de excepciones del sistema operativo huésped, permitiendo que el sistema operativo huésped gestione directamente la excepción sin la necesidad de que la llamada de la excepción pase por la capa de software del sistema operativo anfitrión.
Como se muestra en la Figura 3, el sistema operativo anfitrión 12 no está desconectado permanentemente del hardware del sistema informático anfitrión. El control lógico ejercido por el hipervisor sobre un conjunto de configuraciones del procesador no tiene como resultado que el hipervisor 22 asuma la responsabilidad sobre toda la interacción del hardware en el sistema informático. Durante aquellos periodos en los que el sistema operativo anfitrión está gestionando una solicitud de función relacionada con el hardware del sistema informático, el sistema operativo anfitrión debe tener el control lógico del sistema informático. Para lograr esto, el sistema operativo anfitrión debe volver a estar acoplado temporalmente de forma lógica al hardware del sistema informático. Una vez ha completado el sistema operativo anfitrión las funciones solicitadas por el programa de emulación, el programa de emulación puede volver a asumir su control lógico sobre la excepción y los gestores de interrupciones asociados con la configuración del procesador del programa de emulación.
Con respecto al diagrama de flujo de la Figura 2, en el paso 30, el hipervisor 22 devuelve el control lógico sobre las configuraciones del procesador al sistema operativo anfitrión. El hipervisor 22 recupera de la memoria los vectores y otros punteros que fueron guardados en la memoria. Estas direcciones son escritas de nuevo en las ubicaciones apropiadas del registro, devolviendo el control lógico sobre estas configuraciones del procesador al sistema operativo anfitrión. Durante el periodo que el sistema operativo anfitrión está desconectado de forma lógica del procesador, para el sistema operativo anfitrión 12 no es evidente la desconexión lógica del sistema operativo anfitrión 12. El sistema operativo anfitrión 12 no está al tanto de que se ha sustituido un conjunto de configuraciones del procesador, lo que tiene como resultado la transferencia del control lógico de alguna funcionalidad de hardware al programa de emulación. Cuando se devuelve el control lógico al sistema operativo anfitrión 12, de forma similar el sistema operativo anfitrión 12 no está al tanto de que se le ha devuelto el control lógico de un conjunto de llamadas de hardware.
La sustitución de algunas configuraciones del procesador del estado supervisor del procesador tiene como resultado un mayor rendimiento del programa de emulación en comparación con la opción de la gestión por el programa de emulación de las funciones de excepciones, de interrupciones, y de gestión de memoria tal como son filtradas a través del sistema operativo anfitrión. En aquellos casos en los que el programa de emulación funciona como un programa de aplicación que reside en el sistema operativo anfitrión, la desconexión de forma lógica del sistema operativo anfitrión del control exclusivo sobre la funcionalidad del procesador es una ventaja para el rendimiento del sistema informático emulado. Una vez se ha desacoplado de forma lógica el sistema operativo anfitrión de al menos parte de la funcionalidad del procesador, el programa de emulación, al sustituir sus configuraciones del procesador por las configuraciones del procesador del sistema operativo anfitrión, puede funcionar mucho más estrechamente con el procesador anfitrión. Una vez se han sustituido las configuraciones del procesador, el programa de emulación puede dirigir al procesador al conjunto del propio programa de emulación de vectores de excepción, de rutinas de interrupción y de tablas de páginas, evitando con ello los problemas de latencia causados cuando el sistema operativo anfitrión separa el procesador del programa de emulación.
Las funciones del hipervisor de la presente invención para la gestión de interrupciones y de excepciones también permiten la gestión de las excepciones y de las interrupciones por parte del sistema operativo huésped, como cabe esperar. Un sistema operativo puede escoger gestionar ciertas excepciones a nivel de sistema operativo sin pasar estas excepciones a la aplicación que inició la excepción. Un ejemplo es la excepción de dividir por cero, que es gestionada a menudo por el sistema operativo sin ser pasado al programa de aplicación que inició la excepción. El hipervisor del programa de emulación puede continuar pasando excepciones al sistema operativo huésped sin la necesidad de iniciar un gestor de excepciones en el hipervisor. Así, como cabía esperar, cuando un programa de aplicación huésped provoca el inicio de una excepción de dividir por cero en un momento en el que el programa de emulación tiene el control lógico del procesador con respecto a las configuraciones sustituidas del procesador, el hipervisor del programa de emulación es capaz de pasar la excepción al sistema operativo huésped.
En la Figura 4 muestra un diagrama de flujo de un procedimiento para correlacionar las tablas de páginas de un sistema operativo huésped. En el paso 40, el hipervisor identifica una escritura en la tabla de páginas del sistema operativo huésped. En el paso 42, el hipervisor determina si la escritura en la tabla de páginas del sistema operativo huésped tuvo como resultado un conflicto de correlación entre las tablas de páginas del sistema operativo huésped y la tabla de páginas del hipervisor. La tabla de páginas del hipervisor refleja estrechamente la tabla de páginas del sistema operativo huésped, siendo la principal diferencia que la tabla de páginas del hipervisor correlaciona en su tabla de páginas el código y los datos del hipervisor. El hipervisor determina que hay un conflicto, por ejemplo, si las páginas correlacionadas en la tabla de páginas del sistema operativo huésped se solapan con las ubicaciones del hipervisor correlacionadas en las tablas de páginas del hipervisor.
Si el hipervisor determina que no habrá conflicto causado por el cambio a las tablas de páginas del sistema operativo huésped, entonces no es necesario ningún cambio a las tablas de páginas del hipervisor (paso 44). Si el hipervisor determina que un cambio en la tabla de páginas del sistema operativo huésped provoca un conflicto con la tabla de páginas del sistema informático anfitrión, el hipervisor reasigna su tabla de páginas en el paso 46, de forma que se mueven o se correlacionan el código y los datos del propio hipervisor en otra ubicación en la tabla de páginas del hipervisor. Este procedimiento de identificar un cambio en la tabla de páginas del sistema operativo huésped y, si es necesario, la reasignación en respuesta de la tabla de páginas del hipervisor es transparente al funcionamiento del sistema operativo huésped. Una vez se ha reasignado la tabla de páginas del hipervisor, si es necesario, la tabla de páginas del sistema operativo huésped ya no entra en conflicto con la tabla de páginas del hipervisor.
La presente invención no está limitada en su aplicación a la emulación de una arquitectura particular de sistema informático, en particular a la arquitectura Intel 80X86. Más bien, la técnica de emulación dada a conocer en el presente documento se puede aplicar siempre que sea deseable que un sistema operativo anfitrión sea desconectado de forma transparente del procesador con respecto a al menos algunas de las configuraciones de procesador del procesador.
Aunque se ha descrito en detalle la presente invención, se comprenderá que se pueden llevar a cabo diversos cambios, sustituciones y alteraciones sin alejarse del alcance de la invención, según se define en las reivindicaciones adjuntas.

Claims (14)

1. Un procedimiento para un emulador para desacoplar de forma lógica un sistema operativo anfitrión de un sistema informático anfitrión de un procesador del sistema informático anfitrión, que comprende los pasos de:
(a)
emular en el sistema informático anfitrión el funcionamiento de un sistema operativo huésped;
\quad
caracterizado por los pasos de
(b)
sustituir en el procesador una primera configuración del procesador con una segunda configuración del procesador, estando asociada la primera configuración del procesador con la funcionalidad de hardware proporcionada por el sistema operativo anfitrión y estando asociada la segunda configuración del procesador con la funcionalidad de hardware proporcionada por el sistema operativo huésped; y
(c)
controlar directamente el procesador con respecto a la funcionalidad asociada con la configuración sustituida del procesador.
\vskip1.000000\baselineskip
2. Un procedimiento conforme a la reivindicación 1, en el que el paso (b) comprende los pasos de:
\quad
introducir por lectura, del procesador, la primera configuración del procesador;
\quad
escribir la primera configuración del procesador en una memoria; y
\quad
escribir en el procesador la segunda configuración del procesador.
\vskip1.000000\baselineskip
3. Un procedimiento conforme a la reivindicación 1 o 2, en el que la segunda configuración del procesador es un vector de la excepción; y que comprende, además, el paso de llamar al puntero del gestor de excepciones al que apunta el vector de la excepción.
4. Un procedimiento conforme a la reivindicación 1 o 2, en el que la segunda configuración del procesador es un puntero a la rutina de interrupciones; y
que comprende, además, el paso de llamar a la rutina de interrupciones a la que apunta el puntero a la rutina de interrupciones.
5. Un procedimiento conforme a la reivindicación 1 o 2, en el que la segunda configuración del procesador es un puntero a una tabla de vectores de excepción; y que comprende, además, el paso de acceder a la tabla de vectores de excepción utilizando el puntero.
6. Un procedimiento conforme a la reivindicación 1 o 2, en el que la segunda configuración del procesador es un puntero a una tabla de páginas asociada con el sistema informático huésped; y que comprende, además, el paso de acceder a la tabla de páginas del sistema informático huésped utilizando el puntero.
7. Un procedimiento conforme a cualquiera de las reivindicaciones 2 a 6, que comprende, además, los pasos de:
\quad
introducir por lectura, de la memoria, la primera configuración del procesador; y
\quad
escribir en el procesador la primera configuración del procesador, en el que el sistema operativo anfitrión está acoplado de forma lógica al procesador para la función relacionada con la primera configuración del procesador asociada con el sistema operativo anfitrión.
\vskip1.000000\baselineskip
8. Un procedimiento conforme a cualquiera de las reivindicaciones 1 a 7, en el que el emulador funciona como un programa de aplicación en el sistema operativo anfitrión.
9. Un procedimiento conforme a cualquiera de las reivindicaciones 1 a 8, en el que las configuraciones primera y segunda del procesador están asociados con un estado supervisor del procesador.
10. Un procedimiento conforme a cualquiera de las reivindicaciones 1 a 9, en el que el procesador comprende un registro identificable para mantener la configuración real del procesador.
11. Un procedimiento conforme a cualquiera de las reivindicaciones 1 a 10, en el que la memoria es una memoria RAM.
12. Un procedimiento conforme a la reivindicación 1, en el que la segunda configuración del procesador incluye punteros a rutinas del gestor de excepciones proporcionado por el sistema operativo anfitrión.
13. Un procedimiento conforme a la reivindicación 1, en el que la segunda configuración del procesador incluye punteros a rutinas del gestor de interrupciones proporcionado por el sistema operativo anfitrión.
14. Un procedimiento conforme a la reivindicación 1, en el que la segunda configuración del procesador incluye una tabla de páginas asociada con el sistema operativo anfitrión.
ES01991342T 2000-12-21 2001-12-19 Sustitucion logica del control del procesador en un entorno informatico emulado. Expired - Lifetime ES2336892T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US906392 1992-06-24
US09/747,492 US7085705B2 (en) 2000-12-21 2000-12-21 System and method for the logical substitution of processor control in an emulated computing environment
US747492 2000-12-21
US09/906,392 US7275028B2 (en) 2000-12-21 2001-07-16 System and method for the logical substitution of processor control in an emulated computing environment

Publications (1)

Publication Number Publication Date
ES2336892T3 true ES2336892T3 (es) 2010-04-19

Family

ID=25005282

Family Applications (1)

Application Number Title Priority Date Filing Date
ES01991342T Expired - Lifetime ES2336892T3 (es) 2000-12-21 2001-12-19 Sustitucion logica del control del procesador en un entorno informatico emulado.

Country Status (4)

Country Link
US (4) US7085705B2 (es)
AT (1) ATE456087T1 (es)
DE (1) DE60141173D1 (es)
ES (1) ES2336892T3 (es)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7085705B2 (en) * 2000-12-21 2006-08-01 Microsoft Corporation System and method for the logical substitution of processor control in an emulated computing environment
US6941105B1 (en) * 2001-10-24 2005-09-06 Novell, Inc. System and method to reduce the time and complexity of information technology classroom setup
US7698360B2 (en) * 2002-02-26 2010-04-13 Novell, Inc. System and method for distance learning
US7331791B2 (en) * 2002-03-05 2008-02-19 Novell, Inc. System and method for evaluating a person's information technology skills
US6782424B2 (en) * 2002-08-23 2004-08-24 Finite State Machine Labs, Inc. System, method and computer program product for monitoring and controlling network connections from a supervisory operating system
US7212961B2 (en) 2002-08-30 2007-05-01 Lsi Logic Corporation Interface for rapid prototyping system
US7299427B2 (en) * 2002-08-30 2007-11-20 Lsi Corporation Radio prototyping system
US8108843B2 (en) 2002-09-17 2012-01-31 International Business Machines Corporation Hybrid mechanism for more efficient emulation and method therefor
US9043194B2 (en) * 2002-09-17 2015-05-26 International Business Machines Corporation Method and system for efficient emulation of multiprocessor memory consistency
US7953588B2 (en) * 2002-09-17 2011-05-31 International Business Machines Corporation Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host
US7302690B2 (en) * 2003-07-31 2007-11-27 International Business Machines Corporation Method and apparatus for transparently sharing an exception vector between firmware and an operating system
US8424023B2 (en) * 2003-10-24 2013-04-16 Hewlett-Packard Development Company, L.P. Program interface architecture
US7587723B2 (en) * 2003-11-13 2009-09-08 International Business Machines Corporation Restarting a shared virtual resource
US7877747B2 (en) 2004-02-20 2011-01-25 Hewlett-Packard Development Company, L.P. Flexible operating system operable as either native or as virtualized
US7996785B2 (en) * 2004-06-30 2011-08-09 Microsoft Corporation Systems and methods for integrating application windows in a virtual machine environment
US8271976B2 (en) * 2004-06-30 2012-09-18 Microsoft Corporation Systems and methods for initializing multiple virtual processors within a single virtual machine
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US7314491B2 (en) * 2004-12-29 2008-01-01 Bull Hn Information Systems Inc. Encapsulation of large native operating system functions as enhancements of the instruction set in an emulated central processor system
US7685635B2 (en) * 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US7581229B2 (en) * 2005-03-11 2009-08-25 Microsoft Corporation Systems and methods for supporting device access from multiple operating systems
JP4628149B2 (ja) * 2005-03-14 2011-02-09 株式会社エヌ・ティ・ティ・ドコモ アクセス制御装置及びアクセス制御方法
US20070006178A1 (en) * 2005-05-12 2007-01-04 Microsoft Corporation Function-level just-in-time translation engine with multiple pass optimization
US7496495B2 (en) * 2005-05-12 2009-02-24 Microsoft Corporation Virtual operating system device communication relying on memory access violations
US7502871B2 (en) * 2005-05-23 2009-03-10 International Business Machines Corporation Method for query/modification of linear block address table entries for direct I/O
US7552240B2 (en) * 2005-05-23 2009-06-23 International Business Machines Corporation Method for user space operations for direct I/O between an application instance and an I/O adapter
US7502872B2 (en) * 2005-05-23 2009-03-10 International Bsuiness Machines Corporation Method for out of user space block mode I/O directly between an application instance and an I/O adapter
US20070005815A1 (en) * 2005-05-23 2007-01-04 Boyd William T System and method for processing block mode I/O operations using a linear block address translation protection table
US7464189B2 (en) * 2005-05-23 2008-12-09 International Business Machines Corporation System and method for creation/deletion of linear block address table entries for direct I/O
US20060265525A1 (en) * 2005-05-23 2006-11-23 Boyd William T System and method for processor queue to linear block address translation using protection table control based on a protection domain
US8327353B2 (en) * 2005-08-30 2012-12-04 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism
US20070168567A1 (en) * 2005-08-31 2007-07-19 Boyd William T System and method for file based I/O directly between an application instance and an I/O adapter
US7657662B2 (en) * 2005-08-31 2010-02-02 International Business Machines Corporation Processing user space operations directly between an application instance and an I/O adapter
US8154385B2 (en) * 2005-08-31 2012-04-10 Impinj, Inc. Local processing of received RFID tag responses
US7577761B2 (en) * 2005-08-31 2009-08-18 International Business Machines Corporation Out of user space I/O directly between a host system and a physical adapter using file based linear block address translation
US7500071B2 (en) * 2005-08-31 2009-03-03 International Business Machines Corporation Method for out of user space I/O with server authentication
US7949008B2 (en) * 2006-01-30 2011-05-24 International Business Machines Corporation Method, apparatus and computer program product for cell phone security
US7814307B2 (en) 2006-03-16 2010-10-12 Microsoft Corporation Fast booting a computing device to a specialized experience
US7774645B1 (en) * 2006-03-29 2010-08-10 Emc Corporation Techniques for mirroring data within a shared virtual memory system
US8176485B2 (en) * 2006-05-15 2012-05-08 Microsoft Corporation Launching hypervisor under running operating system
US20070294707A1 (en) * 2006-06-15 2007-12-20 Microsoft Corporation Enhancing or replacing host operating system functionality by leveraging guest operating system functionality
US8024727B2 (en) * 2006-06-15 2011-09-20 Microsoft Corporation Enhancing or replacing host operating system functionality by leveraging guest operating system functionality
US20080059726A1 (en) * 2006-08-31 2008-03-06 Carlos Rozas Dynamic measurement of an operating system in a virtualized system
US8099274B2 (en) * 2007-03-30 2012-01-17 International Business Machines Corporation Facilitating input/output processing of one or more guest processing systems
JP4938080B2 (ja) * 2007-06-12 2012-05-23 パナソニック株式会社 マルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路
US8099570B2 (en) * 2008-02-22 2012-01-17 International Business Machines Corporation Methods, systems, and computer program products for dynamic selective memory mirroring
US8667504B2 (en) 2008-06-20 2014-03-04 Netapp, Inc. System and method for achieving high performance data flow among user space processes in storage system
US8234655B2 (en) * 2008-07-29 2012-07-31 International Business Machines Corporation Detection of duplicate memory pages across guest operating systems on a shared host
US9967632B2 (en) * 2010-03-08 2018-05-08 Rovi Technologies Corporation Emulated television tuner via execution of software by a computing device
US8789042B2 (en) * 2010-09-27 2014-07-22 Mips Technologies, Inc. Microprocessor system for virtual machine execution
US9141559B2 (en) * 2012-01-04 2015-09-22 Intel Corporation Increasing virtual-memory efficiencies
US10042790B2 (en) * 2014-03-07 2018-08-07 Hitachi, Ltd. Computer and method with interrupt vector management
US10592431B2 (en) * 2018-08-13 2020-03-17 Hewlett Packard Enterprise Development Lp Independent shared and process virtual address translations
US11018973B2 (en) * 2019-05-31 2021-05-25 Microsoft Technology Licensing, Llc Distributed sonic fabric chassis
US11550728B2 (en) * 2019-09-27 2023-01-10 Advanced Micro Devices, Inc. System and method for page table caching memory
FR3105855B1 (fr) * 2019-12-31 2022-01-07 Kalray Processeur à distribution configurable des ressources privilégiées et exceptions aux anneaux de protection
US20220291947A1 (en) * 2021-03-10 2022-09-15 Meta Platforms, Inc. Apparatus, systems, and methods for facilitating efficient hardware-firmware interactions

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4779188A (en) 1983-12-14 1988-10-18 International Business Machines Corporation Selective guest system purge control
JPH0731609B2 (ja) 1985-09-18 1995-04-10 日本電気株式会社 Vmモード変更装置
US4875186A (en) 1986-02-28 1989-10-17 Prime Computer, Inc. Peripheral emulation apparatus
GB2203572B (en) 1987-03-24 1991-11-27 Insignia Solutions Limited Improvements in data processing means
US4843541A (en) * 1987-07-29 1989-06-27 International Business Machines Corporation Logical resource partitioning of a data processing system
US5063499A (en) * 1989-01-09 1991-11-05 Connectix, Inc. Method for a correlating virtual memory systems by redirecting access for used stock instead of supervisor stock during normal supervisor mode processing
US5278973A (en) 1989-03-27 1994-01-11 Unisys Corporation Dual operating system computer
US5448264A (en) 1991-03-15 1995-09-05 Hewlett-Packard Company Method and apparatus for separate window clipping and display mode planes in a graphics frame buffer
US5301277A (en) 1991-04-10 1994-04-05 Seiko Epson Corporation Method and apparatus for communicating peripheral data to/from minor operating systems running as subprocesses on a main operating system
JPH04348434A (ja) 1991-05-27 1992-12-03 Hitachi Ltd 仮想計算機システム
JPH05189574A (ja) 1991-07-23 1993-07-30 Internatl Business Mach Corp <Ibm> レンダリング構成要素における複数コマンド支援を行うための方法およびその装置
JP2878499B2 (ja) 1991-10-15 1999-04-05 株式会社日立製作所 マルチウィンドウ表示方法およびウィンドウシステム
US5666521A (en) 1992-12-07 1997-09-09 Intel Corporation Method and apparatus for performing bit block transfers in a computer system
US5452456A (en) 1992-12-18 1995-09-19 Apple Computer, Inc. Apparatus for executing a plurality of program segments having different object code types in a single program or processor environment
US6199176B1 (en) * 1993-03-11 2001-03-06 International Business Machines Corporation Method and apparatus for storage resource reassignment utilizing an indicator to enhance the likelihood of successful reconfiguration
JPH0784562A (ja) 1993-09-16 1995-03-31 Nec Corp イメージ格納装置
US5515525A (en) 1993-09-28 1996-05-07 Bull Hn Information Systems Inc. Emulating the memory functions of a first system on a second system
US5460644A (en) 1993-12-14 1995-10-24 The O'brien Corporation Stain-blocking and mildewcide resistant coating compositions
US5541862A (en) * 1994-04-28 1996-07-30 Wandel & Goltermann Ate Systems Ltd. Emulator and digital signal analyzer
US5640562A (en) 1995-02-27 1997-06-17 Sun Microsystems, Inc. Layering hardware support code on top of an existing operating system
US5752275A (en) 1995-03-31 1998-05-12 Intel Corporation Translation look-aside buffer including a single page size translation unit
US5742797A (en) 1995-08-11 1998-04-21 International Business Machines Corporation Dynamic off-screen display memory manager
US5757386A (en) 1995-08-11 1998-05-26 International Business Machines Corporation Method and apparatus for virtualizing off-screen memory of a graphics engine
US5866521A (en) * 1995-09-05 1999-02-02 Nalco Chemical Company ISO-steric acid-2-amino-2-methyl-1-propanol salt for improving petroleum oil rejection properties of synthetic and semi-synthetic metal-working fluids
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US5831607A (en) 1996-01-25 1998-11-03 International Business Machines Corporation Method for adapting multiple screens of information for access and use on a single graphical panel in a computer system
US6026476A (en) 1996-03-19 2000-02-15 Intel Corporation Fast fully associative translation lookaside buffer
US5815686A (en) 1996-09-12 1998-09-29 Silicon Graphics, Inc. Method and apparatus for address space translation using a TLB
US5860147A (en) 1996-09-16 1999-01-12 Intel Corporation Method and apparatus for replacement of entries in a translation look-aside buffer
US5940872A (en) 1996-11-01 1999-08-17 Intel Corporation Software and hardware-managed translation lookaside buffer
US6298370B1 (en) * 1997-04-04 2001-10-02 Texas Instruments Incorporated Computer operating process allocating tasks between first and second processors at run time based upon current processor load
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6142682A (en) 1997-06-13 2000-11-07 Telefonaktiebolaget Lm Ericsson Simulation of computer processor
US6014170A (en) 1997-06-20 2000-01-11 Nikon Corporation Information processing apparatus and method
US6681238B1 (en) * 1998-03-24 2004-01-20 International Business Machines Corporation Method and system for providing a hardware machine function in a protected virtual machine
US6067618A (en) 1998-03-26 2000-05-23 Innova Patent Trust Multiple operating system and disparate user mass storage resource separation for a computer system
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6668287B1 (en) * 1999-12-15 2003-12-23 Transmeta Corporation Software direct memory access
US6651132B1 (en) * 2000-07-17 2003-11-18 Microsoft Corporation System and method for emulating the operation of a translation look-aside buffer
US7085705B2 (en) * 2000-12-21 2006-08-01 Microsoft Corporation System and method for the logical substitution of processor control in an emulated computing environment

Also Published As

Publication number Publication date
US7225119B2 (en) 2007-05-29
US7275028B2 (en) 2007-09-25
US20050055192A1 (en) 2005-03-10
US20020099532A1 (en) 2002-07-25
US7085705B2 (en) 2006-08-01
DE60141173D1 (de) 2010-03-11
US20020082823A1 (en) 2002-06-27
US20050091029A1 (en) 2005-04-28
ATE456087T1 (de) 2010-02-15
US7158927B2 (en) 2007-01-02

Similar Documents

Publication Publication Date Title
ES2336892T3 (es) Sustitucion logica del control del procesador en un entorno informatico emulado.
US10509686B2 (en) Distributable computational units in a continuous computing fabric environment
US9519795B2 (en) Interconnect partition binding API, allocation and management of application-specific partitions
JP5305848B2 (ja) データ処理システム内で入出力(i/o)仮想化を管理するための方法およびデータ処理システムならびにコンピュータ・プログラム
US6711605B2 (en) Multi OS configuration method and computer system
JP4156611B2 (ja) 64ビットx86プロセッサ上でレガシ32ビットx86仮想マシンを実行するためのシステムおよび方法
US9141417B2 (en) Methods and systems for integrated storage and data management using a hypervisor
KR101354382B1 (ko) 자기 가상화 입력/출력 디바이스로의 다중 논리적 파티션의 인터페이싱
CN101364189B (zh) 在操作系统协助下实现运行时间处理器迁移的方法和装置
US9384060B2 (en) Dynamic allocation and assignment of virtual functions within fabric
CN106030548B (zh) 用于可信计算的多节点中枢
US20020143842A1 (en) Method and apparatus for constructing host processor soft devices independent of the host processor operating system
US9804877B2 (en) Reset of single root PCI manager and physical functions within a fabric
US20120198446A1 (en) Computer System and Control Method Therefor
JP2004258840A (ja) 仮想化されたi/oデバイスをもつ計算機システム
CN117075974A (zh) 一种基于risc-v服务器cpu的新型edk2启动引导方法
CN117667465B (zh) 代码共享方法、装置、交换机、多主机系统、设备和介质
JP4316882B2 (ja) エミュレートされるコンピューティング環境におけるプロセッサ制御の論理的置換のためのシステムおよび方法
US7536694B2 (en) Exception handling in a multiprocessor system
CN116719613A (zh) 基于虚拟监控器实现Linux下PCIe物理设备隔离的方法
CN116418857A (zh) 一种基于中介透传的NVMeoF计算节点虚拟化方法
JPH0552535B2 (es)
CN120086177A (zh) 单芯片服务器设计方法、soc芯片及服务器
CN121070717A (zh) 服务器实例固件并行测试方法及电子设备
JPH09120362A (ja) 情報処理装置