發(fā)展與復(fù)雜性
隨著linux內(nèi)核和linux應(yīng)用程序茁壯發(fā)展西采,系統(tǒng)規(guī)模變得越來越大,復(fù)雜程度不斷提高继控。有經(jīng)驗(yàn)的內(nèi)核開發(fā)者對內(nèi)核特性還能了如指掌械馆,但是這么龐大的系統(tǒng)讓新人幾乎無法理解,難以跟上linux內(nèi)核的發(fā)展步伐武通。這種青黃不接的現(xiàn)象可能會(huì)造成內(nèi)核質(zhì)量上的極大隱患霹崎。
解決上述問題的一個(gè)方法就是保持代碼簡潔,規(guī)范接口定義厅须,變量合理命名仿畸,單一職責(zé)原則食棕,合適的方法行數(shù)等等朗和。最重要的還有注釋,良好的注釋應(yīng)該寫方法功能簿晓、明前置條件眶拉、參數(shù)含義、返回值條件以及異常信息憔儿。
注釋又被成為意圖忆植,識(shí)別意圖和實(shí)現(xiàn)之間的差異的工作稱為調(diào)試。如果一個(gè)方法意圖不明確谒臼,不但調(diào)試工作難以進(jìn)行朝刊,讀者更無法理解。
不過即便有良好的注釋蜈缤,也沒有辦法說清楚內(nèi)核的各個(gè)子系統(tǒng)的細(xì)全景拾氓,說明他們到底做什么。這個(gè)時(shí)候最佳的選擇就是編寫一份說明文檔底哥,最好配上一些易于理解的圖片咙鞍。
設(shè)計(jì)
linux在設(shè)計(jì)上遵守簡單至上的原則房官,將所有的東西都當(dāng)做文件來對待。這種數(shù)據(jù)結(jié)構(gòu)得以簡化系統(tǒng)復(fù)雜性续滋,對數(shù)據(jù)的才做和對設(shè)備的操作都使用同一套接口:open()翰守、read()、write()疲酌、lseek()和close()蜡峰。
linux內(nèi)核和相關(guān)系統(tǒng)工具都采用c語言編寫,linux可以方便的創(chuàng)建新進(jìn)程朗恳,且有一個(gè)非常獨(dú)特的fork()系統(tǒng)調(diào)用事示。
linux提供了一套非常簡單、穩(wěn)定的操作系統(tǒng)通信原語僻肖,快速簡潔的進(jìn)程創(chuàng)建過程使linux程序把目標(biāo)放在 保證質(zhì)量的完成任務(wù) 上肖爵。而簡單穩(wěn)定的進(jìn)程間通信機(jī)制又可以保證這些單一目的的簡單程序可以方便地組合在一起,去解決現(xiàn)實(shí)中復(fù)雜的問題臀脏。
正是歸功于這種策略和機(jī)制分離的概念劝堪,linux系統(tǒng)才具有清晰的層次化結(jié)構(gòu)。
基于UNIX揉稚,今天linux已經(jīng)發(fā)展成為一個(gè)支持搶占式多任務(wù)秒啦、多線程、虛擬內(nèi)存搀玖、換頁余境、動(dòng)態(tài)鏈接和TCP/IP網(wǎng)絡(luò)的現(xiàn)代化操作系統(tǒng)。
版權(quán)
Linux Torvalds在大學(xué)期間本來是熱衷于Minux(用于教學(xué)的廉價(jià)UNIX)灌诅,不過由于版權(quán)限制他不能輕易修改或發(fā)布該系統(tǒng)的源代碼芳来,也不能對Minix開發(fā)者所做出的設(shè)計(jì)輕舉妄動(dòng),這些事讓Torvalds覺得心里很是不舒服猜拾。
生機(jī)勃勃的大學(xué)生Torvalds決心開發(fā)自己的操作系統(tǒng)來改變這種讓人不舒服的版權(quán)即舌,經(jīng)過一年的研發(fā)和不斷改善,Torvalds就有了雖不成熟穩(wěn)定但功能俱全的“UNIX”挎袜,并且將這個(gè)系統(tǒng)源碼發(fā)布于社區(qū)中顽聂。
linux成功的最重要的因素是開源系統(tǒng)吸引了很多開發(fā)者、黑客對其源碼進(jìn)行修改和完善盯仪。正是因?yàn)殚_源的版權(quán)許可紊搪,linux迅速成為了多人合作的項(xiàng)目。linux雖然借鑒了UNIX全景,但它并不是UNIX耀石。linux雖然借鑒了UNIX的許多設(shè)計(jì),并實(shí)現(xiàn)了UNIX的Oosix標(biāo)準(zhǔn)和Single UNIX Specification 定義的API蚪燕,但linux并沒有直接使用UNIX源碼娶牌。
linux是一個(gè)非商業(yè)化的自由軟件產(chǎn)品奔浅,開源和自由助力linux迅速發(fā)展,茁壯成長诗良。不過linux也不是完全自由的汹桦,它使用的協(xié)議規(guī)定:任何人都可以自由的獲取并修改內(nèi)核代碼,但如果你想發(fā)布修改后的內(nèi)核鉴裹,同時(shí)需要向其它人公開你修改后的內(nèi)核源代碼舞骆。
引用
本文的寫作和學(xué)習(xí)中參考了以下資料
1.《Linux Kenel Development ~ Thrid Edition 》