You are on page 1of 9
352 _ Sistemas operacionais modemnos do excesso de trabalho, como mostra a Figura 8.25(a), que ‘demonstra o balanceamento de carga iniciado pelo emissor. Eager et al. (1986) construfram um modelo analitico desse algoritmo com base em filas. Usando esse modelo, verificou-se que o algoritmo comporta-se bem € € estével com uma ampla gama de parimetros, incluindo valores diferentes de limiares, custos de transferéncia e limite de sondagem Apesar disso, deve-se observar que, sob condigaes de mutto trabalho, todas as méquinas constantemente v30 sondar outras maquinas em vao, na tentativa de encontrar uuma maquina que esteja querendo aceitar mais trabalho. Poucos processos estarao excedentes, mas uma sobrecarga considerdvel pode surgir na tentativa de distribui-los. Algoritmo heutistico disttibuido iniciado pelo receptor Um algoritmo complementar a0 anterior — iniciado por um emissor sobrecarregado — é um iniciado por um re- ceptor com pouca carga, como mostrado na Figuta 8.25(b). Com esse algoritmo, sempre que um processo finaliza, 0 sistema verifica se cle dispde de trabalho suficiente. Em «aso negativo, cle escolhe alguma méquina aleatoriamente € solicta trabalho a ela, Se a méquina escothida nao tem nada a oferecer, uma segunda e depois uma terceira mé- quina sio investigadas. Se nenhum trabalho é encontrado dentro de N investigagbes, 0 né para temporariamente de procurar, faz. qualquer servigo que ele possa ter esperado € tenta novamente quando 0 préximo processo acabar. Se nenhum trabalho esté disponivel, a méquina fica ociosa. ‘Apds algum intervalo fixo de tempo, 0 nd dispontvel reto- ma a sondagem novamente. ‘Uma vantagem desse algoritmo é que ele nao sobrecar- +ega o sistema nos momentos crticos. O algoritmo iniclado pelo emissor faz. um grande niimero de sondagens justa- mente quando 0 sistema menos pode tolerd-las — quando le esté sobrecarregado. Com 0 algoritmo iniciado pelo re «ceptor, quando o sistema esté sobcecarregado, a probabil [Esteu sobrecanegado J ° 0 © O fut 000 @ O° O° Figura 6.25, ‘vaso procurandi trabalho para fazer Estou entoat BLES) aia dade de uma maquina nao ter trabalho suficiente é peque: nna, Contudo, quando lor esse 0 caso, seré lécil encontrar trabaliio, Obviamente, quando hé pouco trabalho a fazer, © algoritmo iniciado pelo receptor cia trifego considerdvel fem razao das sondagens, uma ver que todas as méquinas, desempregadas cacam trabalho desesperadamente. Contu- do, é muito methor ter uma sobrecarga extra quando 0 sis tema nio esté superatarefado do que quando est ‘Também € possivel combinar esses dois algoritmos a fim dle que as méguinas tentem liviarse do trabalho quando este for excessivo ¢ tentem adquitir trabalho quando no ti vverem osuficiente. Além diss, talvez as méquinas consigam melhorar a investigagio aleatéria mantendo um histérico das investigacies anteriores para determinar quaisquer mé- uinas que estejam cronicamente sub on sobrecarregadas. ‘Uma desta pode ser investigada primeiro, dependendo se 0 interessado esté tentando se livrar do trabalho ou adquir'lo EX] virtuatizacao Em algumas situagoes, uma empresa possuil um mul computador, mas nao 0 quer de verdate. Um exemplo co- mum é uma empresa que possui um servidor de e-mail tum servidor de Internet, um servidor FTP, alguns servidores de comércio eletrSnico ¢ outros mais, Todos eles funcionam, fem_compuiadores diferentes em uma mesma estante de tos, coneciados por uma rede de alta velocida tras palavras, um multicomputador. Em alguns «casos, todos esses servidores funcionam em méquinas se- patadas porque somente uma méquina nao daria conta da carga; mas em muitos outros easos, a principal raz3o para nido ter todos esses servigos como processos na nesta mé- «quina €a confianga: 0 gerente simplesmente nao contia que © sistema operacional v4 funcionar 24 horas por dia, 365, ‘ou 366 dias por ano, sem nenhuma falha. Colocando cada servico em um computador senarado, se um dos servidores, parar, os outros nao serao afetados, Embora essa escolha dé Estou livre esta noita ©) [a] Um né superatarefado procurando por um né menos carregads para 0 qual possa repastar processos. (b) Um conta da tolerancia a falhas, ela cara e ill de ser geren- ciada por conta do envolvimento de muitas maquinas. © que fazer? A tecnologia de miquinas virtuats, que tem mais de 40 anos e normalmente € denominada virtua- Tizagao, foi 0 que strgiti como propesta de solugio (con- forme discutimos na Segio 1.7.5). Bla permite que um tini- co computador hospede rmitiplas maquinas virtuais, cada na com seu proprio sistema operacional. A vantagem dessa abordagem & que a falha em uma das méquinas vir- tals nd faz vom que ay outta fal raticaente Em um sistema virtualizado, diferentes servidores podem incionar em diferentes maquinas virtua, 0 que man 9 modelo de falha parcial de um multicomputador a custo muito mais baixo e de muito mais fil manutengio. E claro que a orgonizagio de servidores desie modo € como colocar todos os ovos em uma mestna cesta. Se 0 servidor no qual as méquinas virtuais estao armazenadas, falhar, o resultado ¢ ainda mais catasindfico do que no case de falha de um tinico servidor. A razaio para a existéncia da Virtializacio, entretanto, € que a maioria das interrupces| no servigo ndo é causada por defeitos de hardware, mas pelo conjunto de software inchado, nao confidvel e cheto de exros, em especial 0s sistemas operacionais. Com a tec- nologia de méquinas virtuais,o nico software que funcio- nna no modo niicleo é o hipervisor, que tem duas ordens de ‘magnitude, menos linhas de cédigo que um sistema opera- cional ¢, portanto, menos erros. A execugio de software nas méquinas virtuais apre- senta outras vantagens além do forte isolamento. Uma delas & que ter menos mquinas fisicas significa economia de dinheiro em hardware ¢ em eletricidade € menos es- ‘pago ocupado no escritério, Para empresas como Amazon, Yahoo, Microsoft ou Google, que devem ter milhares de setvidores executando diferentes tarefas, a reducio das ncessidades fisicas em seus centros de processamento de dados representa uma enorme economia de custos. Nor malmente, em grandes empresas, os departamentos ou _grupos individuais tém ideias interessantes ¢ adquirem um servider para implementé-las. Se a ideia agradar ¢ diversos outros servidores forem necessérios, 0 centro de processa- mento de dados da empresa aumenta. Em geral é dificil transferir 0 software entre as méquinas porque, em geral, cada aplicagio precisa de uma versio diferente do sistema peracional, com bibliotecas e arquivos de configuragio es- pecfficos ¢ outras coisas mais, Nas maquinas virtuais, cada aplicagdo pode levar consigo seu préprio ambiente. utra vantagem das maquinas virtuais € que a criagio de ponios de salvaguarda (check points) & a migragio (por cexemplo, para balaneeamento de carga entre diferentes ser vidores} sio muito mais ficeis do que no caso dos processos funcionando em um sistema operacional normal. Neste tl- timo, muitas informagbes sobre estados erficas de cada pro- cesso esto armazenadas ema tabelas do sistema operacional, inclusive aquelas relacionadas a arquivos abertos, alarrne BLES) aia Sistemas com mi 353 Capitulo 8 los processadores gerenciadores de sinais, entre outras. Na migeacio de mag nas virtuats, tudo o que precisa ser movido é sua imagem de ‘memstia, jé que todas as tabelas do sistema operacional so movidas também. Outro uso para as méquinas virtuais € armazenar apli- cagbes de versies mais antigas de um sistema operacional (ou versbes do sistema operacional} quie nao posstem mais suporte ou que ndo funcionam no hardware atual. Flas podem funcionar a0 mesmo tempo ¢ no mesmo hardwa re que as aplicayies atuals. Na verdale, a pussibilidade de executar a0 mesmo tempo aplicagSes que usam diferentes sistemas opetacionais & um forte argumento a favor das méquinas virtais ‘As maquinas virtuais também sio utilizadas no desen. volvimento de software. Um programador que queira se certificar de que seu programa funciona no Windows 98, no Windows 2000, no Windows XP. no Windows Vista, em es versbes do Linux, no FreeBSD, no OpenBSD, no NetBSD e no Mac OS X nao precisa mais conseguir ferentes computadores ¢ instalar um sistema operacional ‘em cada um deles. Em vea disso, ele simplesmente cria um. grupo de maquinas virtuais em um Gnico computador © instala um sistema operacional em cada tuma dessas maqui- nas. £ claro que existe a alternativa de particionar o disco rigido e instalar um sistema operacional diferente em cada partigio, mas essa abordagem & mais dificil. Em primeico lugar, os computadores pessoats convencionals suportam. apenas quatro partigbes primérias, independentemente do tamanho do disco. Segundo, embora um programa que ppermita a selego do sistema operacional a ser inicializado possa ser instalado no bloco de inicializagao, seria necessé- rio reinicializar o computador para trabalhar em um novo sistema operacional, Com maquinas virtuais, dos cles po- dem funcionar ao mesmo tempo. 85.11 Requisitos para virtualizacaa ‘Como vimos no Capitulo 1, existem duas abordagens para a virtualizagao. Um tipo de hipervisor, denominado hipervisor tipo 1 (ou monitor de maquina virtual), € mostrado na Figura 1.26(a). Na verdade, ele € 0 sistema operacional, j4 que este & a tinico programa funciomane do no modo niicleo, Sua tarefa & gerenciar miiltiplas ¢6- pias do hardware real, denominadas maquinas virtuais, como os processos que um sistema operacional normal gerencia, Por sua vez, um hipervisor tipo 2, apresentado na Figura 1.26(b), € completamente diferente. & simples- mente um programa do ustdrio funcionando, digamos, no Windows ou no Linux, que funciona como um “inter- pretador’ do conjunto de instrugies da méquina € ta bbém cria uma méquina virwal, 0 termio ‘interpretador’ std entre aspas porque, em geral, blocos de cédigo sao processados de determinada maneira, armazenados em cache e executados diretamente de modo a aumentar 0 desempenho, mas, em principio, a interpretagao de todas as, 354 __ Sistemas operacionais modemnos instrugdes funcionaria, embora esse procedimento seja mais lento. Em ambos os casos, o sistema operacional {uncionan- do sobre © hipervisor € denominado sistema operacional héspede. No caso do hipervisor tipo 2, 0 sistema operacio- nal funcionando sobre o hardware € denominado sistema ‘operacional hospedeiro. B importante observar que, nas duas situagies, as mé uinas virtuais devem se comportar exatamente da mes ma maneira que o hardware real. Em particular, deve set Dpossivel inidaliza-Ias como computadores teais ¢ instalar sistemas operacionais arbitrdrios em cada uma delas, assim. ‘como fazemos com o hardware real. £ tarefa do hipervisor ctiar esse cenério ilusério de forma eficiente (sem ser um interpretador completo}. A ravao para a existenera de dors tpos de hipervisores ‘std relacionada & arquitetura do Intel 386, que foi trans- portada para novas CPUs durante 20 anos para que se pu- desse manter a compatibilidade. Em resumo, cada CPU com modo mticleo € modo usuétio possui um conjunto de nstrugbes que someme pude ser executady no iodo miicleo, como instrugGes de E/S, instrugdes de modificacéo nas configuragGes de MMU ete. Em seus eléssicos trabalhos sobre virtualizagio, Popek e Goldberg (1974) ehamaram «essas instrugbes de instrucéo sensivel. Existe ainda ou- ‘ro conjunto que € capturado por uma armadilha(irap) se exccutado no modo ususrio, Popek ¢ Goldberg chamaram essas instrugoes de instrugdes privilegiadas. A pesquisa desses autores foi a primeira a declarar que uma méquina somente pode ser virualizada s¢ as instrugoes sensiveis fo rem um subconjunto das instrugoes prvilegiadas, De modo mais simples, se tentarmos fazer algo que nao deveriamos ‘no modo usuario, teremos uma armadilha de hardware. 0 Intel 386, a0 contrétio do 1BM/370, nao apresentava «ssa propriedade, Pouguissimas instrucbes sensiveis do 386 ‘exemplo, a instrugio POPF substitti 0 registrador de esta- do, que altera o bit que habilita/desabilita imterrupgbes. No modo ustétio, esse bit simplesmente no é alterado, Em fungio disso, 0 386 € seus sucessores no podiam ser vi tuallzados e, portanto, ndo suportavam o hipervisor tipo 1. noradas quando exectadas na moilo uswArio. Por BLES) aia Na verdiade, a situagio é um pouco pior. Além dos pro- blemas com instrugSes que nao eram capturades no mode usuétio, existemn ainda instrugbes que teem estado sensit ‘vo no modo usudtio sem gerar uma captuta, No Pentium, por exemplo, um programa pode determinar se vai f cionar em modo usudtio ou em modo mticleo por meio da leitura de seu seletor de segmento de cédigo. Um sistema ‘operacional que execute esse procedimento e descubra que sté realmente no modo usudrio pode tomar decisdes cq ‘voeadas com baze nessa informagio, Esse problema foi resolvido quando a Intel ¢ 2 AMD introduzitam a virtualizac’o em stias CPUs a partir de 2005. Nas CPUs Intel Core 2 Duo, ela € chamada de VT (wireuatiation technology — tecnologia de vittualizacio). Nas CPUs AMD Pacific. sio chamadas de SVM (secure virtual ‘acrine — maquina virwal segura). A seguir, wilzaremos co termo tecnologia de virtualizagio de forma genérica. Am- bos foram inspirados no funcionamento do IBM VMV370, ‘mas so um pouco diferentes. A ideia bisica é criar conti neres nos quats as méquinas virtuais possam ser executa. das, Quando ¢ iniclado um sistema operacional héspede ‘em um contéiner, cle continua sendo executado Id até que gete tima excegio ¢ seja capturado pelo hipervisor por meio da execugio de uma instcugio de B/S, por exemplo. 0 conjunto de operagoes capturadas por uma armadilha € controlado por um mapa de bits do hardware estab ido pelo hipervisor. Com essas extensées, € possivel ciar méquinas virtuais segundo a abordagem trap-and-emuate (coptuira ¢ emulagio).. 83.2] Hipervisores tipo 1 A possibilidade de virtalizagio & uma questio impor tante ¢, portanto, deve ser examinada com mais detalhes. Na Figura 8.26, vemos um hipervisor tipo 1 gerenciando uma mdquina virtual. Como todos os outros hipervisores tipo 1, es8¢ também funciona em ume méquina conven ional. A maquina virtual funciona como um provesso de usuario no modo usudcio €, como tal, nao pode executar instrugdes sensiveis, Ela executa um sistema operacional hdsnede que acredita estar no modo nticeo, embora, & cla- ro, esteja de fato no modo usuério. Chamaremos este de Procien deste O on Maquina ‘Modo. ‘a aa Suton pcracot pe, | F Mod nie via fanaa oso Heroin emer roest eee Hardware Figura 8.26 Quando sistema operacional em uma maquina virual execute uma instrugo do modo nucleo, la € capturada pelo hipervisor 522 tecnooga de vitualzagao ester presente, modo niicleo virtual. A maquina virtual também exe- cuta processos do usudrio, que acreditam estar no modo usudtio (¢ realmente estdo). © que acontece quando o sistema operacional (que acredita estar no modo niicleo) executa uma instrugao sen- sivel (somente permitida no modo miicleo)? Em CPUs sem tecnologia de virtualizagio, a instrucdo falha e o sistema ‘operactonal normalmente para, o que impossibilita a virta- Tizagio real. & possivel argumentar que todas as instrugées sensiveis deveriom criar uma armasilha quando execute- das no modo usutio, mas nao era assim que funcionavam as CPUs 386 e suas scessoras sem VT. [Nas CPUs com VT, quando o sistema operacional hés- pede executa uma instrugio sensivel, tem-se uma arma- filha para @ miclen, conforme ihistrada na Figura 86.0 hipervisor pode, entdo, inspecionar a instrugio para verifi- car se ela velo do sistema opetacional héspede na méquina virtual ou de um programa do usuérto no mesmo local. No primeiro caso, o hipervisor faz com que a instrugio seja executada; no segundo, ele emula 0 que 0 hardware real fatia quando deparasse com uma instrucio sensivel senda exeeutada no modo usuario. A instrugo costuma ser igno- rada quando a maquina virtual nao tem VT. Caso contré- rio, ela € capturada para o sistema operacional héspede em funcionamento na maquina vitetal, 83.3) Hipervisores tipo 2 A construgio de um sistema de méquinas virtuais & relativamente simples quando a VT esté disponivel, mas 10 que as pessoas faziam antes dela? F certo que executar um sistema operacional completo em uma méquina virtu- al nfo funcionaria porque algumas das instrugbes sensiveis, seriam simplesmente ignoradas, fazendo com que 0 siste- rma falhasse. Em ver. disso, o que aconteceu foi a invengio do que hoje chamamos de hipervisores tipo 2, conforme itustcado na Fgura 1.26(b}. 0 primcizo deles foi o VMware (Adams e Agesen, 2006; Waldspurger, 2002), que foi o des- dobramento do projeto de pesquisa Disco, realizado na Uni- versidade de Stanford (Bugnion et al,, 1997). 0 VMware funciona como um programa de usudrio simples em um sis- tema operacional hospedeiro como 0 Windows ou o Linux. Quando iniciado pela primeira vez, ele age como um novo computador que acaba de ser igado e espera encontrar urn CD-ROM na unidade correspondente, contendo um siste- rma operacional que sera instalado no disco virtual (na verdade, somente um arquivo do Windows ou do Linux) quando for executado © programa de instalagao armazena- do no CD-ROM. Uma ver instalado, o sistema operacional hdspede pode ser inicalizado quando a méquina for ligada. Vamos agora ver mais detalhadamente como funcio- na o VMware. Quando executa um programa bindrio do Pentium, obtido pela instalacio de CD-ROM ou via disco Virtual, ele primeiro varre cédigo em busca de blocos basicos, ou seja, execugdes diretas de instrucdes que ter- BLES) aia Sistemas com mi 355 Capitulo 8 los processadores rminam com uma insirugio jump, call, bap ou alguma outa que altere 0 fluxo de controle, Por definigao, um bloco bi- sico ndo contém nenhiuma instrucio que altere o contador de programa, exceto a ditima, © bloco ¢ inspecionado de forma a averiguarse ele contém instrugoes sensiveis (com forme propostas por Ropek ¢ Goldberg). Em caso afirmati- yo, cada uma delas 6 substituida por uma chamada a uma rotina VMware que a getencia. A tiltima instrugdo também, € substitufda por uma chamada a uma rotina VMware, Unis vee contluday 9 etapay antcties, v blow basienr € armazenado no interior do VMware para que seja exe: cuitado, Um bloco que nao contenha instrugies sensiveis, serd executaclo no VMware com a mesma velocidade que se- ria executado diretamente pelo hardware porque, na ver- dade, esti sendo executada pelo hardware. As instrugies sensiveis s20 identificadas desse modo ¢ emuladas. A essa téeniea damos 0 nome de tradugao bindria. Apds o término da execugao do bloeo basico, 0 contro Te retorna ao VMware, que localiza seu sucesso, Se este jd tiver sido traduzido, node ser executado imediatamente. €aso contratio, ele € traduzido, armazenado e exectta- do, Eventualmente, a maior parte dos programas estara armazenada em cache e ser executada quase que em ve- Jocidade normal. Diversas otimizagées sio utilizadas, por exemplo, se um bloco bsico termina chamando outro. A ‘iltima instrucio pode ser substituida por uma instrugio Jump ou cal! dicetamente pata outro bloco bésico traduzi- do, climinando a sobrecarga associada & busca pelo bloco stucessor. Além disso, nao hé necessidade de substituir as instrughes sensiveis nos programas do usuétio, uma ver, que © harcware iré ignoré-las de qualquer forma. ‘Agora deve estar clara a razo para os hipervisores tipo 2 funcionarem, mesmo em um hardvvare que nao possa ser Yirtwalizado: todas as instrughes senstvets io substituidas por chamadas de rotinas que emulam tais instragoes. Nenhu- :ma instrugio sensivel vinda do sistema operacional héspede € executada pelo hardware real. Hlas sfo transformadas em. chamadas ao hipervisor, que fica responsdvel por emulé-las. Podle-se ingenuarnente imaginar que as CPUs com VT superam com faclidade o desempento das téenicas de soft ‘ware empregadas pelos hipervisores tipo 2. mas as avalia- «Ges mostram resultados variados (Adams e Agesen, 2006). © que acomtece & que a abordagem trap-and-entulae (captu- ra ¢ emulacdo) utilizada pelo hardware VT gera int armadilhas, que sio caras ao hardware atual, ps as memiérias caches, TLBs ¢ tabelas de previsio de desvios Jocalizadas na CPU. Em contrapartida, quando as instrugBes, senisiveis so substituidas por chamadas de rotinas VMware no processo em execugao, nao hé nenhuma acorréncia de sobrecarga. Conforme demonstram Adams © Agesen, de- pendendo da carga de trabalho, as vezes o software supera © handvvare. Por conta disso, ainda que o software funcione hem sem a tradugio binaria, alguns hipervisores tipo 1 re- correm a ela por razdes de desempentho, 356 __ Sistemas operacionais modernos 83.4) Paravirtualizacao ‘Tanto o hipervisor tipo 1 quanto o tipo 2 trabalham com sistemas operacionats hispedes no modificados, mas precisam se esforcar para alcangar um desempenho raz vel. Uma abordagem diferente que esté se tomnando po- pular é a que modifica o cédigo-fonte do sistema operacio- nal héspede de modo que, em vez de executar instracdes sensiveis, ele faca chamadas de hipervisor. Na verdade, ‘sistema operacional héspede esté atuando como um pro- grama do usudtio quando faz. chamadas a0 sistema ope- Tacional (0 hipervisor). Quando esse camino 6 tomado, € preciso que 0 hipervisor defina uma interface composta por um conjunto de chamadas aos procedimentos que © sistema operacional héspede possa usar. Esse conjunto de schomadas forn API (application programming imerface — interlace de pro- sgramagio de aplicacdes), ainda que seja uma interface para uso do sistema operacional héspede © nao de programas de al Indo ainda mais lange. & pnesivel remover todas as instrugies sensiveis do sistema operacional ¢ fazer com. que ele somemte faga chamailas do hipervisor para solic tar servigos de sistema como operagdes de B/S. Esse pro- cedimento transforma o hipervisor em um microndcleo, conforme apresentado na Figura 1.23. Um sistema ope racional héspede do qual tenham sido intencionalmente removidas (algumas) instrugies sensfveis & considerado paravirtualizado (Barham et al, 2003; Whitaker et al. 2002). A emulagio de instrugGes peculiares de hardvvare é uma tarefa desagradével ¢ que eonsome muito tempo. Ela requer uma chamada ao hipervisor e, em seguida, a emu- lagio da semantica exata de uma instrugio complicada. muito melhior que o sistema aperacional héspede realize uma chamada ao hipervisor (ou micromtieleo) para que se realizem operagdes de E/S, entre outras. A razao princi- pal para que os primeiros hipervisores 9 maquina completa era a fata de disponibilidade de cédigo- -fonte para o sistema operacional hspede (para o Windows, por exemplo} ou ainda o grande miimero de variantes (para © Linus, por exemplo). Pode ser que, no futuro, a API hi- pervisor/micronticleo seja padronizada ¢ os futurus siste- © que efetivamente conhecenies como BLES) aia mas operacionais sejam projetados para chamé-la em ver de utilizar instrugdes sensivels. Se isso acomtecer, serd mais {4cil wilizare suportar a tecnologia de maquina virtual AA diferenga entre a virtualizagio real ¢ a paraviriua- lizacio € apresentada na Figura 8.27. Nela, temos duas maquina viriuais sendo gerenciadas em hardware VI. A cesquerda, temos uma versio nao modificada do Windows como sistema operacional héspede. Quando uma instru: fo sensivel é executada, o hardware cria uma armadilha iu € puta 0 hipervisor, que, por suit ved, eitula retorna. A direita, temos uma versio do Linux modificada de modo a nao mais conter instrugdes sensiveis. No lugar delas, quando € necessério executar operagbes de E/S ou modificar registros internos (como os que apontam para as tahelae de piginas), sistema far uma chamada de hie pervisor para que o servico seja execttada, coma um pro: sgrama aplicative que reatiza uma chamada de sistema no Linux convencional. Na Figura 8.27, apresentamos o hipervisor dividido em dduas partes senaradas pela linha tracejada. Na verdade, exis te somente um programa em execugio no hardware. No cexemplo, uma parte dele é responsdvel pela interpretacio das instrugdes sensiveis geradas pelo Windows e intercepta- ddas. A outra parte & responsdvel somente pelas chamadas a0 hhipervisor. Na figura, a segunda parte & denominada micro- nidcleo, Se a intengdo € que o hipervisor execute somente sistemas operacionais hdspedes paravirtualizados, nao ha necessidade de emulagdo de instrugdes sensivefs ¢ temos um. ictomticleo real, que simplesmente oferece servigos muito bdsicos, como 0 despacho de processos € 0 gerenciamento da MMU, A diferenga entre um hipervisor tipo 1 ¢ ura mi- ‘ronticleo ¢ hoje muito vaga e ficard ainda mais contusa & que os hipervisores comecarem a disponibiizar mais ‘e mais funcionalidades e chamadas —o que é bastante pro- ‘vel. Esse assunto € controverso, mas estd cada vex mais, aro que © programa sendo executado pelo hardware no modo niicleo na maquina convencional deve ser pequeno ¢ confidvel e ser composto por milhares de linhas de eéigo, € nijo miilhdes de linhas de césligo, Esse assunto foi discutido por diversos pesquisadores (Hand vt al, 2005; Heiser etal 2006; Holumuth et a., 2004; Roscoe etal, 2007). malas rea Feradtticato —_— — OOF maainn | C—O) | rata co oe Windows nao modificado ‘pela instruge Linux medificado- ‘pela chamada po Ghones Hipmnorioos 2 | Mironiseo fccp 1 Figura 8.27 Um hipervsor controlande tanto una virtalizagéo real quanto uma paravirtualizagao. A paravirtualizagio do sistema operacional héspede levanta uma série de questdes. Primeiro, se as instrugbes sensitivas so substituidas por chamadas ao hipervisor, como o sistema opetacional pode funcionar no hardware nativo? Afinal de contas, ¢ hardware nao compreende es- sas chamadas. Segundo, e se existirem diversos hiperviso- res no mercado, como o VMware, o Xen, de cédigo aberto & originalmente da Universidade de Cambridge, ¢ 0 Viridian da Microsoft, todos com APIs distintas? Como € possivel rmodifiear 0 miicleo de forma a executar todos eles? Amsden et al. (2006) propuseram uma solugio. Em seu modelo, 0 miicleo é modificado para chamar rotinas especiais sempre que for necessério executar algo sensivel Juntos, esses procedimentos, chamados de VMI (virta! rmacivine interface — interface de maquina virtual). formam uma camada de baixo nivel que faza interface com o hard- ware ou hipervisor. Esses procedimentos so projetados de forma a serem genéricos ¢ no atrelados ao hardware ou a alguin tipo espeeitico de hiperviso. A Figura 8.28 apresenta um exemplo dessa técnica aplicado @ uma versio paravirtualizada do Linux denomi- nada VMI Linux (MIL). Quando o VMI Linux é executa- dona méquina convencional, cle precisa estar ligado a uma biblioteca que fornece a instrugdo (sensfvel) real necesséria 4 execugio da tarefa, conforme mostra a Figura 8.28(2) Quando executada em urn hipervisor — VMware ou Xen por exemplo —o sistema operacional héspede estéligado a difetemtes bibliotecas que fazem as chamadas de hipervisor apropriadas (¢ diferentes) ao hipervisor subjacemte, Desse modo, 0 niicleo do sistema operacional mantém a carac- teristica da portabilidade, comportando-se de forma ami- _givel em relagio ao hipervisor e conservando a eficiéncia, utras propostasde interface de méquinas vituais foram apresentadas. Uma delas, bastante popular, 6a paravirt ops, cuja ldeia € conceitualmente bastante semelhiamte a0 que acabamos de descrever, mas com algumas especificdades, 8.3.51 Virtualizacdo de meméria AUG aqui, falamos someme sobre como virtualizar a CPU, Umsistema computacional, entretanto, possui outros BLES) aia Capitulo 8 Sistemas com miiplos processadores__ 357 clementos além da CPU, como meméria e dispositivos de EJS, que também devem ser virlualizados, Vejamos de que forma isso ¢ feito, Quase todos os sistemas operacionais modernos do suporte 3 meméria virtual, que € basicamente 0 mapea- mento das paginas no espago de enderegamento virtual para péginas da meméria fisica. Esse mapeamento € de- finido por tabelas de péginas (multinéveis) e geralmente se inicia quando o sistema operacional define um registro de controle na GPU que aponta para a tabela de paginas do nivel mais alto. A virtualizagao complica bastante 0 ge- renciamento da memria, Imagine, por exemplo, que uma maquina virtual es- teja em funcionamento € o sistema operacional héspede em exccugio nela decida mopear a3 paginas virtueis 7, 4 ¢ 3 para as péginas lisicas 10, 11 ¢ 12, respectivamente. Ele constr6i tabelas de p§ginas contendo esse mapeamento & carrega um ponteiro de hardware que aponte para a ta- bla de nivel mais alto, Essa insteugio ¢ sensivel. Em uma (CPU virtnatizada, sera captnrada por uma armadilha: com 0 VMware, tetemos uma chamada de rotina VMware: em um sistema operacional paravirtualizado, teremos uma chamada de hipervisor. Para simplificar, vamos supor que seja capturada por uma atmadilha em um hipervisor tipo 1, mas o problema € 0 mesmo nos trés casos anteriores. © que o hipervisor faz agora? Uma solugio possivel & alocar as paginas fisicas 10, 11 e 12 para essa maquina vir- tual e configurar as tabelas de paginas existentes de forma {que mapeiem as pdginas virtuals 7, 4 e 3 para as utlizarem. Até aqui, tudo bem. Agora suponha que uma segunda maquina virtual seja, Iniciada ¢ mapete suas paginas virtuals 4, 5 e 6 para as pé- ginas fsicas 10, 11 e 12 ¢ configure o registro de controle Para apontar para as tabelas de paginas correspondentes. © hipervisor captura a instrucio, mas faz 0 qué? Ele nao pode utilizar esse mapeanento porque as paginas ticas 10, 11 e 12 jé estdo em uso. £ possivel procurar por pa sia livres — 20, 21 € 22, digamos —e uilizé-las, mas primeiro serd necessério criar novas tabelas de paginas que mapeiem as paginas virtuais 4, 5 ¢ 6 da méquina ‘Vb Linx VMI Linu ul Linux YVMILBibiotoca HWintaraco | | Via para bibioteca VMware] | VIL para bibioteca Xon nes Ee == eae ee hipervisor hiporvisar HW vitware xen Hardware Hardware Hardware @ © © 1 Figura 8.28 Uma interface da maquina vitual Linux funcionand a] em uma maquina corwencional: fo) com VMWare; (c} com Xen, 358 Sistemas operacionais madernos para as paginas fsicas 20, 21 ¢ 22. Se outra maquina virtual for iniciada ¢ tentar utilizar as paginas lisicas 10, 11 e 12, serd necessério criar um mapeamento para clas. Em geral, «© hipervisor precisa criar uma tabela de paginas sombra para cada méquina virtual. A fungée dessa tabela & mapear 45 péginas virtuals utilzadas pelas méquinas virtuais nos paginas fisicas alocadas pelo hipervisor. Para piorar, toda vez que o sistema operacional hés pede modifica stas tabelas de paginas, o hipervisor tam= ‘yéin precisa modficar as tabelas de pghas sombra. Se, por exemplo, 0 SO héspede remapear a pagina virtual 7 para ‘© que ele considera ser a pagina fisica 200 (e nao 10), 0 hipervisor precisa ser notificado da alteragao. O problema é que o sistema operacional héspede pode realizar a alteragio, somente com uma escrita na mem6ria, Nenhuma operagio sensivel & necesséria ¢, portanto, 0 hipervisor sequer sabe da modificagio e, consequentemente, no pode atualizar a tabela de piginas sombra utilizada pelo hardware real. Embora nao seja perfeita, uma possivel solugdo ¢ fazer com que o hipervisor controle a pagina na meméria virial do SO héspede que contém a tabela de piginas de nivel ‘mais alto. Essa informagio pode ser obtida na primeira ver, fem que 0 héspede tentar cartegar o registro de hardwo- re responsivel por apontar para a tabela, porque essa & uma instrugao sensivel e, portanto, € capturada por uma armadilha. 0 hipervisor pode eriar uma tabela de piginas sombra e mapear a tabela de paginas de nivel mais alto € as tabelas de paginas para as quais aponta e disponibiliz las somente para leitura. Quaisquer tentativas futuras de ‘modificagio das tabelas pelo sistema operacional héspede

You might also like