看板Programming
标 题Re: [问题] dos为何要有记忆体配置的中断指令?
发信站中央大学松涛风情资讯站 (Wed Apr 11 20:12:38 2007)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ncu!news.csie.ncu!Evergreen
> ==>发信人: [email protected] (), 信区: programming
> ※ 引述《[email protected] (try or test)》之铭言:
> : > 其实最直接的原因就是为了要空出来给 child process.
> : DOS 没有 multi-process 或 multi-task 的概念.
> 我没说 dos 有 multi-process 或 multi-task 的概念.
> dos 可以执行 single process, 并且还可以 create child process. (依此类推)
> 你在 dos command line 下输入的 command 就是由 command interpreter
> 这个 process 负责处理的.
> 如果你的 command 是要执行某个 program, 那麽 command interpreter
> 会将记忆体空出, 然後执行你指定的 program.
> 而这个 program 就是 command interpreter 的 child process.
> 以前记忆体不够用怎麽办? 把程式切成几个独立的子执行档 (child),
> 然後再由主执行档(parent)根据需求来决定要 load 哪个 child.
> 听说这在以前被称为 overlay, 当然不像现代 OS 的 swap-out 那麽先进罗.
你当然是可以这样 "自行解释" 一番, 问题是别人是否也这样的 "同一种认知" ?
现在的 OS 教科书喜欢用 "演化" 来表达作业系统在不同年代的变化. 但术语与
专业是相关的, 用错术语的麻烦就是会引起误会. 虽然 DOS 比 UNIX 出现的晚,
但用错比喻还是会有被误会的麻烦.
以历史来看, 古代的事件与术语当然可以用现代的术语去叙述使得现代人比较
容易 "认知", 但概略的认知跟精确的表达是有差异的.
通常, DOS 的 command.com 或 command.exe 这个 CLI 在置入程式再将 CPU
的执行控制权交给这个程式去执行时, 不会用 create child process 这个术语,
因为 OS 对这个程式的 "process state" 没有掌控与细部记载, 也不会将执行的
程式视为 process , 因为 DOS 不具备 process 的 cpu 管理概念, DOS 的前身是
来自 CP/M , 这个 OS 用的名称是 Control Program/Monitor , DOS 如其名尽止
於 Disk (supported) OS.
利用 "中断" 达到交错性多工并行, 跟利用 DMA 让 I/O 装置与 CPU 达到平行式
多工并行是来自於硬体的支援, 硬体有这样的支援, 但是否要用软体(OS)的 Multi
Processing 软体架构与概念来实现这是两件事. DOS 的常驻 TSR 程式通常都跟
"中断" 有关, 也因为中断指向(Vector)的程式码需割出个记忆体使之可容身常驻,
才不致於跳错位置找错指令.
--
◎ Origin: 中央松涛站□bbs.csie.ncu.edu.tw From: 140.115.6.234
1F:推 ephesians:(拍手) 61.231.67.178 04/12 01:42