看板Programming
标 题Re: [问题] dos为何要有记忆体配置的中断指令?
发信站中央大学松涛风情资讯站 (Sat Apr 14 12:21:02 2007)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ncu!news.csie.ncu!Evergreen
> ==>发信人: [email protected] ( ), 信区: programming
> > 因为各程式的执行间没有明显的resource isolation(包括register,
> > stack, heap, 记忆体和CPU资源). 对电脑本身来说, 不同的program
> > 在DOS时代只是command interpreter这process的延续.
> 昨天下班时想到, 其实也不尽然是这样.
> 在DOS4/5时, DOS有提供一个叫dosshell的程式, 可以让DOS下执行的程序
> 在某程度下达到task switching的效果 (虽然不是并列执行).
> 这样的话, DOS下有process的概念就成立了.
========
MS-DOS 反应的是 MicroSoft 很谨慎的, 不轻易去踩 Multi-Task 这个
领域, 例如由 command.com 这个 "父进程" 载入欲执行的 "子进程" 外
部程序时, 被解释为此 "父子进程是串行运行, 而串行运行是 MS-DOS 单
任务操作系统的特症". 要特地加上 "串行运行" "单任务" 的注释就是因
为 传统的 UNIX FORK Create Process 产生的是并行(Concurrent)的进
程(Running Program). OS Kernel 需要认得且去按 Process Status 决
定是否执行.
但如果一个置於记忆体的程式不会被执行, 那要干嘛 ? TSR(Terminate/
Stay Resident)通常都跟 Interrupt 的 ISR(Interrupt Service Routine)
串接, 发生对应的中断时会就事件情况一个个检查传递过去, 甚至是栏截而
去先处理, 但 TSR 的执行是由中断讯号启动的, 像个 ISR 而不是 Process.
而这个启动执行的中断是跟 OS 无关, DOS 根本不知道那个 TSR 被执行.
80286 CPU 在 Protection Mode 会启动硬体的 Task Switching 自动
按状态切换执行, 原来的 286 进入 Protection 只能靠 Reset 还原, 为了
这个原故, 就设计了 Pseudo Reset 时会改变 A20 这支脚的准位使之与原
来的 reset 要跳去开始执行的位址不同, 就能由 pseudo reset 产生一个
不同开始位址的 RESET 中断, 回到 Real Mode , 这就能切回支援档案系统
的 DOS 执行. 80386 是 Virtual Machine 架构, 不仅是 Virtual Memory
还支援了 Memory & I/O Protection , 还能在 80386 与 特殊的 8086
mode 切换, 後者是通称的 VM86 .
--
◎ Origin: 中央松涛站□bbs.csie.ncu.edu.tw From: 140.115.6.234
1F:嘘 dolphinus:他家的286好先进,大概火星上挖到的..218.168.202.230 04/15 00:14
2F:推 ephesians:挖不到就不能谈吗? 218.160.213.46 04/15 11:59