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

看板Programming作者時間18年前 (2007/04/14 04:32), 編輯推噓0(110)
留言2則, 2人參與, 最新討論串21/24 (看更多)
> ==>發信人: leicheong@kkcity.com.tw ( ), 信區: 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

04/15 00:14, , 1F
他家的286好先進,大概火星上挖到的..
04/15 00:14, 1F

04/15 11:59, , 2F
挖不到就不能談嗎?
04/15 11:59, 2F
文章代碼(AID): #1685b400 (Programming)
討論串 (同標題文章)
完整討論串 (本文為第 21 之 24 篇):
文章代碼(AID): #1685b400 (Programming)