操作系統原理知識“妙”問“趣”答

bear看着覺得好玩,又有點料,就貼上來賺參與分了
 
操作系統原理知識“妙”問“趣”答


http://tech.sina.com.cn 2000/11/16 16:27 新浪科技論壇 新浪網友:小寶寶乖

  序

  我們每天都同操作系統打交道,瞭解一些操作系統原理上的知識是絕對有必要的,它可以讓你瞭解操作系統內部是怎麼工作的,爲什麼會出現這樣那樣的問題,爲我們解決這些問題提供思路。

  本文完全是爲普通電腦用戶寫的,省略了所有難以理解的算法、原理,沒有太多細節上的東西,只是針對普通電腦用戶可能感興趣的問題給出了實現思想。寫這些東西只是我的一相情願,就怕我還是寫得深了些,初學者讀不懂。如果這10K文字能讓你對操作系統有更深的瞭解,那也就不枉了這幾個汗流浹背的夏日午後了。

  Q:什麼是中斷?

  A:中斷嘛,舉個容易理解的例子吧。

  比如蓮蓮和唐唐在下象棋,眼看蓮蓮就快招架不住了,正當此緊要關頭,唐唐的女友來了,非要唐唐陪她上街買衣服不可(唐唐暈倒:-)),於是唐唐不得不同蓮蓮商量,先把棋盤封了,待買完衣服後繼續戰鬥。掌燈時分,唐唐帶着滿臉疲憊回到了棋盤前,結果蓮蓮不費吹灰只力便反敗爲勝。這就是整個中斷過程。我們來看看中斷過程是如何發生的:

  1)中斷請求:唐唐的女友要他逛街

  2)中斷響應:唐唐準備放下棋局陪女友逛街

  3)現場保護:先把棋盤封了

  4)中斷處理:唐唐陪女友逛街買衣服

  5)恢復現場:把棋盤解封

  6)中斷返回:繼續戰鬥

  在計算機中,中斷機制是非常重要的,它用於協調系統對各種外部事件的響應和處理,並且是實現多任務的必要條件。可以這麼說,如果沒有中斷機制,就沒有計算機。

  噢,對了,如果唐唐把棋移到密室中下,不讓他的女友打擾,這就叫“中斷屏蔽”。

  Q:RING3、RING0是什麼意思?

  A:這得從CPU指令系統(用於控制CPU完成各種功能的命令)的特權級別說起。在CPU的所有指令中,有一些指令是非常危險的,如果錯用,將導致整個系統崩潰。比如:清內存、設置時鐘等。如果所有的程序都能使用這些指令,那麼你的系統一天死機n回就不足爲奇了。所以,CPU將指令分爲特權指令和非特權指令,對於那些危險的指令,只允許操作系統及其相關模塊使用,普通的應用程序只能使用那些不會造成災難的指令。形象地說,特權指令就是那些兒童不宜的東東,而非特權指令則是老少皆宜。

  Intel的CPU將特權級別分爲4個級別:RING0,RING1,RING2,RING3。Windows只使用其中的兩個級別RING0和RING3,RING0只給操作系統用,RING3誰都能用。如果普通應用程序企圖執行RING0指令,則Windows會顯示“非法指令”錯誤信息。儘管有CPU的特權級別作保護,遺憾的是WINDOW98本身漏洞很多,使用Windows 98的系統一天死機n回也是正常的。

  Q:爲什麼要有操作系統?

  A:哈哈,難道你還沒感受到操作系統的魅力嗎?因爲有了象Windows這樣優秀的操作系統,我們的機器才一天到晚地出問題——這個那個的問題,我們才需要一天到晚地重裝Windows,這樣才使我們牢牢地記住了象微軟這樣的公司的名字,和象比爾蓋茨這樣優秀的程序員兼老闆的名字……(以上文字請斑竹刪去)

  好了,說正經的,儘管Windows不穩定,但絕對不能否認它是當今最優秀的操作系統之一。操作系統在計算機中起着重要作用,它爲所有的應用程序提供一個運行環境,並將應用程序同具體硬件隔離。比如在機器中換一塊聲卡,只需要重新安裝一下聲卡驅動程序就完事了,但如果沒有操作系統,你就必須爲這塊新的聲卡重新購買所有的應用程序,以便這些應用程序能夠認識這塊聲卡並能夠使用它。

  操作系統就象計算機的大管家,管理着計算機的各種資源,比如內存、磁盤、CPU等。應用程序想使用這些資源,都必須經過操作系統同意(資源申請),並且由操作系統統一安排使用時間(資源分配),應用程序用完後必須將資源還給操作系統(資源回收),以便其他應用程序使用。就這樣,計算機系統在操作系統的管理下以最可能高的效率有條不紊地工作着。

  Q:什麼叫進程?進程同程序有什麼區別?

  A:進程是程序在計算機上的一次執行活動。當你運行一個程序,你就啓動了一個進程。顯然,程序是死的(靜態的),進程是活的(動態的)。進程可以分爲系統進程和用戶進程。凡是用於完成操作系統的各種功能的進程就是系統進程,它們就是處於運行狀態下的操作系統本身;用戶進程就不必我多講了吧,所有由你啓動的進程都是用戶進程。進程是操作系統進行資源分配的單位。

  在Windows下,進程又被細化爲線程,也就是一個進程下有多個能獨立運行的更小的單位。

  Q:什麼是多任務?

  A:在同一個時間裏,同一個計算機系統中如果允許兩個或兩個以上的進程處於運行狀態,這便是多任務。現代的操作系統幾乎都是多任務操作系統,能夠同時管理多個進程的運行。

  多任務帶來的好處是明顯的,比如你可以邊聽mp3邊上網,與此同時甚至可以將下載的文檔打印出來,而這些任務之間絲毫不會相互干擾。

  Q:什麼是“併發”?什麼是“並行”?

  A:俗話說,一心不能二用,這對計算機也一樣,原則上一個CPU只能分配給一個進程,以便運行這個進程。我們通常使用的計算機中只有一個CPU,也就是說只有一顆心,要讓它一心多用,同時運行多個進程,就必須使用併發技術。實現併發技術相當複雜,最容易理解的是“時間片輪轉進程調度算法”,它的思想簡單介紹如下:在操作系統的管理下,所有正在運行的進程輪流使用CPU,每個進程允許佔用CPU的時間非常短(比如10毫秒),這樣用戶根本感覺不出來CPU是在輪流爲多個進程服務,就好象所有的進程都在不間斷地運行一樣。但實際上在任何一個時間內有且僅有一個進程佔有CPU。

  如果一臺計算機有多個CPU,情況就不同了,如果進程數小於CPU數,則不同的進程可以分配給不同的CPU來運行,這樣,多個進程就是真正同時運行的,這便是並行。但如果進程數大於CPU數,則仍然需要使用併發技術。

  在Windows中,進行CPU分配是以線程爲單位的,一個進程可能由多個線程組成,這時情況更加複雜,但簡單地說,有如下關係:

  總線程數<= CPU數量:並行運行

  總線程數> CPU數量:併發運行

  並行運行的效率顯然高於併發運行,所以在多CPU的計算機中,多任務的效率比較高。但是,如果在多CPU計算機中只運行一個進程(線程),就不能發揮多CPU的優勢。

  值得注意的是,Windows 9x並不支持多CPU系統,如果在多CPU系統上安裝Windows 9x,有再多的CPU也是白搭。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章