1. 程式人生 > >淺談Linux協議和組成

淺談Linux協議和組成

根據自己學習Linux方面的知識,淺談下linux的協議和組成,那首先了解下計算機的組成和功能:

        計算機系統由硬體(hardware)系統和軟體(software)系統兩大部分組成:
            1、硬體系統由主機和外部裝置組成:
                      主機由中央處理器CPU(運算器ALU和控制器CU)和記憶體儲器(ROM和RAM)
                        外部設定由輸入裝置和輸出裝置等其他裝置組成
            2、軟體系統由系統軟體和應用軟體組成

接下來了解Linux的核心功能和作用:
我們學習Linux的最重要就是核心(kernel),核心是什麼。我用自己理解的方式給大家解釋,我們一般知道應用程式不可能自己載入硬體裝置供自己使用,這樣也很複雜,實現也很繁瑣,而且每個應該程式都這樣呼叫也很浪費資源。我們需要一個統一的程式來集中管理呼叫硬體,這樣其他的應用軟體就可以自己直接呼叫這個統一管理程式來實現呼叫硬體,這個統一管理硬體呼叫的程式我們稱為(kernel)核心。

    Linux是有1991年8月有Linus Torvalds宣佈成立的。並且GNU(GNU is Not Unix)的自由思想,所以產生了很多版本,其中最出名的發行版有Debian,Slackware,RedHat,Gentoo,ArchLinux。

                Debian 是一個致力於自由軟體開發並宣揚自由軟體基金會指理念的自願組織。就是一群自由開發者人員組成的社群,來發行的版本,其中Ubuntu是其中的繁衍的基於桌面開發的linux系統

                Slackware是Slackware Linux,lnc的Patrick vokerding製作的Linux發行版本。而且與其他的Linux發行版本不一樣。他力圖稱為“Unix”風格的Linux發行版本。而且他只吸收文件版本的應用程式,其中SuSe是他繁衍的一個發行版本。SuSe主要在歐洲使用,是為了管理員很高的控制Linux系統。

                RedHat是由Rad Hat公司發行的一個Linux發行包,其中的是個人版本更新到Radhat9.0,還有一個基於商業版本的RedHat Enterprise Linux,就是企業版本。由於價格比較貴,所以由一群倡導自由軟體的開發者。基於redhat企業版本,改成了免費的linux,起名叫Centos ,但是最後還是別redhat收購了。

                Gentoo也是一個linux作業系統,但是最大特色是為使用者提供了大量的應用程式原始碼,供使用者選擇,使用者可以選擇的編譯安裝原始碼。

                ArchLinux是一款基於X86-64架構的lInux發行版。系統主要有自由和開源軟體組成,其中最大的特色注重簡潔,實用,以使用者為中心

清楚上面的Linux的版本後,在瞭解下開源協議,其中
GPL是廣泛應用的自由軟體許可證,可以保證終端使用者得自由執行、學習、共享和修改軟體。GPL的出發點是程式碼的開源/免費使用和引用/修改/衍生程式碼的開源/免費使用,但不允許修改後和衍生的程式碼做為閉源的商業軟體釋出和銷售。

                LGP是GNU寬通用公共許可證,也就是比GPL協議寬鬆PL,要求任何使用/修改/衍生之GPL類庫的的軟體必須採用GPL協議不同。LGPL允許商業軟體通過類庫引用(link)方式使用LGPL類庫而不需要開源商業軟體的程式碼。這使得采用LGPL協議的開原始碼可以被商業軟體作為類庫引用併發布和銷售。

                BSD開源協議是一個給於使用者很大自由的協議。基本上使用者可以”為所欲為”,可以自由的使用,修改原始碼,也可以將修改後的程式碼作為開源或者專有軟體再發布,但是需要滿足三個條件才能為所欲為:
                 1、如果二次釋出的產品中包含原始碼,則在原始碼中必須帶有原來的程式碼中的BSD協定
       2、如果二次釋出產品是二進位制格式的庫或程式,則需要在釋出的文件或版權宣告中說明包含原來的程式碼中的BSD協定
       3、不可以用開原始碼的作者或組織,以及原來的產品的名字做市場推廣

                 Apache是著名的非盈利開源組織Apache採用的協議。該協議和BSD類似,同樣鼓勵程式碼共享和尊重原作者的著作權,同樣允許程式碼修改,再發布(作為開源或商業軟體)。也需要滿足一下條件:
                 1、需要給程式碼的使用者一份Apache Licence
        2、如果你修改了程式碼,需要再被修改的檔案中說明。
        3、在延伸的程式碼中(修改和有原始碼衍生的程式碼中)需要帶有原來程式碼中的協議,商標,專利宣告和其他  原來作者規定需要包含的說明。
                    4、如果再發布的產品中包含一個Notice檔案,則在Notice檔案中需要帶有Apache Licence。你可以在Notice中增加自己的許可,但不可以表現為對Apache Licence構成更改。

接下來我們學習開源協議,我們開始強調Linux哲學思想,具體有以下這些方向
                        1、一切皆檔案,把幾乎所有資源統統抽象為檔案形式:包括硬體設定,甚至通行介面;
                        2、一個複雜的程式都是由眾多功能單一的小程式組成,完成複雜任務;
                        3、儘量避免跟使用者互動,儘量使用程式設計的方式實現自動化任務,簡單管理伺服器;
                        4、所以的配置檔案基本是基於文字檔案來編輯儲存的。

學習了Linux這些思想,開始真正的學習Linux,先來了解Linux有哪些目錄機構,怎麼命名:
          Linux的檔案結構和windows完全不一樣,windows是有碟符過程,Linux是有導致的樹形式來過程,就是由一個最頂端的根也就是/構成,這裡已Centos 7系統的檔案結構說明
                    首先Centos 7完全遵守FHS標準
                    /bin:所以使用者可用的基本命令程式檔案;
                    /sbin:供系統管理使用的工具程式;
                    /boot:引導載入器必須永達的各靜態檔案;
                    /dev:儲存特殊檔案或裝置檔案;
                    /etc:系統程式的配置檔案;
                    /home:普通家目錄的集中位置;
                    /lib:為系統啟動或根檔案系統上的應用程式(/bin,/sbin)提供共享庫,以及為核心提供核心模組;
                    /lib64:64為系統特有的存放64為共享庫的路徑;
                    /media:行動式裝置掛載點;
                    /mnt:其他檔案系統的臨時掛載點;
                    /srv:當前主機為服務提供的資料;
                    /tmp:為那些會產生臨時檔案的程式提供的用於儲存臨時檔案的目錄:可供所有使用者提供執行寫入操作,特殊許可權;
                    /usr:全域性共享的只讀資料路徑,下面的檔案基本和/下面差不多;
                                /usr/bin,/usr/sbin,/usr/lib,/usr/lib64和/bin,/sbin,/lib,/lib64是一個意思;
                                include:C程式標頭檔案;
                                share:命令受產業和自帶文件等架構特有的檔案冊儲存位置;
                                local:另一個層級目錄,讓系統管理員安裝本地應用程式,也通常用於安裝第三方程式;
                                src:程式原始碼檔案的儲存位置;
                    /var:儲存經常發生變化的資料的目錄,比如程式的日誌基本上都儲存這個目錄下面的;
                    /proc:基於記憶體的虛擬檔案系統,用於為核心及程序儲存其相關資訊:它們多為核心引數;
                    /sys:sysfs虛擬檔案系統系統了一種比proc更為理想的訪問核心資料途徑:其主要作用在於為管理Linux裝置提供一種統一模型的介面。

Linux基本概念理解,可能還有的理解不是很到位,希望大神幫忙指點下,小弟繼續探索Linux道路。。