Linu操作系統(tǒng)概述_第1頁
Linu操作系統(tǒng)概述_第2頁
Linu操作系統(tǒng)概述_第3頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第1章Linux操作系統(tǒng)概述Linux操作系統(tǒng)是目前發(fā)展最快的操作系統(tǒng),從1991年誕生到現(xiàn)在的二十多年間,Linux逐步完善和發(fā)展。Linux操作系統(tǒng)在服務(wù)器、嵌入式等方面獲得了長足的發(fā)展,并在個(gè)人操作系統(tǒng)方面有著大范圍的應(yīng)用,這主要得益于其開放性。本章對Linux的發(fā)展進(jìn)行介紹,主要包括如下內(nèi)容:Linux發(fā)展的歷史,以時(shí)間為主線對Linux的誕生進(jìn)行介紹;分析Linux和UNIX操作系統(tǒng)的異同;介紹常用的幾種Linux發(fā)行版本的特點(diǎn);對Linux操作系統(tǒng)的系統(tǒng)架構(gòu)進(jìn)行簡單的介紹;介紹GNU通用公共許可證及其特點(diǎn)。通過本章的閱讀,讀者可以對Linux的發(fā)展歷史和Linux操作系統(tǒng)的基本特點(diǎn)

2、有一個(gè)簡單的認(rèn)識(shí)。1.1 Linux發(fā)展歷史Linux操作系統(tǒng)于1991年誕生,目前已經(jīng)成為主流的操作系統(tǒng)之一。其版本從開始的0.01版本到目前的版本經(jīng)歷了二十多年的發(fā)展,從最初的蹣跚學(xué)步的“嬰兒”成長為目前在服務(wù)器、嵌入式系統(tǒng)和個(gè)人計(jì)算機(jī)等多個(gè)方面得到廣泛應(yīng)用的操作系統(tǒng)。1.1.1 Linux的誕生和發(fā)展Linux的誕生和發(fā)展與個(gè)人計(jì)算機(jī)的發(fā)展歷程是緊密相關(guān)的,特別是隨著Intel的i386個(gè)人計(jì)算機(jī)的發(fā)展而逐步成熟。在1981年之前沒有個(gè)人計(jì)算機(jī),計(jì)算機(jī)是大型企業(yè)和政府部門才能使用的昂貴設(shè)備。舊M公司在1981年推出了個(gè)人計(jì)算機(jī)舊MPC,從而造成個(gè)人計(jì)算機(jī)的發(fā)展和普及。剛開

3、始的時(shí)候,微軟幫助舊M公司開發(fā)的MS-DOS操作系統(tǒng)在個(gè)人計(jì)算機(jī)中占有統(tǒng)治地位。隨著IT行業(yè)的發(fā)展,個(gè)人計(jì)算機(jī)的硬件價(jià)格雖然逐年在下降,但是軟件特別是操作系統(tǒng)的價(jià)格一直居高不下。與個(gè)人計(jì)算機(jī)對應(yīng),在大型機(jī)上的主流操作系統(tǒng)是UNIX,而UNIX操作系統(tǒng)對操作系統(tǒng)的發(fā)展有諸多障礙:UNIX的經(jīng)銷商為了尋求高利率,將價(jià)格抬得很高,個(gè)人計(jì)算機(jī)的用戶就根本不能靠近它,不利于操作系統(tǒng)的普及。UNIX操作系統(tǒng)的源代碼具有版權(quán),雖然貝爾實(shí)驗(yàn)室許可可以在大學(xué)的教學(xué)中使用UNIX源代碼,但是因?yàn)榘鏅?quán)問題源代碼一直不能公開。對于廣大的PC用戶,軟件行業(yè)的供應(yīng)商一直沒有一個(gè)很好的辦法來解決UNIX操作系統(tǒng)普及性問題的

4、方法。在操作系統(tǒng)的發(fā)展受到版權(quán)限制的時(shí)候,出現(xiàn)了Minix操作系統(tǒng),這個(gè)操作系統(tǒng)由一本書來詳細(xì)的描述它的實(shí)現(xiàn)原理。由于書中對Minux操作系統(tǒng)的描述非常詳細(xì)、并且很有條理性,當(dāng)時(shí)幾乎全世界的計(jì)算機(jī)愛好者都在看這本書來理解操作系統(tǒng)的原理,其中包括Linux系統(tǒng)的創(chuàng)始者LinusTorvalds。注意:當(dāng)時(shí)蘋果公司的Mac系列操作系統(tǒng)不論從性能方面還是用戶的易用性方面來說都是最好的,但是其價(jià)格也是最高的(現(xiàn)在的情況基本也是如此)。1.1.2 Linux名稱的由來Linux操作系統(tǒng)的名稱最初并沒有被稱做Linux。Linus給他的操作系統(tǒng)取的名字是Freax,這個(gè)單詞的含義是怪誕的、怪物、異想大開的

5、意思。當(dāng)Torvalds將他的操作系統(tǒng)上傳到服務(wù)器ftp.funet.fi上的時(shí)候,這個(gè)服務(wù)器的管理員AriLemke對Freax這個(gè)名稱很不贊成,所以將操作系統(tǒng)的名稱改為了Linus的諧音Linux,于是這個(gè)操作系統(tǒng)的名稱就以Linux流傳下來。在Linus的自傳JustforFun一書中,Linus解釋說:AriLemke,他十分不喜歡Freax這個(gè)名字。倒喜歡我當(dāng)時(shí)正在使用的另一個(gè)名字Linux,并把我的郵件路徑命名為pubOS/Linux。我承認(rèn)我并沒有太堅(jiān)持。但這一切都是他搞的。所以我既可以不慚愧地說自己不是那么以個(gè)人為中心,但是也有一點(diǎn)個(gè)人的榮譽(yù)感。而且個(gè)人認(rèn)為,Linux是個(gè)不錯(cuò)

6、的名字?!睂?shí)際上,在早期的源文件中仍然使用Freax作為操作系統(tǒng)的名字,可以從Makefile文件中看出此名稱的一些蛛絲馬跡。關(guān)于Linux的發(fā)音有各種說法,例如linAks,但是按照Torvalds的說法,Linux中Li中i的發(fā)音類似于Minix中i的發(fā)音,而nux中u的發(fā)音類似于英文單詞pronounce中第一個(gè)o的發(fā)音。根據(jù)Torvalds對此的解釋,依照國際音標(biāo)其發(fā)音為lin女s,與“哩吶科斯”類似。在網(wǎng)絡(luò)上有一份Torvalds本人說話的音頻,音頻中的內(nèi)容為“Hello,thisisLinusTorvalds,andIpronounceLinuxasLinux”,其下載網(wǎng)絡(luò)地址為h

7、ttp://pronunciation/torvalds-says-Linux.wav。對于Linux發(fā)音的解釋,還有一份Torvalds本人的解說片段,這一片段發(fā)音的視頻可以從如下的URL下載:http:/www.L1.2 Linux的發(fā)展要素Linux操作系統(tǒng)是UNIX的一種典型的克隆系統(tǒng)。在Linux誕生之后,借助于Internet網(wǎng)絡(luò),在全世界計(jì)算機(jī)愛好者的共同努力下,成為目前世界上使用者最多的一種類似UNIX的操作系統(tǒng)。在Linux操作系統(tǒng)的誕生、成長和發(fā)展過程中,以下5個(gè)方面起到了重要的作用:UNIX操作系統(tǒng)、Minix操作系統(tǒng)、GNU計(jì)劃、P

8、OSIX標(biāo)準(zhǔn)和Internet網(wǎng)絡(luò)。1.2.1 UNIX操作系統(tǒng)UNIX操作系統(tǒng)于1969年在Bell實(shí)驗(yàn)室誕生,它是美國貝爾實(shí)驗(yàn)室的Ken.Thompson和DennisRitchie在DECPDP-7小型計(jì)算機(jī)系統(tǒng)上開發(fā)的一種分時(shí)操作系統(tǒng)。KenThompson開發(fā)UNIX操作系統(tǒng)的初衷是為了能在一臺(tái)閑置的PDP-7計(jì)算機(jī)上運(yùn)行星際旅行游戲,他在1969年夏天花費(fèi)一個(gè)月的時(shí)間開發(fā)出了UNIX操作系統(tǒng)的原型。最開始,開發(fā)UNIX操作系統(tǒng)使用的是BCPL語言(即通常所說的B語言),后來DennisRitchie于1972年使用C語言對UNIX操作系統(tǒng)進(jìn)行了改寫。同時(shí)UNIX操作系統(tǒng)在大學(xué)中得到

9、廣泛的推廣,并將UNIX的授權(quán)分發(fā)給多個(gè)商業(yè)公司。自從UNIX操作系統(tǒng)從實(shí)驗(yàn)室走出來之后,得到了長足的發(fā)展。目前已經(jīng)成為大型系統(tǒng)的主流操作系統(tǒng),現(xiàn)在幾乎每個(gè)主要的計(jì)算機(jī)廠商都有其自有版本的UNIX。UNIX是一個(gè)功能強(qiáng)大、性能全面的、多用戶、多任務(wù)的分時(shí)操作系統(tǒng),在從巨型計(jì)算機(jī)到普通PC等多種不同的平臺(tái)上,都有著十分廣泛的應(yīng)用。通常情況下,比較大型的系統(tǒng)應(yīng)用,例如銀行、電信部門,一般都采用固定機(jī)型的UNIX解決方案:在電信系統(tǒng)中以SUN的UNIX系統(tǒng)方案居多,在民航里以HP的系統(tǒng)方案居多,在銀行里以舊M的系統(tǒng)方案居多。Linux是一種UNIX的克隆系統(tǒng),采用了幾乎一致的系統(tǒng)API接口。特別是網(wǎng)

10、絡(luò)方面,二者接口的應(yīng)用程序幾乎完全一致。1.2.2 Minix操作系統(tǒng)Minix操作系統(tǒng)也是UNIX操作系統(tǒng)的一種克隆系統(tǒng),它由荷蘭Amsterdam的Vrije大學(xué)著名教授AndrewS.Tanenbaum于1987年開發(fā)完成。Minux操作系統(tǒng)目的主要用于學(xué)生學(xué)習(xí)操作系統(tǒng)原理時(shí)教學(xué)使用。在當(dāng)時(shí)Minix操作系統(tǒng)在大學(xué)中是免費(fèi)使用的,但是其他用途則需要收費(fèi)。目前Minix操作系統(tǒng)已經(jīng)全部是免費(fèi)的,可以從許多FTP上下載,目前主要有1.5版本和2.0版本在使用。由于Minix操作系統(tǒng)提供源代碼,并且與操作系統(tǒng)相結(jié)合,有一本高質(zhì)量的書籍介紹其實(shí)現(xiàn)原理,在當(dāng)時(shí)全世界的大學(xué)中形成了學(xué)習(xí)Minix操作

11、系統(tǒng)的風(fēng)氣,Linus剛開始就是參照此系統(tǒng)在1991年開始開發(fā)Linux的。實(shí)際上,Minix操作系統(tǒng)并不是很優(yōu)秀,但是這個(gè)操作系統(tǒng)提供了C語言和匯編語言的源代碼。而當(dāng)時(shí)的UNIX操作系統(tǒng)源代碼除了極少的范圍外一直是保密的,Minix操作系統(tǒng)對程序員來說是一個(gè)福音。為了可以讓學(xué)生在一個(gè)學(xué)期內(nèi)能夠?qū)W完操作系統(tǒng)的課程,AST保持了Minix操作系統(tǒng)的小型化,沒有接受世界各界對Minix擴(kuò)展的要求,而正是這個(gè)原因激發(fā)了Linus編寫Linux操作系統(tǒng)。1.2.3 POSIX標(biāo)準(zhǔn)POSIX(PortableOperatingSystemInterfaceforComputingSystems)是由IE

12、EE和ISO/IEC開發(fā)的一套標(biāo)準(zhǔn)。POSIX標(biāo)準(zhǔn)是對UNIX操作系統(tǒng)的經(jīng)驗(yàn)和實(shí)踐的總結(jié),對操作系統(tǒng)調(diào)用的服務(wù)接口進(jìn)行了標(biāo)準(zhǔn)化,保證所編制的應(yīng)用程序在源代碼一級(jí)可以在多種操作系統(tǒng)上進(jìn)行移植。在90年代初,POSIX標(biāo)準(zhǔn)的制定處于最后確定的投票階段,而Linux正處于開始的誕生時(shí)期。作為一個(gè)指導(dǎo)性的綱領(lǐng)性標(biāo)準(zhǔn),Linux的接口與POSIX相兼容。1.3 Linux與UNIX的異同Linux是UNIX操作系統(tǒng)的一個(gè)克隆系統(tǒng),沒有UNIX就沒有Linux。但是,Linux和傳統(tǒng)的UNIX有很大的不同,兩者之間的最大區(qū)別是關(guān)于版權(quán)方面的:Linux是開放源代碼的自由軟件,而UNIX是對源代碼實(shí)行知識(shí)產(chǎn)

13、權(quán)保護(hù)的傳統(tǒng)商業(yè)軟件。兩者之間還存在如下的區(qū)別:UNIX操作系統(tǒng)大多數(shù)是與硬件配套的,操作系統(tǒng)與硬件進(jìn)行了綁定;而Linux則可運(yùn)行在多種硬件平臺(tái)上。UNIX操作系統(tǒng)是一種商業(yè)軟件(授權(quán)費(fèi)大約為5萬美元);而Linux操作提供則是一種自由軟件,是免費(fèi)的,并且公開源代碼。UNIX的歷史要比Linux悠久,但是Linux操作系統(tǒng)由于吸取了其他操作系統(tǒng)的經(jīng)驗(yàn),其設(shè)計(jì)思想雖然源于UNIX但是要優(yōu)于UNIX。雖然UNIX和Linux都是操作系統(tǒng)的名稱,但UNIX除了是一種操作系統(tǒng)的名稱夕卜,作為商標(biāo),它歸SCO所有。Linux的商業(yè)化版本有RedHatLinux、SuSeLinux、slakewareL

14、inux、國內(nèi)的紅旗Linux等,還有TurboLinux;UNIX主要有Sun的Solaris、RM的AIX,HP的HP-UX,以及基于x86平臺(tái)的SCOUNIX/UNIXware。Linux操作系統(tǒng)的內(nèi)核是免費(fèi)的;而UNIX的內(nèi)核并不公開。在對硬件的要求上,Linux操作系統(tǒng)要比UNIX要求低,并且沒有UNIX對硬件要求的那么苛刻;在對系統(tǒng)的安裝難易度上,Linux比UNIX容易得多;在使用上,Linux相對沒有UNIX那么復(fù)雜。總體來說,Linux操作系統(tǒng)無論在外觀上還是在性能上都與UNIX相同或者比UNIX更好,但是Linux操作系統(tǒng)不同于UNIX的源代碼。在功能上,Linux仿制了U

15、NIX的一部分,與UNIX的SystemV和BSDUNIX相兼容。在UNIX上可以運(yùn)行的源代碼,一般情況下在Linux上重新進(jìn)行編譯后就可以運(yùn)行,甚至BSDUNIX的執(zhí)行文件可以在Linux操作系統(tǒng)上直接運(yùn)行。1.4 操作系統(tǒng)類型選擇和內(nèi)核版本的選擇要在Linux環(huán)境下進(jìn)行程序設(shè)計(jì),首先要選擇合適的Linux發(fā)行版本和Linux的內(nèi)核,選擇一款適合自己的Linux操作系統(tǒng)。本節(jié)對常用的發(fā)行版本和Linux內(nèi)核的選擇進(jìn)行了介紹,并簡要講解了如何定制自己的Linux操作系統(tǒng)。1.4.1 常見的不同公司發(fā)行的Linux異同Linux的發(fā)行版本眾多,曾有人收集過超過300種的發(fā)行版本。當(dāng)然,不能在本書

16、中介紹眾多的發(fā)行版特點(diǎn),這超出了本書的范圍。本小節(jié)對最常用的發(fā)行版本進(jìn)行簡單的介紹,表1.1為經(jīng)常采用的版本。讀者可以去相關(guān)網(wǎng)址查找,選擇適合的版本使用。本書所使用的Linux為Debian。表1.1常用Linux發(fā)行版本特點(diǎn)版本名稱網(wǎng)址特點(diǎn)軟件包管理器DebianL開放的開發(fā)模式,并且易于進(jìn)行軟件包升級(jí)aptFedoraCore擁有數(shù)量龐大的用戶,優(yōu)秀的社區(qū)技術(shù)支持,并且有許多創(chuàng)新up2date(rpm),yum(rpm)CentOSCentOS是一種對RHEL(RedHatEnterpriseLinux)源代碼再編譯的產(chǎn)物,由

17、于Linux是開發(fā)源代碼的操作系統(tǒng),并不排斥基于源代碼的再分發(fā),CentOS就是將商業(yè)的Linux操作系統(tǒng)RHEL進(jìn)行源代碼在編譯后分發(fā),并在RHEL的基礎(chǔ)上修正了不少已知的bugrpmSUSELinux專業(yè)的操作系統(tǒng),易用的YaST軟件包管理系統(tǒng)開放YaST(rpm),第三方apt(rpm)軟件庫(repository)Mandriva操作界面友好,使用圖形配置工具,有龐大的社區(qū)進(jìn)行技術(shù)支持,支持NTFS分區(qū)的大小變更rpmKNOPPIX可以直接在CD上運(yùn)行,具有優(yōu)秀的硬件檢測和適配能力,可作為系統(tǒng)的急救盤使用aptGentooL高度的可定制性,使用手冊完

18、整portageUbuntu優(yōu)秀易用的桌面環(huán)境,基于Debian的不穩(wěn)定版本構(gòu)建apt1.4.2 內(nèi)核版本的選擇內(nèi)核是Linux操作系統(tǒng)的最重要的部分,從最初的0.95版本到目前的版本,Linux內(nèi)核開發(fā)經(jīng)過了近20年的時(shí)間,其架構(gòu)已經(jīng)十分穩(wěn)定。Linux內(nèi)核的編號(hào)采用如下編號(hào)形式:主版本號(hào).次版本號(hào).主補(bǔ)丁號(hào).次補(bǔ)丁號(hào)例如各數(shù)字的含義如下:第1個(gè)數(shù)字(2)是主版本號(hào),表示第2大版本;第2個(gè)數(shù)字(6)是次版本號(hào),有兩個(gè)含義:既表示是Linux內(nèi)核大版本的第6個(gè)小版本,同時(shí)因?yàn)?是偶數(shù)表示為發(fā)布版本(奇數(shù)表示測試版);第3個(gè)數(shù)字(26)是主版本補(bǔ)丁號(hào),表示指定小版

19、本的第26個(gè)補(bǔ)丁包;第4個(gè)數(shù)字(3)是次版本補(bǔ)丁號(hào),表示次補(bǔ)丁號(hào)的第3個(gè)小補(bǔ)丁。在安裝Linux操作系統(tǒng)的時(shí)候,最好不要采用發(fā)行版本號(hào)中的小版本號(hào)是奇數(shù)的內(nèi)核,因?yàn)殚_發(fā)中的版本沒有經(jīng)過比較完善的測試,有一些bug是未知的,有可能造成使用中不必要的麻煩。注意:DebianLinux內(nèi)核的版本稍有不同,如2.6.18-3,可以發(fā)現(xiàn)多了一組數(shù)字(3),該數(shù)字是構(gòu)建號(hào)。每個(gè)構(gòu)建號(hào)可以增加少量新的驅(qū)動(dòng)程序或缺陷修復(fù)。Linux內(nèi)核版本的開發(fā)源代碼樹目前比較通用的是2.6.xx的版本,當(dāng)然,有部分2.4的版本仍在使用。與2.4版本的內(nèi)核相比較,2.6版本內(nèi)核具有如下的優(yōu)勢:支持絕大多數(shù)的嵌入式系統(tǒng),加入了

20、之前嵌入式系統(tǒng)經(jīng)常使用的aClinux的大部分代碼,并且子系統(tǒng)的支持更加細(xì)化可以支持硬件體系結(jié)構(gòu)的多樣性,可搶占內(nèi)核的調(diào)度方式支持實(shí)時(shí)系統(tǒng),可定制內(nèi)核。支持目前最新的CPU,例如Intel的超線程、可擴(kuò)展的地址空間訪問。驅(qū)動(dòng)程序框架變更,例如用.ko替代了原來的.。方式,消除內(nèi)核競爭,更加透明的子模塊方式。增加了更多的內(nèi)核級(jí)的硬件支持。本書中的環(huán)境對Linux的內(nèi)核沒有特殊要求,因此讀者在選擇內(nèi)核版本的時(shí)候不需要重新編譯內(nèi)核,使用操作系統(tǒng)自帶的內(nèi)核就可以滿足需要。本書作者的操作系統(tǒng)內(nèi)核為Linux--686。1.5 Linux的系統(tǒng)架構(gòu)Linux系統(tǒng)從應(yīng)用角度來看,分為內(nèi)核空間

21、和用戶空間兩個(gè)部分。內(nèi)核空間是Linux操作系統(tǒng)的主要部分,但是僅有內(nèi)核的操作系統(tǒng)是不能完成用戶任務(wù)的。豐富并且功能強(qiáng)大的應(yīng)用程序包是一個(gè)操作系統(tǒng)成功的必要條件。1.5.1Linux內(nèi)核的主要模塊Linux的內(nèi)核主要由5個(gè)子系統(tǒng)組成:進(jìn)程調(diào)度、內(nèi)存管理、虛擬文件系統(tǒng)、網(wǎng)絡(luò)接口、進(jìn)程間通信。下面依次講解這5個(gè)子系統(tǒng)。1 .進(jìn)程調(diào)度SCHED進(jìn)程調(diào)度指的是系統(tǒng)對進(jìn)程的多種狀態(tài)之間轉(zhuǎn)換的策略。Linux下的進(jìn)程調(diào)度有3種策略:SCHED_OTHER、SCHED_FIFO和SCHED_RR。SCHED_OTHER是用于針對普通進(jìn)程的時(shí)間片輪轉(zhuǎn)調(diào)度策略。這種策略中,系統(tǒng)給所有的運(yùn)行狀態(tài)的進(jìn)程分配時(shí)間片。

22、在當(dāng)前進(jìn)程的時(shí)間片用完之后,系統(tǒng)從進(jìn)程中優(yōu)先級(jí)最高的進(jìn)程中選擇進(jìn)程運(yùn)行。SCHED_FIFO是針對運(yùn)行的實(shí)時(shí)性要求比較高、運(yùn)行時(shí)間短的進(jìn)程調(diào)度策略。這種策略中,系統(tǒng)按照進(jìn)入隊(duì)列的先后進(jìn)行進(jìn)程的調(diào)度,在沒有更高優(yōu)先級(jí)進(jìn)程到來或者當(dāng)前進(jìn)程沒有因?yàn)榈却Y源而阻塞的情況下,會(huì)一直運(yùn)行。SCHED_RR是針對實(shí)時(shí)性要求比較高、運(yùn)行時(shí)間比較長的進(jìn)程調(diào)度策略。這種策略與SCHED_OTHER的策略類似,只不過SCHED_RR進(jìn)程的優(yōu)先級(jí)要高得多。系統(tǒng)分配給SCHED_RR進(jìn)程時(shí)間片,然后輪循運(yùn)行這些進(jìn)程,將時(shí)間片用完的進(jìn)程放入隊(duì)列的末尾。由于存在多種調(diào)度方式,Linux進(jìn)程調(diào)度采用的是“有條件可剝奪”的調(diào)度

23、方式。普通進(jìn)程中采用的是SCHED_OTHER的時(shí)間片輪循方式,實(shí)時(shí)進(jìn)程可以剝奪普通進(jìn)程。如果普通進(jìn)程在用戶空間運(yùn)行,則普通進(jìn)程立即停止運(yùn)行,將資源讓給實(shí)時(shí)進(jìn)程;如果普通進(jìn)程運(yùn)行在內(nèi)核空間,需要等系統(tǒng)調(diào)用返回用戶空間后方可剝奪資源。2 .內(nèi)存管理MMU內(nèi)存管理是多個(gè)進(jìn)程間的內(nèi)存共享策略。在Linux系統(tǒng)中,內(nèi)存管理的主要概念是虛擬內(nèi)存。虛擬內(nèi)存可以讓進(jìn)程擁有比實(shí)際物理內(nèi)存更大的內(nèi)存,可以是實(shí)際內(nèi)存的很多倍。每個(gè)進(jìn)程的虛擬內(nèi)存有不同的地址空間,多個(gè)進(jìn)程的虛擬內(nèi)存不會(huì)沖突。虛擬內(nèi)存的分配策略是每個(gè)進(jìn)程都可以公平地使用虛擬內(nèi)存。虛擬內(nèi)存的大小通常設(shè)置為物理內(nèi)存的兩倍。3 .虛擬文件系統(tǒng)VFS在Lin

24、ux下支持多種文件系統(tǒng),如ext、ext2、minix、umsdos、msdos、vfat、ntfs、proc、smb、ncp、iso9660、sysv、hpfs、affs等。目前Linux下最常用的文件格式是ext2和ext3。ext2文件系統(tǒng)用于固定文件系統(tǒng)和可活動(dòng)文件系統(tǒng),是ext文件系統(tǒng)的擴(kuò)展。ext3文件系統(tǒng)是在ext2上增加日志功能后的擴(kuò)展,它兼容ext2。兩種文件系統(tǒng)之間可以互相轉(zhuǎn)換,ext2不用格式化就可以轉(zhuǎn)換為ext3文件系統(tǒng),而ext3文件系統(tǒng)轉(zhuǎn)換為ext2文件系統(tǒng)也不會(huì)丟失數(shù)據(jù)。4.網(wǎng)絡(luò)接口Linux是在Internet飛速發(fā)展的時(shí)期成長起來的,所以Linux支持多種網(wǎng)絡(luò)

25、接口和協(xié)議。網(wǎng)絡(luò)接口分為網(wǎng)絡(luò)協(xié)議和驅(qū)動(dòng)程序,網(wǎng)絡(luò)協(xié)議是一種網(wǎng)絡(luò)傳輸?shù)耐ㄐ艠?biāo)準(zhǔn),而網(wǎng)絡(luò)驅(qū)動(dòng)則是對硬件設(shè)備的驅(qū)動(dòng)程序。Linux支持的網(wǎng)絡(luò)設(shè)備多種多樣,幾乎目前所有網(wǎng)絡(luò)設(shè)備都有驅(qū)動(dòng)程序。5.進(jìn)程間通信Linux操作系統(tǒng)支持多進(jìn)程,進(jìn)程之間需要進(jìn)行數(shù)據(jù)的交流才能完成控制、協(xié)同工作等功能,Linux的進(jìn)程間通信是從UNIX系統(tǒng)繼承過來的。Linux下的進(jìn)程間通信方式主要有管道方式、信號(hào)方式、消息隊(duì)列方式、共享內(nèi)存和套接字等方法。1.5.2 Linux的文件結(jié)構(gòu)與Windows下的文件組織結(jié)構(gòu)不同,Linux不使用磁盤分區(qū)符號(hào)來訪問文件系統(tǒng),而是將整個(gè)文件系統(tǒng)表示成樹狀的結(jié)構(gòu),Linux系統(tǒng)每增加一個(gè)文

26、件系統(tǒng)都會(huì)將其加入到這個(gè)樹中。操作系統(tǒng)文件結(jié)構(gòu)的開始,只有一個(gè)單獨(dú)的頂級(jí)目錄結(jié)構(gòu),叫做根目錄。所有一切都從“根”開始,用“/”代表,并且延伸到子目錄。DOS/Windows下文件系統(tǒng)按照磁盤分區(qū)的概念分類,目錄都存于分區(qū)上。Linux則通過“掛接”的方式把所有分區(qū)都放置在“根”下各個(gè)目錄里。一個(gè)Linux系統(tǒng)的文件結(jié)構(gòu)如圖1.1所示。不同的Linux發(fā)行版本的目錄結(jié)構(gòu)和具體的實(shí)現(xiàn)功能存在一些細(xì)微的差別。但是主要的功能都是一致的。一些常用目錄的作用如下:/etc:包括絕大多數(shù)Linux系統(tǒng)引導(dǎo)所需要的配置文件,系統(tǒng)引導(dǎo)時(shí)讀取配置文件,按照配置文件的選項(xiàng)進(jìn)行不同情況的啟動(dòng),例如fstab、host

27、.conf等。/lib:包含C編譯程序需要的函數(shù)庫,是一組二進(jìn)制文件,例如glibc等。/usr:包括所有其他內(nèi)容,如src、local。Linux的內(nèi)核就在/usr/src中。其下有子目錄/bin,存放所有安裝語言的命令,如gcc、perl等。/var:包含系統(tǒng)定義表,以便在系統(tǒng)運(yùn)行改變時(shí)可以只備份該目錄,如cache。/tmp:用于臨時(shí)性的存儲(chǔ)。/bin:大多數(shù)命令存放在這里。/home:主要存放用戶賬號(hào),并且可以支持ftp的用戶管理。系統(tǒng)管理員增加用戶時(shí),系統(tǒng)在圖1.1Linux文件系統(tǒng)結(jié)構(gòu)示意圖home目錄下創(chuàng)建與用戶同名的目錄,此目錄下一般默認(rèn)有Desktop目錄。/dev:這個(gè)目錄

28、下存放一種設(shè)備文件的特殊文件,如fd0、had等。/mnt:在Linux系統(tǒng)中,它是專門給外掛的文件系統(tǒng)使用的,里面有兩個(gè)文件cdrom、floopy,登錄光驅(qū)、軟驅(qū)時(shí)要用到。剛開始使用Linux的人比較容易混淆的是Linux下使用斜杠/”,而在DOS/Windows下使用的是反斜杠“”。例如在Linux中,由于從UNIX集成的關(guān)系,路徑用/usr/src/Linux”表示,而在Windows下貝U用usrsrcLinux”表示。在Linux下更加普遍的問題是大小寫敏感,這樣字母的大小寫十分重要,例如文件Hello.c和文件hello.c在Linux下不是一個(gè)文件,而在Windows下則表示同

29、一個(gè)文件。1.6 GNU通用公共許可證GNU通用公共許可證(簡稱為GPL)是由自由軟件基金會(huì)發(fā)行的用于計(jì)算機(jī)軟件的一種許可證制度。GPL最初是由RichardStallman為GNU計(jì)劃而撰寫。目前,GNU通行證被絕大多數(shù)的GNU程序和超過半數(shù)的自由軟件采用。此許可證最新版本為“版本3”,于2007年發(fā)布。GNU寬通用公共許可證(簡稱LGPL)是由GPL衍生出的許可證,被用于一些GNU程序庫。1.6.1GPL許可證的歷史GNU通用公共許可證是由RichardStallman為了GNU計(jì)劃而撰寫的,它以GNU的Emacs、GDB、GCC的早期許可證為藍(lán)本。上述的這些許可證都包含了一些GPL中的版

30、權(quán)思想,但是僅僅針對特定的某個(gè)程序。RichardStallman的目標(biāo)是創(chuàng)造出一種通用的軟件許可證制度,來為所有的開源軟件代碼計(jì)劃使用。GPL的“版本1”,在1989年1月誕生。在1990年時(shí),因?yàn)橐恍┕蚕韼斓氖褂枚霈F(xiàn)了對GPL許可證制度更為寬松的需求,在GPL“版本2”于1991年6月發(fā)布時(shí),另一許可證庫通用許可證(LibraryGeneralPublicLicense,簡稱LGPL)也隨之發(fā)布,并記做“版本2”以示對GPL的補(bǔ)充。在LGPL版本2.1發(fā)布時(shí)與GPL版本不再對應(yīng),而LGPL也被重命名為GNU寬通用公共許可證(LesserGeneralPublicLicense)。GPLv

31、3在2007年6月份開始使用,由于對專利權(quán)和數(shù)字版權(quán)限制的問題造成了自由軟件陣營的一次很大的爭論。Stallman于2006年2月25日在自由開源軟件開發(fā)者歐洲會(huì)議上發(fā)表的演講中,對GPLv3的特點(diǎn)作了解釋,相對于GPLv2,主要有4個(gè)不同的方面:數(shù)字版權(quán)問題。在GPLv3中禁止使用GPLv3本身作為數(shù)字版權(quán)的一部分,同時(shí)消費(fèi)類電子設(shè)備上使用GPLv3代碼必須開放源代碼,而且允許用戶自己重新構(gòu)建。專利擴(kuò)散許可。在GPLv3中如果具有專利的代碼加入之后,此專利會(huì)自動(dòng)向整個(gè)應(yīng)用程序授權(quán)此專利。衍生產(chǎn)品的定義。在GPLv3中定義了衍生產(chǎn)品,即如果某個(gè)模塊采用了GPLv3協(xié)議,某個(gè)產(chǎn)品使用此模塊動(dòng)態(tài)鏈

32、接后,如果此模塊可以被其他模塊代替,則這個(gè)產(chǎn)品不是GPLv3協(xié)議,否則需要采用GPLv3協(xié)議。GPLv3協(xié)議與其他協(xié)議的兼容問題。1.6.2 GPL的自由理念軟件的版權(quán)保護(hù)機(jī)制在保護(hù)發(fā)明人權(quán)益的同時(shí),對軟件的技術(shù)進(jìn)步造成了影響。版權(quán)所有軟件的最終用戶幾乎不能從所購買的軟件中得到任何軟件設(shè)計(jì)相關(guān)的權(quán)利(除了使用的權(quán)利),甚至可能限制像逆向工程等法律允許范圍內(nèi)的行為。與此對應(yīng),GPL授予程序的接受方下述的權(quán)利,即GPL所倡導(dǎo)的“自由”:可以以任何目的運(yùn)行所購買的程序;在得到程序代碼的前提下,可以以學(xué)習(xí)為目的,對源程序進(jìn)行修改;可以對復(fù)制件進(jìn)行再發(fā)行;對所購買的程序進(jìn)行改進(jìn),并進(jìn)行公開發(fā)布。自由軟件

33、許可證除了GPL許可證之外,還有一些其他的許可證,如BSD、APACHE等許可證。一些許可證比GPL的許可證的限制要少得多,例如BSD許可證并不禁止其演繹作品變成版權(quán)所有軟件。它們之間的最主要區(qū)別是GPL提供一種軟件復(fù)制和演繹產(chǎn)品的許可證繼承保證。Stallman發(fā)明了一種叫做Copyleft的法律機(jī)制,要求所有GPL程序的演繹作品也要在GPL許可證之下,。目前,GPL許可證是自由軟件和開源軟件的最流行許可證。到2004年4月為止,GPL許可證已占freshmeat(最大的UNIX平臺(tái)和跨平臺(tái)軟件網(wǎng)絡(luò)發(fā)布平臺(tái))上所列的自由軟件的75%,SourceForge上所列軟件的68%。GNU軟件中最著

34、名的GPL自由軟件包括Linux內(nèi)核和GCC編譯器包。1.6.3 GPL的基本條款GPL許可證作為Linux平臺(tái)軟件的主要許可證,有很多獨(dú)特的地方。GPL授權(quán)的軟件并不是說使用者在得到此軟件后可以無限制地使用,而是同樣要遵循一定的規(guī)則,其中主要的一點(diǎn)就是開放源代碼。使用GPL授權(quán)發(fā)布的商業(yè)軟件,也并不是不要錢,其盈利模式是采用收取服務(wù)費(fèi)用的方式來獲取利益。GPL中的主要條款包括權(quán)利授予、copyleft。1.授予的權(quán)利采用GPL條款的軟件分發(fā)給使用人,不管是收費(fèi)還是免費(fèi),其作品符合GPL授權(quán),獲得GPL作品的人成為許可證接受人。許可證接受人有修改、復(fù)制、再發(fā)行此作品或者此作品的演繹版本的權(quán)利,

35、許可證接受人可以由上述的行為收取費(fèi)用而獲利。與一般禁止商業(yè)用途的軟件不同,GPL授權(quán)的軟件不禁止商業(yè)用途,例如Stallman最初的Ecmacs就是收取費(fèi)用的,每份150美元。GPL的授權(quán)通常被人理解為免費(fèi),其實(shí)這是兩種完全不同的概念:GPL在出售產(chǎn)品的同時(shí)需要提供源代碼,同時(shí)允許獲得軟件的產(chǎn)品進(jìn)行再次發(fā)布。一般的GPL分發(fā)軟件的盈利模式是采用服務(wù)的方式,即如果想更好地使用此軟件,需要向分發(fā)者提供報(bào)酬,分發(fā)者對使用者的軟件進(jìn)行優(yōu)化或者進(jìn)行人員培訓(xùn)等工作。例如舊M提供的軟件中就有GPL協(xié)議的,但是舊M是典型的服務(wù)獲利的公司。GPL授權(quán)的另一層含義是要求分發(fā)者提供源代碼,防止軟件開發(fā)商對軟件進(jìn)行鎖

36、定,限制用戶的某些行為。如果用戶獲得源代碼,在分析源代碼的基礎(chǔ)上,可以修改某些設(shè)置,對源軟件進(jìn)行功能開放。2.copyleftGPL許可證不是授予許可證接受人無限制的權(quán)利,接受人在因?yàn)镚PL而獲益的時(shí)候(獲得軟件產(chǎn)品的源代碼)必須遵守一定的要求,GPL協(xié)議要求許可證的接受人在進(jìn)行軟件再次發(fā)布的時(shí)候必須要公開源代碼,同時(shí)允許對再發(fā)行軟件進(jìn)行的復(fù)制、發(fā)行、修改等的權(quán)利,即再發(fā)行的軟件必須為GPL許可證。上述的這種要求稱為copyleft,GPL由此而被稱為被黑的版權(quán)法”:因?yàn)镚PL的法理基礎(chǔ)是承認(rèn)軟件是擁有版權(quán)的,即作品在法律上歸版權(quán)所有。由于軟件的版權(quán)由發(fā)行者所有,所以發(fā)行者可以對軟件的發(fā)行規(guī)定

37、進(jìn)行設(shè)置,GPL就是發(fā)行者對版權(quán)進(jìn)行上述規(guī)定,放棄一定的版權(quán)。如果某個(gè)再發(fā)行版本不遵循GPL許可證,因?yàn)樵髡邔ψ髌窊碛邪鏅?quán),這樣就有可能被原作者起訴。GPL的copyleft僅僅在程序的再發(fā)行時(shí)發(fā)生作用,如果受權(quán)人對軟件進(jìn)行修改后沒有進(jìn)行發(fā)行,是可以不開放源代碼的。Copyleft只對發(fā)行的軟件本身起作用,對于軟件的輸出或者工作成果不起作用。GPL軟件的發(fā)行方法都是把源代碼和可執(zhí)行程序一同發(fā)行,一般提供例如CD等。目前通行的發(fā)行GPL軟件的方法是將軟件放置到互聯(lián)網(wǎng)上,由用戶來下載,例如HTTP、FTP等方式。1.6.4 關(guān)于GPL許可證的爭議使用GPL的許可證造成了目前的很多爭議,主要是對軟

38、件版權(quán)方面的界定、GPL的軟件傳染性、商業(yè)開發(fā)方面的困擾等。比較有代表性的是對GPL軟件產(chǎn)品的鏈接庫使用的產(chǎn)品版權(quán)界定,即非GPL軟件是否可以鏈接到GPL的庫程序。對于GPL開放源代碼進(jìn)行修改的產(chǎn)品演繹GPL的授權(quán)規(guī)定的很明確,但是對于使用GPL鏈接庫的產(chǎn)品是否是GPL演繹產(chǎn)品就存在很多定義。FSF認(rèn)為這種作品就是演繹作品,但是其他專家并不認(rèn)同這種觀點(diǎn),分成了自由和開放源代碼社區(qū)兩派。這個(gè)問題其實(shí)不是技術(shù)問題,這是一個(gè)法律界定的問題,需要法律的案例來例證。由于GPL許可證需要授權(quán)人對再發(fā)行產(chǎn)品按照GPL許可證發(fā)行,所以在使用許可證軟件的時(shí)候需要注意。有很多協(xié)議是GPL兼容的,即這種協(xié)議和GPL協(xié)議的軟件共同使用,并且將開發(fā)完畢的軟件產(chǎn)品作為GPL來發(fā)行是沒有問題的,例如MI

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論