Re: [問題] dos為何要有記憶體配置的中斷指令?
> ==>發信人: wlsabcd.bbs@ptt.cc (我不會C++), 信區: programming
> 換言之, I/O driver 或 kernel module 可以被當 Process 看待嗎 ?
> 謝謝你的指教,and...容我在這邊替我辯解:
> DOS沒有mulit-process、Multi-task的能力,我想這是你我都有的觀念。
> 但一個process (named A)可以load一段程式使之執行(named B)。
> 此時系統的狀態是:B is running and A is suspended (因為DOS系統的限制).
原問者可能會有的一個疑點是除了 OS 與 driver 常駐的空間不該被使用者程式
覆蓋外, 其餘的記憶體從該程式開始的低位置到高端(一般都說是 640kB)整個都
可讓使用者程式愛怎麼用就怎麼用, 幹嘛還要一個多此一舉的類似 malloc功能
的 system call.
實況是 command.com/command.exe 這個程式 (program A) 在置入外部執行程式
(program B)時會覆蓋掉自己的一大部份, 是 B 覆蓋了 command.com/exe (A)的
非常駐部份, 因此不能用 A is suspend 解釋. (DOS 3.X 以上可以把 command.exe
常駐部份擺到近 1MB 的高端). 當使用者程式結束還回 DOS 時才又將 command.exe
的覆蓋部份從系統磁片置入回來, 這個 CLI 這樣設計是防止使用者亂抽換系統磁片
有關的. 因為這種 CLI 不完全常駐, 所以是 OS 的一部份, 但也不盡然是.
如果是個 Overlay program 要通知 OS 置入下一個片段的 overlay 時, 為了防止
透過 OS 置入另一個 overlay 時, 因 OS 分不清狀況可能會覆蓋掉每段 overlay
要共用的 common data area , 所以有需要通知 OS 保留該區的記憶體不要被覆蓋.
可是, 通常 overlay 都將 common data area 擺在高位端, Overlay 程式的大小都
裁到小於高端, 不至於覆蓋 common data area , 每段 overlay 都從同一低端擺起
就不用通知 OS 分割出來一塊記憶區. 以前的 DOS 講求精簡, 不必要的不會做進去.
> 綜合之前的討論串,可以解釋原發問者的問題:
> malloc可以防止:
> 1. process 跟 process 之間 及
> 2. process 跟 TSR、driver 之間的memory使用上的重疊。
> 不知還有哪些地方需要補充,指正,謝謝。
如果是 DOS , 不用 process 這個名詞會更精確.
> : 這是有趣的問題 !
> : 另一個教書匠問題: 都嘛是程式, 都要被 CPU 執行, 幹嘛取個不同的名詞 ?
> 談一些比較輕鬆的,最近一個IC designer,還跟我工作上有關係,
> 他在別公司寫過一年的JAVA
> 說了經典名言:
> "硬體是我們作硬體的人架起來的,我之前寫了一年的程式,...
> 寫程式嘛有什麼難的....dirver還不是process的一種..."
> 我聽了當場昏倒,心想:"做IC design,寫過JAVA就了解程式設計,了解driver...."
> 這邊先說個抱歉,我沒有貶低JAVA的意思,J2EE在Enterprise上的應用也需要多年的
> 磨練才會有一定的功力,請勿因這段話鞭我。
> 只是發文到此覺得我們做的軟體只因看不到活生生的實體,在台灣變的
> 爹不疼、娘不愛
> 抒發一下...
====
其實可能是相反, 軟體一直是政府最受重視的, 很多政府外包案都是大把
大把的錢給軟體業者, 也就是大家都知道的 "官商xx" , 做不出來都能減價部
份驗收付錢. 做軟體的通常比做硬體黑手的高學歷, 也 "聰明的多" , 至少做
政府包案發生指鹿為馬的本事可能是會更高.
軟體落到今天的狀況, 是因為再也沒有硬體製造業黑手的可以罵可以怪了,
也就是 "原形畢露" 啦 ! 這不算是壞事, 能找到真正問題就能解了.
--
◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234
討論串 (同標題文章)
完整討論串 (本文為第 12 之 24 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章