張偉杰
(吉林建筑工程學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院,長(zhǎng)春 130118)
Linux是一種自由和開(kāi)放源碼的類(lèi)Unix操作系統(tǒng).目前存在著許多不同的Linux,但其都使用了Linux內(nèi)核.Linux可安裝在各種計(jì)算機(jī)硬件設(shè)備中,從手機(jī)、平板電腦、路由器和視頻游戲控制臺(tái),到臺(tái)式計(jì)算機(jī)、大型機(jī)和超級(jí)計(jì)算機(jī).Linux是一個(gè)領(lǐng)先的操作系統(tǒng),世界上運(yùn)算速度最快的計(jì)算機(jī)運(yùn)行的都是Linux操作系統(tǒng).
Linux操作系統(tǒng)的誕生、發(fā)展和成長(zhǎng)過(guò)程始終依賴(lài)著以下5大支柱:UNIX操作系統(tǒng)、MINIX操作系統(tǒng)、GNU計(jì)劃、POSIX標(biāo)準(zhǔn)和Internet網(wǎng)絡(luò).
Unix操作系統(tǒng)是美國(guó)AT&T的貝爾實(shí)驗(yàn)室的Ken.Thompson,Dennis Ritchie和Douglas Mcllroy于1969年夏在DEC PPP-7小型計(jì)算機(jī)上開(kāi)發(fā)的一個(gè)分時(shí)操作系統(tǒng).1971年Ken.Thompson和Dennis Ritchie成功地用C語(yǔ)言重寫(xiě)了Unix內(nèi)核.1974年,Unix以“僅用于教育目的”的協(xié)議,提供給大學(xué)作為教學(xué)之用,成為當(dāng)時(shí)操作系統(tǒng)課程中的范例教材.各大學(xué)、公司開(kāi)始通過(guò)Unix源碼對(duì)Unix進(jìn)行了各種各樣的改進(jìn)和擴(kuò)展,于是,Unix開(kāi)始廣泛流行.后來(lái),AT&T公司開(kāi)始注意到Unix帶來(lái)的商業(yè)價(jià)值,公司的律師開(kāi)始尋找一些手段來(lái)保護(hù)Unix,并讓其成為一種商業(yè)機(jī)密.從1979年Unix的版本V7開(kāi)始,Unix的許可證開(kāi)始禁止大學(xué)使用Unix的源碼,包括在授課中學(xué)習(xí).MINIX系統(tǒng)是由美藉荷蘭僑民Andrew.S.Tanenbaum(AST)于1987年開(kāi)發(fā)的,源于Unix源碼被禁止使用,開(kāi)發(fā)該系統(tǒng)主要用于學(xué)生學(xué)習(xí)操作系統(tǒng)原理.MINIX的名稱(chēng)取自英語(yǔ)Mini Unix,是一個(gè)迷你版本的類(lèi)Unix操作系統(tǒng),它是重新發(fā)展的,并沒(méi)有使用任何的AT&T的程序碼,到1991年時(shí)版本是1.5,當(dāng)時(shí)該操作系統(tǒng)在大學(xué)使用是免費(fèi)的,但其它用途不是,當(dāng)然目前都已經(jīng)是免費(fèi)的.
GNU是“GNU’s Not Unix”的遞歸縮寫(xiě),是一個(gè)名叫Richard Stallman認(rèn)為Unix是一個(gè)相當(dāng)好的操作系統(tǒng),如果大家都能將自已所學(xué)貢獻(xiàn)出來(lái),那么,這個(gè)系統(tǒng)將會(huì)更加優(yōu)異.他倡導(dǎo)的Open Source的概念,就是針對(duì)Unix這一事實(shí),反對(duì)實(shí)驗(yàn)室里的產(chǎn)品商業(yè)化、私有化.實(shí)現(xiàn)一個(gè)仿Unix操作系統(tǒng)成了他追求的明確戰(zhàn)略目標(biāo).為了這個(gè)理想,Richard Stallman于1984年創(chuàng)立了GNU,計(jì)劃開(kāi)發(fā)一套與Unix相互兼容的軟件.1985年,他又創(chuàng)立了自由軟件基金會(huì)(Free Software Foundation)來(lái)為GNU計(jì)劃提供技術(shù)、法律以及財(cái)政支持.自發(fā)起這個(gè)計(jì)劃以來(lái),GNU開(kāi)始大量的產(chǎn)生或收集各種系統(tǒng)所必備的組件,例如:函數(shù)庫(kù)、編譯器、調(diào)試工具、文本編輯器、網(wǎng)站服務(wù)器,以及一個(gè)Unix的使用接口(Unix Shell)等,但由于種種原因,GNU一直沒(méi)有開(kāi)發(fā)操作系統(tǒng)的Kernel.
POSIX表示可移植操作系統(tǒng)接口(Portable Operating System Interface),電氣與電子工程師協(xié)會(huì)(Institute of Electrical and Electronics Engineers,IEEE)最初開(kāi)發(fā)POSIX標(biāo)準(zhǔn),是為了提高Unix環(huán)境下應(yīng)用程序的可移植性.然而,POSIX并不局限于Unix,許多其它操作系統(tǒng),例如,DEC Open VMS和Microsoft Windows NT都支持POSIX標(biāo)準(zhǔn),現(xiàn)在它已經(jīng)發(fā)展成為一個(gè)非常龐大的標(biāo)準(zhǔn)族[1].
1991年,芬蘭赫爾辛基大學(xué)的一名學(xué)生Linus Torvalds,他主修的課程中有一門(mén)課是操作系統(tǒng),專(zhuān)門(mén)研究程序設(shè)計(jì)和執(zhí)行,并且本課程采用MINIX做為實(shí)驗(yàn)系統(tǒng).Linus不滿(mǎn)足于該系統(tǒng)的功能,就希望能給其添加一些功能.于是,他就根據(jù)實(shí)際的需要編寫(xiě)了磁盤(pán)驅(qū)動(dòng)程序以便下載訪(fǎng)問(wèn)新聞組的文件,又編寫(xiě)了文件系統(tǒng)以便能夠閱讀MINIX文件系統(tǒng)中的文件,這就是0.0.1版本的Linux.
Linus從一開(kāi)始就決定自由傳播Linux,他把源代碼發(fā)布在網(wǎng)上,于是,眾多的愛(ài)好者和程序員也都通過(guò)互聯(lián)網(wǎng)加入到Linux的內(nèi)核開(kāi)發(fā)工作中.這個(gè)思想與FSF資助發(fā)起的GNU的自由軟件精神不謀而合.
GNU是為了推廣自由軟件的精神以實(shí)現(xiàn)一個(gè)自由的操作系統(tǒng),然后從應(yīng)用程序開(kāi)始,實(shí)現(xiàn)其內(nèi)核.而當(dāng)時(shí)Linux的優(yōu)良性能備受GNU的賞識(shí),于是,GNU就決定采用Linus及其開(kāi)發(fā)的內(nèi)核.在他們共同努力下,Linux這個(gè)完整的操作系統(tǒng)誕生了.其中的程序開(kāi)發(fā)共同遵守General Public License(GPL)協(xié)議和POSIX標(biāo)準(zhǔn),規(guī)定了源碼必須可以無(wú)償?shù)孬@取并且修改.
Linux以平均兩星期更新一次的速度迅速成長(zhǎng),如今已經(jīng)有超過(guò)250種發(fā)行版本,且可以支持所有體系結(jié)構(gòu)的處理器,如X86,PowerPC,ARM,Xscale等.迄今為止,它的內(nèi)核版本也已經(jīng)從原先的0.0.1發(fā)展到現(xiàn)在的 2.6.xx.
Linux的特點(diǎn)有:自由軟件,開(kāi)放源代碼;真正的多用戶(hù)、多任務(wù)操作系統(tǒng);可靈活裁剪配置;支持多種硬件平臺(tái);提供強(qiáng)大的管理功能;完全符合POSIX標(biāo)準(zhǔn);具有豐富的圖形用戶(hù)界面;具有強(qiáng)大的網(wǎng)絡(luò)功能[2].
Linux一般由內(nèi)核、Shell、文件結(jié)構(gòu)和實(shí)用工具4個(gè)主要部分組成.
Linux內(nèi)核是整個(gè)Linux系統(tǒng)的靈魂,Linux內(nèi)核負(fù)責(zé)整個(gè)系統(tǒng)的內(nèi)存管理、進(jìn)程調(diào)度和文件管理.它從用戶(hù)那里接受命令,并把命令送給內(nèi)核去執(zhí)行.Linux內(nèi)核的容量并不大,并且大小可以裁剪,這個(gè)特性對(duì)嵌入式系統(tǒng)非常有好處.內(nèi)核功能主要包括進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)、設(shè)備控制和網(wǎng)絡(luò)功能.
Shell是系統(tǒng)的用戶(hù)界面,提供了用戶(hù)與內(nèi)核進(jìn)行交互操作的一種接口.它接收用戶(hù)輸入的命令并把它送入內(nèi)核去執(zhí)行.
實(shí)際上Shell是一個(gè)命令解釋器,它解釋由用戶(hù)輸入的命令且把它們送到內(nèi)核.不僅如此,Shell有自已的編程語(yǔ)言用于對(duì)命令編輯,它允許用戶(hù)編寫(xiě)由Shell命令組成的程序.Linux系統(tǒng)提供多種不同的Shell以供選擇.常用的有 SH(Bourne Shell),CSH(C-Shell),KSH(Korn Shell)和 BASH(Bourne Again Shell).
Linux是一個(gè)多用戶(hù)系統(tǒng),采用目錄的方式管理文件,呈多級(jí)樹(shù)形結(jié)構(gòu),用戶(hù)可以設(shè)置目錄和文件的權(quán)限.如圖1所示是Linux文件結(jié)構(gòu)目錄[2].
圖1 Linux的目錄結(jié)構(gòu)
標(biāo)準(zhǔn)的Linux系統(tǒng)都有一套叫做實(shí)用工具的程序,它們是專(zhuān)門(mén)的程序,例如,編輯器、執(zhí)行標(biāo)準(zhǔn)的計(jì)算操作等.用戶(hù)也可以產(chǎn)生自已的工具.實(shí)用工具可分3類(lèi):
(1)編輯器:用于編輯文件;
(2)過(guò)濾器:用于接收數(shù)據(jù)并過(guò)濾數(shù)據(jù);
(3)交互程序:允許用戶(hù)發(fā)送信息或接收來(lái)自其他用戶(hù)的信息.
內(nèi)核、Shell和文件結(jié)構(gòu)一起形成了基本的操作系統(tǒng)結(jié)構(gòu).它們使用戶(hù)可以運(yùn)行程序、管理文件,以及使用系統(tǒng),而實(shí)用工具的程序,輔助用戶(hù)完成一些特定的任務(wù)[3].
嵌入式Linux系統(tǒng)的開(kāi)發(fā),無(wú)疑是正在蓬勃興起,并已形成了很大的市場(chǎng),國(guó)內(nèi)外很多大、中型公司都在進(jìn)行嵌入式Linux的研究和開(kāi)發(fā)[4].但就目前的技術(shù)而言,嵌入式Linux的研究成果與市場(chǎng)的真正需求還有一些距離,因此,要達(dá)到大規(guī)模商業(yè)化,還面臨如下挑戰(zhàn):
(1)實(shí)時(shí)性,有待擴(kuò)展.嵌入式操作系統(tǒng)的基本要求之一是實(shí)時(shí)性,因?yàn)長(zhǎng)inux的內(nèi)核不支持事件優(yōu)先級(jí)和搶占實(shí)時(shí)特性,還不完全滿(mǎn)足實(shí)時(shí)操作系統(tǒng)的要求,所以在以后的研究和開(kāi)發(fā)的過(guò)程中,首要問(wèn)題是擴(kuò)展Linux的實(shí)時(shí)性能;
(2)集成開(kāi)發(fā)環(huán)境,有待完善.Linux在基于圖形界面的特定系統(tǒng)定制平臺(tái)的研究上,與Windows操作系統(tǒng)相比還存在差距.因此,要使嵌入式Linux在嵌入式操作系統(tǒng)領(lǐng)域中的優(yōu)勢(shì)更加明顯,整體集成開(kāi)發(fā)環(huán)境還有待提高和完善;
(3)Linux內(nèi)核體系結(jié)構(gòu)是Monolithic,該結(jié)構(gòu)效率高,體積大,不太適合嵌入式系統(tǒng).而Microkernel結(jié)構(gòu),在內(nèi)核中只包括一些基本的內(nèi)核功能,體積小,較適合嵌入式系統(tǒng).為此,要使嵌入式Linux應(yīng)用更加廣泛,若將Linux目前的Monolithic內(nèi)核中的部分結(jié)構(gòu)改造成Microkernel體系結(jié)構(gòu),可使得到的Linux既具有很好的實(shí)用性,又能滿(mǎn)足嵌入式系統(tǒng)體積小的要求.
[1] 陳莉君,康 華,張 波.Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)[M].北京:中國(guó)機(jī)械工業(yè)出版社,2006:2-5.
[2] 陳 頤.嵌入式技術(shù)原理與應(yīng)用[M].北京;北京航空航天大學(xué)出版社,2011:254-258.
[3] 華清遠(yuǎn)見(jiàn)嵌入式培訓(xùn)中心.嵌入式Linux應(yīng)用程序開(kāi)發(fā)[M].北京:人民郵電出版社,2009:1-4.
[4] 任橋偉.Linux內(nèi)核修煉之道[M].北京:人民郵電出版社,2010:2-13.