文章編號: 95555 - 上次校閱: 2003年5月12日 - 版次: 2.0 在 MS-DOS 的記憶體管理功能的概觀
在此頁中結論這份文件包含符合以 [擴充記憶體規格 」 (EMS) 的方式擴充記憶體的概觀,且符合到延伸記憶體規格 (XMS) 的延伸的記憶體為建立且在 MS-DOS 版本 5.0] 和 [另稍後由裝置驅動程式 HIMEM.SYS 和 EMM386.EXE 管理。也討論如何 MS-DOS 會載入至最高的記憶體區域 (HMA),並管理上層記憶體區塊 (UMBs)。 注意: 前閱讀本文,您可能希望檢閱列印的 MS-DOS 文件中有關記憶體管理、 HIMEM.SYS 和 EMM386.EXE 區段。如果您使用 MS-DOS 6.0、 6.2、 6.21 或 6.22,請參閱線上說明。比方說 協助 emm386.exe 在提示 MS-DOS 命令字元中輸入。 本文中的資訊組織,如下所示:
其他相關資訊舊的擴充記憶體配置方法: 插斷 15 h VDisk 標頭 (& I)在過去有個程式配置延伸的記憶體的兩種方法: 由上而下 (使用插斷 15) 和由下而上 (使用 VDisk 標頭)。插斷 15 h 會是 ROM BIOS 的服務,包括數個延伸至原始的 PC ROM BIOS,包括方法來找出多少 RAM (傳統加延伸) 是在系統上。程式使用這項服務,以找出有多少延伸記憶體、 然後攔截"插斷 15 h 以及報告沒有 <n>個 K 較少的記憶體可用,有效地切割 <n>個 K 的延伸記憶體的任何其他程式來關閉頂端。執行此動作程式就已將其自己的擴充的記憶體配置從記憶體集區的上方。 藉由檢查郵件標頭指出該 <n>K 的 RAM 的延伸記憶體的開頭由下而上的記憶體配置運作正在使用中。如果標頭是有,程式會檢查 <n>個 K 進一步的另一個標頭。如果沒有標頭程式置於它自己的標頭。這些標頭稱為 VDisk 標頭,因為原始的 IBM DOS RAM 磁碟公用程式 (VDISK.SYS) 使用這個方法。 這些方法的缺點是記憶體配置給程式後解除配置它通常是不可能。[XMS 被為了讓配置及解除配置擴充的記憶體更容易所有涉及而設計的。 HIMEM.SYS 建立 XMS 記憶體HIMEM.SYS 實作所有 XMS 選擇性 UMB 部分除外。 稍早 HIMEM.SYS 版本比 3.0 XMS 2.0 相容且辨識 16 MB 的 RAM,版本 3.0 和更新版本 (第隨附 Windows 3.10 和 MS-DOS 6.0) 是相容的 XMS 3.0,辨識 4 GB。上載入,HIMEM.SYS 會決定可用的延伸記憶體量。 除非使用 /INT15 載入它 = 選項,HIMEM.SYS 設定 XMS 記憶體 (請注意所有可用的延伸記憶體實際配置不會發生直到程式使 XMS 函式呼叫) 做為配置所有可用的延伸的記憶體。HIMEM.SYS 保留 HMA VDisk 標頭,並攔截插斷 15 h。要不使用 XMS 使用擴充的記憶體 (而非 HMA) 的程式,進行直到程式實際要求 XMS。 程式實際上索取 XMS 記憶體 HIMEM.SYS 使用其插斷 15 h 攔截程序來通知程式只有 /INT15 所指定的延伸記憶體的數量之後 = 減去 HMA (64K) 的 xxxx、 可供使用。 透過 /INT15 可用記憶體 = xxxx 是實際位於上方 HMA; XMS 管理 RAM 實際上位上述任何 /INT15 = xxxx RAM。 A20 和 [HMA[HMA 定義為 FFFF:0010-FFFF:FFFF 80286 和較高這些地址在具有可定址的實體 RAM 的系統上。此區域可處理在真實模式 (8086 模擬) 在 80286 和較高的系統上如果 21st 的地址行 (A20) 啟用,而產生的額外的可用 RAM 64 K-16 個位元組。上 8086 或 80 x 86 A20 行以停用換 FFFF:0010 」 行周圍 」,而且 0000 相同: 0000。開啟及關閉這一行使用鍵盤連接埠完成,而且是相依的硬體。HIMEM.SYS 包含許多不同的機器的"A20 處理常式 」。[XMS 配置及解除配置為一個區塊 HMA,也就是只能有一個程式可以使用它一次。MS-DOS 5.0,並稍後可以在中執行 [HMA 如果 DOS = 高是在 CONFIG.SYS 檔案中。 DOS = 高詢問 [HMA 中執行的 MS-DOS如果 DOS = LOW 或沒有 DOS = 命令是在 CONFIG.SYS 檔案中,初始化並載入至其最終位置之前 [DEVICE 低記憶體中 MS-DOS 和其資料 = 和 DEVICEHIGH = 處理命令。如果在 DOS = 高命令是在 CONFIG.SYS 檔案中、 MS-DOS 資料 (後者必須保持低的相容性) 載入它在傳統記憶體中的最後位置。初始化每一個裝置驅動程式之後檢查由決定是否已經安裝 XMS 驅動程式。如果是這樣,和 [HMA 是可用,MS-DOS 被移到 [HMA 中。如果不,MS-DOS 會持續檢查每個 DEVICE [高] 後 = 指令,並再開始處理 「 安裝 = 命令。 如果一個 DOS = 高命令存在,但 MS-DOS 尚未載入的高 (如果沒有 XMS 驅動程式已載入或 [HMA 並未可用),MS-DOS 報告 」 HMA 不可以使用/載入 DOS 低 」 並載入本身傳統記憶體之上所有可安裝的裝置驅動程式和 (或) 終止和-保持-常駐 (TSR) 程式與安裝一起載入 =。 會暫時性 COMMAND.COM 部分保留在傳統記憶體是否載入 MS-DOS 高重要性或低。大部份的 COMMAND.COM 常駐部份、 任何的軟體程式碼網頁和磁碟緩衝區 (通常) 也載入最高如果 DOS = 高是在 CONFIG.SYS 檔案中。 EMM386.EXE [RAM | NOEMS] 使用 XMS 建立 EMS UMBs 和 (或)EMM386.EXE 是 80386 和較高的系統與 XMS 記憶體的裝置驅動程式。 EMM386.EXE 使用 XMS 記憶體,以建立及管理 EMS 記憶體及/或 XMS 上層記憶體區塊 (UMBs)。EMS 是透過 EMS 4.0 程式可用的介面; UMBs 都可以透過 XMS 介面。提供 UMBs 時, EMM386.EXE 回答 「 只要求來配置或解除配置 UMBs ; 所有其他的 XMS 記憶體由 HIMEM.SYS 管理。在 [載入,EMM386.EXE 會顯示其活動的報告。而在其他方面這份報告包含:
注意: EMM386.EXE 版本 4.45 和以後不要顯示在啟動時除非 [/VERBOSE 切換會使用這項資訊。 DOS = UMB 詢問 MS-DOS 管理 UMBs在 DOS = UMB 命令會要求來配置可透過其本身 XMS 任何 UMBs MS-DOS。在 MS-DOS 然後 UMBs 可透過它自己的記憶體管理服務中進行插斷 21 h 包括:Function Description Version ------------------------------------------------------- 48h Allocate memory 2.0 49h Free allocated memory 2.0 4Ah Set memory block size 2.0 5800h Get allocation strategy 2.0 5801h Set allocation strategy 2.0 5802h Get upper-memory link status 5.0 5803h Set upper-memory link status 5.0 使用者可以決定 MS-DOS 是否有可用任何 UMBs 使用 MEM/C] 指令。程式可以使用插斷 21 h,函數 5803h 來決定 UMBs 是否存在。 DEVICEHIGH = [<drive>:] [\ <path>\] <filename>[DEVICEHIGH = 命令會要求裝置驅動程式檔案可載入至 MS-DOS UMB 是否有夠大的一個可用。驅動程式是否有未載入傳統記憶體,並執行 ; 沒有錯誤就會顯示依 MS-DOS。LH (LOADHIGH)[LH (或 LOADHIGH)] 命令會告訴夠大的 MS-DOS 程式檔案載入到 MS-DOS UMB,如果有可用的話。如果有不想想看,程式是載入傳統記憶體,並執行 ; 沒有錯誤顯示由 MS-DOS。DEVICEHIGH 和與 /l: LOADHIGH 與/S如果您使用 MS-DOS 版本 6.0、 6.2、 6.21 或 6.22,您可以使用/L 和/S 切換參數來控制到哪個程式或裝置驅動程式已載入的記憶體區域。DEVICEHIGH [[/L:region1[,minsize1][;region2[,minssize2] [/S]]= / S 參數,將 [UMB 縮小以最小大小 (minsize) 載入程式時。這個參數可以只使用配合 /L: 切換控制,並會影響的 UMBs 指定了大小最小值。 下列是範例: LOADHIGH /L:1,12194;2,34213 /S C:\PROGDIR\PROGRAM.EXE 注意: 而不是嘗試手動設定的記憶體區域的程式載入到 MS-DOS 6.0,6.2、 6.21 和 6.22 使用者鼓勵執行 MemMaker 記憶體最佳化程式。若要執行 MemMaker,請在 MS-DOS 命令提示字元中輸入 memmaker。 MEM 會報告的記憶體管理 MS-DOS如果 MS-DOS 管理 UMBs (DOS = UMB),MEM/C 或 MEM/D 包含 [UMA 中它的報表。MS-DOS 不管理任何區域這份報表中標示為 「 系統 」。如 UMB 資訊輸入 mem/c | 更多 在 MS-DOS 命令提示字元。(請注意,如果您使用 MS-DOS 6.0 或稍後,您可以鍵入 mem/c/p,一次檢視記憶體報告一個畫面)。如果 MS-DOS 不管理 [UMBs,MEM 就不會報告 「 UMA 上。其他 UMB 管理員通常會有一些方法來判斷最高正在載入。 請檢查文件 UMB 經理以取得詳細資料。 MEM 也包括擴充的記憶體 (使用插斷 15/VDisk 標頭介面決定)、 (透過 XMS 2.0 或 3.0 介面報告),XMS 和 (透過 EMS 3.2 或 4.0 介面報告) EMS,為了方便起見的相關資訊。 如何使用 MS-DOS 延伸或擴充記憶體在整體 MS-DOS 不會使用或載入應用程式的一般使用延伸或擴充記憶體。不過,某些 MS-DOS 公用程式和驅動程式使用的資料區域的 [擴充或展開記憶體]。此外,5.0 或更新的 MS-DOS 版本載入大部分的 MS-DOS 核心、 命令直譯器、 字碼頁 (如果使用的話),而且也就是第一個 64 K 的延伸記憶體到 [HMA 磁碟緩衝區。 以下哪一個 MS-DOS 公用程式使用延伸的記憶體的延伸的記憶體驅動程式沒有外框資料表擴充透過一個 XMS 驅動程式的記憶體,或展開透過 Lotus Intel Microsoft (LIM) EMS 驅動程式的記憶體。 這些公用程式載入常設記憶體,但 nonconventional 記憶體用於資料區域。因為不同版本的 MS-DOS 隨附許多公用程式也會隨附 Microsoft Windows,Windows 版本都包含在此資料表中。Microsoft 建議您不要混合版本所包含的不同產品這些驅動程式。
Non-XMS
Conv. Extended XMS LIM 3.2/4.0 EMS
------------------------------------------
RAMDRIVE.SYS 3.3 Yes Yes No Yes
RAMDRIVE.SYS 4.x Yes Yes No Yes
RAMDRIVE.SYS Win30 Yes No Yes Yes
RAMDRIVE.SYS 5.x Yes No Yes Yes
RAMDRIVE.SYS Win31 Yes No Yes Yes
RAMDRIVE.SYS 6.0-6.22 Yes No Yes Yes
SMARTDRV.SYS 4.x No Yes No Yes
SMARTDRV.SYS Win30 No No Yes Yes
SMARTDRV.SYS 5.x No No Yes Yes
SMARTDRV.EXE All No No Yes No
HIMEM.SYS (1) All No Yes Provider No
EMM386.SYS(2) 4.x No Yes No Provider
EMM386.SYS(3) Win30 No No Yes Provider
EMM386.EXE(3) All No No Yes(4) Provider
(1) Uses extended memory to provide XMS memory
(2) Uses extended memory to provide EMS memory
(3) Uses XMS memory to emulate EMS memory
(4) MS-DOS 5.0 and later EMM386.EXE can also be configured to
provide UMBs according to the XMS. This causes EMM386.EXE
to be a provider of the UMB portion of the XMS.
緩衝區和 em 和/x 5.0 或更新的 MS-DOS 版本不支援載入磁碟緩衝區 EMS 記憶體中。這些版本支援載入 MS-DOS 核心,而且如果沒有房間,磁碟緩衝區成 [HMA。MS-DOS XMS 通訊協定透過存取 [HMA。 可用的參考藉由呼叫 (800) 538-3373 Intel 提供了正式 LIM EMS 規格 」 Lotus/Intel/Microsoft 擴充記憶體規格版本 4.0,"。官方 XMS 規格 」 延伸記憶體規格版本 3.0,"是可用免費從 Microsoft。若要取得規格,請以下"指示的下載 > 一節。 使用從 Microsoft 請按 (藉由呼叫 [800] 677-7377) 或國際到企鵝叢書官方 MS-DOS 程式文介面件,"Microsoft MS-DOS 程式設計人員參考 >。 這篇文章中的資訊適用於:
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:95555?
(http://support.microsoft.com/kb/95555/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群文章翻譯 |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email



回此頁最上方