Re: [問題] dos為何要有記憶體配置的中斷指令?

看板Programming作者時間17年前 (2007/04/15 10:32), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串22/24 (看更多)
> ==>發信人: jeunder.bbs@ptt.cc (), 信區: programming > http://www.ctyme.com/intr/rb-2980.htm > DOS 2+ internal - SET CURRENT PROCESS ID (SET PSP ADDRESS) > AH = 50h > BX = segment of PSP for new process > Notes: DOS uses the current PSP address to determine which processes own > files and memory; it corresponds to process identifiers used by other OSs. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 因為 DOS 載入程式的固定執行點或開頭是 offset 0100 , 此時 P-Segment 所在 之絕對位址是 psp:0000 , psp 就隨之固定可成為唯一的 id , 這個值也對應其他 os (如多工的 ccp/m CDOS) 用之於 Process ID . Win3.1 , Win95 開機是借助 DOS 在 檔案系統(這跟 Novell 網路 server 有關)的支援, 此開機 DOS 及其支援的網路與檔案系統, 因為早期還沒有這類 protection mode (Win32) 程式, 為了相容與過渡, 是在 286/386 cpu 的 Real Address Mode (R86) 下執行, 但部份 Window 程式則是在 286 Protection Mode 或 386 虛擬記憶體模式(VM386)硬體支援的多工下執行, 各別限用於此兩種模式的 程式則透過共同可以取得的 FFFF:0-ffff 高位址區塊交換訊息, 此時的 DOS 是 Real-86 模式執行, 但多工的管理是由 Window 進行. 當多數程式移往 Win32 之後, 如 Win9X 就逐漸不再依賴 R86(8086) 下的程 式, 逐漸使用 VM386 虛擬記憶體(與286保護模式相容)下的 Win32 程式, 此時的 DOS 大概就只用於初段的開機支援. 但在 VM386 (Virtual Memory)下若要直接執 行原來的 8086 模式程式就有困難, 此時 386 cpu 就提供接近 Virtual Machine 概念的 Virtual-86 模式支援, 這是由 CPU 透過硬體自動攔下低保護層狀態下的 illegal interrupt/trap , 完全透通地(不再是經由特殊方法支援的 pseudo reset 與特定共通區來往) 解決 8086 程式透過 INT 使用 I/O 的問題, 此時的 R86(8086) 程式是在 Virtual-86 支援下執行的, 這時可以有好幾個 DOS prompt 出現且可同時執行 8086 程式也可透過 INT 呼叫 原來 DOS 的 system call 或 其他 8086 程式(如 TSR), 但這時的 DOS OS 已完全被 Win9X 代替, 這時候多個 8086 程式被同時執行的現象是跟 DOS 無關的, 此時的 PSP 仍然可以沿用, 就如 同早期的用法可以被用來識別執行中的不同 8086 程式. Virtual-86(V86)不完全達到 VM(Virtual Machine)的要求, 通常無法對顯示 卡的 page bank memory 自動虛擬, 因此讓 Vmware 有展身手的機會. ====== 這個 PSP 規範, 原來大部份就是 MP/M CCP/M 使用的, 但有規範未必有真正 對應的實作, 而且可以是做到不同名稱下的新模組(如 Window-XX). -- ◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234

04/15 20:01, , 1F
PSP (Program Segment Prefix) 囧
04/15 20:01, 1F

04/16 02:31, , 2F
完全沒有想回po的慾望. 他達到目的了-,-||
04/16 02:31, 2F

04/16 09:43, , 3F
btw, 這次終於有說VM386指逕擬記憶體了.
04/16 09:43, 3F
文章代碼(AID): #168Owb00 (Programming)
討論串 (同標題文章)
完整討論串 (本文為第 22 之 24 篇):
文章代碼(AID): #168Owb00 (Programming)