freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

虛擬機淺析word版(已修改)

2025-05-23 17:36 本頁面
 

【正文】 虛擬機淺析 虛擬機淺析 20210607 10: 36最近抽空翻看了《虛擬機 系統(tǒng)與進程的通用平臺》一書,又在網(wǎng)上翻了一些關(guān)于虛擬機的文章,受益非淺,略記一些自己的理解。 計算機系統(tǒng)由上自下主要可以分為三個層次:應用程序 操作系統(tǒng) 硬件平臺。由此,就出現(xiàn)了兩種主要的虛擬機:進程虛擬機和系統(tǒng)虛擬機。進程虛擬機為一個應用程序提供虛擬的運行環(huán)境,它需要對操作系統(tǒng)和硬件平臺 (或二者之一 )作虛擬;而系統(tǒng)虛擬機則為操作系統(tǒng)提供虛擬環(huán)境,主要是對硬件平臺的虛擬。 進程虛擬機 進程虛擬機對操作系統(tǒng)和硬件平臺進行虛擬,以滿足應用程序的運行要求。進程虛擬機一般作為主機上的一個進程來運行,這個進程裝載客戶軟件,然后仿真運行之。舉例來說,進程虛擬機可以讓 windows 下的軟件在 linux 上運行(wine 就是這樣一個虛擬機,不過它只是對操作系統(tǒng)的虛擬,并不涉及指令集的仿真 )。 進程虛擬機大體上基于如下功能模塊來實現(xiàn): (摘自《虛擬機》 ) 進程虛擬機啟動以后,加載器將客戶軟件加載到內(nèi)存,并完成相關(guān)的初始化工作,包括對各種信號處理函數(shù)的設置等。 初始化完成后,客戶軟件的代碼被當作數(shù)據(jù),由仿真引擎 讀取,并進行解釋或翻譯。 仿真執(zhí)行 仿真引擎讀取到的客戶軟件是一系列的指令集合,這些指令可能需要兩個層面的仿真: 一、指令集的仿真。如果客戶軟件的指令集與主機不相同,則需要將其翻譯成主機的指令集。 比如 X86 下的指令 add%eax,4 可能需要替換成 PPC 下的 addi r4,r4,4。除了指令的變換,寄存器、內(nèi)存地址都需要做相應的變換。比如 X86 下的 eax 替換成 PPC 下的 r4。因為 PPC 的寄存器比 X86 要多很多,這種寄存器的直接替換是可行的。但是如果反過來呢 ?用 X86 來仿真 PPC 的時候就不能這樣做了,實在不行 只能將寄存器映射到內(nèi)存上面 (可憐的是內(nèi)存比寄存器要慢很多 )。內(nèi)存地址也是需要變換的,客戶軟件在運行的時候總是認為整個內(nèi)存地址空間都是屬于自己的 (盡管并不是所有地址空間都會使用 ),但是當它在進程虛擬機上面運行時,有一部分內(nèi)存空間卻是屬于虛擬機本身的。進程虛擬機在仿真時需要對客戶軟件所使用的內(nèi)存地址進行映射,使其不與虛擬機自己使用的內(nèi)存相沖突。簡單的做法是給內(nèi)存地址加一個基值,而虛擬機使用的內(nèi)存都小于這個基值。 另外,像 add 這樣的指令還會改變條件碼 EFLAGS 寄存器。于是,在仿真完增加 的功能之后,還需要進 行一系列的判斷來決定每一個條件碼是否應該被置位 (比如溢出標記、零結(jié)果標記、等 )。這樣做會非常的累,所以虛擬機往往會采用懶惰的做法:對于每一個條件碼,記錄下最后一條會影響到它的指令。而當有后續(xù)指令需要關(guān)心某個條件碼時,再找到這條影響條件碼的指令,判斷這個條件碼是否應該被置位。 二、系統(tǒng)調(diào)用的模擬。如果客戶軟件與主機使用的不是同一操作系統(tǒng),則需要對系統(tǒng)調(diào)用進行模擬。 客戶軟件中的系統(tǒng)調(diào)用代碼將被替換成主機上的相關(guān)調(diào)用 (也可能不是系統(tǒng)調(diào)用 )。但是有些時候,系統(tǒng)調(diào)用卻是無法模擬的。比如 linux 下的 fork,在windows 下就難以模擬。 異常也是操作系統(tǒng)模擬的一個部分,比如進程虛擬機收到一個信號,可能需要報告給客戶軟件。要實
點擊復制文檔內(nèi)容
畢業(yè)設計相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1