Vous êtes sur la page 1sur 8

Virtualizao de Sistemas Operacionais de Criticidade Mista

O crescente nmero de unidades de controle embutidas em algumas aplicaes,


como carros ou avies, est aumentando a complexidade do sistema e dificultando
a coordenao de todo esse hardware. A crescente capacidade de hardware
embutido e os avanos na tecnologia de virtualizao tornam possvel lidar com esse
problema. H uma tendncia atual de trazer muitos desses sistemas de controle
para uma nica plataforma, tornando possvel para uma nica plataforma de
hardware gerenciar um sistema inteiro com o mesmo isolamento, garantindo o uso
de mltiplas Unidades de Microcontrolador (MCUs), que tambm implica em uma
reduo de custo. No entanto, todas essas diferentes aplicaes tm finalidades e
requisitos muito diferentes, de modo que a plataforma deve ser capaz de lidar com
todos eles, desde a interao humana at o controle em tempo real. Em nosso
artigo, exploramos a interface de para virtualizao do Linux, paravirt_ops, para
torn-la executada em uma mquina virtual (VM) confinada em cima do hipervisor
em tempo real HyperEPOS. O Linux virtualizado fornece sistemas embutidos com
todas as funcionalidades de um sistema operacional de propsito geral, incluindo
interao humana e conectividade, enquanto outras VMs definem um domnio para
o bom funcionamento de tarefas crticas.
Resumo - O crescente nmero de controles embutidos Unidades em algumas aplicaes, como
carros ou avies, esto aumentando Complexidade do sistema e dificultando a coordenao de
Hardware. A crescente capacidade de hardware embutido e Os avanos na tecnologia de
virtualizao tornam possvel lidar com Com este problema. H uma tendncia atual de trazer
muitos Sistemas de controlo para uma nica plataforma, tornando assim Uma nica plataforma
de hardware para gerenciar todo um sistema com Mesmo isolamento garante que o uso de
mltiplos Microcontroladores (MCUs), o que tambm implica em uma reduo de custo. No
entanto, todas essas diferentes aplicaes tm E requisitos, de modo que a plataforma deve ser
capaz de Para lidar com todos eles, desde a interao humana at controle do tempo. Em nosso
artigo, exploramos a paravirtualizao do Linux Interface, paravirt_ops, para torn-lo executado
em um virtual confinado Machine (VM) em cima do hipervisor em tempo real HyperEPOS. O
Linux virtualizado fornece sistemas embutidos com Funcionalidades de um sistema operacional
de propsito geral, Interao humana e conectividade, enquanto outras VMs Para o bom
funcionamento de tarefas crticas.

I INTRODUO

A capacidade de construo e a operacionalidade dos modernos Cada vez mais complicados.


Esse complexo crescente - Diretamente as mtricas tradicionais para o desenvolvimento dessas
Sistemas, como custo, confiabilidade, operao em tempo real, E tempo de lanamento no
mercado. Durante os ltimos anos, os desempenhos de sistemas embutidos tiveram um
crescimento constante, acrescentar mais funcionalidades aos sistemas que no passado eram nico
propsito. Em outras palavras, tarefas que anteriormente ser feito por muitas plataformas
separadas e MCUs agora podem ser em conjunto. Atualmente, possvel tirar proveito este
potencial para tornar o hardware do sistema mais fcil de construir E gerenciar. Pegue um carro,
por exemplo; hoje um veculo tem Sistemas embebidos em paralelo para fornecer todos os As
funcionalidades de um carro moderno tem. Juntando todos eles em uma nica plataforma
implicariam em um hardware menos sofisticado E, portanto, uma melhor fiabilidade do sistema.
Enquanto isso Criar um cenrio de ponto nico de falha, pode ser facilmente com a criao de
redundncia, e no s seria mais fcil, mas tambm mais barato. Embora esteja numa fase muito
precoce da Indstria automotiva, j h desenvolvimento na rea de Indstria [1].
Neste caso, teramos muitos sistemas com diferentes Fins, interfaces e requisitos. Para
lidar com esta variedade dos sistemas, podemos usar tcnicas de virtualizao de plataformas.
De usando a virtualizao, possvel criar mquinas virtuais que pode executar um sistema
operacional em tempo real capaz de controlar Tempo limitado (por exemplo, o sistema de freio
ABS do carro) ou uma finalidade geral de interface com o usurio ou a Internet (Por exemplo,
para atualizar o sistema de navegao no painel).
Com a adio de um sistema operacional de Sistemas embutidos, podemos tornar a gesto
de todos os Estes sistemas conjuntos ainda mais fcil. Alm disso, expande as capacidades de
tais sistemas, fornecendo uma infraestrutura para desenvolver Aplicao que algum pode
imaginar.
Neste artigo, apresentamos importantes conceitos envolvendo Tecnologias de
virtualizao, sistemas embarcados e como Eles se beneficiam dessa tecnologia de ampliar sua
capacidade com sistemas operacionais de uso geral. Ns usamos o Interface paravirtualizao do
Linux (paravirt_ops) para fornecer HyperEPOS, um hypervisor em tempo real, com as
infraestruturas Trutura para integrao com o kernel do Linux, permitindo assim
Interoperabilidade dos sistemas executados de forma virtualizada. Nossas principais
contribuies so a possibilidade de separao em tempo real Software de interface de usurio
ou aplicativos de conectividade com A garantia de no haver interferncia de E / S fornecida pelo
HyperEPOS, O aumento da qualidade do desenvolvimento de software da reduo de tempo
necessrio para desenvolver aplicaes.
O restante deste artigo est organizado da seguinte forma: Seo II Fornece um fundo
rpido sobre Virtualizao, o Tcnicas e interface paravirtualizao Linux; Seo III Fornece
uma viso geral do trabalho relacionado nos campos de Virtualizao de sistemas e sistemas de
criticalidade mista; Seo IV descreve as principais decises de projeto, a adaptao do Interface
de paravirtualizao e; Por ltimo, encerramos o nosso Seco V com as nossas principais
concluses e trabalhos futuros.

II. Background

Esta seo fornece um rpido histrico sobre Virtualizao, Suas tcnicas e interface de
paravirtualizao Linux.

A. Virtualizao

No contexto deste trabalho, entendemos a virtualizao como Virtualizao de plataformas.


Nesse caso, a virtualizao usada escondendo os recursos de hardware da mquina fsica, como
CPU, RAM e dispositivos de E / S e permitindo que ele hospede vrios Mquinas.
Uma mquina virtual a emulao de um determinado computador sistema. Geralmente, as
mquinas virtuais operam com base Arquitetura de computadores e funes de uma arquitetura
real ou hipottica. computador. As implementaes podem envolver hard- Software, ou uma
combinao de ambos. Existem duas Tcnicas para implementar mquinas virtuais, que
dependem sobre o tipo de hypervisor que eles usam.

B. Hipervisores

Hypervisors ou Monitores de Mquina Virtual (VMMs) o Componente de software que


implementa a virtualizao. o Trabalho de Popek et al. Estabelece os requisitos formais para
Arquitetura de computador virtualizvel [2]. Em seu trabalho, eles Arquiteturas que suportam
endereamento de memria usando Relocalizao, supervisor e modos de usurio, e armadilha
Mecanismos que mudam o controle do programa para um At execuo de instrues
especficas.
Os autores apontam trs tipos principais de instrues: i) a Instruo privilegiada uma
instruo que causa uma armadilha e executado pelo hypervisor; Ii) uma instruo sensvel se
afeta o estado da memria ou do processador sem passar por armadilha; Iii) uma instruo
Innocuous aquela que confia na O valor dos registos ou o modo de processador.
Eles tambm indicam propriedades de rvore que um hypervisor deve ser Eficincia,
controle de recursos e equivalncia. Por eficincia, os autores pretendem que todas as incuas
devem ser executadas diretamente no hardware fsico. A propriedade de controle de recurso
declara que um programa arbitrrio No deve ser capaz de afetar os recursos do sistema. Por fim,
o Equivalncia indica que qualquer programa executado em VM deve executar de uma forma
indistinguvel do Um implementado em uma mquina nativa.
Existem dois tipos principais de hypervisors. Em um bare-metal ou Hipervisor nativo (aka
Tipo 1), o prprio hipervisor pode ser Considerado um sistema operacional, j que o software
Que funciona em modo privilegiado. tambm conhecido como hardware Virtualizao de nvel
superior. Este tipo de hypervisor gerencia o hspede Sistemas operacionais da mesma forma que
um sistema operacional Executa as suas tarefas. Os hipervisores mais conhecidos deste tipo Hoje
em dia so o Oracle VM Server, o Xen, o HyperV da Microsoft E VMware ESX / ESXi.
O outro tipo de hypervisor (aka Type 2) chamado Hosted Hipervisor O hypervisor um
aplicativo em execuo em um Sistema operacional que pode criar um ambiente capaz de A
execuo de outro sistema operacional. Este tipo tambm Referida como virtualizao de nvel
de sistema operacional. Conhecido Hospedado hipervisores so caixa virtual e QEMU.

C. Paravirtualizao

O tipo mais tradicional de Hypervisor expe um hardware Funcionalmente idntico


mquina subjacente. Embora isso Abordagem tem suas vantagens (por exemplo, operar
operaes no Sistemas), s vezes tem algumas desvantagens, especialmente quando No h
suporte de hardware. possvel superar essa Vantagem com o custo de desempenho reduzido e
Complexidade do software. Existem mais argumentos contra esta Virtualizao. H situaes em
que o convidado Sistemas operacionais podem se beneficiar de estar cientes de que Sendo
executado em um host e distinguindo o real do Recursos virtuais. Fornecer um sistema
operacional convidado com Tempo real e virtual, por exemplo, permite que ele fornea melhores
Suporte para tarefas sensveis ao tempo. Esta abordagem foi apresentada em [3] e chamado
Paravirtualization. Pode superar a maioria Das desvantagens de tcnicas anteriores de
virtualizao, mas a Sistema operacional convidado requer modificaes.
Barham et ai. Xen, um hipervisor que pode fornecer Alto desempenho, suporte para binrios
de aplicativos no modificados E sistemas operacionais multi-aplicativos completos sem a
necessidade De sacrificar o desempenho da funcionalidade [4]. Esse hipervisor, No entanto,
requer modificaes no sistema operacional convidado Cdigo fonte.

D. Suporte ao Linux e Paravirtualizao

Linux um sistema operacional de propsito geral montado sob o modelo de


desenvolvimento de software livre e de cdigo aberto E distribuio. Na conferncia USENIX,
em 2006, Boston, Massachusetts, muitos fornecedores de desenvolvimento Linux (Incluindo
IBM, VMware, Xen e Red Hat) colaboraram sobre uma forma alternativa de paravirtualizao,
inicialmente pelo grupo Xen, chamado "paravirt_ops". O paravirt_ops Cdigo (frequentemente
abreviado para pv_ops) foi includo no mainline Kernel Linux a partir da verso 2.6.23 e fornece
um hypervisor- Agnstica entre os kernels do hypervisor e guest. Esta interface tornou mais
simples a porta Linux para Hipervisores.
A infra-estrutura permite que voc compile um nico kernel binrio que ir inicializar nativo
em hardware nu ou inicializar totalmente paravirtualizado em qualquer um dos ambientes que
voc ativou na configurao do kernel. Ele usa vrias tcnicas, como Binary, para garantir que o
impacto no desempenho seja executado em hardware nu efetivamente no mensurvel quando
em comparao com um kernel no-paravirt_ops. Atualmente, paravirt_ops Oferece ganchos
para mais de cem funes sensveis e Disponvel para arquiteturas x86_32, x86_64 e IA64.

III. R Elated W ORK

Embora o campo de virtualizao tenha sido muito desenvolvido Nos ltimos anos, pouco
est sendo feito em relao aos Virtualizao de sistemas. A virtualizao mais conhecida
Solues, como Xen [5], KVM [6] e VMware ESXi [7], pode suportar muitos sistemas
operacionais, mas eles no Resolver alguns dos problemas que os sistemas embutidos enfrentam.
Portanto, a escolha da pea de software que virtualiza O sistema de primeira importncia.
Kaiser identifica o Principais abordagens de virtualizao sobre sua aplicabilidade Sistemas
embutidos, apresenta possveis deficincias que Abordagens, e prope mtodos que Essas
lacunas [8].
Bruns et ai. Fornecer no seu trabalho [9] uma avaliao da Interferncias impostas por
aplicativos sem restries de tempo Que funcionam em paralelo com um subsistema em tempo
real, comparando O L4 [10] / Fiasco [11] microkernels e FreeRTOS [12]. Seu trabalho afirma
que a sobrecarga de tempo de execuo no microkernel Tem quase nenhum efeito sobre as
aplicaes em tempo real. Contudo, O sistema resultante requer mais recursos de cache para
alcanar O mesmo nvel de desempenho de um sistema operacional no sistema.
No trabalho de Sandstrm et al., Os autores identificam as Solues de ponta entre o estado
da arte do servidor e Virtualizao. Eles discutem quais so os requisitos de hardware Para as
tecnologias de virtualizao, bem como o nvel de servio Fornecidos por cada um. Mais
importante ainda, os autores Orientaes de desenvolvimento para suportar Sistemas em tempo
real [13]. Os esforos realizados para apoiar tarefas em tempo real De Gerum, foco na melhoria
da capacidade de execuo do Linux Em tempo real [14]. Esta abordagem diferente da nossa.
Dentro nosso trabalho, oferecemos um hipervisor seguro em tempo Suportar qualquer Linux em
um ambiente isolado, portanto no Interferindo uns com os outros, e ainda executar tarefas em
tempo real em VMs.
O trabalho apresentado por Aguiar e Hessel, discute as Formas adequadas de utilizao da
virtualizao em sistemas incorporados E os objetivos primrios que essas tcnicas podem
alcanar [15]. Salientam igualmente que a Sistemas operacionais e sistemas embarcados podem
aumentar a Qualidade do desenvolvimento de software, uma vez que permite ao Escolha entre os
sistemas operacionais disponveis mais adequados para o aplicativo de destino. Alm disso, o
tempo necessrio para um aplicativo pode ser reduzido, porque os aplicativos j disponveis para
sistemas operacionais especficos no precisam ser reescritos.
A execuo do Linux em um hypervisor em tempo real j foi Feito por Legout et al. [16].
Eles constroem um hipervisor dentro do microkernel de Anaxagoros que no fornece alta
Desempenho, mas ainda d respostas corretas e usa o Paravirt_ops para colocar o kernel do Linux
no seu hipervisor. Enquanto os autores foram capazes de portar o Linux para o seu hipervisor,
Hipervisor no atinge em tempo real. Em nosso trabalho, usamos HyperEPOS para conseguir
isso.

IV. G @ H inux Yper EPOS

O Linux o software open source mais conhecido e mais utilizado. Sistema no mundo [17].
Ele executado em uma gama altamente diversificada Das arquiteturas de computadores. De
smartphones a carros, super- Computadores e eletrodomsticos, o sistema operacional Linux Est
em todo o lugar. As distribuies Linux geralmente so diferentes propsitos, incluindo suporte
arquitetura de computadores, Sistemas embutidos, estabilidade, segurana, localizao a um
determinado Regio ou idioma, segmentao de grupos de usurios especficos, para aplicaes
em tempo real, ou compromisso com um determinado desktop meio Ambiente. Estas so as
principais razes que tornam o Linux Uma escolha to interessante de sistema operacional de
propsito geral para empregar em sistemas embarcados. Alm disso, a partir de kernel Verso
2.6.23, o Linux vem com uma interface de paravirtualizao. Paravirt_ops fornece uma interface
uniforme, que pode ser usada por muitos hipervisores distintos, assim, a padronizao do porto
de Linux para novos Hypervisors.
Como desejamos ter recursos em tempo real em nosso sistema, Escolhemos um hipervisor
de tempo real em metal puro. A principal razo Para esta escolha o fato de que no importa se
estamos a correr Um hypervisor em tempo real se o sistema operacional por baixo dele No nos
fornece polticas de tempo estritas. Enquanto isso, o O uso de um metal nu assegura que as
restries de tempo sejam atendidas.

A. HyperEPOS

A maioria dos hypervisors que visam em tempo real no lidam com Os desafios impostos pelas
modernas arquiteturas multicore tais como Como hierarquias de memria e I / O. Em vez disso,
eles empregam um Abordagem de hardware dedicada (por exemplo, CoMik) [18], no Tempo
real em tempo real (por exemplo, OKL4 e uC / OS-MMU) [19], [20] ou Concentrar-se
principalmente em questes de programao multicore (por exemplo, RT Xen) no Realizando
uma investigao adicional na memria nem I / O [21]. HyperEPOS um hipervisor em tempo
real que leva em conta Na sua concepo e implementao tais aspectos arquitetnicos,
Gerenciamento de memria e hierarquia de E / S, tratamento de Programao em tempo real.
HyperEPOS virtualiza execuo com Virtual CPU (VCPU) s, que so agrupadas em um domnio
(isto , um Mquina virtual (VM)) onde se encontra um SO convidado. Cada VCPU Por sua
vez, atribuda a uma CPU fsica (PCPU) (por exemplo, um ncleo Processador multincleo). Os
domnios so classificados como crticos ou Como melhor esforo. Os crticos so destinados a
executar em tempo real incorporado Sistemas operacionais (RTOS) e no devem sofrer
interferncias Que poderiam perturbar seu comportamento temporal. Melhor esforo (BE)
Domnios so esperados para executar sistemas de operao de propsito geral Em que aplicaes
de interao humana e multimdia iro ser executado.
No HyperEPOS, um VCPU implementado como um Servidor peridico: est
programado para ser executado e Concluso do seu perodo, em que o SO convidado pode
executar Suas tarefas. Alm disso, os prprios VCPUs esto programados Pelo hypervisor de
acordo com algoritmos de escalonamento em tempo real Tal como PEDF. Em arquiteturas
multicore, um ncleo pode causar Interferncia em outro devido ao compartilhamento do cache
de ltimo nvel (LLC). HyperEPOS lida com essa interferncia usando a pgina Colorao, uma
estratgia de particionamento de memria onde uma cor Dado a um conjunto de pginas de
forma que o uso de pginas de uma No evitam linhas de cache de outra cor. Portanto, permitindo
o tempo Previsibilidade em acessos memria [22], [23]. Em HyperEPOS Uma cor atribuda a
cada VCPU que se destina a ser utilizado Em um domnio crtico. Assim, domnios crticos no
sofrem nem Causar interferncia em outros domnios. Alm disso, os VCPUs de Os domnios BE
podem compartilhar a mesma cor, pois no so crticos Que causam interferncia temporal entre
si. Memria Gerenciamento em HyperEPOS construdo usando o hardware MMU Mediador,
responsvel pela alocao da memria fsica Sistema e por captaes, responsvel pela alocao
de Memria lgica para as tarefas de domnio. A implementao de A colorao da pgina usada
no HyperEPOS depende do EPOS MMU Famlia de mediadores de hardware. Ao empregar cores,
a MMU Fornece vrias listas para gerenciamento de quadros livres, uma Lista para cada cor. Da
mesma forma, existem mltiplas pilhas, uma Para cada cor, fornecer alocao dinmica de
memria para o Domnio tarefas [24]. Para resolver o problema da interferncia temporal causada
por E / S Operaes, o HyperEPOS prope uma estratgia de monitorizao Trfego em nibus
compartilhados e desativao de perifricos
Pgina 4
Utilizados por tarefas no crticas para mitigar a interferncia sofrida Pelos PCPUs que so
atribudos a domnios crticos. Alimentao Perifricos realizada de forma especulativa com
base em Sobre os dados da Unidade de Monitorizao do Desempenho (PMU) e Tambm a partir
dos registos de desempenho dos perifricos (por Que conta o nmero de bytes enviados em uma
placa de rede). o Hipervisor pode optar por desligar um domnio BE que usa E / S Sempre que a
taxa de insero relacionada I / O Basear-se em anlises estatsticas dos parmetros perifricos
uso. Essa avaliao de qual domnio deve ser alimentado Down executado em tempo de
execuo pelo hypervisor, em seu ocioso (Quando todos os VCPUs tiverem concludo o seu
trabalho e Esperando o prximo perodo). Interface de gerenciamento de energia E POS,
Implementado pelo HyperEPOS, permite alterar as Modos de componentes individuais, incluindo
a capacidade de Os em e fora [25]. Tambm acompanha a relao entre Componentes do sistema,
assegurando a consistncia do modo de operao Transies. Uma das idias-chave para atingir
a manipulao de interrupo limitada, Necessria para cumprir os requisitos em tempo real,
desacoplar a interrupo Recepo e confirmao do servio de interrupo. Hyper- EPOS
alcana isso empregando linhas de manuteno de interrupo (IST) s que so modeladas e
implementadas usando o Concur- Padro de projeto de aluguel_Observer [26]. Em tal padro de
Interrupo de hardware tratada por um servio de interrupo curto Rotinas (ISR) que esto
limitadas a receber, reconhecer e Notificar em um semforo a ocorrncia da interrupo. A IST
espera no mesmo semforo para que a interrupo ocorra E uma vez notificado procede com a
manuteno de interrupo. Em As interrupes dos dispositivos HyperEPOS so encaminhadas
para uma nica PCPU Cujo VCPU pertence a um domnio dedicado, denominado Domain 0, que
responsvel pelo tratamento de interrupes de E / S. Uma vez Interrupo de hardware ocorre,
ela recebida por um curto ISR que Notifica o semforo se o projeto Concurrent_Observer
padronizar. Aps a invocao de um hypercall, uma tarefa executando Um SO convidado de um
domnio far com que o VCPU atribudo a ele Desempenhar o papel do IST do projeto
Concurrent_Observer Manipulao da interrupo que pode implicar, por exemplo, Na cpia de
dados de um buffer dentro do hypervisor para um buffer Do domnio SO convidado. Deve-se
notar que o uso de Semforos no Observador Concorrente no introduzem prioridade Problemas
de inverso porque no esto sendo usados para seo Crtica. Eles so usados apenas para
sincronizar o ISR Com o IST correspondente, muito no caso de um produtor / consumidor
caminho. B. Integrao Linux e HyperEPOS A Figura 1 mostra como temos integrado o Linux
eo HyperE- POS. Nossa interface hypervisor, chamada phepos, atribui funes Paravirt_ops
hooks (ponteiros de funo), implementando Paravirt_ops interface. Devemos observar que nem
todos esses Funes devem ser implementadas atravs de um hypercall direto. Alguns deles s
precisa ter o mesmo comportamento. Antes Descrevendo como cada paravirt_ops ganchos so
implementados por Phepos, descrevemos a configurao do kernel usada e como O HyperEPOS
salta para o domnio Linux (incio do dia). VM 1 - Linux de Uso Geral Linux Kernel v3.18.20
Linux paravirt_ops HyperEPOS X86 HW VM 0 - ParaEPOS Interface Phepos Paravirt_op
Chamada Hypercall CPU virtual CPU MMU IRQ Tempo CPU MMU IRQ Tempo Memria
virtual Dispositivos de E / S virtuais Hypercall CPU fsica Memria fsica Dispositivos fsicos de
E / S Figura 1. Integrao Linux e HyperEPOS. C. Configurao do Kernel Neste trabalho,
usamos a verso 3.18.20 do kernel do Linux com Personalizado configuraes que so
principalmente responsveis pela construo de um 32- Kernel sem suporte PAE, habilitando o
paravirt_ops e Realocando a imagem. Essas configuraes foram geradas Em configuraes
predefinidas do Linux. Usamos i386_defconfig para Crie um arquivo de configurao padro para
a compilao do kernel. A partir de Essa configurao, adicionamos os parmetros tinyconfig,
que Altera o arquivo de configurao para criar um kernel funcional com Tamanho mnimo e
funcionalidades mnimas. O HyperEPOS assume que todas as aplicaes comeam Endereo
0x00000000 eo segmento de dados separado por Uma tabela de pgina (0x400000). Como o
Linux executado como uma aplicao Sob HyperEPOS, alteramos PHYSICAL_START (fsico
Endereo onde o kernel est carregado), PAGE_OFFSET para o Necessrio para tornar o ELF
compatvel com o hypervisor. O script de ligao do Linux tambm foi alterado para que os dados
Segmento comea no endereo especificado. Por fim, habilitmos A interface paravirtualizao.
Fora isso, no Quaisquer alteraes no cdigo-fonte do Linux que no sejam as Necessrio
adicionar HyperEPOS como um host. D. Incio do Dia No fluxo de arranque do Linux habitual
depois de Modo, o kernel habilita a paginao e retoma a inicializao I386_start_kernel e
start_kernel. Ao executar paravirtu- O hipervisor j est sendo executado sob o Sistema, ento
devemos atribuir ganchos de funo para o Funes que so corrigidas atravs da
paravirtualizao Antes de alcanarmos os seus primeiros telefonemas. Para fazer isso quando
Entrar no modo protegido e antes de chegar a qualquer um destes Funes, saltamos para
phepos_start_kernel. responsvel por
Pgina 5
Toda a configurao do hypervisor dentro do kernel. Ele atribui principalmente Ganchos para as
funes do paravirt_ops, mas tambm Algumas funes extras que a configurao tpica seria
(reservando O topo da memria), ou o hypervisor requer (indicando Onde as estruturas de pgina
so). E. Hypercalls Os sistemas operacionais convidados em execuo sob um hypervisor so
No capaz de executar qualquer instruo privilegiada. Do mesmo jeito, Que os aplicativos
usam chamadas de sistema para perguntar ao sistema operacional Kernel para executar uma
instruo privilegiada; Uma mquina virtual Usa hypercalls para perguntar ao hypervisor. A
Tabela I lista os hipercalls Usado por phepos para implementar os ganchos paravirt_ops
relacionados a Virtualizao de CPU, MMU e IRQ. Na Figura 2 temos um Exemplo onde o kernel
emite um write_cr3 dentro do load_cr3 Chamada de funo. Com o kernel configurado para
paravirtualizao, O write_cr3 implementado atravs de pv_mmu_ops, que tem Um gancho
atribudo a phepos, que implementa esta instruo Atravs de um hypercall. Para x86_32 alvos,
paravirt_ops usa o regparm (3) Conveno de chamada do GCC. Isso coloca os trs primeiros
argumentos Em% eax,% edx,% ecx (nessa ordem) e os restantes Argumentos so colocados na
pilha quando uma funo Interface chamado. As hipercalls podem levar at 4 argumentos, Que
o caso da instruo cpuid. Nosso hypervisor, em Por outro lado, leva todos os argumentos de
funo da pilha. Para lidar com isso, envolvemos nossas funes com instrues asm Que colocou
os argumentos dos registros na questo da pilha A chamada de funo e coloque os valores de
retorno da pilha para Os registos novamente. Esta a nica sobrecarga que trazida Por nossa
interface hypervisor. Nas sees a seguir, descrevemos as principais consideraes Quando
atribuir os ganchos de funo adequada para o paravirt_ops interface. F. Gancho da CPU Estas
funes so responsveis por interceptar uma srie Das instrues privilegiadas da CPU e, se
necessrio, Hipervisor para execut-los atravs de um hypercall. A maioria dos Instrues
privilegiadas relacionadas ao CPU x86 usam o Registros de Controle (CR). O registo de controlo
CR0 mantm vrios sinalizadores que Operao bsica do processador. Ns mantemos o valor do
CR0 registar localmente. O hypervisor (Host) no Fazer alteraes. s vezes, o Linux faz
Registos, estes no tm de ser implementados atravs de uma Hipercall porque isso causaria uma
sobrecarga desnecessria Para o hospedeiro. O registo de controlo CR4, entre outras funes,
Usado em modo protegido para controlar operaes como virtual- 8086, habilitando pontos de
interrupo de E / S, extenso de tamanho de Excees de verificao da mquina. Uma vez que
no desejamos Extenso de tamanho de pgina ou qualquer outro dos recursos que o CR4
Controles, nossa funo write_cr4 no faz nada eo read_cr4 Sempre retorna zero. Tabela I T
ABELA DE H YPERCALLS Hypercall Descrio Hyper_epos_cpuid Retorna a identificao do
processador E informaes de recursos Hyper_epos_read_cr2 Retorna o valor do CR2 Registrar
para o VCPU atual Hyper_epos_read_cr3 Retorna o valor do CR3 Registrar para o VCPU atual
Hyper_epos_write_cr3 Grava o valor de dar no Registo CR3 da corrente VCPU
Hyper_epos_int_disable Desativar interrupes VCPU atuais Hyper_epos_int_enable Ativar
interrupes VCPU atuais. Hyper_epos_load_idt_entry Atualizar sombra IDT
Hyper_epos_new_page_table Cria uma nova tabela de pgina Hyper_epos_new_page_table_at
Criar nova tabela de pgina em dado Nmero da moldura da pgina
Hyper_epos_attach_page_table Anexa a tabela de pgina O diretrio de pginas da VCPU
Hyper_epos_detach_page_table Separa a tabela de pgina fornecida para O diretrio de pginas
da VCPU Hyper_epos_update_page_table_entry Atualizar uma determinada entrada de tabela de
pgina Hyper_epos_flush_tlb Limpa o TLB da corrente VCPU O kernel emite a instruo cpuid
para consultar o processador Para obter uma lista dos seus recursos disponveis. Implementao
do HyperEPOS Para esta instruo mascara todas as caractersticas inconvenientes para fora,
Ento o Linux no tenta ativ-los. G. MMU Ganchos A maioria dos nossos hypercalls esto
relacionados ao gerenciamento de memria. Para simplificar o nosso porto, no implementamos
o PAE. Temos apenas A estrutura de paginao de um kernel de 32 bits sem suporte PAE.
Portanto, s precisamos lidar com dois nveis de paginao (PGD E PTE). O registo de controlo
CR3 aponta para o directrio de pginas actual. O diretrio da pgina alterado sempre que
houver uma Processo atual ou domnio. As hipercalls de leitura e escrita foram Desenvolvido para
lidar com o endereamento de memria virtual. O registro CR2 contm o endereo da ltima falha
de pgina, Portanto, no h necessidade de o hspede escrever neste registro, apenas ler. Quando
a falha de pgina ocorre, o hypervisor grava o Endereo no registo. Quatro paravirt_ops lidar com
descargas TLB. So respectivamente Usurio, kernel, nico e outros. Em nossa experincia,
implementamos Todos da mesma maneira. H. IRQ Ganchos IRQ ganchos so bastante simples,
eles so feitos diretamente atravs Hipercalls. O nico ponto que precisamos considerar Que se
presume que essas funes salvaguardam seu prprio Se necessrio. Normalmente C assumem
que Eles podem trash o% eax register. Por esse motivo, usamos A macro
PV_CALLEE_SAVE_REGS_THUNK fornecida pelo

Vous aimerez peut-être aussi