小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

操作系統(tǒng)原理基礎(chǔ)知識(shí)

 ABCmfza71ifzqx 2021-05-06
操作系統(tǒng)原理
 
我們每天都同操作系統(tǒng)打交道,了解一些操作系統(tǒng)原理上的知識(shí)是絕對(duì)有必要的,它可以讓你了解操作系統(tǒng)內(nèi)部是怎么工作的,為什么會(huì)出現(xiàn)這樣那樣的問題,為我們解決這些問題提供思路。
    本文完全是為普通電腦用戶寫的,省略了所有難以理解的算法、原理,沒有太多細(xì)節(jié)上的東西,只是針對(duì)普通電腦用戶可能感興趣的問題給出了實(shí)現(xiàn)思想。寫這些東西只是我的一相情愿,就怕我還是寫得深了些,初學(xué)者讀不懂。如果這10K文字能讓你對(duì)操作系統(tǒng)有更深的了解,那也就不枉了這幾個(gè)汗流浹背的夏日午后了。

Q: 什么是中斷?
A:中斷嘛,舉個(gè)容易理解的例子吧。
   比如蓮蓮和唐唐在下象棋,眼看蓮蓮就快招架不住了,正當(dāng)此緊要關(guān)頭,唐
唐的女友來了,非要唐唐陪她上街買衣服不可(唐唐暈倒:-) ),于是唐唐
不得不同蓮蓮商量,先把棋盤封了,待買完衣服后繼續(xù)戰(zhàn)斗。掌燈時(shí)分,唐
唐帶著滿臉疲憊回到了棋盤前,結(jié)果蓮蓮不費(fèi)吹灰只力便反敗為勝。
這就是整個(gè)中斷過程。我們來看看中斷過程是如何發(fā)生的:
  1)中斷請(qǐng)求:唐唐的女友要他逛街
  2)中斷響應(yīng):唐唐準(zhǔn)備放下棋局陪女友逛街
  3)現(xiàn)場(chǎng)保護(hù):先把棋盤封了
  4)中斷處理:唐唐陪女友逛街買衣服
  5)恢復(fù)現(xiàn)場(chǎng):把棋盤解封
  6)中斷返回:繼續(xù)戰(zhàn)斗
  在計(jì)算機(jī)中,中斷機(jī)制是非常重要的,它用于協(xié)調(diào)系統(tǒng)對(duì)各種外部事件的響
應(yīng)和處理,并且是實(shí)現(xiàn)多任務(wù)的必要條件??梢赃@么說,如果沒有中斷機(jī)制,
就沒有計(jì)算機(jī)。噢,對(duì)了,如果唐唐把棋移到密室中下,不讓他的女友打擾,
這就叫“中斷屏蔽”。

Q:RING3 、 RING0 是什么意思?
A:這得從CPU指令系統(tǒng)(用于控制CPU完成各種功能的命令)的特權(quán)級(jí)別說起。
在CPU的所有指令中,有一些指令是非常危險(xiǎn)的,如果錯(cuò)用,將導(dǎo)致整個(gè)系統(tǒng)
崩潰。比如:清內(nèi)存、設(shè)置時(shí)鐘等。如果所有的程序都能使用這些指令,那
么你的系統(tǒng)一天死機(jī)n回就不足為奇了。所以,CPU將指令分為特權(quán)指令和非
特權(quán)指令,對(duì)于那些危險(xiǎn)的指令,只允許操作系統(tǒng)及其相關(guān)模塊使用,普通
的應(yīng)用程序只能使用那些不會(huì)造成災(zāi)難的指令。形象地說,特權(quán)指令就是那
些兒童不宜的東東,而非特權(quán)指令則是老少皆宜。
   Intel的CPU將特權(quán)級(jí)別分為4個(gè)級(jí)別:RING0,RING1,RING2,RING3。Windows只
使用其中的兩個(gè)級(jí)別RING0和RING3,RING0只給操作系統(tǒng)用,RING3誰都能用。
如果普通應(yīng)用程序企圖執(zhí)行RING0指令,則Windows會(huì)顯示“非法指令”錯(cuò)誤信
息。盡管有CPU的特權(quán)級(jí)別作保護(hù),遺憾的是WINDOW98本身漏洞很多,使用
Windows 98的系統(tǒng)一天死機(jī)n回也是正常的。

Q: 為什么要有操作系統(tǒng)?
A:哈哈,難道你還沒感受到操作系統(tǒng)的魅力嗎?因?yàn)橛辛讼骔indows這樣優(yōu)秀的
操作系統(tǒng),我們的機(jī)器才一天到晚地出問題——這個(gè)那個(gè)的問題,我們才需
要一天到晚地重裝Windows,這樣才使我們牢牢地記住了象微軟這樣的公司的
名字,和象比爾蓋茨這樣優(yōu)秀的程序員兼老板的名字……

   好了,說正經(jīng)的,盡管Windows不穩(wěn)定,但絕對(duì)不能否認(rèn)它是當(dāng)今最優(yōu)秀的操
作系統(tǒng)之一。操作系統(tǒng)在計(jì)算機(jī)中起著重要作用,它為所有的應(yīng)用程序提供
一個(gè)運(yùn)行環(huán)境,并將應(yīng)用程序同具體硬件隔離。比如在機(jī)器中換一塊聲卡,只
需要重新安裝一下聲卡驅(qū)動(dòng)程序就完事了,但如果沒有操作系統(tǒng),你就必須
為這塊新的聲卡重新購(gòu)買所有的應(yīng)用程序,以便這些應(yīng)用程序能夠認(rèn)識(shí)這塊聲
卡并能夠使用它。
   操作系統(tǒng)就象計(jì)算機(jī)的大管家,管理著計(jì)算機(jī)的各種資源,比如內(nèi)存、磁盤、
CPU等。應(yīng)用程序想使用這些資源,都必須經(jīng)過操作系統(tǒng)同意(資源申請(qǐng)),
并且由操作系統(tǒng)統(tǒng)一安排使用時(shí)間(資源分配),應(yīng)用程序用完后必須將資源
還給操作系統(tǒng)(資源回收),以便其他應(yīng)用程序使用。就這樣,計(jì)算機(jī)系統(tǒng)在
操作系統(tǒng)的管理下以最可能高的效率有條不紊地工作著。

Q: 什么叫進(jìn)程?進(jìn)程同程序有什么區(qū)別?
A:進(jìn)程是程序在計(jì)算機(jī)上的一次執(zhí)行活動(dòng)。當(dāng)你運(yùn)行一個(gè)程序,你就啟動(dòng)了一個(gè)
進(jìn)程。顯然,程序是死的(靜態(tài)的),進(jìn)程是活的(動(dòng)態(tài)的)。
進(jìn)程可以分為系統(tǒng)進(jìn)程和用戶進(jìn)程。凡是用于完成操作系統(tǒng)的各種功能的進(jìn)程
就是系統(tǒng)進(jìn)程,它們就是處于運(yùn)行狀態(tài)下的操作系統(tǒng)本身;用戶進(jìn)程就不必我
多講了吧,所有由你啟動(dòng)的進(jìn)程都是用戶進(jìn)程。
進(jìn)程是操作系統(tǒng)進(jìn)行資源分配的單位。在Windows
下,進(jìn)程又被細(xì)化為線程,也就是一個(gè)進(jìn)程下有多個(gè)能獨(dú)立運(yùn)行的
更小的單位。

Q: 什么是多任務(wù)?
A:在同一個(gè)時(shí)間里,同一個(gè)計(jì)算機(jī)系統(tǒng)中如果允許兩個(gè)或兩個(gè)以上的進(jìn)程處于運(yùn)
行狀態(tài),這便是多任務(wù)?,F(xiàn)代的操作系統(tǒng)幾乎都是多任務(wù)操作系統(tǒng),能夠同時(shí)
管理多個(gè)進(jìn)程的運(yùn)行。多任務(wù)帶來的好處是明顯的,比如你可以邊聽mp3邊上網(wǎng),
與此同時(shí)甚至可以將下載的文檔打印出來,而這些任務(wù)之間絲毫不會(huì)相互干擾。

Q: 什么是 并發(fā) ?什么是 并行 ?
A:俗話說,一心不能二用,這對(duì)計(jì)算機(jī)也一樣,原則上一個(gè)CPU只能分配給一個(gè)
進(jìn)程,以便運(yùn)行這個(gè)進(jìn)程。我們通常使用的計(jì)算機(jī)中只有一個(gè)CPU,也就是說
只有一顆心,要讓它一心多用,同時(shí)運(yùn)行多個(gè)進(jìn)程,就必須使用并發(fā)技術(shù)。
實(shí)現(xiàn)并發(fā)技術(shù)相當(dāng)復(fù)雜,最容易理解的是“時(shí)間片輪轉(zhuǎn)進(jìn)程調(diào)度算法”,它
的思想簡(jiǎn)單介紹如下:
   在操作系統(tǒng)的管理下,所有正在運(yùn)行的進(jìn)程輪流使用CPU,每個(gè)進(jìn)程允許占用
CPU的時(shí)間非常短(比如10毫秒),這樣用戶根本感覺不出來CPU是在輪流為
多個(gè)進(jìn)程服務(wù),就好象所有的進(jìn)程都在不間斷地運(yùn)行一樣。但實(shí)際上在任何
一個(gè)時(shí)間內(nèi)有且僅有一個(gè)進(jìn)程占有CPU。如果一臺(tái)計(jì)算機(jī)有多個(gè)CPU,情況就不同
了,如果進(jìn)程數(shù)小于CPU數(shù),則不同的進(jìn)程可以分配給不同的CPU來運(yùn)行,這樣,
多個(gè)進(jìn)程就是真正同時(shí)運(yùn)行的,這便是并行。但如果進(jìn)程數(shù)大于CPU數(shù),則仍然需 
要使用并發(fā)技術(shù)。在Windows中,進(jìn)行CPU分配是以線程為單位的,一個(gè)進(jìn)程可能 
由多個(gè)線程組成,這時(shí)情況更加復(fù)雜,但簡(jiǎn)單地說,有如下關(guān)系:
總線程數(shù) <= CPU數(shù)量:并行運(yùn)行
總線程數(shù) > CPU數(shù)量:并發(fā)運(yùn)行
   并行運(yùn)行的效率顯然高于并發(fā)運(yùn)行,所以在多CPU的計(jì)算機(jī)中,多任務(wù)的效率
比較高。但是,如果在多CPU計(jì)算機(jī)中只運(yùn)行一個(gè)進(jìn)程(線程),就不能發(fā)揮多 
CPU的優(yōu)勢(shì)。值得注意的是,Windows 9x并不支持多CPU系統(tǒng),如果在多CPU系統(tǒng)   
上安裝Windows 9x,有再多的CPU也是白搭。

Q: 什么叫 可搶占式多任務(wù)
A:進(jìn)程是有優(yōu)先級(jí)的。如果即將被運(yùn)行的進(jìn)程的優(yōu)先級(jí)比正在運(yùn)行的進(jìn)程的優(yōu)先
級(jí)高,則系統(tǒng)可以強(qiáng)行剝奪正在運(yùn)行的進(jìn)程的CPU,讓優(yōu)先級(jí)高的進(jìn)程先運(yùn)行。
可見,人類社會(huì)的特權(quán)思想在計(jì)算機(jī)世界中表現(xiàn)得多么淋漓盡致。:-)
實(shí)際的操作系統(tǒng)一般將時(shí)間片思想同可強(qiáng)占思想結(jié)合起來進(jìn)行CPU分配。
可搶占式多任務(wù)的好處是很多的,比如當(dāng)一個(gè)進(jìn)程發(fā)生意外無法運(yùn)行時(shí),如果
不能強(qiáng)行剝奪其CPU占有權(quán),則整個(gè)系統(tǒng)都得癱瘓,由于早期的Windows 3.1不
是可搶占式多任務(wù)系統(tǒng),所以Windows 3.1非常不可靠。

Q: 多個(gè)進(jìn)程在并發(fā) / 并行運(yùn)行過程中會(huì)產(chǎn)生沖突嗎?
A:如果沒有任何保護(hù)機(jī)制,肯定是會(huì)的。這種沖突一般發(fā)生在對(duì)資源的爭(zhēng)奪上。
顯然,如果一條馬路窄到只能通過一輛馬車,則當(dāng)有兩輛馬車想同時(shí)通過時(shí),
某個(gè)馬車夫就必須發(fā)揚(yáng)風(fēng)格,先讓一讓,否則結(jié)果肯定是人仰馬翻。
操作系統(tǒng)細(xì)心地管理著這一切,以避免進(jìn)程間的沖突,程序員們也常常需要
細(xì)心地按照某種既定規(guī)則編寫程序,以便操作系統(tǒng)管理。
更具體的方法、原理已經(jīng)遠(yuǎn)遠(yuǎn)超過了初學(xué)者能接受的水平,我還是把它略去
吧。

Q: 什么是虛擬存儲(chǔ)器?
A:虛擬存儲(chǔ)技術(shù)是非常重要的存儲(chǔ)管理技術(shù),它的核心思想是利用巨大的硬盤
空間來彌補(bǔ)不足的實(shí)際內(nèi)存空間。在虛擬內(nèi)存管理下,應(yīng)用程序可以使用的
存儲(chǔ)空間遠(yuǎn)遠(yuǎn)大于實(shí)際的內(nèi)存大小。我們將一臺(tái)計(jì)算機(jī)實(shí)際安裝的內(nèi)存稱為
物理存儲(chǔ)器,將通過虛擬存儲(chǔ)技術(shù)得到的比實(shí)際內(nèi)存空間大得多的存儲(chǔ)空間
成為虛擬存儲(chǔ)器。虛擬存儲(chǔ)技術(shù)的實(shí)現(xiàn)也是非常復(fù)雜,如果細(xì)講的話肯定又 
是吃力不討好,這里只提一提最簡(jiǎn)單的思想。內(nèi)存單元在計(jì)算機(jī)中是有編號(hào) 
的,叫內(nèi)存地址。如果你的計(jì)算機(jī)中有1M物理內(nèi)存(天哪,286的說?呵呵, 
舉例子方便嘛),則物理內(nèi)存的地址范圍為0到1048575(1024 x 1024 - 1)。 
如果想訪問地址為1048576的單元,顯然是不可以的,因?yàn)樽畲笾坏?048575了 
。但是,如果這時(shí)我將物理內(nèi)存中所有的東西先保存到硬盤上,然后通過某種 
方法將1048576映射到地址為0的物理存儲(chǔ)單元上,我不就又得到另外整整一個(gè) 
M的存儲(chǔ)空間了嗎,當(dāng)程序要訪問地址為0的單元時(shí),我把原先存儲(chǔ)在硬盤上的 
內(nèi)容調(diào)回物理內(nèi)存中就可以了。這個(gè)想法夠巧妙吧,它就是虛擬存儲(chǔ)技術(shù)的核 
心思想。于是我就可以得到n個(gè)1M空間了。真正的虛擬存儲(chǔ)管理比上面我所提的 
還要復(fù)雜、巧妙得多,它能夠?qū)崿F(xiàn)讓不同的進(jìn)程在不同的地址空間上運(yùn)行(即 
讓每個(gè)進(jìn)程認(rèn)為自己占有所有的存儲(chǔ)空間,可以任意使用,不必在乎系統(tǒng)中的 
其他進(jìn)程是如何使用存儲(chǔ)空間的。這猶如讓不同的進(jìn)程運(yùn)行在不同的計(jì)算機(jī)上) 
,并且要考慮最優(yōu)的內(nèi)存使用效率。

Q: 如果一個(gè)進(jìn)程訪問了不屬于自己地址空間內(nèi)的存儲(chǔ)單元,會(huì)發(fā)生什么情況?
A:在Windows下你肯定會(huì)看到一個(gè)“該程序執(zhí)行了非法操作,即將被關(guān)閉……”
之類的對(duì)話框。看到這樣的對(duì)話框常令我們無比沮喪,但這是操作系統(tǒng)必須
做的事,我們稱它為“存儲(chǔ)保護(hù)”。存儲(chǔ)保護(hù)的目的是保護(hù)系統(tǒng)進(jìn)程不被用
戶進(jìn)程破壞,不允許進(jìn)程讀寫不屬于自己的區(qū)域。道理是很簡(jiǎn)單的:考試的
時(shí)候,你只被允許在自己的試卷上面作答,如果你想看別人的試卷,甚至想
改別人試卷上的內(nèi)容,你就“執(zhí)行了非法操作”,肯定是要被監(jiān)考“關(guān)閉”
的(前提是監(jiān)考人員工作正常,否則就亂了套了,會(huì)有很嚴(yán)重的后果)。
注意:在Windows中引起系統(tǒng)關(guān)閉一個(gè)進(jìn)程的原因很多,除了非法讀寫其他
進(jìn)程存儲(chǔ)區(qū)(地址越界)外,還有如執(zhí)行了只有操作系統(tǒng)才能執(zhí)行的ring0
指令、程序中出現(xiàn)除數(shù)為0的情況等等。

Q: 什么是硬盤分區(qū)?
A:最早的時(shí)候,操作系統(tǒng)無法管理較大的硬盤空間,所以將一個(gè)大的硬盤空間
分為多個(gè)較小的區(qū)域以便于管理。另外,有時(shí)需要在系統(tǒng)中安裝多個(gè)操作系
統(tǒng),也需要將硬盤分為不同的區(qū)域,讓不同的操作系統(tǒng)分別管理,互不干擾。
現(xiàn)在已經(jīng)沒有因?yàn)椴僮飨到y(tǒng)無法管理大硬盤而需要對(duì)硬盤進(jìn)行分區(qū)的可能性
了,但我們?nèi)匀粚?duì)硬盤進(jìn)行分區(qū),除了安裝多個(gè)操作系統(tǒng)外,主要的還是為
了對(duì)各種文件進(jìn)行管理比較方便。
操作系統(tǒng)為不同的硬盤分區(qū)賦予不同的盤符,這樣就在邏輯上把一個(gè)大硬盤
分割成了多個(gè)小硬盤。

Q: 什么是硬盤分區(qū)的主引導(dǎo)記錄?
A:主引導(dǎo)記錄是每個(gè)硬盤分區(qū)的命根子,上面記錄著一個(gè)分區(qū)所占用的硬盤空
間的位置等重要信息。如果一個(gè)分區(qū)的主引導(dǎo)記錄被破壞,這個(gè)分區(qū)就算玩
完了。

Q: 什么是活動(dòng)分區(qū)?
A:活動(dòng)分區(qū)是在系統(tǒng)加電后具有自舉(引導(dǎo)系統(tǒng))能力的分區(qū),在活動(dòng)分區(qū)上
的主引導(dǎo)記錄中有一段主引導(dǎo)程序,每當(dāng)系統(tǒng)啟動(dòng)后,這段程序被調(diào)入內(nèi)存
運(yùn)行,以引導(dǎo)(啟動(dòng))保存在硬盤上的操作系統(tǒng)。不同的操作系統(tǒng)引導(dǎo)的方
法是不同的,所以這段主引導(dǎo)程序隨著系統(tǒng)上安裝的操作系統(tǒng)的不同而不同。

Q:Windows 是怎樣儲(chǔ)存磁盤文件的?
A:首先,Windows以“簇”為單位使用硬盤上的空間。根據(jù)硬盤空間的大小,一
個(gè)簇的大小是不一樣的。一般說,簇越小,硬盤空間的利用率越大,簇越大,
存儲(chǔ)速度越快。每個(gè)文件必須被分成以簇的大小為單位的多個(gè)塊,然后儲(chǔ)存在 
硬盤上。為此,需要一個(gè)表格來記錄一個(gè)文件被分成的塊都儲(chǔ)存在硬盤的哪些簇 
上,這個(gè)表格在Win9x中就是FAT表。FAT表也儲(chǔ)存在硬盤上。所以,F(xiàn)AT表是文件 
系統(tǒng)的命根子,破壞了它,一個(gè)磁盤所有的文件就玩完了。于是,Windows除了使 
用一個(gè)FAT表外,還會(huì)備份一個(gè)。

Q: 什么是文件目錄表?
A:文件目錄表同F(xiàn)AT表一樣是非常重要的,它記錄著所有文件的文件名、屬性和在
FAT表中的起始位置。當(dāng)你需要讀寫一個(gè)文件時(shí),Windows就從文件目錄表中找
這個(gè)文件,如果找到,按照文件目錄表中所指示的該文件在FAT表中的起始位置
讀出FAT表中與這個(gè)文件有關(guān)的存儲(chǔ)信息,就可以讀寫這個(gè)文件了。

Q: 什么叫虛擬設(shè)備?
A:不同的I/O設(shè)備速度有快有慢。在操作系統(tǒng)中,為了有效地利用各種設(shè)備,可以
使用高速設(shè)備來模擬低速設(shè)備,從而得到的就是虛擬設(shè)備。
在Windows中典型的例子就是打印機(jī)。我們不難發(fā)現(xiàn)在啟動(dòng)打印時(shí)打印機(jī)并沒有
工作,而是硬盤在響,然后所有的打印文檔都進(jìn)入打印隊(duì)列,排隊(duì)打印。在前
一個(gè)文檔還在打印機(jī)上打印的時(shí)候,下一個(gè)文檔已經(jīng)進(jìn)入打印隊(duì)列,提交這個(gè)
文檔的進(jìn)程無須等待打印機(jī)將這個(gè)文檔打印完畢,就可以繼續(xù)處理別的事情了。
這是由于Windows使用硬盤模擬打印機(jī)。所有的打印工作實(shí)際上都“打印”到了
硬盤上。硬盤速度比打印機(jī)快得多,所以一下子就完成了。此時(shí)有另一個(gè)進(jìn)程
負(fù)責(zé)從硬盤上讀出打印數(shù)據(jù),打印到實(shí)際的打印機(jī)上,這個(gè)進(jìn)程在后臺(tái)工作,
不影響前臺(tái)的其他進(jìn)程。

Q: 什么是與設(shè)備無關(guān)性(設(shè)備獨(dú)立性)?
A:計(jì)算機(jī)的外部設(shè)備很多,同種類型的設(shè)備又有不同廠家、不同型號(hào)的產(chǎn)品。這
些產(chǎn)品總會(huì)有些細(xì)微的差別。這就給應(yīng)用程序的編寫帶來很大的困難,因?yàn)橐?
個(gè)應(yīng)用程序不可能顧及到所有硬件的兼容性。為此,操作系統(tǒng)將具體的硬件設(shè)
備同整個(gè)系統(tǒng)隔離開來,對(duì)硬件的具體操作、與硬件有關(guān)的兼容性問題等統(tǒng)統(tǒng)
由設(shè)備驅(qū)動(dòng)程序來解決,同時(shí)操作系統(tǒng)向應(yīng)用程序提供統(tǒng)一的操縱設(shè)備的方法,
應(yīng)用程序只需要按套路調(diào)用操作系統(tǒng)提供的功能即可,無須關(guān)心實(shí)際的設(shè)備是
什么,這就是與設(shè)備無關(guān)性。
  這樣,每增添或改動(dòng)一個(gè)系統(tǒng)上的硬件,只需要安裝相應(yīng)的驅(qū)動(dòng)程序即可。

Q: 什么是緩沖 (buffering) 技術(shù)?
A:在數(shù)據(jù)到達(dá)與離去速度不匹配的地方,就應(yīng)該使用緩沖技術(shù)。緩沖技術(shù)好比是
一個(gè)水庫(kù),如果上游來的水太多,下游來不及排走,水庫(kù)就起到“緩沖”作用,
先讓水在水庫(kù)中停一些時(shí)候,等下游能繼續(xù)排水,再把水送往下游。
  通常CPU的速度要比I/O設(shè)備的速度快得多得多,所以可以設(shè)置緩沖區(qū),對(duì)于從
CPU來的數(shù)據(jù),先放在緩沖區(qū)中,然后設(shè)備可以慢慢地從緩沖區(qū)中讀出數(shù)據(jù)。
操作系統(tǒng)原理
 
我們每天都同操作系統(tǒng)打交道,了解一些操作系統(tǒng)原理上的知識(shí)是絕對(duì)有必要的,它可以讓你了解操作系統(tǒng)內(nèi)部是怎么工作的,為什么會(huì)出現(xiàn)這樣那樣的問題,為我們解決這些問題提供思路。
    本文完全是為普通電腦用戶寫的,省略了所有難以理解的算法、原理,沒有太多細(xì)節(jié)上的東西,只是針對(duì)普通電腦用戶可能感興趣的問題給出了實(shí)現(xiàn)思想。寫這些東西只是我的一相情愿,就怕我還是寫得深了些,初學(xué)者讀不懂。如果這10K文字能讓你對(duì)操作系統(tǒng)有更深的了解,那也就不枉了這幾個(gè)汗流浹背的夏日午后了。

Q: 什么是中斷?
A:中斷嘛,舉個(gè)容易理解的例子吧。
   比如蓮蓮和唐唐在下象棋,眼看蓮蓮就快招架不住了,正當(dāng)此緊要關(guān)頭,唐
唐的女友來了,非要唐唐陪她上街買衣服不可(唐唐暈倒:-) ),于是唐唐
不得不同蓮蓮商量,先把棋盤封了,待買完衣服后繼續(xù)戰(zhàn)斗。掌燈時(shí)分,唐
唐帶著滿臉疲憊回到了棋盤前,結(jié)果蓮蓮不費(fèi)吹灰只力便反敗為勝。
這就是整個(gè)中斷過程。我們來看看中斷過程是如何發(fā)生的:
  1)中斷請(qǐng)求:唐唐的女友要他逛街
  2)中斷響應(yīng):唐唐準(zhǔn)備放下棋局陪女友逛街
  3)現(xiàn)場(chǎng)保護(hù):先把棋盤封了
  4)中斷處理:唐唐陪女友逛街買衣服
  5)恢復(fù)現(xiàn)場(chǎng):把棋盤解封
  6)中斷返回:繼續(xù)戰(zhàn)斗
  在計(jì)算機(jī)中,中斷機(jī)制是非常重要的,它用于協(xié)調(diào)系統(tǒng)對(duì)各種外部事件的響
應(yīng)和處理,并且是實(shí)現(xiàn)多任務(wù)的必要條件??梢赃@么說,如果沒有中斷機(jī)制,
就沒有計(jì)算機(jī)。噢,對(duì)了,如果唐唐把棋移到密室中下,不讓他的女友打擾,
這就叫“中斷屏蔽”。

Q:RING3 RING0 是什么意思?
A:這得從CPU指令系統(tǒng)(用于控制CPU完成各種功能的命令)的特權(quán)級(jí)別說起。
在CPU的所有指令中,有一些指令是非常危險(xiǎn)的,如果錯(cuò)用,將導(dǎo)致整個(gè)系統(tǒng)
崩潰。比如:清內(nèi)存、設(shè)置時(shí)鐘等。如果所有的程序都能使用這些指令,那
么你的系統(tǒng)一天死機(jī)n回就不足為奇了。所以,CPU將指令分為特權(quán)指令和非
特權(quán)指令,對(duì)于那些危險(xiǎn)的指令,只允許操作系統(tǒng)及其相關(guān)模塊使用,普通
的應(yīng)用程序只能使用那些不會(huì)造成災(zāi)難的指令。形象地說,特權(quán)指令就是那
些兒童不宜的東東,而非特權(quán)指令則是老少皆宜。
   Intel的CPU將特權(quán)級(jí)別分為4個(gè)級(jí)別:RING0,RING1,RING2,RING3。Windows只
使用其中的兩個(gè)級(jí)別RING0和RING3,RING0只給操作系統(tǒng)用,RING3誰都能用。
如果普通應(yīng)用程序企圖執(zhí)行RING0指令,則Windows會(huì)顯示“非法指令”錯(cuò)誤信
息。盡管有CPU的特權(quán)級(jí)別作保護(hù),遺憾的是WINDOW98本身漏洞很多,使用
Windows 98的系統(tǒng)一天死機(jī)n回也是正常的。

Q: 為什么要有操作系統(tǒng)?
A:哈哈,難道你還沒感受到操作系統(tǒng)的魅力嗎?因?yàn)橛辛讼骔indows這樣優(yōu)秀的
操作系統(tǒng),我們的機(jī)器才一天到晚地出問題——這個(gè)那個(gè)的問題,我們才需
要一天到晚地重裝Windows,這樣才使我們牢牢地記住了象微軟這樣的公司的
名字,和象比爾蓋茨這樣優(yōu)秀的程序員兼老板的名字……

   好了,說正經(jīng)的,盡管Windows不穩(wěn)定,但絕對(duì)不能否認(rèn)它是當(dāng)今最優(yōu)秀的操
作系統(tǒng)之一。操作系統(tǒng)在計(jì)算機(jī)中起著重要作用,它為所有的應(yīng)用程序提供
一個(gè)運(yùn)行環(huán)境,并將應(yīng)用程序同具體硬件隔離。比如在機(jī)器中換一塊聲卡,只
需要重新安裝一下聲卡驅(qū)動(dòng)程序就完事了,但如果沒有操作系統(tǒng),你就必須
為這塊新的聲卡重新購(gòu)買所有的應(yīng)用程序,以便這些應(yīng)用程序能夠認(rèn)識(shí)這塊聲
卡并能夠使用它。
   操作系統(tǒng)就象計(jì)算機(jī)的大管家,管理著計(jì)算機(jī)的各種資源,比如內(nèi)存、磁盤、
CPU等。應(yīng)用程序想使用這些資源,都必須經(jīng)過操作系統(tǒng)同意(資源申請(qǐng)),
并且由操作系統(tǒng)統(tǒng)一安排使用時(shí)間(資源分配),應(yīng)用程序用完后必須將資源
還給操作系統(tǒng)(資源回收),以便其他應(yīng)用程序使用。就這樣,計(jì)算機(jī)系統(tǒng)在
操作系統(tǒng)的管理下以最可能高的效率有條不紊地工作著。

Q: 什么叫進(jìn)程?進(jìn)程同程序有什么區(qū)別?
A:進(jìn)程是程序在計(jì)算機(jī)上的一次執(zhí)行活動(dòng)。當(dāng)你運(yùn)行一個(gè)程序,你就啟動(dòng)了一個(gè)
進(jìn)程。顯然,程序是死的(靜態(tài)的),進(jìn)程是活的(動(dòng)態(tài)的)。
進(jìn)程可以分為系統(tǒng)進(jìn)程和用戶進(jìn)程。凡是用于完成操作系統(tǒng)的各種功能的進(jìn)程
就是系統(tǒng)進(jìn)程,它們就是處于運(yùn)行狀態(tài)下的操作系統(tǒng)本身;用戶進(jìn)程就不必我
多講了吧,所有由你啟動(dòng)的進(jìn)程都是用戶進(jìn)程。
進(jìn)程是操作系統(tǒng)進(jìn)行資源分配的單位。在Windows
下,進(jìn)程又被細(xì)化為線程,也就是一個(gè)進(jìn)程下有多個(gè)能獨(dú)立運(yùn)行的
更小的單位。

Q: 什么是多任務(wù)?
A:在同一個(gè)時(shí)間里,同一個(gè)計(jì)算機(jī)系統(tǒng)中如果允許兩個(gè)或兩個(gè)以上的進(jìn)程處于運(yùn)
行狀態(tài),這便是多任務(wù)?,F(xiàn)代的操作系統(tǒng)幾乎都是多任務(wù)操作系統(tǒng),能夠同時(shí)
管理多個(gè)進(jìn)程的運(yùn)行。多任務(wù)帶來的好處是明顯的,比如你可以邊聽mp3邊上網(wǎng),
與此同時(shí)甚至可以將下載的文檔打印出來,而這些任務(wù)之間絲毫不會(huì)相互干擾。

Q: 什么是 并發(fā) ?什么是 并行
A:俗話說,一心不能二用,這對(duì)計(jì)算機(jī)也一樣,原則上一個(gè)CPU只能分配給一個(gè)
進(jìn)程,以便運(yùn)行這個(gè)進(jìn)程。我們通常使用的計(jì)算機(jī)中只有一個(gè)CPU,也就是說
只有一顆心,要讓它一心多用,同時(shí)運(yùn)行多個(gè)進(jìn)程,就必須使用并發(fā)技術(shù)。
實(shí)現(xiàn)并發(fā)技術(shù)相當(dāng)復(fù)雜,最容易理解的是“時(shí)間片輪轉(zhuǎn)進(jìn)程調(diào)度算法”,它
的思想簡(jiǎn)單介紹如下:
   在操作系統(tǒng)的管理下,所有正在運(yùn)行的進(jìn)程輪流使用CPU,每個(gè)進(jìn)程允許占用
CPU的時(shí)間非常短(比如10毫秒),這樣用戶根本感覺不出來CPU是在輪流為
多個(gè)進(jìn)程服務(wù),就好象所有的進(jìn)程都在不間斷地運(yùn)行一樣。但實(shí)際上在任何
一個(gè)時(shí)間內(nèi)有且僅有一個(gè)進(jìn)程占有CPU。如果一臺(tái)計(jì)算機(jī)有多個(gè)CPU,情況就不同
了,如果進(jìn)程數(shù)小于CPU數(shù),則不同的進(jìn)程可以分配給不同的CPU來運(yùn)行,這樣,
多個(gè)進(jìn)程就是真正同時(shí)運(yùn)行的,這便是并行。但如果進(jìn)程數(shù)大于CPU數(shù),則仍然需 
要使用并發(fā)技術(shù)。在Windows中,進(jìn)行CPU分配是以線程為單位的,一個(gè)進(jìn)程可能 
由多個(gè)線程組成,這時(shí)情況更加復(fù)雜,但簡(jiǎn)單地說,有如下關(guān)系:
總線程數(shù) <= CPU數(shù)量:并行運(yùn)行
總線程數(shù) > CPU數(shù)量:并發(fā)運(yùn)行
   并行運(yùn)行的效率顯然高于并發(fā)運(yùn)行,所以在多CPU的計(jì)算機(jī)中,多任務(wù)的效率
比較高。但是,如果在多CPU計(jì)算機(jī)中只運(yùn)行一個(gè)進(jìn)程(線程),就不能發(fā)揮多 
CPU的優(yōu)勢(shì)。值得注意的是,Windows 9x并不支持多CPU系統(tǒng),如果在多CPU系統(tǒng)   
上安裝Windows 9x,有再多的CPU也是白搭。

Q: 什么叫 可搶占式多任務(wù) ?
A:進(jìn)程是有優(yōu)先級(jí)的。如果即將被運(yùn)行的進(jìn)程的優(yōu)先級(jí)比正在運(yùn)行的進(jìn)程的優(yōu)先
級(jí)高,則系統(tǒng)可以強(qiáng)行剝奪正在運(yùn)行的進(jìn)程的CPU,讓優(yōu)先級(jí)高的進(jìn)程先運(yùn)行。
可見,人類社會(huì)的特權(quán)思想在計(jì)算機(jī)世界中表現(xiàn)得多么淋漓盡致。:-)
實(shí)際的操作系統(tǒng)一般將時(shí)間片思想同可強(qiáng)占思想結(jié)合起來進(jìn)行CPU分配。
可搶占式多任務(wù)的好處是很多的,比如當(dāng)一個(gè)進(jìn)程發(fā)生意外無法運(yùn)行時(shí),如果
不能強(qiáng)行剝奪其CPU占有權(quán),則整個(gè)系統(tǒng)都得癱瘓,由于早期的Windows 3.1不
是可搶占式多任務(wù)系統(tǒng),所以Windows 3.1非常不可靠。

Q: 多個(gè)進(jìn)程在并發(fā) / 并行運(yùn)行過程中會(huì)產(chǎn)生沖突嗎?
A:如果沒有任何保護(hù)機(jī)制,肯定是會(huì)的。這種沖突一般發(fā)生在對(duì)資源的爭(zhēng)奪上。
顯然,如果一條馬路窄到只能通過一輛馬車,則當(dāng)有兩輛馬車想同時(shí)通過時(shí),
某個(gè)馬車夫就必須發(fā)揚(yáng)風(fēng)格,先讓一讓,否則結(jié)果肯定是人仰馬翻。
操作系統(tǒng)細(xì)心地管理著這一切,以避免進(jìn)程間的沖突,程序員們也常常需要
細(xì)心地按照某種既定規(guī)則編寫程序,以便操作系統(tǒng)管理。
更具體的方法、原理已經(jīng)遠(yuǎn)遠(yuǎn)超過了初學(xué)者能接受的水平,我還是把它略去
吧。

Q: 什么是虛擬存儲(chǔ)器?
A:虛擬存儲(chǔ)技術(shù)是非常重要的存儲(chǔ)管理技術(shù),它的核心思想是利用巨大的硬盤
空間來彌補(bǔ)不足的實(shí)際內(nèi)存空間。在虛擬內(nèi)存管理下,應(yīng)用程序可以使用的
存儲(chǔ)空間遠(yuǎn)遠(yuǎn)大于實(shí)際的內(nèi)存大小。我們將一臺(tái)計(jì)算機(jī)實(shí)際安裝的內(nèi)存稱為
物理存儲(chǔ)器,將通過虛擬存儲(chǔ)技術(shù)得到的比實(shí)際內(nèi)存空間大得多的存儲(chǔ)空間
成為虛擬存儲(chǔ)器。虛擬存儲(chǔ)技術(shù)的實(shí)現(xiàn)也是非常復(fù)雜,如果細(xì)講的話肯定又 
是吃力不討好,這里只提一提最簡(jiǎn)單的思想。內(nèi)存單元在計(jì)算機(jī)中是有編號(hào) 
的,叫內(nèi)存地址。如果你的計(jì)算機(jī)中有1M物理內(nèi)存(天哪,286的說?呵呵, 
舉例子方便嘛),則物理內(nèi)存的地址范圍為0到1048575(1024 x 1024 - 1)。 
如果想訪問地址為1048576的單元,顯然是不可以的,因?yàn)樽畲笾坏?048575了 
。但是,如果這時(shí)我將物理內(nèi)存中所有的東西先保存到硬盤上,然后通過某種 
方法將1048576映射到地址為0的物理存儲(chǔ)單元上,我不就又得到另外整整一個(gè) 
M的存儲(chǔ)空間了嗎,當(dāng)程序要訪問地址為0的單元時(shí),我把原先存儲(chǔ)在硬盤上的 
內(nèi)容調(diào)回物理內(nèi)存中就可以了。這個(gè)想法夠巧妙吧,它就是虛擬存儲(chǔ)技術(shù)的核 
心思想。于是我就可以得到n個(gè)1M空間了。真正的虛擬存儲(chǔ)管理比上面我所提的 
還要復(fù)雜、巧妙得多,它能夠?qū)崿F(xiàn)讓不同的進(jìn)程在不同的地址空間上運(yùn)行(即 
讓每個(gè)進(jìn)程認(rèn)為自己占有所有的存儲(chǔ)空間,可以任意使用,不必在乎系統(tǒng)中的 
其他進(jìn)程是如何使用存儲(chǔ)空間的。這猶如讓不同的進(jìn)程運(yùn)行在不同的計(jì)算機(jī)上) 
,并且要考慮最優(yōu)的內(nèi)存使用效率。

Q: 如果一個(gè)進(jìn)程訪問了不屬于自己地址空間內(nèi)的存儲(chǔ)單元,會(huì)發(fā)生什么情況?
A:在Windows下你肯定會(huì)看到一個(gè)“該程序執(zhí)行了非法操作,即將被關(guān)閉……”
之類的對(duì)話框??吹竭@樣的對(duì)話框常令我們無比沮喪,但這是操作系統(tǒng)必須
做的事,我們稱它為“存儲(chǔ)保護(hù)”。存儲(chǔ)保護(hù)的目的是保護(hù)系統(tǒng)進(jìn)程不被用
戶進(jìn)程破壞,不允許進(jìn)程讀寫不屬于自己的區(qū)域。道理是很簡(jiǎn)單的:考試的
時(shí)候,你只被允許在自己的試卷上面作答,如果你想看別人的試卷,甚至想
改別人試卷上的內(nèi)容,你就“執(zhí)行了非法操作”,肯定是要被監(jiān)考“關(guān)閉”
的(前提是監(jiān)考人員工作正常,否則就亂了套了,會(huì)有很嚴(yán)重的后果)。
注意:在Windows中引起系統(tǒng)關(guān)閉一個(gè)進(jìn)程的原因很多,除了非法讀寫其他
進(jìn)程存儲(chǔ)區(qū)(地址越界)外,還有如執(zhí)行了只有操作系統(tǒng)才能執(zhí)行的ring0
指令、程序中出現(xiàn)除數(shù)為0的情況等等。

Q: 什么是硬盤分區(qū)?
A:最早的時(shí)候,操作系統(tǒng)無法管理較大的硬盤空間,所以將一個(gè)大的硬盤空間
分為多個(gè)較小的區(qū)域以便于管理。另外,有時(shí)需要在系統(tǒng)中安裝多個(gè)操作系
統(tǒng),也需要將硬盤分為不同的區(qū)域,讓不同的操作系統(tǒng)分別管理,互不干擾。
現(xiàn)在已經(jīng)沒有因?yàn)椴僮飨到y(tǒng)無法管理大硬盤而需要對(duì)硬盤進(jìn)行分區(qū)的可能性
了,但我們?nèi)匀粚?duì)硬盤進(jìn)行分區(qū),除了安裝多個(gè)操作系統(tǒng)外,主要的還是為
了對(duì)各種文件進(jìn)行管理比較方便。
操作系統(tǒng)為不同的硬盤分區(qū)賦予不同的盤符,這樣就在邏輯上把一個(gè)大硬盤
分割成了多個(gè)小硬盤。

Q: 什么是硬盤分區(qū)的主引導(dǎo)記錄?
A:主引導(dǎo)記錄是每個(gè)硬盤分區(qū)的命根子,上面記錄著一個(gè)分區(qū)所占用的硬盤空
間的位置等重要信息。如果一個(gè)分區(qū)的主引導(dǎo)記錄被破壞,這個(gè)分區(qū)就算玩
完了。

Q: 什么是活動(dòng)分區(qū)?
A:活動(dòng)分區(qū)是在系統(tǒng)加電后具有自舉(引導(dǎo)系統(tǒng))能力的分區(qū),在活動(dòng)分區(qū)上
的主引導(dǎo)記錄中有一段主引導(dǎo)程序,每當(dāng)系統(tǒng)啟動(dòng)后,這段程序被調(diào)入內(nèi)存
運(yùn)行,以引導(dǎo)(啟動(dòng))保存在硬盤上的操作系統(tǒng)。不同的操作系統(tǒng)引導(dǎo)的方
法是不同的,所以這段主引導(dǎo)程序隨著系統(tǒng)上安裝的操作系統(tǒng)的不同而不同。

Q:Windows 是怎樣儲(chǔ)存磁盤文件的?
A:首先,Windows以“簇”為單位使用硬盤上的空間。根據(jù)硬盤空間的大小,一
個(gè)簇的大小是不一樣的。一般說,簇越小,硬盤空間的利用率越大,簇越大,
存儲(chǔ)速度越快。每個(gè)文件必須被分成以簇的大小為單位的多個(gè)塊,然后儲(chǔ)存在 
硬盤上。為此,需要一個(gè)表格來記錄一個(gè)文件被分成的塊都儲(chǔ)存在硬盤的哪些簇 
上,這個(gè)表格在Win9x中就是FAT表。FAT表也儲(chǔ)存在硬盤上。所以,F(xiàn)AT表是文件 
系統(tǒng)的命根子,破壞了它,一個(gè)磁盤所有的文件就玩完了。于是,Windows除了使 
用一個(gè)FAT表外,還會(huì)備份一個(gè)。

Q: 什么是文件目錄表?
A:文件目錄表同F(xiàn)AT表一樣是非常重要的,它記錄著所有文件的文件名、屬性和在
FAT表中的起始位置。當(dāng)你需要讀寫一個(gè)文件時(shí),Windows就從文件目錄表中找
這個(gè)文件,如果找到,按照文件目錄表中所指示的該文件在FAT表中的起始位置
讀出FAT表中與這個(gè)文件有關(guān)的存儲(chǔ)信息,就可以讀寫這個(gè)文件了。

Q: 什么叫虛擬設(shè)備?
A:不同的I/O設(shè)備速度有快有慢。在操作系統(tǒng)中,為了有效地利用各種設(shè)備,可以
使用高速設(shè)備來模擬低速設(shè)備,從而得到的就是虛擬設(shè)備。
在Windows中典型的例子就是打印機(jī)。我們不難發(fā)現(xiàn)在啟動(dòng)打印時(shí)打印機(jī)并沒有
工作,而是硬盤在響,然后所有的打印文檔都進(jìn)入打印隊(duì)列,排隊(duì)打印。在前
一個(gè)文檔還在打印機(jī)上打印的時(shí)候,下一個(gè)文檔已經(jīng)進(jìn)入打印隊(duì)列,提交這個(gè)
文檔的進(jìn)程無須等待打印機(jī)將這個(gè)文檔打印完畢,就可以繼續(xù)處理別的事情了。
這是由于Windows使用硬盤模擬打印機(jī)。所有的打印工作實(shí)際上都“打印”到了
硬盤上。硬盤速度比打印機(jī)快得多,所以一下子就完成了。此時(shí)有另一個(gè)進(jìn)程
負(fù)責(zé)從硬盤上讀出打印數(shù)據(jù),打印到實(shí)際的打印機(jī)上,這個(gè)進(jìn)程在后臺(tái)工作,
不影響前臺(tái)的其他進(jìn)程。

Q: 什么是與設(shè)備無關(guān)性(設(shè)備獨(dú)立性)?
A:計(jì)算機(jī)的外部設(shè)備很多,同種類型的設(shè)備又有不同廠家、不同型號(hào)的產(chǎn)品。這
些產(chǎn)品總會(huì)有些細(xì)微的差別。這就給應(yīng)用程序的編寫帶來很大的困難,因?yàn)橐?
個(gè)應(yīng)用程序不可能顧及到所有硬件的兼容性。為此,操作系統(tǒng)將具體的硬件設(shè)
備同整個(gè)系統(tǒng)隔離開來,對(duì)硬件的具體操作、與硬件有關(guān)的兼容性問題等統(tǒng)統(tǒng)  
由設(shè)備驅(qū)動(dòng)程序來解決,同時(shí)操作系統(tǒng)向應(yīng)用程序提供統(tǒng)一的操縱設(shè)備的方法,
應(yīng)用程序只需要按套路調(diào)用操作系統(tǒng)提供的功能即可,無須關(guān)心實(shí)際的設(shè)備是
什么,這就是與設(shè)備無關(guān)性。
  這樣,每增添或改動(dòng)一個(gè)系統(tǒng)上的硬件,只需要安裝相應(yīng)的驅(qū)動(dòng)程序即可。

Q: 什么是緩沖 (buffering) 技術(shù)?
A:在數(shù)據(jù)到達(dá)與離去速度不匹配的地方,就應(yīng)該使用緩沖技術(shù)。緩沖技術(shù)好比是
一個(gè)水庫(kù),如果上游來的水太多,下游來不及排走,水庫(kù)就起到“緩沖”作用,
先讓水在水庫(kù)中停一些時(shí)候,等下游能繼續(xù)排水,再把水送往下游。
  通常CPU的速度要比I/O設(shè)備的速度快得多得多,所以可以設(shè)置緩沖區(qū),對(duì)于從
CPU來的數(shù)據(jù),先放在緩沖區(qū)中,然后設(shè)備可以慢慢地從緩沖區(qū)中讀出數(shù)據(jù)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多