學習Linux的人都知道網(wǎng)上很多人在區(qū)別Linux和Unix。Unix和Linux一樣是操作系統(tǒng),但是在比較兩者的時候,你們有想過去好好了解Unix嗎?今天我們就來說說什么是Unix?
在現(xiàn)在我們普遍用到的操作系統(tǒng)大致被分為兩大類,一類是微軟的基于Windows NT的操作系統(tǒng),另一類就是Unix。不管是Linux、Android,還是蘋果家族的Mac OS X、iOS,都是屬于類Unix操作系統(tǒng)。
因為Unix的流行和在市場的占有率,已經(jīng)有了屬于Unix的文化,你知道有些什么嗎?
多用戶分時共用一臺主機的文化:UNIX發(fā)明的年代計算機是如此昂貴,以至于唯一合理的利用方式就是多用戶分時共享一臺機器。這就解釋了為什么UNIX一開始就支持多進程、多用戶、用戶組和權(quán)限管理。同時,還催生了一批允許同時登錄一臺機器的用戶“單機聊天”的工具:write / talk / wall / mesg 以及后來的Telnet BBS。
面向行的輸入、輸出格式:UNIX推崇在CLI Shell下通過管道組合多個進程協(xié)同完成工作,因此所有的程序都面臨如何在讀完標準輸入流之前(誰也不知道會有多長)就要干活并輸出的問題。理論上需要實現(xiàn)一個狀態(tài)機來解析輸入流,實際上為了省事基本上所有的程序都是以行為基本分割符來切割數(shù)據(jù);這樣做上游程序也省事:面向行的輸出基本上都可以直接屏顯給用戶。因此,導致的后果是UNIX程序很少采用高度可靠的自分隔格式(如XML、JSON)作為標準輸出,而是靠用戶臨時用sed / awk這樣的工具來適配上下游程序的行內(nèi)格式,造成了無窮無盡的(微妙的)解析bug。
把文件操作利用到極致的文化:UNIX有極其豐富的文件操作API,還有mmap,因此允許用戶以最小的CPU/內(nèi)存開銷管理極其復雜的文件。這樣導致的后果就是UNIX用戶不愛用傳統(tǒng)的數(shù)據(jù)庫技術(shù)來保存數(shù)據(jù),而是更偏向于自己管理索引、玩手工優(yōu)化到極致的“文件API雜技”。
UNIX操作系統(tǒng)結(jié)構(gòu)由三大部分組成:
(1)Kernel(內(nèi)核)
(2)Shell(外殼)
(3) 工具及應(yīng)用程序
Unix的開發(fā)使用經(jīng)歷了很長一段時間,甚至是現(xiàn)在,很多關(guān)于Unix的應(yīng)用都還在使用。第一個是“Unix哲學”,建立小的模塊化的應(yīng)用,只做一件事情并把它做好。系統(tǒng)提供了大量的應(yīng)用,可以通過管道或其他特性形成不同的組合來完成更復雜的任務(wù)。這個應(yīng)用的優(yōu)勢是讓建立終端腳本更為簡單,可以把復雜的事情用簡單工具去完成。第二個是設(shè)計了一個單一的文件系統(tǒng),程序可以通過它互相通訊。這就把一切都變成了文件。
Unix的影響很大,以至于后來被很多公司借用,形成了更多的操作系統(tǒng)。其中一些還是很有發(fā)展特點。
SunOS
Sun是最早的工作站廠商,但一直在Unix工作站領(lǐng)域不斷發(fā)展。Sun的工作站產(chǎn)品和Internet服務(wù)器產(chǎn)品在ChinaNet中應(yīng)用非常廣泛。
IRIX 6.x
IRIX 6.x是SGI公司的Unix,這也是一種基于Unix System V的產(chǎn)品。SGI的Unix圖形工作站是圖形圖象處理領(lǐng)域內(nèi)的頂級產(chǎn)品,這一方面是由于SGI的硬件性能相當優(yōu)秀,另一方面在軟件方面,SGI開發(fā)了工作站下的圖形圖象處理軟件,成為這個領(lǐng)域的領(lǐng)先者。而SGI在圖形圖象領(lǐng)域的領(lǐng)先地位掩蓋了他作為一家Unix廠商在操作系統(tǒng)領(lǐng)域內(nèi)的努力,事實上在他們還生產(chǎn)超級計算機,在多處理器和并行計算等大負荷計算方面都有獨到的研究。
Linux
Unix已經(jīng)非常開放,但是其內(nèi)核代碼也不是隨意就可以得到的。最容易得到的代碼是Minix,用于教學目的而編寫的一個系統(tǒng),這遠不是一個成熟的系統(tǒng)。所以后來就有了Linux,Linux和其他Unix的源碼完全無關(guān),嚴格來講只能算仿制品。但Linux的開發(fā)者來自整個Internet,具有各種Unix系統(tǒng)的背景,因此Linux也集中了各種Unix的優(yōu)點,從性能上與商業(yè)產(chǎn)品毫不遜色。
雖然Unix現(xiàn)在使用不是最多的,但是它曾經(jīng)帶給操作系統(tǒng)的影響是不可忽視的,在接下來的時候它還會繼續(xù)影響著以后的操作系統(tǒng)。所以學習Linux的同學們也應(yīng)該對于Unix有一些了解。