Linux 基礎一之計算機原理、內核原理、發展歷程

        很多同學疑惑學習LINUX爲什麼要學習計算機原理,這是因爲操作系統跟硬件有相當程度的關聯性。所以,如果不瞭解一下計算機的概念,要很快的瞭解Linux的概念是有點難度的。所以在學習Linux之前瞭解一下計算機原理和Linux內核方面的相關知識是很有必要的。

        由於以下爲知識點的梳理。僅僅列出了單方面的一些概念。並沒有連貫的知識點。所以推薦以下鏈接供大家參考:

        馬哥51cto的視頻:http://edu.51cto.com/roadmap/view/id-2.html

        鳥哥的linux私房菜:http://vbird.dic.ksu.edu.tw/

                

計算機五大部件:

1. 控制器(Control):是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問等。
2. 運算器(Datapath):運算器的功能是對數據進行各種算術運算和邏輯運算,即對數據進行加工處理。
3. 存儲器(Memory):存儲器的功能是存儲程序、數據和各種信號、命z令等信息,並在需要時提供這些信息。
4. 輸入(Input system):輸入設備是計算機的重要組成部分,輸入設備與輸出設備合你爲外部設備,簡稱外設,輸入設備的作用是將程序、原始數據、文字、字符、控制命令或現場採集的數據等信息輸入到計算機。常見的輸入設備有鍵盤、鼠標器、光電輸入機、磁帶機、磁盤機、光盤機等。
5. 輸出(Output system):輸出設備與輸入設備同樣是計算機的重要組成部分,它把外算機的中間結果或最後結果、機內的各種數據符號及文字或各種控制信號等信息輸出出來。微機常用的輸出設備有顯示終端CRT、打印機、激光印字機、繪圖儀及磁帶、光盤機等。

wKioL1XV0XTDSK9MAAI2asGHI0M413.jpg

                                        計算機五大部件的通信


計算機系統裏的總線(bus):

        總線(Bus)是計算機各種功能部件之間傳送信息的公共通信幹線,它是由導線組成的傳輸線束, 按照計算機所傳輸的信息種類,計算機的總線可以劃分爲數據總線地址總線控制總線,分別用來傳輸數據數據地址控制信號。總線是一種內部結構,它是cpu、內存、輸入、輸出設備傳遞信息的公用通道,主機的各個部件通過總線相連接,外部設備通過相應的接口電路再與總線相連接,從而形成了計算機硬件系統。

wKiom1XVz3uxl_OLAADK5Pd_H60790.jpg


CPU指令集的作用:

        指令集是存儲在CPU內部,對CPU運算進行指導和優化的硬程序。擁有這些指令集,CPU就可以更高效地運行。Intel有x86x86-64,MMX,SSE,SSE2SSE3,SSSE3 (Super SSE3),SSE4.1SSE4.2和針對64位桌面處理器的EM-64T。AMD主要是3D-Now!指令集。對電腦下達的每一個命令都需要CPU根據預先設定好的某一條指令來完成。  這些預先設定好的指令是預存在CPU中的。CPU依靠外來指令“激活”自己內存的指令,來計算和操控電腦。 每款CPU在設計時就規定了一系列與電腦其它部件相配合的指令系統。  預先存儲的指令越多,CPU越“聰明”。可以做的“動作”越多。預先存儲的指令越先進,CPU就越高級。多個指令集中在一起,通常叫指令集,這就是指令集的作用


CPU的指令級別(RING0,RING1,RING2,RING3):

        這得從CPU指令系統(用於控制CPU完成各種功能的命令)的特權級別說起。在CPU的所有指令中,有一些指令是非常危險的,如果錯用,將導致整個系統崩潰。比如:清內存、設置時鐘等。如果所有的程序都能使用這些指令,那麼你的系統一天死機n回就不足爲奇了。所以,CPU將指令分爲特權指令非特權指令(用戶指令),對於那些危險的指令,只允許操作系統及其相關模塊使用,普通的應用程序只能使用那些不會造成災難的指令。形象地說,特權指令就是那些兒童不宜的東東,而非特權指令則是老少皆宜。

        CPU將特權級別分爲4個級別:RING0,RING1,RING2,RING3。只使用其中的兩個級別RING0和RING3,RING0只給操作系統用,RING3誰都能用。如果普通應用程序企圖執行RING0指令,只能提交操作系統來完成執行。


計算機語言(機器語言,彙編語言和高級語言):

        計算機語言通常是一個能完整、準確和規則地表達人們的意圖,並用以指揮或控制計算機工作的“符號系統”。

高級語言(是一種人工設計的語言,它對具體的算法進行描述,所以又稱爲算法語言。高級語言獨立於計算機的硬件,即與具體的硬件無關)

    |  (編譯)

彙編語言(用有助於記憶的符號和地址符號來表示指令,便是彙編語言,也稱爲符號語言。一般稱彙編語言爲低級語言)

    |   (彙編)

機器語言(機器語言是最初級且依賴於硬件的計算機語言。機器語言可直接在計算機上執行(即爲二進制形式),運算速度快。)

編程語言:

        彙編語言:微碼編程

                系統中某些與硬件相關的特有代碼、驅動程序開發

        高級語言C,C++:

                系統級應用、驅動程序

        高級應用java,python,php:

                應用程序




操作系統(內核管理):

os:operator system(操作系統,由c和彙編語言開發的軟件程序)

    通用目的:將底層的各種硬件資源抽象爲一種統一接口

            硬件驅動

            進程管理

            內存管理

            網絡管理

            安全管理 

wKiom1XZhznR3Dz1AAAmWr33bBk510.gif

         操作系統的角色


編程層次:

        1、硬件規格:hardware specifiacation

        2、系統調用:System Call

        3、庫調用:library call


wKiom1XV3B6wJSuXAAEdaXBgW1U360.jpg

                    庫調用,系統調用,內核和硬件的關聯


用戶與主機交互,必然用到的設備(終端)

       物理終端:直接接入本機的顯示器和鍵盤設備;/dev/console

        虛擬終端:附加在物理終端之上的以軟件方式虛擬實現的終端,CentOS 6默認啓動6個虛擬終端。可以通過以下方式切換虛擬終端:Ctrl+Alt+F#: [1,6]

 圖形終端:附加在物理終端之上的以軟件方式虛擬實現的終端,但額外會提供桌面環境;

        設備文件路徑:/dev/tty#

 模擬終端:圖形界面下打開的命令行接口,基於ssh協議或telnet協議等遠程打開的界面

        設備文件:/dev/pts/#    [0,oo)


查看當前的終端設備:

#tty

交互式接口:啓動終端後,在終端設備附加一個交互式應用程序


UI(用戶界面):

        GUI:Graphic User Interface(圖形用戶界面)

                X protocol, window manager, desktop

                Desktop:

                        GNOME (C, gtk)

                        KDE   (C++, qt)

                        XFCE  (輕量級桌面)

                        CLI:Command Line Interface(命令行界面)

        shell程序:

                        sh (bourn)

                    csh 

                    tcsh

                    ksh (korn)

                    bash (bourn again shell), GPL

                    zsh 

        查看當前系統支持的shell:

#vim /etc/shells
#echo $SHELL


ABI:Application Binary Interface

API:Application Programming Interface

linux寫的程序,原代碼可以在windows上運行(API相同),編譯成二進制代碼則不行(ABI不行)


程序運行模式:

        用戶空間:user space ,us

        內核模式:system space

在多任務環境中,有許多進程都不允許應用程序去做。所以CPU以兩種模式運行,即用戶模式和內核模式。

①內核模式   
        當CPU運行於內核模式時,一切程序都可運行。任務可以執行特權級指令,對任何I/O設備有全部的訪問權,還能夠訪問任何虛地址和控制虛擬內存硬件。這種模式對應80×86的ring0層,操作系統的核心部分,包括設備驅動程序都運行在該模式。   

②用戶模式   
        這個模式中,硬件防止特權指令的執行,並對內存和I/O空間的訪問操作進行檢查。這就允許WindowsNT4.0限制任務對各種I/O操作的訪問,並捕捉違反系統完整性的任何行爲。在用戶模式中,運行的代碼如果不通過操作系統中的某種門機制,就不能進入內核模式。在80×86處理器上,這個模式對應於 ring3層,操作系統的用戶接口部分以及所有的用戶應用程序都運行在該級別

wKiom1XZhdrgc4C5AAENwWwEWM4532.jpg

                      用戶模式和內核模式


POS:Portable Operation System

        POSIX (可移植操作系統接口,Portable Operating System Interface)

        API:編程接口

運行程序格式:

        Windows:EXE,dll(dynamic link library)

        Linux :ELF,so(shared object)

        程序:指令+數據

              指令:只讀

              數據:讀寫

        程序:算法+數據結構

庫調用,系統調用:允許被調用的程序:malloc(),free()


Linux發展歷史:

        Linux的核心是由Linus Torvalds在1991年的時候給他開發出來的, 並且丟到網絡上提供大家下載,後來大家覺得這個小東西(Linux Kernel)相當的小而精巧, 所以慢慢的就有相當多的朋友投入這個小東西的研究領域裏面去了!

        Linux其實就是一個操作系統最底層的核心及其提供的核心工具。 他是GNU GPL授權模式,所以,任何人均可取得原始碼與可執行這個核心程序,並且可以修改。 此外,因爲Linux參考POSIX設計規範,於是兼容於Unix操作系統,故亦可稱之爲Unix Like的一種。

        怪的是,託瓦是因爲小時候去動物園被企鵝咬了一口念念不忘, 而正式的2.0推出時,大家要他想一個吉祥物。他在想也想不到什麼動物的情況下, 就將這個念念不忘的企鵝當成了Linux的吉祥物了......


Linux:       

        Linus —— Linux

        GNU/Linux

Unix:

        System:(Bell Lab)

                AIX(IBM)

                Solars(SUN)

                HP-UX(HP)

        BSD:(BSRG)Berkeley System Distribution

                NetBSD

                OpenBSD

                FreeBSD


MIT:Richard Stallman

        GNU:GUN is Not Unix

                GPL:General Public License


Linux的發行版:

        爲了讓使用者能夠接觸到Linux,於是很多的商業公司或非營利團體, 就將Linux Kernel(含tools)與可運行的軟件整合起來,加上自己具有創意的工具程序, 這個工具程序可以讓用戶以光盤/DVD或者透過網絡直接安裝/管理Linux系統。 這個『Kernel + Softwares + Tools的可完全安裝』的咚咚,我們稱之爲Linux distribution

       

slackware:

                suse

                        sles

                        opensuse

debian:

                ubuntu

                        mint

redhat:

                rhel:redhat enterprise linux

                          每18個月發行一個新版本

                Centos:兼容rhel的格式

                fedora:每6個月發行一個新版本

        ArchLinux

        Gentoo

        LFS:Linux From scrotch

        Android:kernel + busybox + java虛擬機

wKioL1XZjMKAOKyuAAAdAL2ZSY8382.gif          

                    Linux可完全安裝發佈套件

底下列出幾個主要的Linux distributions發行者網址:(複製:鳥哥linux私房菜)

     

Open Source (開放源碼)

軟件以Open Source的方式釋出時,表示除了可執行的軟件本身外,一定伴隨着原始碼的釋出喔!通常Open Source的軟件有幾個好處:

  1. 程序設計師通常會等到程序成熟之後纔會釋出,所以通常程序在雛形的時候,就已經具有相當的優良體質;

  2. Open Source的精神,相信當程序原設計人將程序原始碼釋出之後,其他的程序設計師接受這份原始碼之後, 由於需要將程序改成自己所需的樣式,所以會經由本身的所學來加以改良,並從中加以改良與除蟲, 所以程序的debug功能會比傳統的close source來的快!

  3. 由於程序是伴隨原始碼的,因此,系統將會不易存在鮮爲人知的***程序或一些安全漏洞, 相對而言,會比較更加的安全!

Open source的代表授權爲GNU的GPL授權及BSD,Apache等等

GNU:GPLv2,GPLv3,LGPL(lesser)

http://baike.baidu.com/view/130692.htm

Apache:apache協定

http://baike.baidu.com/subview/28283/5990593.htm#viewPageContent

BSD:bsd

http://baike.baidu.com/view/209692.htm#3


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章