看板Programming
标 题Re: [问题] dos为何要有记忆体配置的中断指令?
发信站KKCITY (Mon Apr 16 11:51:39 2007)
转信站ptt!ctu-reader!ctu-peer!news.nctu!netnews.chu!Leo.mi.chu!zoonews.ee.nt
※ 引述《[email protected] (try or test)》之铭言:
> 因为 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 代替, 这时候多个
并没有代替, 只要是 win9x 都是用类似 fork() 的方式复制 DOS 分身
一些 DOS TSR 及 softice 都靠这功能, ex:
在 win.com 之前跑 doskey 会让每个 dos 都有 doskey,
之後跑就只在该 dos win 有效
win9x 不是逐渐变成 XP, 而是被不想维护两个 OS 的 M$ 丢掉, 只剩下 NT
--
┌─────◆KKCITY◆─────┐ ◢╱ 只要你
通过身份认证 ~ ◥█
│ bbs.kkcity.com.tw │ █▉─ 免经验、五人连署即开班系板 ◥
└──《From:59.120.53.7
》──┘ ◥╲ 赶快为班上设个
秘密基地吧!
◢
--