国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

羅云彬VxD教程--虛擬機(jī)管理器

2019-11-17 05:34:09
字體:
供稿:網(wǎng)友
虛擬機(jī)治理器(VMM)是Windows 95的實(shí)際操作系統(tǒng),它建立和維護(hù)一個(gè)治理虛擬機(jī)的框架,同時(shí)為其他vxd程序提供許多重要的服務(wù)。其中三種重要的服務(wù)是:
  • 內(nèi)存治理
  • 中斷處理
  • 線程調(diào)度

內(nèi)存治理

VMM使用Intel 80386或更新的處理器的內(nèi)存調(diào)頁能力來為系統(tǒng)虛擬機(jī)創(chuàng)建一個(gè)32位的虛地址空間。它把這個(gè)地址空間分為四個(gè)不同的部分:
  • V86區(qū) 地址從0H到10FFEFH,這個(gè)區(qū)屬于當(dāng)前執(zhí)行的虛擬機(jī)。
  • 應(yīng)用程序私有區(qū)地址從4MB到2GB。這是Win32應(yīng)用程序運(yùn)行的空間。每個(gè)Win32的進(jìn)程都有它自己的2GB(要減去4MB)。
  • 應(yīng)用程序共享區(qū)地址從2GB到3GB。這個(gè)區(qū)域是在虛擬機(jī)內(nèi)的所有 應(yīng)用程序共享的。系統(tǒng)DLL(user32,kernel32,gid32)都駐存在這里。所有的Win16程序也放在這里,因?yàn)樗鼈冃袨槎际遣灰?guī)范的的:它們對(duì)內(nèi)存中的其他Win16程序進(jìn)行讀寫。只有在這個(gè)區(qū)域里,Win16程序才可以看到其他所有的Win16程序。內(nèi)存映射文件和分配給DPMI的內(nèi)存也被存放在這里。
  • 系統(tǒng)共享區(qū)地址從3GB到4GB。這里是VMM和VXM存放的地方。
VMM為VxD程序提供三種VxD服務(wù):
  • 頁面內(nèi)存服務(wù) 這種服務(wù)分配/治理頁面大小為4KB的內(nèi)存。這是提供的最低級(jí)的服務(wù),其他所有的服務(wù)都是建立在頁面內(nèi)存服務(wù)上的。
  • 堆內(nèi)存服務(wù) 治理小的內(nèi)存塊。這種高級(jí)別的內(nèi)存治理服務(wù)建立在頁面內(nèi)存服務(wù)的基礎(chǔ)上。
  • 表服務(wù)治理可用來實(shí)行鏈結(jié)表的固定大小的內(nèi)存塊。

處理中斷

在保護(hù)模式下,中斷指向中斷描述表(IDT)。VMM通過VxD的幫助監(jiān)視虛擬機(jī)的IDT。通常VMM處理IDT內(nèi)幾乎所有的中斷入口。它進(jìn)行第一級(jí)的中斷處理:保存被中斷程序的狀態(tài),把控制傳送到第二級(jí)的中斷處理,第二級(jí)的中斷處理通常由各種VxD程序來進(jìn)行實(shí)際的處理。當(dāng)?shù)诙?jí)中斷處理程序完成了它的工作之后,它把控制轉(zhuǎn)交給重分派程序,由重分派程序來恢復(fù)被中斷程序的狀態(tài)并從先前被中斷的地方繼續(xù)執(zhí)行。
上面的描述太過簡單。由于被中斷的虛擬機(jī)的時(shí)間片可能已過,重分派也許不會(huì)馬上執(zhí)行。VxD程序通過VMM服務(wù)如:Set_PM_Int或Hook_V86_Int_Chain來安裝中斷處理。VxD程序不應(yīng)該直接改動(dòng)IDT中的中斷入口(除非你很確切的知道將發(fā)生的后果)。

線程調(diào)度

VMM使用兩個(gè)調(diào)度器組件來在虛擬機(jī)之間實(shí)現(xiàn)有優(yōu)先級(jí)的多線程處理:
  • 主調(diào)度器
  • 時(shí)間片治理器或副調(diào)度器
主調(diào)度器的任務(wù)是選擇有最高優(yōu)先級(jí)的線程來執(zhí)行。這種選擇在VMM處理一個(gè)中斷(如計(jì)時(shí)器中斷)時(shí)進(jìn)行。選擇的結(jié)果決定了當(dāng)VMM從中斷服務(wù)返回時(shí)由哪一個(gè)線程/虛擬機(jī)獲得控制權(quán)。主調(diào)度器工作的結(jié)果是確定的,一個(gè)線程要么獲得控制權(quán),要么沒有,只有一個(gè)線程可以得到控制權(quán)。VMM和其他的VxD可以通過VMM服務(wù)來調(diào)整線程的執(zhí)行優(yōu)先級(jí)。例如,當(dāng)一個(gè)硬中斷發(fā)生時(shí),VMM就會(huì)增加中斷處理的執(zhí)行優(yōu)先級(jí)以便讓它在盡可能短的時(shí)間內(nèi)有更高的機(jī)會(huì)被調(diào)用。
副調(diào)度器通過主調(diào)度器提供的服務(wù)來給享有最高優(yōu)先級(jí)的線程分配cpu時(shí)間。副調(diào)度器給每個(gè)線程一個(gè)時(shí)間片。當(dāng)一個(gè)線程執(zhí)行到它的時(shí)間片完結(jié)時(shí),副調(diào)度器就增加下一個(gè)線程的優(yōu)先級(jí),這樣它就會(huì)被主調(diào)度器選中并執(zhí)行。 你可以從Walter Oney's Systems PRogramming for Windows 95和Windows 95 DDK文檔里面得到關(guān)于這個(gè)問題的細(xì)節(jié)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 巩留县| 淳化县| 金堂县| 襄樊市| 玛曲县| 庆阳市| 台北市| 禹州市| 抚宁县| 庆元县| 涿鹿县| 莎车县| 双桥区| 荔浦县| 霞浦县| 陇西县| 丰镇市| 海原县| 古丈县| 奉化市| 丹江口市| 古田县| 黄平县| 江源县| 潮州市| 望谟县| 蒲城县| 和政县| 岐山县| 壤塘县| 县级市| 千阳县| 溧阳市| 铜川市| 南宁市| 北川| 东台市| 黔西县| 深水埗区| 呼玛县| 遂平县|