Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un conjunto de procesadores virtuales representa una colección de procesadores virtuales y se puede usar como entrada para algunas hiperllamadas.
Sintaxis
typedef struct
{
UINT64 Format;
UINT64 ValidBanksMask;
UINT64 BankContents[];
} HV_VP_SET;
Un conjunto de procesadores tiene dos modos, que se especifican mediante el campo de formato. Los conjuntos de procesadores con el formato "1" representan todos los procesadores virtuales para la partición especificada. Los conjuntos de procesadores con el formato "0" describen un conjunto disperso de procesadores virtuales.
| Valor de formato | Establecer comportamiento |
|---|---|
| 0 | Un subconjunto disperso de máquinas virtuales |
| 1 | Todas las máquinas virtuales (que pertenecen a una partición) |
Conjunto de procesadores virtuales dispersos
En la sección siguiente se describe cómo construir un conjunto disperso de procesadores virtuales.
El conjunto total de procesadores virtuales se divide en fragmentos de 64, lo que se conoce como "banco". Por ejemplo, los procesadores 0-63 están en el banco 0, 64-127 están en el banco 1, y así sucesivamente.
Para describir un procesador individual, su banco se especifica con ValidBanksMask. Cada bit de ValidBanksMask representa un banco determinado.
bank = VPindex / 64
Para cada bit que se establece con ValidBanksMask, debe haber un elemento en la matriz BanksContents. Este elemento es una máscara que describe el propio banco.
Si un bit de ValidBankMask es 0, no hay ningún elemento correspondiente en BanksContents. Además, para un bit 1 en ValidBankMask, es un estado válido para el elemento correspondiente de BankContents puede ser todos 0s, lo que significa que no se especifica ningún procesador en este banco.
Ejemplo de conjunto de procesadores
Supongamos que una partición tiene 200 VPs y queremos especificar el siguiente conjunto: { 0,5,130 }
En primer lugar, el formato es 0, ya que se trata de un conjunto disperso. A continuación, los bancos correspondientes (y, por tanto, los bits establecidos de ValidBanksMask) son { 0,0,2 }. Por lo tanto, ValidBanksMask es 0x05.
El banco 0 establece los bits 0 y 5 para especificar las máquinas virtuales dentro de ese banco. Por lo tanto, el elemento correspondiente de la máscara BankContents es 0x21.
Puesto que el bit 1 no está establecido en ValidBanksMask, no hay ningún elemento correspondiente en BankContents. Bank 2 representa los índices de VP 128-191. Para describir el índice 130, se establece el bit 2 de la máscara correspondiente. Por lo tanto, BankContents es: { 0x21,0x04 }.