Виртуалчлал

## x86 виртуалчлал 
Зураг 1-т харуулсанаар x86 виртуалчлалын давхрага нь техник хангамж, үйлдлийн систем хоёрын дунд нэмэгддэг. Энэ виртуалчлалын давхарга нь CPU, storage, санах ой, оролт гаралтын төхөөрөмжүүд гэх мэт физик нөөцүүдийг динамикаар хуваарилан хувааж олон үйлдлийн системийг нэг компьютер дээр виртуалаар нэгэн зэрэг ажиллуулах боломжийг олгодог. x86 систем нь хостед архитектур, хайпервайзор архитектур гэсэн виртуалчлалын аргуудыг хэрэглэдэг. Хостед архитектур нь үйлдлийн ситем дээр програм байдлаар виртуалчлалын давхаргад сууж ажилладаг. Харин хайпервайзор (bare-металл) архитектур нь цэвэр x86-д суурилсан систем бөгөөд шууд виртуалчлалын давхарга дээр суулгадаг. Хайпервайзор нь үйлдлийн системрүү хандахаас илүү техник хангамжруу шууд ханддаг учраас хостед архитектураас илүү үр ашигтай бөгөөд өргөтгөх боломж, тогтвортой байдал, гүйцэтгэл сайтай байдаг. VMware Player, ACE, Workstation, Server зэрэг нь хостед архитектур дээр ажиллахдаа уян хатан байдаг бол ESX Server-ийн хувьд хайпарвайзор архитектурыг хэрэгжүүлсэнээр илүү гүйцэтгэл сайтай. x86 виртуалчлалын ажиллах зарчимыг илүү сайн ойлгохын тулд бүрэлдэхүүн хэсгүүдийн талаар суурь ойлголтыг мэдэх хэрэгтэй. Виртуалчлалын давхарга нь VMM доторх бүх виртуал машинуудыг хариуцан ажиллуулдаг програм хангамж юм. 
Хайпервайзорын ажиллагаа нь архитектур болон чиглэлээсээ хамаарч ихээхэн өөр өөр байдаг. Хайпервайзор дээр ажиллаж байгаа VMM бүр нь хийсвэр техник хангамжтай виртуал машин үүсгэж зочин үйлдлийн системийг ажиллуулах үүрэгтэй. VMM бүр нь CPU, санах ой, оролт гаралтын төхөөрөмжүүдийг хувиарилан хувааж системийг виртуалчилдаг. 

### CPU виртуалчлал 
X86 үйлдлийн систем нь bare-metal техник хангамж дээр шууд суурилж ажилладаг, тиймээс бүхэлд нь өөрийн компьютерийн техник хангамж гэж үздэг. Зураг 2-т үзүүлснээр, x86 архитектур нь үйлдлийн систем, програмуудадыг давуу эрхээр нь Ring 0, 1, 2, 3 гэж нэрлэгддэг дөрвөн түвшинг бий болгож компьютерийн техник хангамжинд хандах хандалтыг удирддаг. 
 

Хэрэглэгчийн түвшний програмууд нь Ring 3 дээр ажиллаж байх үед үйлдлийн систем нь санах ой болон техник хангамжруу шууд ханддаг ба Ring 0(OS)-ийн зааварчилгаагаар ажилладаг. x86 архитектур нь виртуалчлалын давхаргын доор үйлдлийн системийг байрлуулан дундын нөөцөөр дамжуулан виртуал машиныг үүсгэж удирддаг. Өөр өөр утгатай олон зааварчилгаа орж ирэхэд тэдгээрийн зарим нь Ring 0 дээр ажиллахгүй бөгөөд виртуалчилахад нөлөөлж чадахгүй. Давуу эрхтэй зааварчилгааны хүсэлт илгээж байх үед зааварчилгааг хөрвүүлж бариж авах нь бэрхшээлтэй, энэ нь х86 виртуалчлалын загварын жинхэнэ хувилбарын харах боломжгүй. 1998 онд хоёртын хөрвүүлэлтийн аргыг хөгжүүлсэн нь VMM-ийг Ring 0 түвшинд ажиллуулах боломжтой болгосон бөгөөд үйлдлийн системийг Ring 3-ийн програмуудаас давуу эрхтэй хэрэглэгчийн түвшний Ring-д шилжүүлсэн мөн түүнчлэн Ring 0 дахь VMM-оос давуу эрхийн хувьд бага байдаг. 

x86 архитектур дээр CPU виртуалчлалын гурван арга байна:

•	Хоёртын хөрвүүлэлт ашигласан бүрэн виртуалчлал 

•	Үйлдлийн системийн дэмжлэгтэй виртуалчлал буюу паравиртуалчлал

•	Техник хангамжийн дэмжлэгтэй виртуалчлал

##### Арга 1 - Хоёртын хөрвүүлэлт ашигласан бүрэн виртуалчлал 
VMware нь хоёртын хөрвүүлэлт болон шууд ажиллуулах аргуудын хослолыг ашиглан x86 үйлдлийн системийг виртуалчилдаг. Зураг 3-д дүрсэлсэн энэ арга нь виртуалчлах боломжгүй заавруудыг виртуал техник хангамжинд нөлөөлөх шинэ зааврын дараалалаар солиж кернэлийн кодыг хөрвүүлдэг.Үүний зэрэгцээ, хэрэглэгчийн түвшний код нь өндөр гүйцэтгэлтэй виртуалчлалын хувьд процессор дээр шууд ажилладаг. VMM бүр нь виртуал BIOS, виртуал төхөөрөмжүүд, виртуал санах ойн менежмент зэргийг багтаасан физик системийн бүх үйлчилгээгээр виртуал машин тус бүрийг хангадаг.

Хоёртын хөрвүүлэлт болон шууд ажиллуулах хослол нь виртуалчлалын давхаргын доор орших техник хангамжаас зочин OS нь хийсвэр байдлаар бүрэн виртуалчилдаг. Зочин үйлдлийн систем нь виртуалчлагдсан гэдэгээ мэдэхгүй бөгөөд ямар ч өөрчлөлт оруулах шаардлагагүй. Бүрэн виртуалчлал нь ямар ч тоног төхөөрөмж, үйлдлийн системийн дэмжлэг шаардлагагүй цорийн ганц сонголт юм. Хэрэглэгчийн түвшний зааварчилгаанууд үндсэн хурдтайгаар ажиллах үед хайпервайзор нь бүх үйлдлийн системээс ирэх зааварчилгааг кешийн үр дүнг ашиглан хөрвүүлэлтийг хийдэг.
Бүрэн виртуалчлал нь виртуал машинуудын хамгийн сайн тусгаарлалт, аюулгүй байдлыг санал болгодог бөгөөд ижил төрлийн зочин OS хооронд эсвэл үндсэн техник хангамж хооронд энгийн чөлөөтэй байдлаар  шилжиж ажилладаг. VMware-ийн виртуалчлалын бүтээгдэхүүнүүд, Microsoft Virtual Server зэрэг нь бүрэн виртуалчлалын жишээ юм.

#### Арга 2 – Үйлдлийн системийн дэмжлэгтэй виртуалчлал буюу паравиртуалчлал 
"Пара" гэдэг нь "хажууд", "хамт" , "дэргэд” гэсэн утгатай грек гаралтай англи үг юм. Паравиртуалчлал нь зочин үйлдлийн систем болон hypervisor хоорондын гүйцэтгэл, үр ашгийг сайжруулдаг. Зураг 4-д харуулсан паравиртуалчлал нь үйлдлийн системийн кернелийг виртуалчлалын давхарга дахь хайпарвайзортай шууд харилцдаг hypercall-той виртуалчлах боломжгүй зааврыг солин өөрчилж байна. Хайпарвайзор нь мөн санах ойн менежмент, тасалдал, хүлээх хугацаа гэх мэт бусад чухал кернелийн үйл ажиллагааг hypercall интерфэйсээр хангадаг.
Паравиртуалчлалд өөрчлөх боломжгүй үйлдлийн систем нь өөрийгөө виртуалчлагдсан гэдэгээ мэдэхгүй бөгөөд үйлдлийн систем нь хоёртын хөрвүүлэлтйиг ашиглаж өөрчлөлтийг мэдэрдэг. Паравиртуалчлалын гол санаа нь виртуалчлалын ачааллыг багасгадаг гэхдээ паравиртуалчлалын давуу тал нь бүрэн виртуалчлалаас  гүйцэтгэл сайтай байх ба ажиллагааны хувьд өөр байдаг. Паравиртуалчлал нь өөрчлөгдөхгүй үйлдлийн систем(жишээ нь: Windows 2000 / XP)-үүдийг дэмжихгүй, эдгээр үйлдлийн ситемүүд нь нийцтэй байдал болон шилжилт муу байдаг. Паравиртуалчлал шаардлагатай дэмжлэг туслалцааг бүтээгдэхүүний орчинд буюу үйлдлийн системийн кернелд өөрчлөлтүүдийг оруулдаг. Нээлттэй эхийн Xen төсөл паравиртуалчлалын нэг жишээ билээ. Зочин үйлдлийн системийн төхөөрөмжийн драйверүүдийг ашиглан оролт гаралтыг виртуалчлах болон өөрчлөгдсөн линукс кернелийг ашиглан санах ой болон процессорыг виртуалчилдаг.
Бүрэн виртуалчлалд шаардлагатай хоёртын хөрвүүлэлт нь төвөгтэй, бий болгоход маш хэцүү байдаг бол  паравиртуалчлал нь харьцангуй хялбараар зочин үйлдлийн системийг өөрчилдөг.  Vmxnet нь хайпервайзортай өгөгдлийн бүтцийг хуваадаг паравиртуалчлалын оролт гаралтын төхөөрөмжийн драйвер юм. Энэ нь хост төхөөрөмжийн CPU-ны ачааллыг бууруулах, хүчин чадлыг нэмэгдүүлэх давуу талуудыг ашиглах боломжтой болгодог. VMware үйлчилгээний хэрэгслүүд болон vmxnet төхөөрөмжийн драйвер нь CPU-ны паравиртуалчлалын шийдэл биш юм.

#### Арга 3 – Техник хангамжийн дэмжлэгтэй виртуалчлал 
Техник хангамж үйлдвэрлэгчид виртуалчлалын аргуудыг хялбаршуулах шинэ боломжуудыг хурдацтай хүлээн авч виртуалчлалыг хөгжүүлж байна. Intel Virtualization Technology (VT-x) болон AMD-ийн AMD-V хоёулаа шинэ CPU-ны ажиллагааны горимтой болж өргөжсөн, энэ нь ring 0 –ийн доор VMM-ийн түвшинд шинэ root горимоор ажиллах боломжийг олгодог.  Зураг 5-д харуулсанаар хайпервайзор руу давуу эрхийн болон сенсэнтив дуудалтыг автоматаар тохируулж илгээдэг ба хоёртын хөрвүүлэлт болон паравиртуалчлалыг хоёуланг нь ашиглагдаггүй. Зочины төлөв нь Virtual Machine Control Structure (VT-х) эсвэл Virtual Machine Control Block (AMD-V) -д хадгалагдаж байдаг. 2006 оноос дараах Intel VT and AMD-V төрлийн процессортой техник хангамжууд нь эдгээр боломжуудийг дэмждэг.

### Санах ойн виртуалчлал 
CPU виртуалчлалаас гадна, дараагийн чухал бүрэлдэхүүн хэсэг нь санах ойн виртуалчлал юм. Энэ физик систем нь санах ой хуваалцаж, динамикаар виртуал машин руу хуваарилах явдал юм. Виртуал машины санах ойн виртуалчлал нь орчин үеийн үйлдлийн системд байдаг виртуал санах ойн дэмжлэгтэй маш төстэй байдаг. Програмын хаягын талбарын урт нь системийн физик санах ойтой холбогдох шаардлагагүй. Үйлдлийн систем хуудасны хүснэгтэнд хадгалагдаж байгаа виртуал хуудасны тоог физик хуудасны тоо руу дүрсэлж хадгалдаг. Бүх орчин үеийн x86 CPU-үүдийн memory management unit (MMU) болон translation lookaside buffer (TLB) нь виртуал санах ойн гүйцэтгэлийг оновчтой болгодог. Нэг систем дээр олон виртуал машин ажиллуулахын тулд санах ойн виртуалчлалын бас нэгэн түвшин байх шаардлагатай. Өөрөөр хэлбэл, зочин OS-ыг дэмжих виртуалчлалын нэг MMU-тай байна. Зочин OS зочин санах ойн виртуал хаягийг физик хаяг руу дүрслэхийг хянасаар байх боловч зочин OS нь бодит машины санах ой руу шууд хандах боломжгүй байна. VMM нь зочин физик санах ойг бодит машины санах ойд дүрслэхийг хариуцдаг бөгөөд энэ сүүдэр хуудас хүснэгтийн дүрслэлийг хурдасгахад ашигладаг. VMM нь виртуал санах ойг машины санах ой руу шууд дүрслэх хандалт бүрт хөрвүүлэлтийн хоёр түвшингөөс зайлсхийхийн тулд TLB техник хангамжыг ашигладаг. Зочин OS виртуал санах ойг физик санах ой руу дүрслэх үед VMM нь шууд шалгалтыг идэвхжүүлэхийн тулд shadow page table-ыг шинэчилдэг.

### Төхөөрөмж болон оролт гаралтын виртуалчлал 
CPU болон санах ойн виртуалчлах шаардлагатай эцсийн бүрэлдэхүүн төхөөрөмж бол оролт гаралтын виртуалчлал юм. Үүнд виртуал төхөөрөмжүүд болон дундын физик техник хангамж хоёрын хоорондох оролт гаралтын хүсэлтийн чиглүүлэлт удирдлага ордог. Програм хангамж дээр суурилсан оролт гаралтын виртуалчлал болон удирдлага нь техник хангамжаар шууд дамжин өнгөрөхөөс ялгаатай хялбаршуулсан удирдлага болон боломжуудаар баялаг багцыг бий олгодог. Физик сүлжээн дэх сүлжээний трафикийг зөөх хангалттай зурвасын өргөнгүй виртуал машинуудын хооронд эсвэл виртуал сүлжээний интерфейс картуудын хооронд хийсвэр сүлжээ үүсгэдэг, олон тооны физик интерфейс картуудыг нэгтгэснээр алдааны үед удирдлага нь виртуал машинуудын хооронд сэлгэн ажилладаг ба  VMotion-г ашиглан MAC хаягийг өөрчлөхгүйгээр ялгаатай системүүдэд дахин байршуулдаг. Түлхүүр нь оролт гаралтын виртуалчлалд нөлөөлдөг ба эдгээр виртуалчлалууд 

 нь CPU-ы ачааллыг бага байлгадаг
Виртуал машин бүр виртуал төхөөрөмжүүдийн стандартчилагдсан багцтай байх бөгөөд хайпервайзор нь физик техник хангамжийг виртуалчилдаг. Эдгээр виртуал төхөөрөмжүүд нь well-known техник хангамжаас өрсөж виртуал машины хүсэлтийг системийн техник хангамжруу үр дүнтэйгээр хөрвүүлдэг. Бүх виртуал машин дээр тохируулагдан ажиллаж байгаа ижил виртуал техник хангамжийг систем дэх бодит физик техник хангамжын стандартчилалаас хамраарахгүйгээр төхөөрөмжийн драйвер нь  виртуал машиныг стандарчилах болон платформ дээгүүр шилжүүлэхэд тусалдаг.

### Хайпервайзор 
Хайпервайзор нь техник хангамжийн дэмжлэгтэй виртуалчлалын аргыг хэрэглэдэг. VMM-ийг хоёр төрөлд ангилж болно:

#### *Хайпервайзорын 1-р төрөл* 
Үүнийг "bare-metal" эсвэл "native hypervisor" гэж нэрлэдэг бөгөөд үндсэн техник хангамжийн дээд хэсэгт шууд байрлаж ажилладаг. VMM нь багахан хэмжээний код бөгөөд түүний доор ажиллаж байгаа виртуал машинуудад системийн нөөцийг хуваарилах, ажлын дарааллыг зохицуулах үүрэгтэй. Зочин үйлдлийн систем нь үндсэн техник хангамжруу шууд хандахын тулд VMM–ийн бий болгосон төхөөрөмжийн драйверуудыг ашигладаг. 1-р төрлийн VMM-ийн жишээ нь VMware ESXi, Citrix XenServer, Microsoft Hyper-V юм. 

#### *Хайпервайзорын 2-р төрөл* 
Үүнийг хостэд VMM гэж нэрлэдэг бөгөөд хост үйлдлийн систем гэж нэрлэгддэг энгийн үйлдлийн систем дээр програм хэлбэрээр байрлаж ажилладаг. Хост үйлдлийн систем нь 2-р төрлийн VMM-ийн тухай мэдэхгүй бөгөөд үүнийг зүгээр л нэг процесс гэж үздэг. Хост нь ерөнхийдөө зочин үйлдлийн системийн өмнөөс оролт гаралтын үүргийг гүйцэтгэдэг. Зочин үйлдлийн систем нь оролт гаралтын хүсэлт гаргахад хост үйлдлийн систем нь төхөөрөмжийн драйверлуу илгээж оролт гаралтыг гүйцэтгэдэг. Оролт гаралтын хүсэлт ирсэний дараа зочин үйлдлийн систем нь хост үйлдлийн системээр дамжуулан буцаан чиглүүлэлт хийдэг. 2-р төрлийн VMM-ийн жишээ нь VMware Workstation, Virtual box юм.

## Өгөгдлийн виртуалчлал 
Өгөгдлийн виртуалчлал нь олон эх сурвалжаас өгөгдлийг нэг түвшинд нэгтгэх арга юм. Ингэснээр програмууд, тайлагнах хэрэгслүүд болон эцсийн хэрэглэгч эх сурвалж, байршил, өгөгдлийн бүтцийн талаар дэлгэрэнгүй мэдээлэл шаарддаггүйгээр өгөгдөлд хандах боломжтой байдаг.

## Мөн үзэх 
* *Virtualization*
* *Hypervisor*

## Ном зүй 
* www.vmware.com: *Virtualization Overview* pdf баримт, хандсан 2016-03.24
* www.vmware.com: *Understanding Full Virtualization, Paravirtualization, and Hardware Assist*, pdf баримт, хандсан 2016-03.24
* www.ijitee.org: *Hypervisor: A Survey on Concepts and Taxonomy*, pdf баримт, хандсан 2016-03.24
* www.icdst.org: *Introduction to Virtualization*, pdf


Ангилал:Компьютерын архитектур