瀏覽單個文章
hulu
New Member
 

加入日期: Apr 2004
文章: 7
離個題,關於非多工OS的多工行為

引用:
作者MM工坊
非多工的系統或設備,無法讓兩個傳輸或執行緒各以一半的速度跑!必須完全中斷後才可執行另一個者。無法並行的就不能稱為多功。

引用:
作者MM工坊
使用者永遠看不到非多工OS的多工行為。


這討論串看了真令我熱血沸騰,可又令我回憶起遺失已久的網概

話說以 single-user, single-task 為原則設計的 MS-DOS(這,沒有不認同吧),仍然有個特別的例外,那就是 print.exe (or MS-DOS 2.0 前的 print.com)。
當您執行了 print.exe 列印文檔後,仍會進入提示(prompt) 模式讓我們可以繼續執行其他程式,不需要等待到列印結束,它會背景作業將要列印的內容陸續讀入記憶體,儘管此時您正在執行其他的程式。

引用:
作者MM工坊
DOS的常駐程式也必須在程式中斷後才可執行,所以同時間仍舊不會並行兩個以上的程式,

若以現今OS多工的設計原則 preemptive multitasking(先佔式多工),經作業系統time slice/schedule context後,由CPU在毫秒內切換執行各個context,而達到多工來說,MS-DOS的確稱不上是多工

但若以另一種多工模式 cooperative multitasking(協調式多工)/nonpreemptive multitasking(非先佔式多工) ,程式需主動(或經由中斷)釋出CPU執行時間,以便執行其他程式的方式來說,我們還是能透過中斷技巧讓MS-DOS完成多項作業,例如一邊聽mp3,一邊壓divx,當然這是比較誇張的舉例,因為古早的DOS下開發這類多工程式可遠比現在來得繁雜,另外就是如 TSR 之類常駐程式的應用。

不過現在也有以先佔式多工為基礎開發的DOS,如DR-DOS。如果您真想在MS-DOS做到先佔式多工也可以,將以此準則開發的kernel掛在DOS,您仍可以真的做到一邊聽mp3,一邊壓divx的作業。


想要驗證OS是否多工,簡單去執行一個有無限迴圈的程式,在迴圈中止前都不能再去執行其它程式,那麼很明顯的就不能稱這個OS為多工。
拿到今天討論的主題來看,若網路設備中,其中一個來源不斷發送封包,而能阻斷其他人發送封包的作業時......那,我們是否可稱這樣的設備為多工呢?


雖然規範/架構是死的,但是應用/人腦是活的,否則,我們也不會看到這麼紛亂的世界。
舊 2009-02-12, 03:39 AM #130
回應時引用此文章
hulu離線中