日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第三章 虚拟化概述(处理器虚拟化)

發布時間:2023/12/9 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第三章 虚拟化概述(处理器虚拟化) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、指令模擬

??????? 處理器虛擬化的關鍵在于正確的模擬指令行為,其中涉及到三個概念:虛擬寄存器、上下文和虛擬處理器。

??????? 虛擬寄存器

??????? 從某種程度上說,物理處理器無非包括了一些存放數據的物理寄存器,并且規定了使用這些寄存器的指令集。程序代碼就是物理處理器按照一段預先寫好的指令流,在給定時間點使用給定的部分物理寄存器來完成某種目的。

??????? 在沒有虛擬化的環境中,操作系統直接訪問物理寄存器,處在最高級權限,可以控制系統中的所有關鍵資源,包括寄存器、內存和I/O外設。而當虛擬機接管物理處理器之后,操作系統運行在非最高級權限后,其試圖訪問關鍵資源的指令就成為了敏感指令。虛擬機會使用各種手段,保證敏感指令的執行能夠觸發異常,從而陷入到虛擬機中進行模擬,防止對虛擬機運行的破壞。

??????? 所以,當客戶機操作系統試圖訪問關鍵資源的時候,該請求不會真正發生在物理寄存器上。相反,虛擬機會通過準確的模擬物理處理器的行為,將其訪問定位到虛擬機為其設計與物理寄存器對應的虛擬寄存器上。當然,從虛擬機的實現上來說,這樣的虛擬器往往是在內存中。

??????? 上下文

??????? 在沒有虛擬化的環境中,操作系統直接負責物理處理器管理,負責進程間調度和切換。但當虛擬機接管物理處理器之后,操作系統運行在虛擬機為其設計的虛擬處理器上,并在虛擬處理器上負責該操作系統內進程間調度和切換。虛擬機管理物理處理器,負責虛擬處理器的調度和切換。

????????不管何種調度切換,必然要涉及到保留現場,這個現場就是上下文狀態。只不過,對于操作系統而言是進程上下文,對于虛擬機而言是虛擬處理器上下文。(程序運行在操作系統上以進程的形式存在,操作系統運行在虛擬機上以虛擬處理器的形式存在。虛擬機不關心虛擬處理器上運行的是操作系統還是其他的什么代碼,它面對的運行單元室虛擬處理器,它只負責虛擬機理器的上下文正確。而操作系統也一樣,它不管進程運行的是代碼有沒有longjmp,有沒有信號處理程序,它只負責進程上下文正確)

??????? 虛擬處理器上下文比進程上下文更負責,因為客戶操作系統本身包含許多敏感指令,會試圖訪問和修改物理處理器上定義的所有寄存器,而這種訪問和修改會被虛擬機重定位到虛擬處理器上。所以,對于虛擬處理器,其上下文包括了更多的系統的寄存器,上下文的保存和恢復也更為復雜。(曾經看過Linux和Fiasco內核中對虛擬化的支持,有大量的數據結構定義了物理處理器定義的寄存器,通用的系統的雜的。當然,不是全部的,因為操作系統一般不會使用全部的指令和寄存器。所定義的,也只是物理處理器定義的所有寄存器的子集)

??????? 虛擬處理器

??????? 虛擬處理器是一個邏輯上虛擬機的概念,而不是物理的概念,可分別從客戶操作系統和虛擬機去看待理解它。

??????? 客戶操作系統角度:要求虛擬處理器與其”期望“的物理處理器一致的功能和行為。典型的”期望“包括:

??????? 1、指令集合和執行效果

??????? 2、可用寄存器集合,系統的通用的

??????? 3、運行模式(運行模式決定了指令執行效果、尋址寬度與限制、保護粒度等)

??????? 4、地址翻譯系統

??????? 5、頁保護機制

??????? 6、中斷/異常機制

??????? 虛擬機角度:虛擬處理器是需要模擬完成的一組功能集合。虛擬處理器的功能可以由物理處理器和虛擬機共同完成。對于非敏感指令,物理處理器直接解碼處理,并將相關結果直接反應到物理寄存器上;而對于敏感指令,虛擬機負責陷入再模擬,并將相關結果反應到虛擬寄存器上。從程序角度出發,虛擬機陷入再模擬的這部分也就是一組數據結構(虛擬寄存器)和相關處理代碼(模擬指令)的集合。

??????? 概括來講,虛擬機利用了處理器的保護機制來完成的,其宗旨是讓敏感指令能陷入虛擬機中被模擬執行,而不是直接作用在真實硬件上。它有以下幾種方式:

??????? 1、基于處理器的保護機制出發的異常

??????? 2、主動觸發異常

??????? 3、異步中斷

二、中斷和異常的模擬及注入

??????? 異常保證了系統程序對處理器關鍵資源的絕對控制,而中斷提供了與外設之間更有效的一種交互模式。所以,虛擬機在實現虛擬機處理器時,必須正確模擬中斷與異常的行為。

??????? 異常模擬及注入

??????? 虛擬機對異常的虛擬化需要安全遵照物理處理器對于各種異常條件的定義,根據虛擬處理器當前的內容,來判斷是否需要模擬一個虛擬異常,并注入到虛擬環境中。

??????? 虛擬機通常會在異常處理程序和指令模擬代碼中進行異常虛擬化檢查。虛擬機需要區分兩種情況:

??????? 1、虛擬機異常。虛擬機自身對運行環境和上下文的設置違背了指令正確執行的條件。

??????? 2、客戶代碼異常??蛻舸a運行在非最高特權級,由于虛擬化原因觸發的異常。

??????? 第二種情況是由于陷入再模擬的虛擬化方式所造成的,并不是虛擬機本身的行為。

??????? 中斷模擬及注入

??????? 物理中斷的觸發來源于特定的物理中斷源,同樣,虛擬中斷的觸發來自于虛擬設備的模擬程序。當設備模擬器發現虛擬設備狀態滿足中斷產生的條件,會將這個虛擬中斷通知給中斷控制器的模擬程序。虛擬機會在特定的時候檢測虛擬中斷控制器的狀態,來決定是否模擬一個中斷的注入。

??????? 不管怎樣,當虛擬機決定向虛擬機注入一個中斷或是異常時,它還需要嚴格模擬物理處理器的行為來改變客戶指令流的路徑,而且還要包括一些必需的上下文保護與恢復。

??????? 中斷/異常的虛擬化由中斷/異常源定義,中斷/異常源與虛擬機處理器虛擬化模塊間的交互機制以及最終模擬注入的過程組成。

??????? (以前看Fiasco代碼時,里面對中斷的模擬就有chip數據結構。當時對中斷虛擬化了解不多,對x86中斷過程了解不夠徹底,導致我總以為這部分代碼是多余的,哈哈)

三、對稱多處理器技術的模擬

??????? 虛擬機也可以為客戶操作系統提供多個虛擬處理器,也就是客戶對稱多處理器虛擬化技術,客戶操作系統與虛擬機按照自己的邏輯管理虛擬處理器。

?????? 在客戶對稱多處理器引入后,虛擬機面臨著物理處理器以及虛擬處理器之間的同步問題。(同步鎖問題,而不是內存的硬件同步,其實仔細想想,內存的硬件同步問題在這個環境中不存在)

??????? 1、對于發生在虛擬機上的同步問題,由虛擬機負責協調物理處理器之間同步問題。

??????? 2、對于發生在客戶操作系統上的同步問題,虛擬機并不參與。只需要在客戶操作系統發起某些特權同步操作,如刷新頁表,清理cache時,正確的模擬其效果即可。

??????? 3、對于虛擬機造成的虛擬處理器之間的同步問題,仍需要虛擬機來負責。比如,當N個虛擬處理器,運行在M(N<M)個物理處理器上時,虛擬機需要負責所有M個物理處理器上的狀態同步。(我理解的就是,虛擬處理器可能遷移到不同的物理處理器上,其cache不一樣可能導致遺留,復用垃圾)

??????? 客戶對稱多處理技術需要模擬一套初始化及通信機制,以便讓客戶操作系統能正確的識別并管理虛擬處理器。這套方式甚至可以自定義一套簡單的協議,但必須修改客戶操作系統代碼以適應。

總結

以上是生活随笔為你收集整理的第三章 虚拟化概述(处理器虚拟化)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。