Unix與Linux操作系統(tǒng)差異分析
Unix與Linux操作系統(tǒng)是同一個(gè)操作系統(tǒng)嗎?是,也不是。或許這個(gè)答案有自相矛盾的地方,但是卻是一個(gè)比較合理的答案。筆者在后續(xù)的文章中,將陸續(xù)對Unix與Linux這兩個(gè)操作系統(tǒng)的差異進(jìn)行分析。若各位讀者對這個(gè)話題感興趣的話,請關(guān)注筆者后續(xù)的文章。
一、Unix與Linux操作系統(tǒng)的源代碼是不同的。
雖然Unix與Linux操作系統(tǒng)有不少的命令是相同的,但是他們的源代碼則是不同的。也就是說,在Linux操作系統(tǒng)開發(fā)過程中,采用了很多 Unix系統(tǒng)的設(shè)計(jì)理念,并遵循Unix操作系統(tǒng)的POSIX規(guī)范。但是其并沒有采用Unix操作系統(tǒng)的源代碼,并沒有采用Unix操作系統(tǒng)的運(yùn)行方式。從這一點(diǎn)來說,他們兩個(gè)是不同的操作系統(tǒng)。
現(xiàn)在Unix操作系統(tǒng)走的是商業(yè)化的道理,其源代碼是受到保護(hù)的。這也就是說,任何社會團(tuán)體與個(gè)人都不能夠抄襲或者隨意修改Unix操作系統(tǒng)的源代碼。而Linux在開發(fā)過車觀念中,源代碼都是重新書寫的,所以就沒有版權(quán)上面的限制。無論是個(gè)人還是商業(yè)團(tuán)體,只要遵循一定的規(guī)范,就可以對 Linux的源代碼進(jìn)行更改或者復(fù)制。不會涉及到版權(quán)的問題。 故Linux操作系統(tǒng)才是一個(gè)真正的開源操作系統(tǒng)。
二、Unix與Linux采用相同的系統(tǒng)調(diào)用為此就是同一種操作系統(tǒng)。
Unix從發(fā)展到現(xiàn)在,有了很多種版本。如BSD或者HP-Uinx操作系統(tǒng)等等。他們都是Unix操作系統(tǒng)。為什么這么說呢?并不是說他們的源代碼的起源是相同的,而是說他們都采用了一樣的系統(tǒng)調(diào)用。在Unix操作系統(tǒng)中,最出色的特點(diǎn)就是通過命令來完成相關(guān)的操作。在Unix系統(tǒng)中,具有 1000多個(gè)命令。但是令人驚奇的是,這么多的命令卻是通過少數(shù)幾個(gè)函數(shù)調(diào)用與系統(tǒng)內(nèi)核進(jìn)行通信,這些函數(shù)調(diào)用就稱之為系統(tǒng)調(diào)用。
這就好像一個(gè)寫字樓,其大門可能只有前后兩個(gè)。但是通往這兩個(gè)大門的道路卻有成千上百條。那么各個(gè)應(yīng)用程序只需要遵守這兩扇大門的通信規(guī)則,就可以跟寫字樓內(nèi)部人員進(jìn)行溝通。如在Unix內(nèi)核中有一個(gè)Write函數(shù),主要是往文件中保存相關(guān)的信息。而很多應(yīng)用程序需要往硬盤的文件中保存信息,如文本處理文件、數(shù)據(jù)庫系統(tǒng)等等。但是這些應(yīng)用系統(tǒng)的話最終都會調(diào)用Write函數(shù)往文件中保存信息,所以這些應(yīng)用程序開發(fā)者只需要了解Write函數(shù),就可以順利往硬盤中保存文件。可見,真是因?yàn)榇蠹叶疾捎昧讼嗤南到y(tǒng)調(diào)用,所以應(yīng)用程序才能夠在不同的Unix版本中順利移植。
而Linux操作系統(tǒng)采用的系統(tǒng)調(diào)用跟Unix操作系統(tǒng)是相同的,都遵循POSIX的規(guī)范。從這一點(diǎn)上來說,Linux操作系統(tǒng)就是Unix操作系統(tǒng),只是他們的開發(fā)者不同而已。為此即時(shí)他們的源代碼不同,但是并不影響這個(gè)定性。由于兩個(gè)操作系統(tǒng)采用了相同的系統(tǒng)調(diào)用,則在Unix操作系統(tǒng)上開發(fā)的應(yīng)用軟件,可以很方便的移植到另一個(gè)Linux操作系統(tǒng)上。
所以說,Unix操作系統(tǒng)與Linux操作系統(tǒng)即是同一個(gè)操作系統(tǒng)(系統(tǒng)調(diào)用相同),又不是相同的操作系統(tǒng)(源代碼不同)。這個(gè)答案看起來自相矛盾,但是真實(shí)的反映出了這兩個(gè)操作系統(tǒng)相互之間的關(guān)系
三、內(nèi)核文件與外殼不同。
無論是Unix操作系統(tǒng)還是Linux操作系統(tǒng),其基本上是有內(nèi)核、外殼和應(yīng)用程序三部分組成。毋庸置疑,內(nèi)核是操作系統(tǒng)中最重要的部分,其直接跟計(jì)算機(jī)硬件打交道。負(fù)責(zé)外殼與系統(tǒng)硬件之間的信息交流。為此也有專家說,內(nèi)核才算是真正意義上的操作系統(tǒng)。
Unix操作系統(tǒng)與Linux操作系統(tǒng)內(nèi)核文件是不同的。如Unix操作系統(tǒng)其內(nèi)核程序?qū)?yīng)的文件往往是/stand/unix文件;在 SUNOS的Unix操作系統(tǒng)中對應(yīng)的是/kernel./genuix。操作系統(tǒng)在啟動的時(shí)候會把這個(gè)內(nèi)核程序加載到系統(tǒng)內(nèi)存中。而Linux操作系統(tǒng)的內(nèi)核程序與Unix操作系統(tǒng)有比較大的區(qū)別。Linux操作系統(tǒng)采用的內(nèi)核文件為/boot/vlinuz。無論是系統(tǒng)工程師還是程序員必須要知道這個(gè)最基本的區(qū)別。如在對系統(tǒng)內(nèi)核進(jìn)行升級的時(shí)候,就需要知道所采用的內(nèi)核文件。
Unix操作系統(tǒng)與Linux操作系統(tǒng)不僅內(nèi)核文件不同,所采用的外殼也是不同的。當(dāng)目前為止,Unix操作系統(tǒng)主要支持四種外殼,分別為 SH、CSH、KSH和BASH。當(dāng)用戶登錄到操作系統(tǒng)之后,就會啟動一個(gè)外殼程序。通常情況下,在同一個(gè)時(shí)刻只能夠啟動一個(gè)外殼。系統(tǒng)工程師就是通過外殼同系統(tǒng)內(nèi)核與硬件進(jìn)行通信。而Linux操作系統(tǒng)目前為止只支持三種外殼程序,分別為BASH(默認(rèn)采用的外殼程序)、CSH、KSH,比Unix操作系統(tǒng)少一種。這個(gè)差異對于普通用戶來說,可能沒有什么影響。但是對于系統(tǒng)工程師進(jìn)行一些特定工作的話,就可能會帶來比較大的不方便。
四、命令參數(shù)的表示方式不同。
在Unix操作系統(tǒng)與Linux操作系統(tǒng)其大部分命令都是相同的。但是在一些參數(shù)的表示方法上有所差異。如ls命令都是用來查看當(dāng)前目錄下文件、子目錄相關(guān)信息的。這個(gè)命令時(shí)兩個(gè)操作系統(tǒng)中使用的頻率最高的命令,都帶有比較多的參數(shù)。但是在一些參數(shù)的具體表述上會有所差別。
如在這兩個(gè)操作系統(tǒng)中命令后面可以加一類比較特殊的參數(shù),即可有可無的參數(shù)。在Unix系統(tǒng)中利用單橫桿夾一個(gè)英文字母表示。如ls –l等等。這個(gè)可選項(xiàng)也是Unix命令中的一個(gè)參數(shù)。這些參數(shù)往往是系統(tǒng)中預(yù)先定義好的,用來實(shí)現(xiàn)一些比較特殊的功能。通常情況下,一個(gè)命令可以帶許多類型的參數(shù),如文件名參數(shù)與可選項(xiàng)參數(shù)等等,用來提高命令的靈活性,讓命令可以在多個(gè)方式下運(yùn)行。另外需要注意的一個(gè)問題是,一般情況下命令與參數(shù)之間必須要有空格來進(jìn)行區(qū)分。如果在命令與參數(shù)之間有多個(gè)空格的話,外殼程序中有一個(gè)叫做命令解釋器的工具會對其進(jìn)行壓縮,最后只剩下一個(gè)空格。當(dāng)然有些情況下系統(tǒng)工程師可能不喜歡系統(tǒng)這種“自作聰明”的方法,則也可以通過一些措施阻止操作系統(tǒng)這么做。
而在Linux操作系統(tǒng)中雖然也可以支持可選項(xiàng),但是其表示的方法有所差異。在Unix操作系統(tǒng)中,主要通過單橫桿來表示可選項(xiàng)參數(shù)。但是在 Linux操作系統(tǒng)中,則其可選項(xiàng)的表示方式不統(tǒng)一,有的是需要一個(gè)單橫桿,而有些命令則需要使用雙橫桿來表示這個(gè)參數(shù)為可選項(xiàng)參數(shù)。另外在Unix操作系統(tǒng)中,這些可選項(xiàng)參數(shù)為單個(gè)的英文字母;而在Linux操作系統(tǒng)中,則其可能用的是具有一定含義的英文單詞,如ls --all等等。由于在Linux操作系統(tǒng)中這種不統(tǒng)一的情況,所以其命令的記憶量要比Unix操作系統(tǒng)要多。特別是像筆者這樣,既要負(fù)責(zé)Unxi系統(tǒng)的維護(hù),平時(shí)可能又要參與Linux相關(guān)的項(xiàng)目時(shí),這個(gè)就特別容易搞混。所以有時(shí)候就不得不查看系統(tǒng)的聯(lián)機(jī)幫助來判斷命令的正確格式。
還好在兩個(gè)操作系統(tǒng)中,都有一個(gè)在線幫助文檔。如在Unix操作系統(tǒng)與Red Hat 9操作系統(tǒng)中都可以通過man命令來查看命令的幫助說明,如man ls系統(tǒng)就會顯示ls命令的相關(guān)幫助,并且還會帶出這個(gè)命令下面的所有可用參數(shù),包括可選參數(shù)。其實(shí)到底是采用單橫桿還是雙橫桿都會有具體的指明。所以說很多像筆者這樣的系統(tǒng)工程師都要感謝這個(gè)在線幫助文檔,讓我們能夠同時(shí)勝任Unix操作系統(tǒng)與Linux操作系統(tǒng)的維護(hù)與開發(fā)工作。雖然命令之間有一些格式上的差異,但是畢竟大部分命令的名字都相同的。所以通過這個(gè)在線幫助文檔的支持,可以在最短時(shí)間內(nèi)確認(rèn)這個(gè)差異。
以上這些差異只是Unix操作系統(tǒng)與Linux操作系統(tǒng)差異中的部分內(nèi)容。筆者日后會陸續(xù)整理這方面的差異。正如上面所說的,Unix與 Linux操作系統(tǒng)其實(shí)是同一個(gè)操作系統(tǒng)。為此只要系統(tǒng)工程師掌握這些差異,那么他們必定可以同時(shí)勝任Linux與Unix操作系統(tǒng)的工作。希望筆者的這些差異總結(jié)能夠給大家在這方面帶來一定的幫助,讓大家可以在管理Unix操作系統(tǒng)的同時(shí),成為一名合格的Linux工程師。
關(guān)鍵字:Linux、操作系統(tǒng)、Unix
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解