通過本篇文章,讀者可以瞭解Linux和Unix的基本概念、曆史、發展情況;
首先,我們通過簡單的介紹Unix和Linux,讀者可以對其進行比較不同之處,瞭解Linux的出現為何非常好,Linux的相關背景;
前言(1):作業系統介紹
核心負責控制硬體資源分派,而如果只有核心,則只能讓電腦硬體運行,而不能有任何功能,因此需要系統調用提供給開發人員使用,從而開發應用程式;
核心能夠控制硬體,比如:讓CPU可以運算、讓硬碟可以讀寫資料等;只有核心的話,只能讓電腦運行,但是我們不能控制電腦;
而系統調用是作業系統提供給開發人員的調用介面;
任何硬體都不會預設就被作業系統控制,而需要開發商根據作業系統提供的介面開發驅動程式,只有安裝了驅動程式才能夠控制硬體裝置;
前言(2):Unix簡單介紹
Unix一開始是開源的,後來AT&T收回著作權,並且不公開原始碼;
Unix的代碼是由90%的C語言和10%的彙編組成;
Unix後來的兩大分支:AT&T的System V和BSD(此處我們在下面Linux的發展史上會講到);
一、Linux介紹
1.Linux簡單介紹
Linux核心理念:萬物皆目錄;
Linux:是一個核心,而不是一個作業系統;因此我們平常說的“作業系統用的是Windows、Mac還是Linux啊?”是錯誤的,Ubuntu、Fedora等才是作業系統的名字,他們都使用Linux核心;
1991年最初由Linus Torvalds針對386(個人電腦)開發;Linus Torvalds那時是芬蘭的一名研究生;
Unix Like:很像Unix的作業系統;
蘋果電腦為什麼現在能裝Windows作業系統?因為蘋果使用了Intel的X86架構,而windows也是針對此架構的,因此按理論來說一般的PC上也可以安裝mac作業系統;
Linux的吉祥物是企鵝(英文名:Tux),因為Torvalds在小時候被企鵝咬過,因此印象非常深刻;
Unix和Linux的代碼是由90%的C語言和10%的彙編組成,因此只需要稍加修改,就能移植到其他硬體上;
2.Linux的優缺點
Linux的優點
1.開放的學習環境;
2.漏洞重點補充;
3.因為核心只有幾百k,因此適合嵌入式系統;
Linux的缺點
1.有些專業軟體沒有Linux版本;
3.Linux發展史
Unix是用90%的C語言和10%組合語言混合編寫的,因此對於硬體平台的移植時還是需要更改代碼,因此各個公司都推出了針對自家機型的Unix系統;
到了AT&T System V第七版時,終於推出了針對X86的Unix,因此終於能夠在個人電腦上安裝Unix,但是有一條規定:“不能向學生公開源碼”,因此Tanebaum教授就不看Unix源碼,編寫了相容Unix的針對X86的Minix作業系統;
因為Minix只是教學使用,因此功能並不強,因此Torvalds利用GNU的bash當做開發環境,gcc當做編譯工具,編寫了Linux核心-v0.02,但是一開始Linux並不能相容Unix,即Unix上跑的應用程式不能在Linux上跑,即應用程式與核心之間的介面不一致,因為Unix是遵循POSIX規範的,因此Torvalds修改了Linux,並遵循POSIX(Portable Operating System
Interface,他規範了應用程式與核心的介面規範);
一開始Linux只適用於386,後來經過全世界的網友的協助,最終能夠相容多種硬體;
4.Linux核心版本號碼介紹
命令:uname -r
3.2.0-23
主要版本.次版本.釋放版本-修改版本
Linux的核心版本分為穩定版本和開發版本;
此版本如果是偶數,則為穩定版本,如果是奇數,則為開發版本,核心開發人員使用;
釋放版本為對次版本的改動,即加入一些功能;
修改版本為編譯的次數,每次加一;
二、Linux曆史
20世紀60年代,MIT開發分時作業系統(Compatible TIme-Sharing System),支援30台終端訪問主機;
~主機負責運算,而終端負責輸入輸出;
1965年,Bell實驗室、MIT、GE(通用電氣公司)準備開發Multics系統,為了同時支援300個終端訪問主機,但是1969年失敗了;
~剛開始並沒有滑鼠、鍵盤,輸入裝置只有卡片機,因此如果要測試某個程式,則需要將讀卡紙插入卡片機,如果有錯誤,還需要重新來過;
~Multics:Multiplexed Information and Computing Service
1969年,Ken Thompson(C語言之父)利用組合語言開發了FIle Server System(Unics,即Unix的原型)
~因為組合語言對於硬體的依賴性,因此只能針對特定硬體;
~只是為了移植一款“太空旅遊”的遊戲;
1973年,Dennis Ritchie和Ken Thompson發明了C語言,而後寫出了Unix的核心
~將B語言改成C語言,由此產生了C語言之父;
~90%的代碼是C語言寫的,10%的代碼用彙編寫的,因此移植時只要修改那10%的代碼即可;
1977年,Berkeley大學的Bill Joy針對他的機器修改Unix源碼,稱為BSD(Berkeley Software Distribution)
~ Bill Joy是Sun公司的創始人;
1979年,Unix發布System V,用於個人電腦;
1984年,因為Unix規定:“不能對學生提供源碼”,Tanenbaum老師自己編寫相容於Unix的Minix,用於教學;
1984年,Stallman開始GNU(GNU's Not Unix)項目,創辦FSF(Free Software Foundation)基金會;
~ 產品:GCC、Emacs、Bash Shell、GLIBC;
~ 倡導“自由軟體”;
~ GNU的軟體缺乏一個開放的平台運行,只能在Unix上運行;
~ 自由軟體指使用者可以對軟體做任何修改,甚至再發行,但是始終要掛著GPL的著作權;
~ 自由軟體是可以賣的,但是不能只賣軟體,而是賣服務、手冊等;
1985年,為了避免GNU開發的自由軟體被其他人用作專利軟體,因此建立GPL(General Public License)著作權聲明;
1988年,MIT為了開發GUI,成立了XFree86的組織;
1991年,芬蘭赫爾辛基大學的研究生Linus Torvalds基於gcc、bash開發了針對386機器的Lniux核心;
1994年,Torvalds發布Linux-v1.0;
1996年,Torvalds發布Linux-v2.0,確定了Linux的吉祥物:企鵝;
三、Linux重要人物
1.Ken Thompson:C語言之父和Unix之父
2.Dennis Ritchie:C語言之父和Unix之父;
3.Stallman:著名駭客,GNU創始人,開發了Emacs、gcc、bash shell;
4.Bill Joy:BSD開發人員;
5.Tanenbaum:Minix開發人員;
6.Linus Torvalds:Linux之父,芬蘭赫爾辛基大學;
Tips:基本術語
(1)Linux Distribution
Linux Distribution:Kernel+Softwares+Tools組成的可安裝的系統;Ubuntu、Fedora、SUSE、Redhat都是Linux Distribution;
Linux Distribution按照安裝軟體的方式分為:RPM包和dpkg安裝;
Linux Distribution按照發布版分為:團隊版(適用於個人電腦)和商業版(適用於伺服器);
(2)Unix Like
很像Unix的作業系統;
(3)授權模式
1.Open Source:開放原始碼;
2.Close Source:沒有原始碼;
Freeware:免費但不開源;
Shareware:一開始免費試用,經過一段時間後收費;
(4)POSIX規範
POSIX是對應用程式和系統調用之間的介面的規範;
(5)SELinux
Security Enhanced Linux:美國國家安全域開發,控制Linux的系統檔案的存取權限;
(6)KDump功能
當核心出現錯誤時,會將當時記憶體的訊息寫入檔案中,以便核心開發人員查看;