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

看板Programming作者時間17年前 (2007/04/11 02:17), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串9/24 (看更多)
※ 引述《tester.bbs@bbs.csie.ncu.edu.tw (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 那麼先進囉. : 是為了 TSR 或 driver , 如 RAM-Disk 等長駐於記憶體之用. 當然不是! 常駐方法1: int 21h / ah=31h ( http://www.ctyme.com/intr/rb-2723.htm ) 常駐方法2: int 27h ( http://www.ctyme.com/intr/rb-4120.htm ) 兩種方法顯然都只要在暫存器 dx 指定需要 keep 住的記憶體量就可以, 不需要用到原 po 說的 resize memory (int 21h / ah=4ah) 然後你說到 driver 如 ram-disk ... 等, 也不是用 system call 來配置本身的記憶體. dos 本身有一套 device driver model. 一個 driver 需要保留的記憶體量, 是在當 dos 呼叫 driver 的 interrupt callback, 並且 command_code = driver_initialization 時, driver 會在一個 structure 裡 的欄位填入需求記憶體量, 以便回傳給 dos, 告知需求. ( Chapter 14 of http://www.hadassah-col.ac.il/CS/Staff/Martin/micro_modern/masm/advdos.txt ) : 他的多工並行來自 Interrupt 及 DMA 等驅動動作. 多工並行? 那到底您說 dos 是不是 multi-task? multi-process? : 通常在主記憶體的高低兩端做分割使需要的程式可以常駐. 不懂! 為何要在高端與低端這兩端做分割? : > malloc 是語言的 library 做的, 通常是用 OS 的 allocate API 拿一大塊, : > 然後再由 library 自己管理. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.214.198

04/11 11:55, , 1F
要比dos的實務經驗 有人能比jeunder強嗎XD
04/11 11:55, 1F
文章代碼(AID): #166zJEVk (Programming)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 9 之 24 篇):
文章代碼(AID): #166zJEVk (Programming)