1. 程式人生 > >Linux發展史及基礎學習

Linux發展史及基礎學習

一、計算機的組成及其功能

計算機由運算器、控制器、儲存器、輸入裝置(Input)、輸出裝置(Output)五大部件組成。

  • 運算器:主要功能是用於完成各種算術、邏輯運算和資料傳送等資料加工處理。
  • 控制器:主要功能是用於控制程式的執行,是計算機的大腦
  • 儲存器:主要用於存放程式指令和資料。
  • 輸入裝置:用於將資料輸入到計算機中,例如:滑鼠、鍵盤。
  • 輸出裝置:將資料或程式的處理結果展示給使用者,例如:顯示器、印表機。

二、Linux核心功能以及作用

linux核心(kernel)是整個作業系統的最底層,它負責與計算機硬體進行互動,實現對硬體程式設計控制和介面操作,對硬體資源的訪問和排程,併為計算機的使用者程式提供一個高階的執行環節。

按功能分為:

  1. 程序管理
  2. 記憶體管理
  3. 檔案系統管理
  4. 裝置驅動程式
  5. 程序間通訊和網路管理

三、常見的linux發行版,不同發行版之間的聯絡與區別

比較常見的發行版本有:Red Hat Linux、Fedora 、CentOS、SuSE、Debian、Ubuntu、等。

​ RedHat(RdeHat Enterprise Linux縮寫為RHEL,Red Hat的企業版)是RedHat公司的LINUX發行版,主要做伺服器版的linux開發,在版本上注重效能和穩定性以及對硬體的支援。

​ Fedora 奠基於RedHat Linux,它是一套功能完備、更新快速的免費作業系統。而對贊助者RedHat公司而言,它是許多新技術的測試平臺,被認為可用的技術最終會加入到RedHat Enterprise Linux中。

​ CentOS(Community ENTerprise Operating System)它是來自於Red Hat Enterprise Linux依照開放原始碼規定釋出的原始碼所編譯而成。由於出自同樣的原始碼,因此有些要求高度穩定性的伺服器以CentOS替代商業版的Red Hat Enterprise Linux使用。CentOS 是RHEL(Red Hat Enterprise Linux)原始碼再編譯的產物,而且在RHEL的基礎上修正了不少已知的 Bug ,相對於其他 Linux 發行版,其穩定性值得信賴。

​ SuSE原是以Slackwaare Linux為基礎,並提供完整德文使用介面的產品。1992年PeterMcDonald成立了Softlanding Linu System(SLS)這個發行版。這套發行版包含的軟體非常多,更首次收錄了X Window及TCP/IP等包。

​ Debian,是一種自由作業系統,全稱Debian GNU/Linux,採用Linux作為核心,由Debian計劃(Debian Project)組織維護。Debian是一個純粹由自由軟體所組合而成的作業環境,而其背後並沒有任何的營利組織支援。

​ Ubuntu,是一個以桌面應用為主的GNU/Linux作業系統,其名稱來自非洲南部祖魯語或豪薩語的“ubuntu”一詞,意思是“人性”。 Ubuntu基於Debian發行版和GNOME桌面環境,與Debian的不同在於它每6個月會發佈一個新版本。

四、常見的開源協議以及區別

GPL

​ GPL的出發點是程式碼的開源/免費使用和引用/修改/衍生程式碼的開源/免費使用,但不允許修改後和衍生的程式碼做為閉源的商業軟體釋出和銷售。這也就是為什麼我們能用免費的各種linux,包括商業公司的linux和linux上各種各樣的由個人,組織,以及商 業軟體公司開發的免費軟體了。

GPL協議的主要內容是隻要在一個軟體中使用(”使用”指類庫引用,修改後的程式碼或者衍生程式碼)GPL 協議的產品,則該軟體產品必須也採用GPL協議,既必須也是開源和免費。這就是所謂的”傳染性”。GPL協議的產品作為一個單獨的產品使用沒有任何問題, 還可以享受免費的優勢。

由於GPL嚴格要求使用了GPL類庫的軟體產品必須使用GPL協議,對於使用GPL協議的開原始碼,商業軟體或者對程式碼有保密要求的部門就不適合整合/採用作為類庫和二次開發的基礎。

LGPL

​ LGPL是GPL的一個為主要為類庫使用設計的開源協議。LGPL允許商業軟體通過類庫引用(link)方式使用LGPL類庫而不需要開源商業軟體的程式碼。因此LGPL協議的開原始碼很適合作為第三方類庫被商業軟體引用,但不適合希望以LGPL協議程式碼為基礎,通過修改和衍生的方式做二次開發的商業軟體採用。

BSD

​ BSD開源協議是一個給於使用者很大自由的協議。基本上使用者可以自由的使用,修改原始碼,也可以將修改後的程式碼作為開源或者專有軟體再發布。

當使用了BSD協議的程式碼,或者以BSD協議程式碼為基礎做二次開發自己的產品時,需要滿足三個條件:

如果再發布的產品中包含原始碼,則在原始碼中必須帶有原來程式碼中的BSD協議;如果再發布的只是二進位制類庫/軟體,則需要在類庫/軟體的文件和版權宣告中包含原來程式碼中的BSD協議;不可以用開原始碼的作者/機構名字和原來產品的名字做市場推廣。因此,很多公司企業在選擇開源軟體的時候都首選BSD協議,因為可以完全控制這些第三方的程式碼,而且在必要的時候可以進行修改或者二次開發。

Apache:

​ Apache Licence是著名的非盈利開源組織Apache採用的協議。該協議和BSD類似,同樣鼓勵程式碼共享和尊重原作者的著作權,同樣允許程式碼修改,再發布(作為開源或商業軟體)。需要滿足的條件也和BSD類似:

需要給程式碼的使用者一份Apache Licence;如果你修改了程式碼,需要在被修改的檔案中說明;在延伸的程式碼中(修改和有原始碼衍生的程式碼中)需要帶有原來程式碼中的協議,商標,專利宣告和其他原來作者規定需要包含的說明;如果再發布的產品中包含一個Notice檔案,則在Notice檔案中需要帶有Apache Licence。你可以在Notice中增加自己的許可,但不可以表現為對Apache Licence構成更改。

五、linux的哲學思想

​ 一切皆檔案;由眾多單一目的的小程式,一個程式只實現一個功能,多個程式組合完成複製任務;文字檔案儲存配置資訊;儘量避免與使用者互動

一切皆檔案:是 Unix/Linux 的基本哲學之一。不僅普通的檔案,目錄、字元裝置、塊裝置、 套接字等在 Unix/Linux 中都是以檔案被對待;它們雖然型別不同,但是對其提供的卻是同一套操作介面

單一小程式:程式和可執行檔案不會太過於複雜和過大,這樣才能保證linux的高效執行

文字檔案儲存配置資訊:linux對於所有配置檔案都存放在文字檔案中,任意一款文字編輯器都能修改,無論什麼配置修改都只需修改其配置檔案即可

避免與使用者互動:Linux上支援的指令碼語言種類十分豐富、易學簡單,易於使用者已指令碼的方式自動完成眾多功能

六、linux的目錄結構以及目錄結構命名規定

/bin: 所有使用者可以的基本命令程式檔案;
/sbin: 供系統管理使用的工具程式;
/boot: 引導載入器必須用到的各靜態檔案:kernel,initramfs(initrd),grub等;
/dev: 儲存特殊檔案或裝置檔案;
​ 裝置有兩種型別:字元裝置(線性裝置)、塊裝置(隨機裝置);
/etc:系統程式的配置檔案,只能為靜態;
/home:普通使用者的家目錄的集中位置:一般每個普通的家目錄預設為此目錄下的使用者名稱同名 /home/USERNAME;
/root: 管理員的家目錄;
/lib:為系統啟動或根檔案系統上的應用程式(/bin,/sbin等)提供共享庫,以及為核心提供核心模組;
​ libc.so.:動態連結的C庫;
​ ld: 執行時連結器/載入器;
​ modules: 用於儲存核心模組的目錄;
/lib64: 64位系統特有的存放64位共享庫的路徑;
/media: 行動式裝置掛載點,cdrom,floppy等;
/mnt: 其他檔案系統的臨時掛載點;
/opt: 附加應用程式的安裝位置;
/srv: 當前主機為服務提供的資料;
/tmp: 為那些會產生臨時檔案的程式提供的用於儲存檔案的目錄;可供所有使用者執行寫入操作,有特殊許可權;
/usr: user Hierarchy,全域性共享的只讀資料路徑;
/usr/local: Local hierarchy ,讓系統管理員安裝本地應用程式;也通常用於安裝第三方程式;
/var: var Hierarchy(層及目錄),儲存發生變化的資料的目錄;
/proc: 基於記憶體的虛擬檔案系統,用於為核心及程序儲存其相關資訊;
/sys: sysfs 虛擬檔案系統提供一種比proc更為理想的訪問核心資料的途徑;其主要作用在為管理linux裝置提供一種統一模型的介面;