基本介紹
- 中文名:QEMM
- 外文名:Quarterdeck Expanded Memory Manager
- 領域:計算機
- 性質:一套存儲器管理軟體
概述,歷史,記憶體管理,延伸記憶體,
概述
QEMM可以訪問上層記憶區(UMA 或 UMBs)、擴展存儲器(EMS)、延伸存儲器(XMS)。因為大部分的DOS程式需要大量的傳統存儲器,QEMM可以把一些程式載入到上述存儲器區域,因而增加傳統存儲器的自由空間。當時許多軟體,例如Lotus 1-2-3、Microsoft Windows及一些遊戲軟體,都有使用EMS、XMS。
歷史
它本來叫做QEMM-386。微軟在MS-DOS 4.01加入了HIMEM.SYS for XMS, EMM386.EXE for EMS。較早的 Windows/386 2.1也包含內置EMM提供Windows內的DOS視窗所需的EMS。但這個版本並沒有造出Upper Memory Blocks.
1991年發行的MS-DOS 5.0終於提供了UMBs。MS-DOS的EMM386一定要HIMEM先被載入,但是另一品牌的作業系統DR-DOS卻不用。MS與DR的DOS都要上層記憶區被手動找到並載入,而且MS-DOS需要用戶預先定好多少存儲器要給EMS,多少存儲器要給XMS;然而功能強大的QEMM都不用以上這些額外步驟。
雖然QEMM功能較好,但是仍不敵微軟搭配MS-DOS出售的自行開發軟體,如MS-DOS 6的Memmaker程式。它的最後一版是QEMM 97,可以兼容Windows 95/98/ME, 但技術已經不太一樣。Windows 3.0與其後來版本加入了386增強模式,要求關閉所有的存儲器管理軟體。由於同一時間不可能有多個保護模式核心,而事實上,QEMM是叫Windows 載入特定的VxD周邊驅動程式,取代 Windows原本的功能,那就是WINHIRAM.VXD、WINSTLTH.VXD。
記憶體管理
可以想像一個很大的程式,當他運行時變成進程,而大部分的存儲器空間都被存到磁碟內虛擬記憶體地址,需要用到的部分才被載入到存儲器內部提供服務。
延伸記憶體
延伸記憶體(eXtended Memory),指的是超過1MB以上的記憶體空間,在配備Intel 80286或以上的CPU的IBMPC上。它是在1988年,由微軟、蓮花研究、英特爾和AST研究共同開會制定出來的規格,他們共同制定了延伸記憶體的定義、應用程式取用延伸記憶體的中斷呼叫,這個標準在MS-DOS的個人電腦時代,成為解決個人電腦記憶體不足的一種方法。
一般來說,在Intel 80286以上的個人電腦,超過640KB部分的RAM,通常都會對映到超過1MB以上的部分,使得在保謢模式下的程式可以存取它們。但即使沒有這種對映,還是有可能可以存取1MB以上的RAM。
延伸記憶體在真實模式只能透過EMS、UBM、XMS、HMA等方式來存取,只有在保護模式下執行的程式才可以直接存取到延伸記憶體。例如:Microsoft Windows,透過全域描述表(GDT)與多個局部描述表(LDT)可以存取這些記憶體,被稱為保護模式是因為被局部描述的節區不能被使用其他LDT的程式存取。被全域描述指派的記憶體節區有更嚴格的限制,當破壞時會引發硬體異常(通常是General Protection Fault),這使得在保護模式下執行的程式不會互相干擾。