{"id":778,"date":"2012-06-21T16:20:55","date_gmt":"2012-06-21T08:20:55","guid":{"rendered":"http:\/\/www.dogeye.net\/?p=778"},"modified":"2012-06-21T16:20:55","modified_gmt":"2012-06-21T08:20:55","slug":"%e4%bb%80%e9%ba%bc%e6%98%af%e6%95%8f%e6%84%9f%e6%8c%87%e4%bb%a4","status":"publish","type":"post","link":"https:\/\/ykyi.net\/?p=778","title":{"rendered":"\u4ec0\u9ebc\u662f\u654f\u611f\u6307\u4ee4"},"content":{"rendered":"<p><span style=\"font-size: 14px; \">1974\u5e74\uff0c<\/span><span style=\"font-size: 14px; \">Popek\u548cGoldberg\u5728\u7f8e\u570b\u7535\u8111\u5354\u6703\u7684\u901a\u8a0a\u671f\u520a\u4e0a\u767c\u8868\u4e86\u4e00\u7bc7\u8ad6\u6587&quot;\u865b\u64ec\u5316\u7b2c\u4e09\u4ee3\u67b6\u69cb\u7684\u4e00\u822c\u6027\u8981\u6c42&quot;(Formal Requirements for Virtualizable Third Generation Architectures)\u3002\u5728\u9019\u7bc7\u6587\u7ae0\u4e2d\uff0c\u63d0\u51fa\u4e86\u654f\u611f\u6307\u4ee4\u7684\u6982\u5ff5\u3002<\/span><\/p>\n<p><span style=\"font-size: 14px; \">\u654f\u611f\u6307\u4ee4(<\/span><span style=\"font-size: 14px; \">Sensitive Instructions<\/span><span style=\"font-size: 14px; \">)\u7684\u5b9a\u7fa9\uff1a<strong> \u654f\u611f\u6307\u4ee4\u662f\u9019\u6a23\u4e00\u7d44\u6307\u4ee4\uff0c\u9019\u4e9b\u6307\u4ee4\u7684\u884c\u70ba\u53d6\u6c7a\u65bc\u6307\u4ee4\u57f7\u884c\u6642\u8655\u7406\u5668\u7684\u5de5\u4f5c\u6a21\u5f0f\uff0c\u4ee5\u53ca\u6307\u4ee4\u5728\u8a18\u61b6\u9ad4\u4e2d\u7684\u4f4d\u7f6e\u3002<\/strong><\/span><\/p>\n<p><span style=\"font-size: 14px;\"><b>&#8212;&#8212;-<\/b><\/span><\/p>\n<p><span style=\"font-size: 14px;\">\u5c0d\u654f\u611f\u6307\u4ee4\u7684\u8655\u7406\u662f\u865b\u64ec\u5316\u6280\u8853\u7684\u4e00\u500b\u95dc\u9375\u9ede\u3002\u5728\u7528\u6236\u614b\u57f7\u884c\u7684\u654f\u611f\u6307\u4ee4\u5982\u679c\u7e3d\u6703\u9020\u6210\u9677\u5165(always generates a trap)\uff0c\u9019\u6a23\u7684\u654f\u611f\u6307\u4ee4\u4e5f\u5c6c\u65bc\u7279\u6b0a \u6307\u4ee4\u3002\u5728\u4e0d\u4f7f\u7528Wmware\u63d0\u51fa\u7684\u52d5\u614b\u4e8c\u9032\u5236\u7ffb\u8b6f\u6a5f\u5236\u7684\u60c5\u6cc1\u4e0b\uff0c\u9664\u975e\u6240\u6709\u7684\u654f\u611f\u6307\u4ee4\u90fd\u662f\u7279\u6b0a\u6307\u4ee4\uff0c\u865b\u64ec\u6a5f\u7ba1\u7406\u7a0b\u5f0f\u624d\u80fd\u4fdd\u8b49\u6b63\u78ba\u904b\u884c\u3002\u63db\u8a00\u4e4b\uff0c\u5982\u679c\u67d0\u7a2e\u8655\u7406\u5668\u67b6\u69cb\u7684\u6240\u6709\u7684\u654f\u611f\u6307\u4ee4\u90fd\u662f\u7279\u6b0a\u6307\u4ee4\u7684\u4e00\u500b\u5b50\u96c6\uff0c\u6211\u5011\u5c31\u53ef\u4ee5\u8aaa\u9019\u7a2e\u8655\u7406\u5668\u67b6\u69cb\u662f\u53ef\u865b\u64ec\u5316\u7684\u3002\u5728\u9019\u7a2e\u60c5\u6cc1\u4e0b\uff0c\u6211\u5011\u5c31\u53ef\u4ee5\u809c\u7d93\u5178\u7684&ldquo;\u9677\u5165\u5f8c\u6a21\u64ec&ldquo;(trap-and-emulate)\u7684\u65b9\u6cd5\u5be6\u73fe\u865b\u64ec\u5316\u3002\u6309\u7167\u9019\u500b\u5b9a\u7fa9\uff0c\u5728\u5d4c\u5165\u5f0f\u5de5\u696d\u4e2d\u6700\u5e38\u898b\u7684ARM\u67b6\u69cb\u5247\u4e0d\u662f\u53ef\u865b\u64ec\u5316\u7684\uff0c\u56e0\u70baARM\u7684\u654f\u611f\u6307\u4ee4\u6709\u4e9b\u662f\u7279\u6b0a\u6307\u4ee4\uff0c\u6709\u4e9b\u5247\u4e0d\u662f\u3002<\/span><\/p>\n<p><span style=\"font-size: 14px; \">\u539f\u6587 from the paper <a href=\"http:\/\/systems.cs.columbia.edu\/files\/wpid-ols2010-kvmarm.pdf\" target=\"_blank\" rel=\"noopener\">&quot;KVM for ARM<\/a>&quot; by Christoffer Dall and Jason Nieh, Columbia University\uff1a<\/span><span style=\"font-size: 14px; \">Popek and Goldberg define sensitive instructions as the group of instructions where the effect of their execution depends on the mode of the processor or the location of the instruction in physical memory. A sensitive instruction is also privileged if it always generates a trap, when executed in user mode. The VMM can only guarantee correct execution without the use of dynamic translation if all sensitive instructions are also privileged. In other words, an architecture is virtualizable if and only if the set of sensitive instrucctions is a subset of the seet of privileged instructions. If that is the case, the VMM can be implemented using a classic trap-and-emulate solution. Unfortunately, ARM is not virtualizable as the architecture defines both sensitive privileged instructions and sensitive non-privileged instructions.<\/span><\/p>\n<p><a href=\"http:\/\/ykyi.net\">ykyi.net <\/a>\u7ffb\u8bd1<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1974\u5e74\uff0cPopek\u548cGoldberg\u5728\u7f8e\u570b\u7535\u8111\u5354\u6703\u7684\u901a\u8a0a\u671f\u520a\u4e0a\u767c\u8868\u4e86\u4e00\u7bc7\u8ad6\u6587&quot;\u865b\u64ec\u5316\u7b2c\u4e09\u4ee3\u67b6\u69cb\u7684\u4e00\u822c\u6027\u8981\u6c42&quot;(Formal Requirements for Virtualizable Third Generation Architectures)\u3002\u5728\u9019\u7bc7\u6587\u7ae0\u4e2d\uff0c\u63d0\u51fa\u4e86\u654f\u611f\u6307\u4ee4\u7684\u6982\u5ff5\u3002 \u654f\u611f\u6307\u4ee4(Sensitive Instructions)\u7684\u5b9a\u7fa9\uff1a \u654f\u611f\u6307\u4ee4\u662f\u9019\u6a23\u4e00\u7d44\u6307\u4ee4\uff0c\u9019\u4e9b\u6307\u4ee4\u7684\u884c\u70ba\u53d6\u6c7a\u65bc\u6307\u4ee4\u57f7\u884c\u6642\u8655\u7406\u5668\u7684\u5de5\u4f5c\u6a21\u5f0f\uff0c\u4ee5\u53ca\u6307\u4ee4\u5728\u8a18\u61b6\u9ad4\u4e2d\u7684\u4f4d\u7f6e\u3002 &#8212;&#8212;- \u5c0d\u654f\u611f\u6307\u4ee4\u7684\u8655\u7406\u662f\u865b\u64ec\u5316\u6280\u8853\u7684\u4e00\u500b\u95dc\u9375\u9ede\u3002\u5728\u7528\u6236\u614b\u57f7\u884c\u7684\u654f\u611f\u6307\u4ee4\u5982\u679c\u7e3d\u6703\u9020\u6210\u9677\u5165(always generates a trap)\uff0c\u9019\u6a23\u7684\u654f\u611f\u6307\u4ee4\u4e5f\u5c6c\u65bc\u7279\u6b0a \u6307\u4ee4\u3002\u5728\u4e0d\u4f7f\u7528Wmware\u63d0\u51fa\u7684\u52d5\u614b\u4e8c\u9032\u5236\u7ffb\u8b6f\u6a5f\u5236\u7684\u60c5\u6cc1\u4e0b\uff0c\u9664\u975e\u6240\u6709\u7684\u654f\u611f\u6307\u4ee4\u90fd\u662f\u7279\u6b0a\u6307\u4ee4\uff0c\u865b\u64ec\u6a5f\u7ba1\u7406\u7a0b\u5f0f\u624d\u80fd\u4fdd\u8b49\u6b63\u78ba\u904b\u884c\u3002\u63db\u8a00\u4e4b\uff0c\u5982\u679c\u67d0\u7a2e\u8655\u7406\u5668\u67b6\u69cb\u7684\u6240\u6709\u7684\u654f\u611f\u6307\u4ee4\u90fd\u662f\u7279\u6b0a\u6307\u4ee4\u7684\u4e00\u500b\u5b50\u96c6\uff0c\u6211\u5011\u5c31\u53ef\u4ee5\u8aaa\u9019\u7a2e\u8655\u7406\u5668\u67b6\u69cb\u662f\u53ef\u865b\u64ec\u5316\u7684\u3002\u5728\u9019\u7a2e\u60c5\u6cc1\u4e0b\uff0c\u6211\u5011\u5c31\u53ef\u4ee5\u809c\u7d93\u5178\u7684&ldquo;\u9677\u5165\u5f8c\u6a21\u64ec&ldquo;(trap-and-emulate)\u7684\u65b9\u6cd5\u5be6\u73fe\u865b\u64ec\u5316\u3002\u6309\u7167\u9019\u500b\u5b9a\u7fa9\uff0c\u5728\u5d4c\u5165\u5f0f\u5de5\u696d\u4e2d\u6700\u5e38\u898b\u7684ARM\u67b6\u69cb\u5247\u4e0d\u662f\u53ef\u865b\u64ec\u5316\u7684\uff0c\u56e0\u70baARM\u7684\u654f\u611f\u6307\u4ee4\u6709\u4e9b\u662f\u7279\u6b0a\u6307\u4ee4\uff0c\u6709\u4e9b\u5247\u4e0d\u662f\u3002 \u539f\u6587 from the paper &quot;KVM for ARM&quot; by Christoffer Dall and Jason Nieh, Columbia University\uff1aPopek and Goldberg define sensitive instructions as the group of instructions where the effect of their execution depends on the mode of the processor or &hellip; <a href=\"https:\/\/ykyi.net\/?p=778\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;\u4ec0\u9ebc\u662f\u654f\u611f\u6307\u4ee4&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[48,122],"class_list":["post-778","post","type-post","status-publish","format-standard","hentry","category-virtualization","tag-kvm","tag--virtulization"],"_links":{"self":[{"href":"https:\/\/ykyi.net\/index.php?rest_route=\/wp\/v2\/posts\/778","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ykyi.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ykyi.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ykyi.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ykyi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=778"}],"version-history":[{"count":0,"href":"https:\/\/ykyi.net\/index.php?rest_route=\/wp\/v2\/posts\/778\/revisions"}],"wp:attachment":[{"href":"https:\/\/ykyi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=778"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ykyi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=778"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ykyi.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=778"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}