操作系統(tǒng)
操作系統(tǒng)是管理計(jì)算機(jī)硬件資源,控制其他程序運(yùn)行并為用戶提供交互操作界面的系統(tǒng)軟件的集合。操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)的關(guān)鍵組成部分,負(fù)責(zé)管理與配置內(nèi)存、決定系統(tǒng)資源供需的優(yōu)先次序、控制輸入與輸出設(shè)備、操作網(wǎng)絡(luò)與管理文件系統(tǒng)等基本任務(wù)。操作系統(tǒng)的種類很多,各種設(shè)備安裝的操作系統(tǒng)可從簡單到復(fù)雜,可從手機(jī)的嵌入式操作系統(tǒng)到超級計(jì)算機(jī)的大型操作系統(tǒng)。目前流行的現(xiàn)代操作系統(tǒng)主要有Android、BSD、iOS、Linux、Mac OS X、Windows、Windows Phone和z/OS等,除了Windows和z/OS等少數(shù)操作系統(tǒng),大部分操作系統(tǒng)都為類Unix操作系統(tǒng)。
系統(tǒng)簡介
操作系統(tǒng)(英語:Operating System,簡稱OS)是管理和控制計(jì)算機(jī)硬件與軟件資源的計(jì)算機(jī)程序,是直接運(yùn)行在“裸機(jī)”上的最基本的系統(tǒng)軟件,任何其他軟件都必須在操作系統(tǒng)的支持下才能運(yùn)行。操作系統(tǒng)是用戶和計(jì)算機(jī)的接口,同時也是計(jì)算機(jī)硬件和其他軟件的接口。操作系統(tǒng)的功能包括管理計(jì)算機(jī)系統(tǒng)的硬件、軟件及數(shù)據(jù)資源,控制程序運(yùn)行,改善人機(jī)界面,為其它應(yīng)用軟件提供支持等,使計(jì)算機(jī)系統(tǒng)所有資源最大限度地發(fā)揮作用,提供了各種形式的用戶界面,使用戶有一個好的工作環(huán)境,為其它軟件的開發(fā)提供必要的服務(wù)和相應(yīng)的接口。
操作系統(tǒng)的種類相當(dāng)多,各種設(shè)備安裝的操作系統(tǒng)可從簡單到復(fù)雜,可分為智能卡操作系統(tǒng)、實(shí)時操作系統(tǒng)、傳感器節(jié)點(diǎn)操作系統(tǒng)、嵌入式操作系統(tǒng)、個人計(jì)算機(jī)操作系統(tǒng)、多處理器操作系統(tǒng)、網(wǎng)絡(luò)操作系統(tǒng)和大型機(jī)操作系統(tǒng)。[1]目前流行的現(xiàn)代操作系統(tǒng)按應(yīng)用領(lǐng)域劃分主要為三種:桌面操作系統(tǒng)、服務(wù)器操作系統(tǒng)和嵌入式操作系統(tǒng)。
桌面操作系統(tǒng)
桌面操作系統(tǒng)主要用于個人電計(jì)算機(jī)上。個人計(jì)算機(jī)市場從硬件架構(gòu)上來說目前分為兩大陣營,PC機(jī)與Mac機(jī),從軟件上可主要分為兩大類,分別為類Unix操作系統(tǒng)和Windows操作系統(tǒng):
1、Unix和類Unix操作系統(tǒng):Mac OS X,Linux發(fā)行版(如Debian,Ubuntu,Linux Mint,Suse Linux,F(xiàn)edora等);
2、微軟公司W(wǎng)indows操作系統(tǒng)[2]:Windows XP,Windows Vista,Windows 7,Windows 8等。
服務(wù)器操作系統(tǒng)
服務(wù)器操作系統(tǒng)一般指的是安裝在大型計(jì)算機(jī)上的操作系統(tǒng),比如Web服務(wù)器、應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器等。現(xiàn)在服務(wù)器操作系統(tǒng)只要集中在三大類:
1、Unix系列:SUN Solaris,IBM-AIX,HP-UX,F(xiàn)reeBSD等;
2、Linux系列:Red Hat Linux,CentOS,Debian,Ubuntu等;
3、Windows系列:Windows Server 2003,Windows Server 2008,Windows Server 2008 R2等。
嵌入式操作系統(tǒng)
嵌入式操作系統(tǒng)應(yīng)用在嵌入式系統(tǒng)的操作系統(tǒng)。嵌入式系統(tǒng)廣泛應(yīng)用在生活的各個方面,涵蓋范圍從便攜設(shè)備到大型固定設(shè)施,如數(shù)碼相機(jī)、手機(jī)、平板電腦、家用電器、醫(yī)療設(shè)備、交通燈、航空電子設(shè)備和工廠控制設(shè)備等。嵌入式操作系統(tǒng)種類繁多,目前廣泛使用的操作系統(tǒng)包括:可以方便進(jìn)行剪裁和移植的嵌入式 Linux、Windows CE等嵌入式操作系統(tǒng)以及廣泛應(yīng)用在智能手機(jī)和平板電腦的Android、iOS、Symbian、Windows Phone和BlackBerry OS等操作系統(tǒng)。

Linux操作系統(tǒng)

Mas OS X桌面操作系統(tǒng)

win8操作系統(tǒng)

windows Vista操作系統(tǒng)

windows7操作系統(tǒng) win7原版系統(tǒng)

windows XP操作系統(tǒng)

蘋果操作系統(tǒng)
1980年代前
第一部計(jì)算機(jī)并沒有操作系統(tǒng)。這是由于早期個人電腦的建立方式(如同建造機(jī)械算盤)與效能不足以執(zhí)行如此程序。
但在1947年發(fā)明了晶體管,以及莫里斯·威爾克斯(Maurice Vincent Wilkes)發(fā)明的微程序方法,使得電腦不再是機(jī)械設(shè)備,而是電子產(chǎn)品。系統(tǒng)管理工具以及簡化硬件操作流程的程序很快就出現(xiàn)了,且成為操作系統(tǒng)的基礎(chǔ)。
到了1960年代早期,商用電腦制造商制造了批次處理系統(tǒng),此系統(tǒng)可將工作的建置、調(diào)度以及執(zhí)行序列化。此時,廠商為每一臺不同型號的電腦創(chuàng)造不同的操作系統(tǒng),因此為某電腦而寫的程序無法移植到其他電腦上執(zhí)行,即使是同型號的電腦也不行。
到了1964年,IBM推出了一系列用途與價位都不同的大型電腦IBM System/360,大型主機(jī)的經(jīng)典之作。而它們都共享代號為OS/360的操作系統(tǒng)(而非每種產(chǎn)品都用量身訂做的操作系統(tǒng))。讓單一操作系統(tǒng)適用于整個系列的產(chǎn)品是System/360成功的關(guān)鍵,且實(shí)際上IBM目前的大型系統(tǒng)便是此系統(tǒng)的后裔;為System/360所寫的應(yīng)用程序依然可以在現(xiàn)代的 IBM機(jī)器上執(zhí)行!
OS/360也包含另一個優(yōu)點(diǎn):永久貯存設(shè)備—硬盤驅(qū)動器的面世(IBM稱為DASD(Direct access storage device))。另一個關(guān)鍵是分時概念的建立:將大型電腦珍貴的時間資源適當(dāng)分配到所有使用者身上。分時也讓使用者有獨(dú)占整部機(jī)器的感覺;而 Multics的分時系統(tǒng)是此時眾多新操作系統(tǒng)中實(shí)踐此觀念最成功的。
1963年,奇異公司與貝爾實(shí)驗(yàn)室合作以PL/I語言建立的Multics,是激發(fā)1970年代眾多操作系統(tǒng)建立的靈感來源,尤其是由AT&T貝爾實(shí)驗(yàn)室的丹尼斯·里奇與肯·湯普遜所建立的Unix系統(tǒng),為了實(shí)踐平臺移植能力,此操作系統(tǒng)在1969年由C語言重寫;另一個廣為市場采用的小型電腦操作系統(tǒng)是VMS。
20世紀(jì)80年代
第一代微型計(jì)算機(jī)并不像大型電腦或小型電腦,沒有裝設(shè)操作系統(tǒng)的需求或能力;它們只需要最基本的操作系統(tǒng),通常這種操作系統(tǒng)都是從ROM讀取的,此種程序被稱為監(jiān)視程序(Monitor)。
1980年代,家用電腦開始普及。通常此時的電腦擁有8-bit處理器加上64KB內(nèi)存、屏幕、鍵盤以及低音質(zhì)喇叭。而80年代早期最著名的套裝電腦為使用微處理器6510(6502芯片特別版)的Commodore C64。此電腦沒有操作系統(tǒng),而是以8KB只讀內(nèi)存BIOS初始化彩色屏幕、鍵盤以及軟驅(qū)和打印機(jī)。它可用8KB只讀內(nèi)存BASIC語言來直接操作 BIOS,并依此撰寫程序,大部分是游戲。此BASIC語言的解釋器勉強(qiáng)可算是此電腦的操作系統(tǒng),當(dāng)然就沒有內(nèi)核或軟硬件保護(hù)機(jī)制了。此電腦上的游戲大多跳過BIOS層次,直接控制硬件。
早期最著名的磁盤啟動型操作系統(tǒng)是CP/M,它支持許多早期的微電腦,且被MS-DOS大量抄襲其功能。
最早期的IBM PC其架構(gòu)類似C64。當(dāng)然它們也使用了BIOS以初始化與抽象化硬件的操作,甚至也附了一個BASIC解釋器!但是它的BASIC優(yōu)于其他公司產(chǎn)品的原因在于他有可攜性,并且兼容于任何符合IBM PC架構(gòu)的機(jī)器上。這樣的PC可利用Intel-8088處理器(16-bit寄存器)尋址,并最多可有1MB的內(nèi)存,然而最初只有640KB。軟式磁盤機(jī)取代了過去的磁帶機(jī),成為新一代的儲存設(shè)備,并可在他512KB的空間上讀寫。為了支持更進(jìn)一步的文件讀寫概念,磁盤操作系統(tǒng)(Disk Operating System,DOS)因而誕生。此操作系統(tǒng)可以合并任意數(shù)量的磁區(qū),因此可以在一張磁盤片上放置任意數(shù)量與大小的文件。文件之間以檔名區(qū)別。IBM并沒有很在意其上的DOS,因此以向外部公司購買的方式取得操作系統(tǒng)。
1980年微軟公司利用騙術(shù)取得了與IBM的合約,并且收購了一家公司出產(chǎn)的操作系統(tǒng),在將之修改后以MS-DOS的名義出品,此操作系統(tǒng)可以直接讓程序操作BIOS與文件系統(tǒng)。到了Intel-80286處理器的時代,才開始實(shí)作基本的儲存設(shè)備保護(hù)措施。MS-DOS的架構(gòu)并不足以滿足所有需求,因?yàn)樗瑫r只能執(zhí)行最多一個程序(如果想要同時執(zhí)行程式,只能使用TSR的方式來跳過OS而由程序自行處理多任務(wù)的部份),且沒有任何內(nèi)存保護(hù)措施。對驅(qū)動程序的支持也不夠完整,因此導(dǎo)致諸如音效設(shè)備必須由程序自行設(shè)置的狀況,造成不兼容的情況所在多有。某些操作的效能也是可怕地糟糕。許多應(yīng)用程序因此跳過 MS-DOS的服務(wù)程序,而直接存取硬件設(shè)備以取得較好的效能。雖然如此,但MS-DOS還是變成了IBM PC上面最常用的操作系統(tǒng)(IBM自己也有推出DOS,稱為IBM-DOS或PC-DOS)。MS-DOS的成功使得微軟成為地球上最賺錢的公司之一。
而1980年代另一個崛起的操作系統(tǒng)異數(shù)是Mac OS,此操作系統(tǒng)緊緊與麥金塔電腦捆綁在一起。此時一位施樂帕羅奧托研究中心員工Dominik Hagen訪問了蘋果電腦的史蒂夫·喬布斯,并且向他展示了此時施樂發(fā)展的圖形化使用者界面。蘋果電腦驚為天人,并打算向施樂購買此技術(shù),但因帕羅奧托研究中心并非商業(yè)單位而是研究單位,因此施樂回絕了這項(xiàng)買賣。在此之后蘋果一致認(rèn)為個人電腦的未來必定屬于圖形使用者界面,因此也開始發(fā)展自己的圖形化操作系統(tǒng)。現(xiàn)今許多我們認(rèn)為是基本要件的圖形化接口技術(shù)與規(guī)則,都是由蘋果電腦打下的基礎(chǔ)(例如下拉式菜單、桌面圖標(biāo)、拖曳式操作與雙點(diǎn)擊等)。但正確來說,圖形化使用者界面的確是施樂創(chuàng)始的。
20世紀(jì)90年代
Apple I電腦,蘋果電腦的第一代產(chǎn)品。延續(xù)80年代的競爭,1990年代出現(xiàn)了許多影響未來個人電腦市場深厚的操作系統(tǒng)。由于圖形化使用者界面日趨繁復(fù),操作系統(tǒng)的能力也越來越復(fù)雜與巨大,因此強(qiáng)韌且具有彈性的操作系統(tǒng)就成了迫切的需求。此年代是許多套裝類的個人電腦操作系統(tǒng)互相競爭的時代。
上一年代于市場崛起的蘋果電腦,由于舊系統(tǒng)的設(shè)計(jì)不良,使得其后繼發(fā)展不力,蘋果電腦決定重新設(shè)計(jì)操作系統(tǒng)。經(jīng)過許多失敗的項(xiàng)目后,蘋果于1997年釋出新操作系統(tǒng)——MacOS的測試版,而后推出的正式版取得了巨大的成功。讓原先失意離開蘋果的Steve Jobs風(fēng)光再現(xiàn)。
除了商業(yè)主流的操作系統(tǒng)外,從1980年代起在開放原碼的世界中,BSD系統(tǒng)也發(fā)展了非常久的一段時間,但在1990年代由于與AT&T的法律爭端,使得遠(yuǎn)在芬蘭赫爾辛基大學(xué)的另一股開源操作系統(tǒng)——Linux興起。Linux內(nèi)核是一個標(biāo)準(zhǔn)POSIX內(nèi)核,其血緣可算是Unix家族的一支。 Linux與BSD家族都搭配GNU計(jì)劃所發(fā)展的應(yīng)用程序,但是由于使用的許可證以及歷史因素的作弄下,Linux取得了相當(dāng)可觀的開源操作系統(tǒng)市占率,而BSD則小得多。
相較于MS-DOS的架構(gòu),Linux除了擁有傲人的可移植性(相較于Linux,MS-DOS只能運(yùn)行在Intel CPU上),它也是一個分時多進(jìn)程內(nèi)核,以及良好的內(nèi)存空間管理(普通的進(jìn)程不能存取內(nèi)核區(qū)域的內(nèi)存)。想要存取任何非自己的內(nèi)存空間的進(jìn)程只能通過系統(tǒng)調(diào)用來達(dá)成。一般進(jìn)程是處于使用者模式(User mode)底下,而執(zhí)行系統(tǒng)調(diào)用時會被切換成內(nèi)核模式(Kernel mode),所有的特殊指令只能在內(nèi)核模式執(zhí)行,此措施讓內(nèi)核可以完美管理系統(tǒng)內(nèi)部與外部設(shè)備,并且拒絕無權(quán)限的進(jìn)程提出的請求。因此理論上任何應(yīng)用程序執(zhí)行時的錯誤,都不可能讓系統(tǒng)崩潰(Crash)。
另一方面,微軟對于更強(qiáng)力的操作系統(tǒng)呼聲的回應(yīng)便是Windows NT于1993年的面世。
1983年開始微軟就想要為MS-DOS建構(gòu)一個圖形化的操作系統(tǒng)應(yīng)用程序,稱為Windows(有人說這是比爾·蓋茨被蘋果的Lisa電腦上市所刺激)。
一開始Windows并不是一個操作系統(tǒng),只是一個應(yīng)用程序,其背景還是純MS-DOS系統(tǒng),這是因?yàn)楫?dāng)時的BIOS設(shè)計(jì)以及MS-DOS的架構(gòu)不甚良好之故。
在1990年代初,微軟與IBM的合作破裂,微軟從OS/2(早期為命令行模式,后來成為一個很成功但是曲高和寡的圖形化操作系統(tǒng))項(xiàng)目中抽身,并且在1993年7月27日推出Windows NT 3.1,一個以O(shè)S/2為基礎(chǔ)的圖形化操作系統(tǒng)。
并在1995年8月15日推出Windows 95。
直到這時,Windows系統(tǒng)依然是建立在MS-DOS的基礎(chǔ)上,因此消費(fèi)者莫不期待微軟在2000年所推出的Windows 2000上,因?yàn)樗潘闶堑谝粋€脫離MS-DOS基礎(chǔ)的圖形化操作系統(tǒng)。
Windows NT系統(tǒng)的架構(gòu)為:在硬件階層之上,有一個由微內(nèi)核直接接觸的硬件抽象層(HAL),而不同的驅(qū)動程序以模塊的形式掛載在內(nèi)核上執(zhí)行。因此微內(nèi)核可以使用諸如輸入輸出、文件系統(tǒng)、網(wǎng)絡(luò)、信息安全機(jī)制與虛擬內(nèi)存等功能。而系統(tǒng)服務(wù)層提供所有統(tǒng)一規(guī)格的函數(shù)調(diào)用庫,可以統(tǒng)一所有副系統(tǒng)的實(shí)作方法。例如盡管 POSIX與OS/2對于同一件服務(wù)的名稱與調(diào)用方法差異甚大,它們一樣可以無礙地實(shí)作于系統(tǒng)服務(wù)層上。在系統(tǒng)服務(wù)層之上的副系統(tǒng),全都是使用者模式,因此可以避免使用者程序執(zhí)行非法行動。
DOS副系統(tǒng)將每個DOS程序當(dāng)成一進(jìn)程執(zhí)行,并以個別獨(dú)立的MS-DOS虛擬機(jī)器承載其運(yùn)行環(huán)境。另外一個是Windows 3.1 NT 模擬系統(tǒng),實(shí)際上是在Win32副系統(tǒng)下執(zhí)行Win16程序。因此達(dá)到了安全掌控為MS-DOS與早期Windows系統(tǒng)所撰寫之舊版程序的能力。然而此架構(gòu)只在Intel 80386處理器及后繼機(jī)型上實(shí)作。且某些會直接讀取硬件的程序,例如大部分的Win16游戲,就無法套用這套系統(tǒng),因此很多早期游戲便無法在 Windows NT上執(zhí)行。
Windows NT有3.1.3.5.3.51與4.0版。
Windows 2000是Windows NT的改進(jìn)系列(事實(shí)上是Windows NT 5.0)、Windows XP(Windows NT 5.1)以及Windows Server 2003(Windows NT 5.2)、Windows Vista(Windows NT 6.0)、Windows 7(Windows NT 6.1)也都是立基于Windows NT的架構(gòu)上。
而本年代漸漸增長并越趨復(fù)雜的嵌入式設(shè)備市場也促使嵌入式操作系統(tǒng)的成長。
現(xiàn)代操作系統(tǒng)通常都有一個使用的繪圖設(shè)備的圖形化使用者界面,并附加如鼠標(biāo)或觸控面版等有別于鍵盤的輸入設(shè)備。舊的OS或效能導(dǎo)向的服務(wù)器通常不會有如此親切的接口,而是以命令行接口(CLI)加上鍵盤為輸入設(shè)備。以上兩種接口其實(shí)都是所謂的殼,其功能為接受并處理使用者的指令(例如按下一按鈕,或在命令提示列上鍵入指令)。
選擇要安裝的操作系統(tǒng)通常與其硬件架構(gòu)有很大關(guān)系,只有Linux與BSD幾乎可在所有硬件架構(gòu)上執(zhí)行,而Windows NT僅移植到了DEC Alpha與MIPS Magnum。
在1990年代早期,個人電腦的選擇就已被局限在Windows家族、類Unix家族以及Linux上,而以Linux及Mac OS X為最主要的另類選擇,直至今日。
大型機(jī)與嵌入式系統(tǒng)使用很多樣化的操作系統(tǒng)。大型主機(jī)近期有許多開始支持Java及Linux以便共享其他平臺的資源。嵌入式系統(tǒng)近期百家爭鳴,從給 Sensor Networks用的Berkeley Tiny OS到可以操作Microsoft Office的Windows CE都有。
組成部分
操作系統(tǒng)理論研究者有時把操作系統(tǒng)分成四大部分:
驅(qū)動程序:最底層的、直接控制和監(jiān)視各類硬件的部分,它們的職責(zé)是隱藏硬件的具體細(xì)節(jié),并向其他部分提供一個抽象的、通用的接口。
內(nèi)核:操作系統(tǒng)內(nèi)核部分,通常運(yùn)行在最高特權(quán)級,負(fù)責(zé)提供基礎(chǔ)性、結(jié)構(gòu)性的功能。
接口庫:是一系列特殊的程序庫,它們職責(zé)在于把系統(tǒng)所提供的基本服務(wù)包裝成應(yīng)用程序所能夠使用的編程接口(API),是最靠近應(yīng)用程序的部分。例如,GNU C運(yùn)行期庫就屬于此類,它把各種操作系統(tǒng)的內(nèi)部編程接口包裝成ANSI C和POSIX編程接口的形式。
外圍:是指操作系統(tǒng)中除以上三類以外的所有其他部分,通常是用于提供特定高級服務(wù)的部件。例如,在微內(nèi)核結(jié)構(gòu)中,大部分系統(tǒng)服務(wù),以及 UNIX/Linux 中各種守護(hù)進(jìn)程都通常被劃歸此列。
并不是所有的操作系統(tǒng)都嚴(yán)格包括這四大部分。例如,在早期的微軟視窗操作系統(tǒng)中,各部分耦合程度很深,難以區(qū)分彼此。而在使用外核結(jié)構(gòu)的操作系統(tǒng)中,則根本沒有驅(qū)動程序的概念。
操作系統(tǒng)中四大部分的不同布局,也就形成了幾種整體結(jié)構(gòu)的分野。常見的結(jié)構(gòu)包括:簡單結(jié)構(gòu)、層結(jié)構(gòu)、微內(nèi)核結(jié)構(gòu)、垂直結(jié)構(gòu)、和虛擬機(jī)結(jié)構(gòu)。
內(nèi)核結(jié)構(gòu)
內(nèi)核是操作系統(tǒng)最內(nèi)核最基礎(chǔ)的構(gòu)件,因而,內(nèi)核結(jié)構(gòu)往往對操作系統(tǒng)的外部特性以及應(yīng)用領(lǐng)域有著一定程度的影響。盡管隨著理論和實(shí)踐的不斷演進(jìn),操作系統(tǒng)高層特性與內(nèi)核結(jié)構(gòu)之間的耦合有日趨縮小之勢,但習(xí)慣上,內(nèi)核結(jié)構(gòu)仍然是操作系統(tǒng)分類之常用標(biāo)準(zhǔn)。
內(nèi)核的結(jié)構(gòu)可以分為單內(nèi)核、微內(nèi)核、混合內(nèi)核、外內(nèi)核等。
單內(nèi)核(Monolithic kernel),又稱為宏內(nèi)核。單內(nèi)核結(jié)構(gòu)是操作系統(tǒng)中各內(nèi)核部件雜然混居的形態(tài),該結(jié)構(gòu)于1960年代(亦有1950年代初之說,尚存爭議),歷史最長,是操作系統(tǒng)內(nèi)核與外圍分離時的最初形態(tài)。
微內(nèi)核(Microkernel),又稱為微核心。微內(nèi)核結(jié)構(gòu)是1980年代產(chǎn)生出來的較新的內(nèi)核結(jié)構(gòu),強(qiáng)調(diào)結(jié)構(gòu)性部件與功能性部件的分離。20世紀(jì)末,基于微內(nèi)核結(jié)構(gòu),理論界中又發(fā)展出了超微內(nèi)核與外內(nèi)核等多種結(jié)構(gòu)。盡管自1980年代起,大部分理論研究都集中在以微內(nèi)核為首的“新興”結(jié)構(gòu)之上,然而,在應(yīng)用領(lǐng)域之中,以單內(nèi)核結(jié)構(gòu)為基礎(chǔ)的操作系統(tǒng)卻一直占據(jù)著主導(dǎo)地位。
混合內(nèi)核(Hybrid kernel)像微內(nèi)核結(jié)構(gòu),只不過它的組件更多的在核心態(tài)中運(yùn)行,以獲得更快的執(zhí)行速度。 外內(nèi)核(Exokernel)的設(shè)計(jì)理念是盡可能的減少軟件的抽象化,這使得開發(fā)者可以專注于硬件的抽象化。外核心的設(shè)計(jì)極為簡化,它的目標(biāo)是在于同時簡化傳統(tǒng)微內(nèi)核的訊息傳遞機(jī)制,以及整塊性核心的軟件抽象層。
在眾多常用操作系統(tǒng)之中,除了QNX和基于Mach的UNIX等個別系統(tǒng)外,幾乎全部采用單內(nèi)核結(jié)構(gòu),例如大部分的Unix、Linux,以及 Windows(微軟聲稱Windows NT是基于改良的微內(nèi)核架構(gòu)的,盡管理論界對此存有異議)。 微內(nèi)核和超微內(nèi)核結(jié)構(gòu)主要用于研究性操作系統(tǒng),還有一些嵌入式系統(tǒng)使用外核。
基于單內(nèi)核的操作系統(tǒng)通常有著較長的歷史淵源。例如,絕大部分UNIX的家族史都可上溯至1960年代。該類操作系統(tǒng)多數(shù)有著相對古老的設(shè)計(jì)和實(shí)現(xiàn)(例如某些UNIX中存在著大量1970年代、1980年代的代碼)。另外,往往在性能方面略優(yōu)于同一應(yīng)用領(lǐng)域中采用其他內(nèi)核結(jié)構(gòu)的操作系統(tǒng)(但通常認(rèn)為此種性能優(yōu)勢不能完全歸功于單內(nèi)核結(jié)構(gòu))。
主要功能
操作系統(tǒng)的主要功能是資源管理,程序控制和人機(jī)交互等。計(jì)算機(jī)系統(tǒng)的資源可分為設(shè)備資源和信息資源兩大類。設(shè)備資源指的是組成計(jì)算機(jī)的硬件設(shè)備,如中央處理器,主存儲器,磁盤存儲器,打印機(jī),磁帶存儲器,顯示器,鍵盤輸入設(shè)備和鼠標(biāo)等。信息資源指的是存放于計(jì)算機(jī)內(nèi)的各種數(shù)據(jù),如文件,程序庫,知識庫,系統(tǒng)軟件和應(yīng)用軟件等。
操作系統(tǒng)位于底層硬件與用戶之間,是兩者溝通的橋梁。用戶可以通過操作系統(tǒng)的用戶界面,輸入命令。操作系統(tǒng)則對命令進(jìn)行解釋,驅(qū)動硬件設(shè)備,實(shí)現(xiàn)用戶要求。以現(xiàn)代觀點(diǎn)而言,一個標(biāo)準(zhǔn)個人電腦的OS應(yīng)該提供以下的功能:
進(jìn)程管理(Processing management)
內(nèi)存管理(Memory management)
文件系統(tǒng)(File system)
網(wǎng)絡(luò)通訊(Networking)
安全機(jī)制(Security)
用戶界面(User interface)
驅(qū)動程序(Device drivers)
資源管理
系統(tǒng)的設(shè)備資源和信息資源都是操作系統(tǒng)根據(jù)用戶需求按一定的策略來進(jìn)行分配和調(diào)度的。操作系統(tǒng)的存儲管理就負(fù)責(zé)把內(nèi)存單元分配給需要內(nèi)存的程序以便讓它執(zhí)行,在程序執(zhí)行結(jié)束后將它占用的內(nèi)存單元收回以便再使用。對于提供虛擬存儲的計(jì)算機(jī)系統(tǒng),操作系統(tǒng)還要與硬件配合做好頁面調(diào)度工作,根據(jù)執(zhí)行程序的要求分配頁面,在執(zhí)行中將頁面調(diào)入和調(diào)出內(nèi)存以及回收頁面等。
處理器管理或稱處理器調(diào)度,是操作系統(tǒng)資源管理功能的另一個重要內(nèi)容。在一個允許多道程序同時執(zhí)行的系統(tǒng)里,操作系統(tǒng)會根據(jù)一定的策略將處理器交替地分配給系統(tǒng)內(nèi)等待運(yùn)行的程序。一道等待運(yùn)行的程序只有在獲得了處理器后才能運(yùn)行。一道程序在運(yùn)行中若遇到某個事件,例如啟動外部設(shè)備而暫時不能繼續(xù)運(yùn)行下去,或一個外部事件的發(fā)生等等,操作系統(tǒng)就要來處理相應(yīng)的事件,然后將處理器重新分配。
操作系統(tǒng)的設(shè)備管理功能主要是分配和回收外部設(shè)備以及控制外部設(shè)備按用戶程序的要求進(jìn)行操作等。對于非存儲型外部設(shè)備,如打印機(jī)、顯示器等,它們可以直接作為一個設(shè)備分配給一個用戶程序,在使用完畢后回收以便給另一個需求的用戶使用。對于存儲型的外部設(shè)備,如磁盤、磁帶等,則是提供存儲空間給用戶,用來存放文件和數(shù)據(jù)。存儲性外部設(shè)備的管理與信息管理是密切結(jié)合的。
信息管理是操作系統(tǒng)的一個重要的功能,主要是向用戶提供一個文件系統(tǒng)。一般說,一個文件系統(tǒng)向用戶提供創(chuàng)建文件,撤銷文件,讀寫文件,打開和關(guān)閉文件等功能。有了文件系統(tǒng)后,用戶可按文件名存取數(shù)據(jù)而無需知道這些數(shù)據(jù)存放在哪里。這種做法不僅便于用戶使用而且還有利于用戶共享公共數(shù)據(jù)。此外,由于文件建立時允許創(chuàng)建者規(guī)定使用權(quán)限,這就可以保證數(shù)據(jù)的安全性。
程序控制
一個用戶程序的執(zhí)行自始至終是在操作系統(tǒng)控制下進(jìn)行的。一個用戶將他要解決的問題用某一種程序設(shè)計(jì)語言編寫了一個程序后就將該程序連同對它執(zhí)行的要求輸入到計(jì)算機(jī)內(nèi),操作系統(tǒng)就根據(jù)要求控制這個用戶程序的執(zhí)行直到結(jié)束。操作系統(tǒng)控制用戶的執(zhí)行主要有以下一些內(nèi)容:調(diào)入相應(yīng)的編譯程序,將用某種程序設(shè)計(jì)語言編寫的源程序編譯成計(jì)算機(jī)可執(zhí)行的目標(biāo)程序,分配內(nèi)存儲等資源將程序調(diào)入內(nèi)存并啟動,按用戶指定的要求處理執(zhí)行中出現(xiàn)的各種事件以及與操作員聯(lián)系請示有關(guān)意外事件的處理等。
人機(jī)交互
操作系統(tǒng)的人機(jī)交互功能是決定計(jì)算機(jī)系統(tǒng)“友善性”的一個重要因素。人機(jī)交互功能主要靠可輸入輸出的外部設(shè)備和相應(yīng)的軟件來完成。可供人機(jī)交互使用的設(shè)備主要有鍵盤顯示、鼠標(biāo)、各種模式識別設(shè)備等。與這些設(shè)備相應(yīng)的軟件就是操作系統(tǒng)提供人機(jī)交互功能的部分。人機(jī)交互部分的主要作用是控制有關(guān)設(shè)備的運(yùn)行和理解并執(zhí)行通過人機(jī)交互設(shè)備傳來的有關(guān)的各種命令和要求。
進(jìn)程管理
不管是常駐程序或者應(yīng)用程序,他們都以進(jìn)程為標(biāo)準(zhǔn)執(zhí)行單位。當(dāng)年運(yùn)用馮紐曼架構(gòu)建造電腦時,每個中央處理器最多只能同時執(zhí)行一個進(jìn)程。早期的OS(例如DOS)也不允許任何程序打破這個限制,且DOS同時只有執(zhí)行一個進(jìn)程(雖然DOS自己宣稱他們擁有終止并等待駐留(TSR)能力,可以部分且艱難地解決這問題)。現(xiàn)代的操作系統(tǒng),即使只擁有一個CPU,也可以利用多進(jìn)程(multitask)功能同時執(zhí)行復(fù)數(shù)進(jìn)程。進(jìn)程管理指的是操作系統(tǒng)調(diào)整復(fù)數(shù)進(jìn)程的功能。
由于大部分的電腦只包含一顆中央處理器,在單內(nèi)核(Core)的情況下多進(jìn)程只是簡單迅速地切換各進(jìn)程,讓每個進(jìn)程都能夠執(zhí)行,在多內(nèi)核或多處理器的情況下,所有進(jìn)程通過許多協(xié)同技術(shù)在各處理器或內(nèi)核上轉(zhuǎn)換。越多進(jìn)程同時執(zhí)行,每個進(jìn)程能分配到的時間比率就越小。很多OS在遇到此問題時會出現(xiàn)諸如音效斷續(xù)或鼠標(biāo)跳格的情況(稱做崩潰(Thrashing),一種OS只能不停執(zhí)行自己的管理程序并耗盡系統(tǒng)資源的狀態(tài),其他使用者或硬件的程序皆無法執(zhí)行)。進(jìn)程管理通常實(shí)現(xiàn)了分時的概念,大部分的OS可以利用指定不同的特權(quán)等級(priority),為每個進(jìn)程改變所占的分時比例。特權(quán)越高的進(jìn)程,執(zhí)行優(yōu)先級越高,單位時間內(nèi)占的比例也越高。交互式OS也提供某種程度的回饋機(jī)制,讓直接與使用者交互的進(jìn)程擁有較高的特權(quán)值。
內(nèi)存管理
根據(jù)帕金森定律:“你給程序再多內(nèi)存,程序也會想盡辦法耗光”,因此程序設(shè)計(jì)師通常希望系統(tǒng)給他無限量且無限快的內(nèi)存。大部分的現(xiàn)代電腦內(nèi)存架構(gòu)都是階層式的,最快且數(shù)量最少的寄存器為首,然后是高速緩存、內(nèi)存以及最慢的磁盤儲存設(shè)備。而OS的內(nèi)存管理提供尋找可用的記憶空間、配置與釋放記憶空間以及交換內(nèi)存和低速儲存設(shè)備的內(nèi)含物……等功能。此類又被稱做虛擬內(nèi)存管理的功能大幅增加每個進(jìn)程可獲得的記憶空間(通常是4GB,即使實(shí)際上RAM的數(shù)量遠(yuǎn)少于這數(shù)目)。然而這也帶來了微幅降低執(zhí)行效率的缺點(diǎn),嚴(yán)重時甚至也會導(dǎo)致進(jìn)程崩潰。
內(nèi)存管理的另一個重點(diǎn)活動就是借由CPU的幫助來管理虛擬位置。如果同時有許多進(jìn)程儲存于記憶設(shè)備上,操作系統(tǒng)必須防止它們互相干擾對方的內(nèi)存內(nèi)容(除非通過某些協(xié)議在可控制的范圍下操作,并限制可存取的內(nèi)存范圍)。分割內(nèi)存空間可以達(dá)成目標(biāo)。每個進(jìn)程只會看到整個內(nèi)存空間(從0到內(nèi)存空間的最大上限)被配置給它自己(當(dāng)然,有些位置被OS保留而禁止存取)。CPU事先存了幾個表以比對虛擬位置與實(shí)際內(nèi)存位置,這種方法稱為分頁(paging)配置。
借由對每個進(jìn)程產(chǎn)生分開獨(dú)立的位置空間,OS也可以輕易地一次釋放某進(jìn)程所占據(jù)的所有內(nèi)存。如果這個進(jìn)程不釋放內(nèi)存,OS可以退出進(jìn)程并將內(nèi)存自動釋放。
新聞熱點(diǎn)
疑難解答
圖片精選