看板Programming
标 题Re: [问题] dos为何要有记忆体配置的中断指令?
发信站中央大学松涛风情资讯站 (Sun Apr 15 10:05:29 2007)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ncu!news.csie.ncu!Evergreen
> ==>发信人: [email protected] (), 信区: 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
1F:→ ray2501:PSP (Program Segment Prefix) 囧 61.217.131.116 04/15 20:01
2F:推 jeunder:完全没有想回po的慾望. 他达到目的了-,-|| 61.64.87.130 04/16 02:31
3F:推 leicheong:btw, 这次终於有说VM386指迳拟记忆体了. 202.134.126.84 04/16 09:43