??
操作系統(tǒng)原理
?
我們每天都同操作系統(tǒng)打交道,了解一些操作系統(tǒng)原理上的知識是絕對有必要的,它能夠讓你了解操作系統(tǒng)內(nèi)部是怎么工作的,為什么會出現(xiàn)這樣那樣的問題,為我們解決這些問題提供思路。
??? 本文全然是為普通電腦用戶寫的,省略了全部難以理解的算法、原理,沒有太多細節(jié)上的東西,僅僅是針對普通電腦用戶可能感興趣的問題給出了實現(xiàn)思想。寫這些東西僅僅是我的一相情愿,就怕我還是寫得深了些,剛開始學(xué)習(xí)的人讀不懂。假設(shè)這10K文字能讓你對操作系統(tǒng)有更深的了解,那也就不枉了這幾個汗流浹背的夏日午后了。
Q: 什么是中斷?
A:中斷嘛,舉個easy理解的樣例吧。
?? 比方蓮蓮和唐唐在下象棋,眼看蓮蓮就快招架不住了,正當此緊要關(guān)頭,唐
唐的女友來了,非要唐唐陪她上街買衣服不可(唐唐暈倒:-) ),于是唐唐
不得不同蓮蓮商議,先把棋盤封了,待買完衣服后繼續(xù)戰(zhàn)斗。掌燈時分,唐
唐帶著滿臉疲憊回到了棋盤前,結(jié)果蓮蓮不費吹灰僅僅力便反敗為勝。
這就是整個中斷過程。我們來看看中斷過程是怎樣發(fā)生的:
? 1)中斷請求:唐唐的女友要他逛街
? 2)中斷響應(yīng):唐唐準備放下棋局陪女友逛街
? 3)現(xiàn)場保護:先把棋盤封了
? 4)中斷處理:唐唐陪女友逛街買衣服
? 5)恢復(fù)現(xiàn)場:把棋盤解封
? 6)中斷返回:繼續(xù)戰(zhàn)斗
? 在計算機中,中斷機制是非常重要的,它用于協(xié)調(diào)系統(tǒng)對各種外部事件的響
應(yīng)和處理,而且是實現(xiàn)多任務(wù)的必要條件。能夠這么說,假設(shè)沒有中斷機制,
就沒有計算機。噢,對了,假設(shè)唐唐把棋移到密室中下,不讓他的女友打攪,
這就叫“中斷屏蔽”。
Q:RING3 、 RING0 是什么意思?
A:這得從CPU指令系統(tǒng)(用于控制CPU完畢各種功能的命令)的特權(quán)級別說起。
在CPU的全部指令中,有一些指令是非常危急的,假設(shè)錯用,將導(dǎo)致整個系統(tǒng)
崩潰。比方:清內(nèi)存、設(shè)置時鐘等。假設(shè)全部的程序都能使用這些指令,那
么你的系統(tǒng)一天死機n回就不足為奇了。所以,CPU將指令分為特權(quán)指令和非
特權(quán)指令,對于那些危急的指令,僅僅同意操作系統(tǒng)及其相關(guān)模塊使用,普通
的應(yīng)用程序僅僅能使用那些不會造成災(zāi)難的指令。形象地說,特權(quán)指令就是那
些兒童不宜的東東,而非特權(quán)指令則是老少皆宜。
?? Intel的CPU將特權(quán)級別分為4個級別:RING0,RING1,RING2,RING3。Windows僅僅
使用當中的兩個級別RING0和RING3,RING0僅僅給操作系統(tǒng)用,RING3誰都能用。
假設(shè)普通應(yīng)用程序企圖執(zhí)行RING0指令,則Windows會顯示“非法指令”錯誤信
息。雖然有CPU的特權(quán)級別作保護,遺憾的是WINDOW98本身漏洞非常多,使用
Windows 98的系統(tǒng)一天死機n回也是正常的。
Q: 為什么要有操作系統(tǒng)?
A:哈哈,難道你還沒感受到操作系統(tǒng)的魅力嗎?由于有了象Windows這樣優(yōu)秀的
操作系統(tǒng),我們的機器才一天到晚地出問題——這個那個的問題,我們才需
要一天到晚地重裝Windows,這樣才使我們牢牢地記住了象微軟這種公司的
名字,和象比爾蓋茨這樣優(yōu)秀的程序猿兼老板的名字……
?? 好了,說正經(jīng)的,雖然Windows不穩(wěn)定,但絕對不是否能認它是當今最棒的操
作系統(tǒng)之中的一個。操作系統(tǒng)在計算機中起著重要作用,它為全部的應(yīng)用程序提供
一個執(zhí)行環(huán)境,并將應(yīng)用程序同詳細硬件隔離。比方在機器中換一塊聲卡,僅僅
須要又一次安裝一下聲卡驅(qū)動程序就完事了,但假設(shè)沒有操作系統(tǒng),你就必須
為這塊新的聲卡又一次購買全部的應(yīng)用程序,以便這些應(yīng)用程序能夠認識這塊聲
卡并能夠使用它。
?? 操作系統(tǒng)就象計算機的大管家,管理著計算機的各種資源,比方內(nèi)存、磁盤、
CPU等。應(yīng)用程序想使用這些資源,都必須經(jīng)過操作系統(tǒng)同意(資源申請),
而且由操作系統(tǒng)統(tǒng)一安排使用時間(資源分配),應(yīng)用程序用完后必須將資源
還給操作系統(tǒng)(資源回收),以便其它應(yīng)用程序使用。就這樣,計算機系統(tǒng)在
操作系統(tǒng)的管理下以最可能高的效率有條不紊地工作著。
Q: 什么叫進程?進程同程序有什么區(qū)別?
A:進程是程序在計算機上的一次執(zhí)行活動。當你執(zhí)行一個程序,你就啟動了一個
進程。顯然,程序是死的(靜態(tài)的),進程是活的(動態(tài)的)。
進程能夠分為系統(tǒng)進程和用戶進程。凡是用于完畢操作系統(tǒng)的各種功能的進程
就是系統(tǒng)進程,它們就是處于執(zhí)行狀態(tài)下的操作系統(tǒng)本身;用戶進程就不必我
多講了吧,全部由你啟動的進程都是用戶進程。
進程是操作系統(tǒng)進行資源分配的單位。在Windows
下,進程又被細化為線程,也就是一個進程下有多個能獨立執(zhí)行的
更小的單位。
Q: 什么是多任務(wù)?
A:在同一個時間里,同一個計算機系統(tǒng)中假設(shè)同意兩個或兩個以上的進程處于運
行狀態(tài),這便是多任務(wù)。現(xiàn)代的操作系統(tǒng)差點兒都是多任務(wù)操作系統(tǒng),能夠同一時候
管理多個進程的執(zhí)行。多任務(wù)帶來的優(yōu)點是明顯的,比方你能夠邊聽mp3邊上網(wǎng),
與此同一時候甚至能夠?qū)⑾螺d的文檔打印出來,而這些任務(wù)之間絲毫不會相互干擾。
Q: 什么是 “ 并發(fā) ” ?什么是 “ 并行 ” ?
A:俗話說,一心不能二用,這對計算機也一樣,原則上一個CPU僅僅能分配給一個
進程,以便執(zhí)行這個進程。我們通常使用的計算機中僅僅有一個CPU,也就是說
僅僅有一顆心,要讓它一心多用,同一時候執(zhí)行多個進程,就必須使用并發(fā)技術(shù)。
實現(xiàn)并發(fā)技術(shù)相當復(fù)雜,最easy理解的是“時間片輪轉(zhuǎn)進程調(diào)度算法”,它
的思想簡介例如以下:
?? 在操作系統(tǒng)的管理下,全部正在執(zhí)行的進程輪流使用CPU,每一個進程同意占用
CPU的時間非常短(比方10毫秒),這樣用戶根本感覺不出來CPU是在輪流為
多個進程服務(wù),就好象全部的進程都在不間斷地執(zhí)行一樣。但實際上在不論什么
一個時間內(nèi)有且僅有一個進程占有CPU。假設(shè)一臺計算機有多個CPU,情況就不同
了,假設(shè)進程數(shù)小于CPU數(shù),則不同的進程能夠分配給不同的CPU來執(zhí)行,這樣,
多個進程就是真正同一時候執(zhí)行的,這便是并行。但假設(shè)進程數(shù)大于CPU數(shù),則仍然需
要使用并發(fā)技術(shù)。在Windows中,進行CPU分配是以線程為單位的,一個進程可能
由多個線程組成,這時情況更加復(fù)雜,但簡單地說,有例如以下關(guān)系:
總線程數(shù) <= CPU數(shù)量:并行執(zhí)行
總線程數(shù) > CPU數(shù)量:并發(fā)執(zhí)行
?? 并行執(zhí)行的效率顯然高于并發(fā)執(zhí)行,所以在多CPU的計算機中,多任務(wù)的效率
比較高。可是,假設(shè)在多CPU計算機中僅僅執(zhí)行一個進程(線程),就不能發(fā)揮多
CPU的優(yōu)勢。值得注意的是,Windows 9x并不支持多CPU系統(tǒng),假設(shè)在多CPU系統(tǒng) ?
上安裝Windows 9x,有再多的CPU也是白搭。
Q: 什么叫 “ 可搶占式多任務(wù) ” ?
A:進程是有優(yōu)先級的。假設(shè)即將被執(zhí)行的進程的優(yōu)先級比正在執(zhí)行的進程的優(yōu)先
級高,則系統(tǒng)能夠強行剝奪正在執(zhí)行的進程的CPU,讓優(yōu)先級高的進程先執(zhí)行。
可見,人類社會的特權(quán)思想在計算機世界中表現(xiàn)得多么淋漓盡致。:-)
實際的操作系統(tǒng)一般將時間片思想同可強占思想結(jié)合起來進行CPU分配。
可搶占式多任務(wù)的優(yōu)點是非常多的,比方當一個進程發(fā)生意外無法執(zhí)行時,假設(shè)
不能強行剝奪其CPU占有權(quán),則整個系統(tǒng)都得癱瘓,由于早期的Windows 3.1不
是可搶占式多任務(wù)系統(tǒng),所以Windows 3.1非常不可靠。
Q: 多個進程在并發(fā) / 并行執(zhí)行過程中會產(chǎn)生沖突嗎?
A:假設(shè)沒有不論什么保護機制,肯定是會的。這種沖突一般發(fā)生在對資源的爭奪上。
顯然,假設(shè)一條馬路窄到僅僅能通過一輛馬車,則當有兩輛馬車想同一時候通過時,
某個馬車夫就必須發(fā)揚風(fēng)格,先讓一讓,否則結(jié)果肯定是人仰馬翻。
操作系統(tǒng)細心地管理著這一切,以避免進程間的沖突,程序猿們也經(jīng)常須要
細心地依照某種既定規(guī)則編敲代碼,以便操作系統(tǒng)管理。
更詳細的方法、原理已經(jīng)遠遠超過了剛開始學(xué)習(xí)的人能接受的水平,我還是把它略去
吧。
Q: 什么是虛擬存儲器?
A:虛擬存儲技術(shù)是非常重要的存儲管理技術(shù),它的核心思想是利用巨大的硬盤
空間來彌補不足的實際內(nèi)存空間。在虛擬內(nèi)存管理下,應(yīng)用程序能夠使用的
存儲空間遠遠大于實際的內(nèi)存大小。我們將一臺計算機實際安裝的內(nèi)存稱為
物理存儲器,將通過虛擬存儲技術(shù)得到的比實際內(nèi)存空間大得多的存儲空間
成為虛擬存儲器。虛擬存儲技術(shù)的實現(xiàn)也是非常復(fù)雜,假設(shè)細講的話肯定又
是吃力不討好,這里僅僅提一提最簡單的思想。內(nèi)存單元在計算機中是有編號
的,叫內(nèi)存地址。假設(shè)你的計算機中有1M物理內(nèi)存(天哪,286的說?呵呵,
舉樣例方便嘛),則物理內(nèi)存的地址范圍為0到1048575(1024 x 1024 - 1)。
假設(shè)想訪問地址為1048576的單元,顯然是不能夠的,由于最大僅僅到1048575了
。可是,假設(shè)這時我將物理內(nèi)存中全部的東西先保存到硬盤上,然后通過某種
方法將1048576映射到地址為0的物理存儲單元上,我不就又得到另外整整一個
M的存儲空間了嗎,當程序要訪問地址為0的單元時,我把原先存儲在硬盤上的
內(nèi)容調(diào)回物理內(nèi)存中就能夠了。這個想法夠巧妙吧,它就是虛擬存儲技術(shù)的核
心思想。于是我就能夠得到n個1M空間了。真正的虛擬存儲管理比上面我所提的
還要復(fù)雜、巧妙得多,它能夠?qū)崿F(xiàn)讓不同的進程在不同的地址空間上執(zhí)行(即
讓每一個進程覺得自己占有全部的存儲空間,能夠隨意使用,不必在乎系統(tǒng)中的
其它進程是怎樣使用存儲空間的。這宛如讓不同的進程執(zhí)行在不同的計算機上)
,而且要考慮最優(yōu)的內(nèi)存使用效率。
Q: 假設(shè)一個進程訪問了不屬于自己地址空間內(nèi)的存儲單元,會發(fā)生什么情況?
A:在Windows下你肯定會看到一個“該程序執(zhí)行了非法操作,即將被關(guān)閉……”
之類的對話框。看到這種對話框常令我們無比沮喪,但這是操作系統(tǒng)必須
做的事,我們稱它為“存儲保護”。存儲保護的目的是保護系統(tǒng)進程不被用
戶進程破壞,不同意進程讀寫不屬于自己的區(qū)域。道理是非常easy的:考試的
時候,你僅僅被同意在自己的試卷上面作答,假設(shè)你想看別人的試卷,甚至想
改別人試卷上的內(nèi)容,你就“執(zhí)行了非法操作”,肯定是要被監(jiān)考“關(guān)閉”
的(前提是監(jiān)考人員工作正常,否則就亂了套了,會有非常嚴重的后果)。
注意:在Windows中引起系統(tǒng)關(guān)閉一個進程的原因非常多,除了非法讀寫其它
進程存儲區(qū)(地址越界)外,還有如執(zhí)行了僅僅有操作系統(tǒng)才干執(zhí)行的ring0
指令、程序中出現(xiàn)除數(shù)為0的情況等等。
Q: 什么是硬盤分區(qū)?
A:最早的時候,操作系統(tǒng)無法管理較大的硬盤空間,所以將一個大的硬盤空間
分為多個較小的區(qū)域以便于管理。另外,有時須要在系統(tǒng)中安裝多個操作系
統(tǒng),也須要將硬盤分為不同的區(qū)域,讓不同的操作系統(tǒng)分別管理,互不干擾。
如今已經(jīng)沒有由于操作系統(tǒng)無法管理大硬盤而須要對硬盤進行分區(qū)的可能性
了,但我們?nèi)匀粚τ脖P進行分區(qū),除了安裝多個操作系統(tǒng)外,基本的還是為
了對各種文件進行管理比較方便。
操作系統(tǒng)為不同的硬盤分區(qū)賦予不同的盤符,這樣就在邏輯上把一個大硬盤
切割成了多個小硬盤。
Q: 什么是硬盤分區(qū)的主引導(dǎo)記錄?
A:主引導(dǎo)記錄是每一個硬盤分區(qū)的命根子,上面記錄著一個分區(qū)所占用的硬盤空
間的位置等重要信息。假設(shè)一個分區(qū)的主引導(dǎo)記錄被破壞,這個分區(qū)就算玩
完了。
Q: 什么是活動分區(qū)?
A:活動分區(qū)是在系統(tǒng)加電后具有自舉(引導(dǎo)系統(tǒng))能力的分區(qū),在活動分區(qū)上
的主引導(dǎo)記錄中有一段主引導(dǎo)程序,每當系統(tǒng)啟動后,這段程序被調(diào)入內(nèi)存
執(zhí)行,以引導(dǎo)(啟動)保存在硬盤上的操作系統(tǒng)。不同的操作系統(tǒng)引導(dǎo)的方
法是不同的,所以這段主引導(dǎo)程序隨著系統(tǒng)上安裝的操作系統(tǒng)的不同而不同。
Q:Windows 是怎樣儲存磁盤文件的?
A:首先,Windows以“簇”為單位使用硬盤上的空間。依據(jù)硬盤空間的大小,一
個簇的大小是不一樣的。一般說,簇越小,硬盤空間的利用率越大,簇越大,
存儲速度越快。每一個文件必須被分成以簇的大小為單位的多個塊,然后儲存在
硬盤上。為此,須要一個表格來記錄一個文件被分成的塊都儲存在硬盤的哪些簇
上,這個表格在Win9x中就是FAT表。FAT表也儲存在硬盤上。所以,F(xiàn)AT表是文件
系統(tǒng)的命根子,破壞了它,一個磁盤全部的文件就玩完了。于是,Windows除了使
用一個FAT表外,還會備份一個。
Q: 什么是文件文件夾表?
A:文件文件夾表同F(xiàn)AT表一樣是非常重要的,它記錄著全部文件的文件名稱、屬性和在
FAT表中的起始位置。當你須要讀寫一個文件時,Windows就從文件文件夾表中找
這個文件,假設(shè)找到,依照文件文件夾表中所指示的該文件在FAT表中的起始位置
讀出FAT表中與這個文件有關(guān)的存儲信息,就能夠讀寫這個文件了。
Q: 什么叫虛擬設(shè)備?
A:不同的I/O設(shè)備速度有快有慢。在操作系統(tǒng)中,為了有效地利用各種設(shè)備,能夠
使用快速設(shè)備來模擬低速設(shè)備,從而得到的就是虛擬設(shè)備。
在Windows中典型的樣例就是打印機。我們不難發(fā)如今啟動打印時打印機并沒有
工作,而是硬盤在響,然后全部的打印文檔都進入打印隊列,排隊打印。在前
一個文檔還在打印機上打印的時候,下一個文檔已經(jīng)進入打印隊列,提交這個
文檔的進程無須等待打印機將這個文檔打印完畢,就能夠繼續(xù)處理別的事情了。
這是由于Windows使用硬盤模擬打印機。全部的打印工作實際上都“打印”到了
硬盤上。硬盤速度比打印機快得多,所以一下子就完畢了。此時有還有一個進程
負責(zé)從硬盤上讀出打印數(shù)據(jù),打印到實際的打印機上,這個進程在后臺工作,
不影響前臺的其它進程。
Q: 什么是與設(shè)備無關(guān)性(設(shè)備獨立性)?
A:計算機的外部設(shè)備非常多,同種類型的設(shè)備又有不同廠家、不同型號的產(chǎn)品。這
些產(chǎn)品總會有些細微的區(qū)別。這就給應(yīng)用程序的編寫帶來非常大的困難,由于一
個應(yīng)用程序不可能顧及到全部硬件的兼容性。為此,操作系統(tǒng)將詳細的硬件設(shè)
備同整個系統(tǒng)隔離開來,對硬件的詳細操作、與硬件有關(guān)的兼容性問題等統(tǒng)統(tǒng)
由設(shè)備驅(qū)動程序來解決,同一時候操作系統(tǒng)向應(yīng)用程序提供統(tǒng)一的操縱設(shè)備的方法,
應(yīng)用程序僅僅須要按套路調(diào)用操作系統(tǒng)提供的功能就可以,無須關(guān)心實際的設(shè)備是
什么,這就是與設(shè)備無關(guān)性。
? 這樣,每增添或修改一個系統(tǒng)上的硬件,僅僅須要安裝對應(yīng)的驅(qū)動程序就可以。
Q: 什么是緩沖 (buffering) 技術(shù)?
A:在數(shù)據(jù)到達與離去速度不匹配的地方,就應(yīng)該使用緩沖技術(shù)。緩沖技術(shù)好比是
一個水庫,假設(shè)上游來的水太多,下游來不及排走,水庫就起到“緩沖”作用,
先讓水在水庫中停一些時候,等下游能繼續(xù)排水,再把水送往下游。
? 通常CPU的速度要比I/O設(shè)備的速度快得多得多,所以能夠設(shè)置緩沖區(qū),對于從
CPU來的數(shù)據(jù),先放在緩沖區(qū)中,然后設(shè)備能夠慢慢地從緩沖區(qū)中讀出數(shù)據(jù)。
??? 本文全然是為普通電腦用戶寫的,省略了全部難以理解的算法、原理,沒有太多細節(jié)上的東西,僅僅是針對普通電腦用戶可能感興趣的問題給出了實現(xiàn)思想。寫這些東西僅僅是我的一相情愿,就怕我還是寫得深了些,剛開始學(xué)習(xí)的人讀不懂。假設(shè)這10K文字能讓你對操作系統(tǒng)有更深的了解,那也就不枉了這幾個汗流浹背的夏日午后了。
Q: 什么是中斷?
A:中斷嘛,舉個easy理解的樣例吧。
?? 比方蓮蓮和唐唐在下象棋,眼看蓮蓮就快招架不住了,正當此緊要關(guān)頭,唐
唐的女友來了,非要唐唐陪她上街買衣服不可(唐唐暈倒:-) ),于是唐唐
不得不同蓮蓮商議,先把棋盤封了,待買完衣服后繼續(xù)戰(zhàn)斗。掌燈時分,唐
唐帶著滿臉疲憊回到了棋盤前,結(jié)果蓮蓮不費吹灰僅僅力便反敗為勝。
這就是整個中斷過程。我們來看看中斷過程是怎樣發(fā)生的:
? 1)中斷請求:唐唐的女友要他逛街
? 2)中斷響應(yīng):唐唐準備放下棋局陪女友逛街
? 3)現(xiàn)場保護:先把棋盤封了
? 4)中斷處理:唐唐陪女友逛街買衣服
? 5)恢復(fù)現(xiàn)場:把棋盤解封
? 6)中斷返回:繼續(xù)戰(zhàn)斗
? 在計算機中,中斷機制是非常重要的,它用于協(xié)調(diào)系統(tǒng)對各種外部事件的響
應(yīng)和處理,而且是實現(xiàn)多任務(wù)的必要條件。能夠這么說,假設(shè)沒有中斷機制,
就沒有計算機。噢,對了,假設(shè)唐唐把棋移到密室中下,不讓他的女友打攪,
這就叫“中斷屏蔽”。
Q:RING3 、 RING0 是什么意思?
A:這得從CPU指令系統(tǒng)(用于控制CPU完畢各種功能的命令)的特權(quán)級別說起。
在CPU的全部指令中,有一些指令是非常危急的,假設(shè)錯用,將導(dǎo)致整個系統(tǒng)
崩潰。比方:清內(nèi)存、設(shè)置時鐘等。假設(shè)全部的程序都能使用這些指令,那
么你的系統(tǒng)一天死機n回就不足為奇了。所以,CPU將指令分為特權(quán)指令和非
特權(quán)指令,對于那些危急的指令,僅僅同意操作系統(tǒng)及其相關(guān)模塊使用,普通
的應(yīng)用程序僅僅能使用那些不會造成災(zāi)難的指令。形象地說,特權(quán)指令就是那
些兒童不宜的東東,而非特權(quán)指令則是老少皆宜。
?? Intel的CPU將特權(quán)級別分為4個級別:RING0,RING1,RING2,RING3。Windows僅僅
使用當中的兩個級別RING0和RING3,RING0僅僅給操作系統(tǒng)用,RING3誰都能用。
假設(shè)普通應(yīng)用程序企圖執(zhí)行RING0指令,則Windows會顯示“非法指令”錯誤信
息。雖然有CPU的特權(quán)級別作保護,遺憾的是WINDOW98本身漏洞非常多,使用
Windows 98的系統(tǒng)一天死機n回也是正常的。
Q: 為什么要有操作系統(tǒng)?
A:哈哈,難道你還沒感受到操作系統(tǒng)的魅力嗎?由于有了象Windows這樣優(yōu)秀的
操作系統(tǒng),我們的機器才一天到晚地出問題——這個那個的問題,我們才需
要一天到晚地重裝Windows,這樣才使我們牢牢地記住了象微軟這種公司的
名字,和象比爾蓋茨這樣優(yōu)秀的程序猿兼老板的名字……
?? 好了,說正經(jīng)的,雖然Windows不穩(wěn)定,但絕對不是否能認它是當今最棒的操
作系統(tǒng)之中的一個。操作系統(tǒng)在計算機中起著重要作用,它為全部的應(yīng)用程序提供
一個執(zhí)行環(huán)境,并將應(yīng)用程序同詳細硬件隔離。比方在機器中換一塊聲卡,僅僅
須要又一次安裝一下聲卡驅(qū)動程序就完事了,但假設(shè)沒有操作系統(tǒng),你就必須
為這塊新的聲卡又一次購買全部的應(yīng)用程序,以便這些應(yīng)用程序能夠認識這塊聲
卡并能夠使用它。
?? 操作系統(tǒng)就象計算機的大管家,管理著計算機的各種資源,比方內(nèi)存、磁盤、
CPU等。應(yīng)用程序想使用這些資源,都必須經(jīng)過操作系統(tǒng)同意(資源申請),
而且由操作系統(tǒng)統(tǒng)一安排使用時間(資源分配),應(yīng)用程序用完后必須將資源
還給操作系統(tǒng)(資源回收),以便其它應(yīng)用程序使用。就這樣,計算機系統(tǒng)在
操作系統(tǒng)的管理下以最可能高的效率有條不紊地工作著。
Q: 什么叫進程?進程同程序有什么區(qū)別?
A:進程是程序在計算機上的一次執(zhí)行活動。當你執(zhí)行一個程序,你就啟動了一個
進程。顯然,程序是死的(靜態(tài)的),進程是活的(動態(tài)的)。
進程能夠分為系統(tǒng)進程和用戶進程。凡是用于完畢操作系統(tǒng)的各種功能的進程
就是系統(tǒng)進程,它們就是處于執(zhí)行狀態(tài)下的操作系統(tǒng)本身;用戶進程就不必我
多講了吧,全部由你啟動的進程都是用戶進程。
進程是操作系統(tǒng)進行資源分配的單位。在Windows
下,進程又被細化為線程,也就是一個進程下有多個能獨立執(zhí)行的
更小的單位。
Q: 什么是多任務(wù)?
A:在同一個時間里,同一個計算機系統(tǒng)中假設(shè)同意兩個或兩個以上的進程處于運
行狀態(tài),這便是多任務(wù)。現(xiàn)代的操作系統(tǒng)差點兒都是多任務(wù)操作系統(tǒng),能夠同一時候
管理多個進程的執(zhí)行。多任務(wù)帶來的優(yōu)點是明顯的,比方你能夠邊聽mp3邊上網(wǎng),
與此同一時候甚至能夠?qū)⑾螺d的文檔打印出來,而這些任務(wù)之間絲毫不會相互干擾。
Q: 什么是 “ 并發(fā) ” ?什么是 “ 并行 ” ?
A:俗話說,一心不能二用,這對計算機也一樣,原則上一個CPU僅僅能分配給一個
進程,以便執(zhí)行這個進程。我們通常使用的計算機中僅僅有一個CPU,也就是說
僅僅有一顆心,要讓它一心多用,同一時候執(zhí)行多個進程,就必須使用并發(fā)技術(shù)。
實現(xiàn)并發(fā)技術(shù)相當復(fù)雜,最easy理解的是“時間片輪轉(zhuǎn)進程調(diào)度算法”,它
的思想簡介例如以下:
?? 在操作系統(tǒng)的管理下,全部正在執(zhí)行的進程輪流使用CPU,每一個進程同意占用
CPU的時間非常短(比方10毫秒),這樣用戶根本感覺不出來CPU是在輪流為
多個進程服務(wù),就好象全部的進程都在不間斷地執(zhí)行一樣。但實際上在不論什么
一個時間內(nèi)有且僅有一個進程占有CPU。假設(shè)一臺計算機有多個CPU,情況就不同
了,假設(shè)進程數(shù)小于CPU數(shù),則不同的進程能夠分配給不同的CPU來執(zhí)行,這樣,
多個進程就是真正同一時候執(zhí)行的,這便是并行。但假設(shè)進程數(shù)大于CPU數(shù),則仍然需
要使用并發(fā)技術(shù)。在Windows中,進行CPU分配是以線程為單位的,一個進程可能
由多個線程組成,這時情況更加復(fù)雜,但簡單地說,有例如以下關(guān)系:
總線程數(shù) <= CPU數(shù)量:并行執(zhí)行
總線程數(shù) > CPU數(shù)量:并發(fā)執(zhí)行
?? 并行執(zhí)行的效率顯然高于并發(fā)執(zhí)行,所以在多CPU的計算機中,多任務(wù)的效率
比較高。可是,假設(shè)在多CPU計算機中僅僅執(zhí)行一個進程(線程),就不能發(fā)揮多
CPU的優(yōu)勢。值得注意的是,Windows 9x并不支持多CPU系統(tǒng),假設(shè)在多CPU系統(tǒng) ?
上安裝Windows 9x,有再多的CPU也是白搭。
Q: 什么叫 “ 可搶占式多任務(wù) ” ?
A:進程是有優(yōu)先級的。假設(shè)即將被執(zhí)行的進程的優(yōu)先級比正在執(zhí)行的進程的優(yōu)先
級高,則系統(tǒng)能夠強行剝奪正在執(zhí)行的進程的CPU,讓優(yōu)先級高的進程先執(zhí)行。
可見,人類社會的特權(quán)思想在計算機世界中表現(xiàn)得多么淋漓盡致。:-)
實際的操作系統(tǒng)一般將時間片思想同可強占思想結(jié)合起來進行CPU分配。
可搶占式多任務(wù)的優(yōu)點是非常多的,比方當一個進程發(fā)生意外無法執(zhí)行時,假設(shè)
不能強行剝奪其CPU占有權(quán),則整個系統(tǒng)都得癱瘓,由于早期的Windows 3.1不
是可搶占式多任務(wù)系統(tǒng),所以Windows 3.1非常不可靠。
Q: 多個進程在并發(fā) / 并行執(zhí)行過程中會產(chǎn)生沖突嗎?
A:假設(shè)沒有不論什么保護機制,肯定是會的。這種沖突一般發(fā)生在對資源的爭奪上。
顯然,假設(shè)一條馬路窄到僅僅能通過一輛馬車,則當有兩輛馬車想同一時候通過時,
某個馬車夫就必須發(fā)揚風(fēng)格,先讓一讓,否則結(jié)果肯定是人仰馬翻。
操作系統(tǒng)細心地管理著這一切,以避免進程間的沖突,程序猿們也經(jīng)常須要
細心地依照某種既定規(guī)則編敲代碼,以便操作系統(tǒng)管理。
更詳細的方法、原理已經(jīng)遠遠超過了剛開始學(xué)習(xí)的人能接受的水平,我還是把它略去
吧。
Q: 什么是虛擬存儲器?
A:虛擬存儲技術(shù)是非常重要的存儲管理技術(shù),它的核心思想是利用巨大的硬盤
空間來彌補不足的實際內(nèi)存空間。在虛擬內(nèi)存管理下,應(yīng)用程序能夠使用的
存儲空間遠遠大于實際的內(nèi)存大小。我們將一臺計算機實際安裝的內(nèi)存稱為
物理存儲器,將通過虛擬存儲技術(shù)得到的比實際內(nèi)存空間大得多的存儲空間
成為虛擬存儲器。虛擬存儲技術(shù)的實現(xiàn)也是非常復(fù)雜,假設(shè)細講的話肯定又
是吃力不討好,這里僅僅提一提最簡單的思想。內(nèi)存單元在計算機中是有編號
的,叫內(nèi)存地址。假設(shè)你的計算機中有1M物理內(nèi)存(天哪,286的說?呵呵,
舉樣例方便嘛),則物理內(nèi)存的地址范圍為0到1048575(1024 x 1024 - 1)。
假設(shè)想訪問地址為1048576的單元,顯然是不能夠的,由于最大僅僅到1048575了
。可是,假設(shè)這時我將物理內(nèi)存中全部的東西先保存到硬盤上,然后通過某種
方法將1048576映射到地址為0的物理存儲單元上,我不就又得到另外整整一個
M的存儲空間了嗎,當程序要訪問地址為0的單元時,我把原先存儲在硬盤上的
內(nèi)容調(diào)回物理內(nèi)存中就能夠了。這個想法夠巧妙吧,它就是虛擬存儲技術(shù)的核
心思想。于是我就能夠得到n個1M空間了。真正的虛擬存儲管理比上面我所提的
還要復(fù)雜、巧妙得多,它能夠?qū)崿F(xiàn)讓不同的進程在不同的地址空間上執(zhí)行(即
讓每一個進程覺得自己占有全部的存儲空間,能夠隨意使用,不必在乎系統(tǒng)中的
其它進程是怎樣使用存儲空間的。這宛如讓不同的進程執(zhí)行在不同的計算機上)
,而且要考慮最優(yōu)的內(nèi)存使用效率。
Q: 假設(shè)一個進程訪問了不屬于自己地址空間內(nèi)的存儲單元,會發(fā)生什么情況?
A:在Windows下你肯定會看到一個“該程序執(zhí)行了非法操作,即將被關(guān)閉……”
之類的對話框。看到這種對話框常令我們無比沮喪,但這是操作系統(tǒng)必須
做的事,我們稱它為“存儲保護”。存儲保護的目的是保護系統(tǒng)進程不被用
戶進程破壞,不同意進程讀寫不屬于自己的區(qū)域。道理是非常easy的:考試的
時候,你僅僅被同意在自己的試卷上面作答,假設(shè)你想看別人的試卷,甚至想
改別人試卷上的內(nèi)容,你就“執(zhí)行了非法操作”,肯定是要被監(jiān)考“關(guān)閉”
的(前提是監(jiān)考人員工作正常,否則就亂了套了,會有非常嚴重的后果)。
注意:在Windows中引起系統(tǒng)關(guān)閉一個進程的原因非常多,除了非法讀寫其它
進程存儲區(qū)(地址越界)外,還有如執(zhí)行了僅僅有操作系統(tǒng)才干執(zhí)行的ring0
指令、程序中出現(xiàn)除數(shù)為0的情況等等。
Q: 什么是硬盤分區(qū)?
A:最早的時候,操作系統(tǒng)無法管理較大的硬盤空間,所以將一個大的硬盤空間
分為多個較小的區(qū)域以便于管理。另外,有時須要在系統(tǒng)中安裝多個操作系
統(tǒng),也須要將硬盤分為不同的區(qū)域,讓不同的操作系統(tǒng)分別管理,互不干擾。
如今已經(jīng)沒有由于操作系統(tǒng)無法管理大硬盤而須要對硬盤進行分區(qū)的可能性
了,但我們?nèi)匀粚τ脖P進行分區(qū),除了安裝多個操作系統(tǒng)外,基本的還是為
了對各種文件進行管理比較方便。
操作系統(tǒng)為不同的硬盤分區(qū)賦予不同的盤符,這樣就在邏輯上把一個大硬盤
切割成了多個小硬盤。
Q: 什么是硬盤分區(qū)的主引導(dǎo)記錄?
A:主引導(dǎo)記錄是每一個硬盤分區(qū)的命根子,上面記錄著一個分區(qū)所占用的硬盤空
間的位置等重要信息。假設(shè)一個分區(qū)的主引導(dǎo)記錄被破壞,這個分區(qū)就算玩
完了。
Q: 什么是活動分區(qū)?
A:活動分區(qū)是在系統(tǒng)加電后具有自舉(引導(dǎo)系統(tǒng))能力的分區(qū),在活動分區(qū)上
的主引導(dǎo)記錄中有一段主引導(dǎo)程序,每當系統(tǒng)啟動后,這段程序被調(diào)入內(nèi)存
執(zhí)行,以引導(dǎo)(啟動)保存在硬盤上的操作系統(tǒng)。不同的操作系統(tǒng)引導(dǎo)的方
法是不同的,所以這段主引導(dǎo)程序隨著系統(tǒng)上安裝的操作系統(tǒng)的不同而不同。
Q:Windows 是怎樣儲存磁盤文件的?
A:首先,Windows以“簇”為單位使用硬盤上的空間。依據(jù)硬盤空間的大小,一
個簇的大小是不一樣的。一般說,簇越小,硬盤空間的利用率越大,簇越大,
存儲速度越快。每一個文件必須被分成以簇的大小為單位的多個塊,然后儲存在
硬盤上。為此,須要一個表格來記錄一個文件被分成的塊都儲存在硬盤的哪些簇
上,這個表格在Win9x中就是FAT表。FAT表也儲存在硬盤上。所以,F(xiàn)AT表是文件
系統(tǒng)的命根子,破壞了它,一個磁盤全部的文件就玩完了。于是,Windows除了使
用一個FAT表外,還會備份一個。
Q: 什么是文件文件夾表?
A:文件文件夾表同F(xiàn)AT表一樣是非常重要的,它記錄著全部文件的文件名稱、屬性和在
FAT表中的起始位置。當你須要讀寫一個文件時,Windows就從文件文件夾表中找
這個文件,假設(shè)找到,依照文件文件夾表中所指示的該文件在FAT表中的起始位置
讀出FAT表中與這個文件有關(guān)的存儲信息,就能夠讀寫這個文件了。
Q: 什么叫虛擬設(shè)備?
A:不同的I/O設(shè)備速度有快有慢。在操作系統(tǒng)中,為了有效地利用各種設(shè)備,能夠
使用快速設(shè)備來模擬低速設(shè)備,從而得到的就是虛擬設(shè)備。
在Windows中典型的樣例就是打印機。我們不難發(fā)如今啟動打印時打印機并沒有
工作,而是硬盤在響,然后全部的打印文檔都進入打印隊列,排隊打印。在前
一個文檔還在打印機上打印的時候,下一個文檔已經(jīng)進入打印隊列,提交這個
文檔的進程無須等待打印機將這個文檔打印完畢,就能夠繼續(xù)處理別的事情了。
這是由于Windows使用硬盤模擬打印機。全部的打印工作實際上都“打印”到了
硬盤上。硬盤速度比打印機快得多,所以一下子就完畢了。此時有還有一個進程
負責(zé)從硬盤上讀出打印數(shù)據(jù),打印到實際的打印機上,這個進程在后臺工作,
不影響前臺的其它進程。
Q: 什么是與設(shè)備無關(guān)性(設(shè)備獨立性)?
A:計算機的外部設(shè)備非常多,同種類型的設(shè)備又有不同廠家、不同型號的產(chǎn)品。這
些產(chǎn)品總會有些細微的區(qū)別。這就給應(yīng)用程序的編寫帶來非常大的困難,由于一
個應(yīng)用程序不可能顧及到全部硬件的兼容性。為此,操作系統(tǒng)將詳細的硬件設(shè)
備同整個系統(tǒng)隔離開來,對硬件的詳細操作、與硬件有關(guān)的兼容性問題等統(tǒng)統(tǒng)
由設(shè)備驅(qū)動程序來解決,同一時候操作系統(tǒng)向應(yīng)用程序提供統(tǒng)一的操縱設(shè)備的方法,
應(yīng)用程序僅僅須要按套路調(diào)用操作系統(tǒng)提供的功能就可以,無須關(guān)心實際的設(shè)備是
什么,這就是與設(shè)備無關(guān)性。
? 這樣,每增添或修改一個系統(tǒng)上的硬件,僅僅須要安裝對應(yīng)的驅(qū)動程序就可以。
Q: 什么是緩沖 (buffering) 技術(shù)?
A:在數(shù)據(jù)到達與離去速度不匹配的地方,就應(yīng)該使用緩沖技術(shù)。緩沖技術(shù)好比是
一個水庫,假設(shè)上游來的水太多,下游來不及排走,水庫就起到“緩沖”作用,
先讓水在水庫中停一些時候,等下游能繼續(xù)排水,再把水送往下游。
? 通常CPU的速度要比I/O設(shè)備的速度快得多得多,所以能夠設(shè)置緩沖區(qū),對于從
CPU來的數(shù)據(jù),先放在緩沖區(qū)中,然后設(shè)備能夠慢慢地從緩沖區(qū)中讀出數(shù)據(jù)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
