Resumo
- A virtualização de uma pCPU (CPU física) envolve: (1) o compartilhamento de tempo da pCPU entre as vCPUs (CPUs virtuais) contidas e executadas em VMs (chamadas agendamento de vCPU) e (2) a virtualização do ISA da pCPU para torná-la receptiva para hospedar vCPUs com ISAs diferentes.
- Um vCPU funciona como um proxy para uma pCPU.
- Em princípio, uma VM pode ter uma ou várias vCPUs.
- Uma VM que inclui mais de uma vCPU é chamada de uma VM SMP(multiprocessamento simétrico), enquanto uma VM com uma vCPU é chamada de uma VM de UP (processador único).
- Em princípio, os hipervisores podem dar suporte a três níveis de agendamento: processo, thread e agendamento de vCPU.
- Exemplos de agendadores de vCPU são SEDF (Simple Earliest Deadline First) e CS (Credit Scheduler) do Xen.
- Além do agendamento da vCPU, a virtualização de uma pCPU requer a virtualização das instruções definidas no ISA dela.
- As instruções em ISAs geralmente podem ser classificadas em dois tipos: privilegiadas e não privilegiadas.
- Uma instrução privilegiada é definida como uma que intercepta no modo de usuário e que não intercepta no modo do sistema.
- As instruções podem ser classificadas ainda mais em duas categorias diferentes: sensíveis e inócuas.
- As instruções sensíveis podem ser sensíveis ao controle ou sensíveis ao comportamento.
- Instruções sensíveis ao controle são aquelas que tentam modificar a configuração de recursos em um sistema (por exemplo, LPSW do IBM System/370).
- Instruções sensíveis ao comportamento são aquelas cujos comportamentos são determinados pela configuração atual de recursos em um sistema (por exemplo, POPF do Intel IA-32).
- Quando a instrução não é sensível ao controle nem ao comportamento, ela é inócua.
- Instruções sensíveis podem ser privilegiadas (por exemplo, LPSW) e não privilegiadas (por exemplo, POPF).
- Popek e Goldberg (1974) sugeriram que um hipervisor poderá ser construído somente se o conjunto de instruções sensíveis for um subconjunto do conjunto de instruções privilegiadas (por exemplo, instruções sensíveis sempre são interceptadas no modo de usuário).
- Ocorre um problema quando as instruções sensíveis, mas não privilegiadas, são emitidas em VMs em execução no modo de usuário (ou seja, elas não serão interceptadas como tal).
- As instruções sensíveis e não privilegiadas são chamadas de instruções críticas.
- Um hipervisor ainda pode ser construído para ISAs que contêm instruções críticas.
- A construção de um hipervisor com a presença de instruções críticas pode ser obtida usando a aplicação de patch de código, virtualização completa e/ou paravirtualização.
- A aplicação de patch de código substitui todas as instruções críticas com chamadas do sistema ao hipervisor, impondo-lhes a interceptação.
- A virtualização completa emula todas as instruções no ISA.
- A emulação é uma técnica popular na virtualização de CPUs. Ela permite que as interfaces e as funcionalidades de um sistema (a origem) sejam implementadas em um sistema com interfaces e funcionalidades diferentes (o destino).
- A emulação pode ser implementada usando interpretação ou tradução binária.
- As técnicas de interpretação (por exemplo, decodificação e despacho, indirect threaded e direct threaded) traduzem instruções de origem em instruções de destino, uma de cada vez, enquanto a tradução binária converte blocos de instruções de origem em instruções de destino e os armazena em cache para uso repetido.
- A paravirtualização reescreve cada instrução crítica como uma hiperchamada que intercepta o hipervisor (que normalmente requer a modificação de SOs convidados).
- Como exemplos concretos, o VMware usa a virtualização completa, enquanto o Xen emprega a paravirtualização.