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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory 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.
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.
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
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.
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.
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)
| 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)
| 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 |
-
2000
- 2000-12-21 US US09/747,492 patent/US7085705B2/en not_active Expired - Lifetime
-
2001
- 2001-07-16 US US09/906,392 patent/US7275028B2/en not_active Expired - Fee Related
- 2001-12-19 DE DE60141173T patent/DE60141173D1/de not_active Expired - Lifetime
- 2001-12-19 ES ES01991342T patent/ES2336892T3/es not_active Expired - Lifetime
- 2001-12-19 AT AT01991342T patent/ATE456087T1/de not_active IP Right Cessation
-
2004
- 2004-10-22 US US10/971,345 patent/US7158927B2/en not_active Expired - Lifetime
- 2004-10-22 US US10/971,948 patent/US7225119B2/en not_active Expired - Fee Related
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) | 情報処理装置 |