計算機(jī)操作系統(tǒng)演化(續(xù))
80年代末柴底,System V Unix與BSD之間打起了官司倍试,Windows在此期間茁壯成長逗爹。
1990年谷市,BSD把含有的Unix代碼清除殆盡蛔垢,團(tuán)隊感到使命完成,項目終止迫悠。Bill Jolitz 嘗試將BSD移植到X86系統(tǒng)鹏漆。
1991年,由于BSD移植X86支持方為商業(yè)公司创泄,項目被希望閉源開發(fā)艺玲,Bill Jolitz相當(dāng)不滿,怒刪一年多的研究成果鞠抑,并退出項目饭聚。
1991年8月:linus torvalds宣布成立Linux。
由于Linux遵循GPL協(xié)定搁拙,Linux得到各路技術(shù)大咖支持秒梳。
Larry wall開發(fā)的diff/patch使得接下來的互聯(lián)網(wǎng)協(xié)同開發(fā)工作成為可能法绵。
Linux得到迅猛發(fā)展,1994年時酪碘,0.99和1.0版本誕生朋譬,僅三年一個系統(tǒng)就能夠在生產(chǎn)環(huán)境中使用。
沒有任何商業(yè)組織支撐兴垦,Linux自我迭代完全靠愛好者們業(yè)余時間共同協(xié)作研發(fā)此熬。
Windows的程序員開發(fā)環(huán)境被稱作大教堂式,Linux的程序員開發(fā)環(huán)境被稱為集市滑进。
而BUG在集市環(huán)境中無所遁形并得到了最高效的更新犀忱。1992年中期,BSD移植386項目重啟
程序基本結(jié)構(gòu)
所謂的多任務(wù)操作系統(tǒng)實際指的是扶关,工作在底層硬件之上的阴汇,負(fù)責(zé)驅(qū)動底層硬件,分割硬件資源节槐,
并監(jiān)控多個任務(wù)啟動與關(guān)閉的一個硬件虛擬化程序搀庶,也叫做通用程序或Kernel。包括BSD铜异,Unix哥倔,Linux,等揍庄。
廣義上一個完整的OS由Kernel和Application組成咆蒿,狹義上OS僅指Kernel。
GNU提供了Application蚂子,Linux提供了Kernel沃测,這樣一個完整的OS誕生了—— GNU/Linux。
OS的接口有兩類:
-
GUI(圖形界面):Graphic User Interface
GNome:C語言研發(fā)食茎,開發(fā)環(huán)境為gtk
KDE:C++開發(fā)蒂破,開發(fā)環(huán)境為qt -
CLI(命令行界面):Command Line Interface
TUI(文本接口):Text User Interface
純命令行接口
程序有bash,zsh,sh,csh,tcsh,ksh,等
操作系統(tǒng)的功能:
驅(qū)動程序,進(jìn)程管理别渔,安全附迷,網(wǎng)絡(luò)功能,內(nèi)存管理哎媚,文件系統(tǒng)喇伯,等等
Kelnel接口的調(diào)用程序需要一定的編譯知識,用戶門檻比較高抄伍,接口調(diào)用稱為syscall艘刚,調(diào)用速度快。
針對syscall的封裝程序截珍,稱為libraries(庫)攀甚,接口調(diào)用稱為libcall,速度比syscall慢岗喉,但用戶門檻較低秋度。
-
API:Application Program Interface
程序員面對的編程接口- POSIX:Portable Operating System
兼容接口,用于各API接口的兼容標(biāo)準(zhǔn)钱床。API兼容荚斯,ABI不兼容
- POSIX:Portable Operating System
ABI:Application Binary Interface
程序應(yīng)用者面對允許程序的接口
Linux發(fā)行版
開始的Linux只有源碼形式提供開源,源碼要編譯成二進(jìn)制格式才能被運(yùn)行查牌,編譯過程非常復(fù)雜事期。
一些組織或個人,把Linux系統(tǒng)自己編譯成二進(jìn)制格式并打包給用戶纸颜,成為Linux發(fā)行版兽泣,這些組織或個人稱為發(fā)行商,發(fā)行版種類達(dá)數(shù)百種之多胁孙。
*圖片 GNU/Linux Distribution Timeline Version 12.10
三大分支
-
Debian
-
Ubunt
-
Mint
-
Knopix
-
-
Slackware
-
S.u.S.E
-
OpenSUSE
-
SLES
-
-
RedHat
-
RedHat 9.0
-
RedHat Enterprise Linux : RHEL
-
CentOS : Community ENTerprise OS
-
Fedora Core(每6個月更新一個版本)
-
RedHat能夠下載到的更新包是未經(jīng)編譯過的程序唠倦,用戶需要夠買軟件才能得到服務(wù)。
CentOS把RedHat的更新包重新編譯并作為發(fā)行版本發(fā)布涮较。
CentOS服務(wù)器需要運(yùn)維人員管理稠鼻,RedHat為付費(fèi)用戶提供維護(hù)服務(wù)。
其它比較流行的發(fā)行版本
Gentoo
ArchLinux
版本號
major . minor . release
- major:主版本號狂票,一般主程序有大變動才會更新候齿。
- minor:次版本號,分支變化時才會更新闺属。
- release:發(fā)行號或者修正號毛肋,一般BUG修正更新。
*GNU/Linux 資源下載網(wǎng)站及最新版本查詢
Linux發(fā)行版和軟件也有自己的版本號屋剑,但其變化與kernel無關(guān)润匙,彼此沒有繼承性。
每三行代碼便可能有BUG唉匾,而修復(fù)BUG將帶來更多的代碼孕讳。
所以,并不是版本越新越好巍膘,作為服務(wù)器未必也不應(yīng)該追求最新版本厂财。