{"id":84,"date":"2008-05-18T06:42:00","date_gmt":"2008-05-18T06:42:00","guid":{"rendered":"http:\/\/wp.neependra.net\/?p=84"},"modified":"2008-05-18T06:42:00","modified_gmt":"2008-05-18T06:42:00","slug":"why-para-vitualization-was-needed","status":"publish","type":"post","link":"https:\/\/neependra.net\/index.php\/2008\/05\/18\/why-para-vitualization-was-needed\/","title":{"rendered":"Why Para-vitualization was needed?"},"content":{"rendered":"<p><span style=\"font-weight: bold;\">Why Para-vitualization was needed?<br \/><\/span>I had this question in my mind for some time but the answer was not clear to me. So, I read some docs and figured it out.<br \/><span style=\"font-weight: bold;\"><br \/>From http:\/\/en.wikipedia.org\/wiki\/Intel-VT<br \/><\/span>x86 virtualization is the method by which x86-based &#8220;guest&#8221; operating systems are run under another &#8220;host&#8221; x86 operating system, with little or no modification of the guest OS. The x86 processor architecture did not originally meet the Popek and Goldberg virtualization requirements. As a result, it was very difficult to implement a general virtual machine on an x86 processor.<span style=\"font-weight: bold;\"><\/p>\n<p>From http:\/\/www.kernelthread.com\/publications\/virtualization\/<br \/><\/span>One of the most popular architectures, IA-32(x86), is not virtualization friendly. The analysis in a paper titled Analysis of the Intel Pentium&#8217;s Ability to Support a Secure Virtual Machine Monitor reports at least seventeen instructions on the Pentium that make it &#8220;non-virtualizable&#8221;. IA-32&#8217;s privileged instructions cause a General Protection Exception when executed in non-privileged mode. Instructions like STR can be problematic: STR can be executed at any privilege level, but it tells you the security state of the machine (the value it retrieves has the Requestor Privilege Level, or RPL).<br \/><span style=\"font-weight: bold;\"><br \/>To overcome this guest OS was modified, so that it was aware that it is being virtualized.<\/span><br \/><span style=\"font-weight: bold;\">And this is called para-vitualization.<\/span><br \/><span style=\"font-weight: bold;\"><br \/>From http:\/\/www.ibm.com\/developerworks\/linux\/library\/l-linux-kvm\/<br \/><\/span>Older x86 processors produce different results for certain instructions depending upon the domain of execution. This creates a problem, because the hypervisor should execute in only the most protected domain. For this reason, virtualization solutions such as VMware will pre-scan code that is to execute to replace these instructions with trap instructions so that the hypervisor can handle them appropriately. Xen, supporting a cooperative method of virtualization, requires no modification, because the guest is aware that it&#8217;s being virtualized and is modified. KVM simply ignores this problem and mandates that if you want virtualization, you&#8217;ll have to run on newer hardware.<span style=\"background-color: rgb(255, 255, 0);\" name=\"textmarker_36\" id=\"textmarked_45\"><\/span><br \/><span style=\"background-color: rgb(255, 255, 0); font-weight: bold;\" name=\"textmarker_23\" id=\"textmarked_21\"><\/span><span style=\"background-color: rgb(255, 255, 0); font-weight: bold;\" name=\"textmarker_22\" id=\"textmarked_20\"><\/span><span style=\"background-color: rgb(255, 255, 0); font-weight: bold;\" name=\"textmarker_21\" id=\"textmarked_19\"><\/span><span style=\"background-color: rgb(255, 255, 0);\" name=\"textmarker_24\" id=\"textmarked_23\"><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Why Para-vitualization was needed?I had this question in my mind for some time but the answer was not clear to me. So, I read some docs and figured it out.From http:\/\/en.wikipedia.org\/wiki\/Intel-VTx86 virtualization is the method by which x86-based &#8220;guest&#8221; operating systems are run under another &#8220;host&#8221; x86 operating system, with little or no modification of &#8230; <a title=\"Why Para-vitualization was needed?\" class=\"read-more\" href=\"https:\/\/neependra.net\/index.php\/2008\/05\/18\/why-para-vitualization-was-needed\/\" aria-label=\"Read more about Why Para-vitualization was needed?\">Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[48],"tags":[],"class_list":["post-84","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/neependra.net\/index.php\/wp-json\/wp\/v2\/posts\/84","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/neependra.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/neependra.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/neependra.net\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/neependra.net\/index.php\/wp-json\/wp\/v2\/comments?post=84"}],"version-history":[{"count":0,"href":"https:\/\/neependra.net\/index.php\/wp-json\/wp\/v2\/posts\/84\/revisions"}],"wp:attachment":[{"href":"https:\/\/neependra.net\/index.php\/wp-json\/wp\/v2\/media?parent=84"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/neependra.net\/index.php\/wp-json\/wp\/v2\/categories?post=84"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/neependra.net\/index.php\/wp-json\/wp\/v2\/tags?post=84"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}