1、描述計算機的組成及其功能。
計算機系統是由硬件(Hardware)和軟件(Software )兩部分組成。html
硬件:
從硬件基本結構上來說,計算機是由運算器、控制器、存儲器、輸入設備、輸出設備五大部分組成的,每一部分分別按要求執行特定的基本功能。linux
一、運算器(算數邏輯單元Arithmetical and Logical Unit)的主要功能是對數據進行各類運算。這些運算除了常規的加、減、乘、除等基本的的算術運算以外,還包括能進行「邏輯判斷」的邏輯處理能力,即「與」、「或」、「非」這樣的基本邏輯運算以及數據的比較、位移等操做。數據庫
二、控制器(Control Unit) 控制器是整個計算機系統的控制中心,它指揮計算機各部分協調地工做,保證計算機按照預先規定的目標和步驟有條不紊地進行操做及處理。 控制器從存儲器中逐條取出指令,分析每條指令規定的是什麼操做以及所需數據的存放位置等,而後根據分析的結果向計算機其它部分發出控制信號,統一指揮整個計算機完成指令所規定的操做。所以,計算機自動工做的過程,其實是自動執行程序的過程,而程序中的每條指令都是由控制器來分析執行的,它是計算機實現「程序控制」的主要部件。 一般把控制器與運算器合稱爲中央處理器(Central Processing Unit-CPU)。工業生產中老是採用最早進的超大規模集成電路技術來製造中央處理器,即 CPU 芯片。它是計算機的核心部件。它的性能,主要是工做速度和計算精度,對機器的總體性能有全面的影響。編程
三、存儲器(Memory unit)的主要功能是存儲程序和各類數據信息,並能在計算機運行過程當中高速、自動地完成程序或數據的存取。存儲器是具備「記憶」功能的設備,它具備兩種穩定狀態的物理期間來存儲信息。這些器件也稱爲記憶元件。因爲記憶元件只有兩種穩定狀態,所以在計算機中採用只有兩個數碼「0」和「1」的二進制來表示數據。記憶元件的兩種穩定狀態分別表示「0」和「1」。平常使用的十進制數必須轉換成等值的二進制數才能存入存儲器中。計算機中處理的各類字符,例如英文字母、運算符號等,也要轉換成二進制代碼才能存儲和操做。 存儲器是由成千上萬個「存儲單元」構成的,每一個存儲單元存放必定位數(微機上爲8位)的二進制數,每一個存儲單元都有惟一的編號,稱爲存儲單元的地址。「存儲單元」是基本的存儲單位,不一樣的存儲單元是用不一樣的地址來區分的,就好像居民區的一條街道上的住戶是用不一樣的門牌號碼來區分同樣。 計算機採用按地址訪問的方式到存儲器中存數據和取數據,即在計算機程序中,每當須要訪問數據時,要向存儲器送去一個地址指出數據的位置,同時發出一個「存放」命令(伴以待存放的數據),或者發出一個「取出」命令。這種按地址存儲方式的特色是,只要知道了數據的地址就能直接存取。但也有缺點,即一個數據每每要佔用多個存儲單元,必須連續存取有關的存儲單元纔是一個完整的數據。 計算機在計算以前,程序和數據經過輸入設備送入存儲器,計算機開始工做以後,存儲器還要爲其它部件提供信息,也要保存中間結果和最終結果。所以,存儲器的存數和取數的速度是計算機系統的一個很是重要的性能指標。ubuntu
四、輸入設備(Input device) 用來向計算機輸入各類原始數據和程序的設備叫輸入設備。輸入設備把各類形式的信息,如數字、文字、圖像等轉換爲數字形式的「編碼」,即計算機可以識別的用1和0表示的二進制代碼(其實是電信號),並把它們「輸入」(INPUT)到計算機內存儲起來。鍵盤是必備的輸入設備、經常使用的輸入設備還有鼠標器、圖形輸入板、視頻攝像機等。小程序
五、輸出設備(Output device) 從計算機輸出各種數據的設備叫作輸出設備。輸出設備把計算機加工處理的結果(仍然是數字形式的編碼)變換爲人或其它設備所能接收和識別的信息形式如文字、數字、圖形、聲音、電壓等。經常使用的輸出設備有顯示器、打印機、繪圖儀等。安全
軟件:
系統軟件是指控制和協調計算機及外部設備,支持應用軟件開發和運行的系統,是無需用戶干預的各類程序的集合,主要功能是調度,監控和維護計算機系統;負責管理計算機系統中各類獨立的硬件,使得它們能夠協調工做。系統軟件使得計算機使用者和其餘軟件將計算機看成一個總體而不須要顧及到底層每一個硬件是如何工做的。服務器
基本概念:網絡
各類應用軟件,雖然完成的工做各不相同,但它們都須要一些共同的基礎操做,例如都要從輸入設備取得數據,向輸出設備送出數據,向外存寫數據,從外存讀數據,對數據的常規管理,等等。這些基礎工做也要由一系列指令來完成。人們把這些指令集中組織在一塊兒,造成專門的軟件,用來支持應用軟件的運行,這種軟件稱爲系統軟件。通常來說,系統軟件包括操做系統和一系列基本的工具(好比編譯器,數據庫管理,存儲器格式化,文件系統管理,用戶身份驗證,驅動管理,網絡鏈接等方面的工具),是支持計算機系統正常運行並實現用戶操做的那部分軟件。系統軟件通常是在計算機系統購買時隨機攜帶的,也能夠根據須要另行安裝。數據結構
系統軟件的主要特徵是:
*與硬件有很強的交互性
*能對資源共享進行調度管理
*能解決併發操做處理中存在的協調問題
主要類別:
系統軟件在爲應用軟件提供上述基本功能的同時,也進行着對硬件的管理,使在一臺計算機上同時或前後運行的不一樣應用軟件有條不紊地合用硬件設備。例如,兩個應用軟件都要向硬盤存入和修改數據,若是沒有一個協調管理機構來爲它們劃定區域的話,必然造成互相破壞對方數據的局面。
操做系統
操做系統管理計算機的硬件設備,使應用軟件能方便、高效地使用這些設備。在微機上常見的有:DOS、WINDOWS、UNIX、OS/2等。
在計算機軟件中最重要且最基本的就是操做系統(OS)。它是最底層的軟件,它控制全部計算機運行的程序並管理整個計算機的資源,是計算機裸機與應用程序及用戶之間的橋樑。沒有它,用戶也就沒法使用某種軟件或程序。
操做系統是計算機系統的控制和管理中心,從資源角度來看,它具備處理機、存儲器管理、設備管理、文件管理等4項功能。
經常使用的系統有DOS操做系統、WINDOWS操做系統、UNIX操做系統和Linux、Netware、Mac OS X等操做系統。
語言處理程序
編譯軟件CPU執行每一條指令都只完成一項十分簡單的操做,一個系統軟件或應用軟件,要由成千上萬甚至上億條指令組合而成。直接用基本指令來編寫軟件,是一件極其繁重而艱難的工做。
計算機只能直接識別和執行機器語言,所以要計算機上運行高級語言程序就必須配備程序語言翻譯程序,翻譯程序自己是一組程序,不一樣的高級語言都有相應的翻譯程序。
爲了提升效率,人們規定一套新的指令,稱爲高級語言,其中每一條指令完成一項操做,這種操做相對於軟件總的功能而言是簡單而基本的,而相對於CPU的一眇操做而言又是複雜的。用這種高級語言來編寫程序(稱爲源程序)就象用預製板代替磚塊來造房子,效率要高得多。但CPU並不能直接執行這些新的指令,須要編寫一個軟件,專門用來將源程序中的每條指令翻譯成一系列CPU能接受的基本指令(也稱機器語言)使源程序轉化成能在計算機上運行的程序。完成這種翻譯的軟件稱爲高級語言編譯軟件,一般把它們納入系統軟件。目前經常使用的高級語言有VB、C++、JAVA等,它們各有特色,分別適用於編寫某一類型的程序,它們都有各自的編譯軟件。
數據庫管理
數據庫管理系統有組織地、動態地存貯大量數據,令人們能方便、高效地使用這些數據。
數據庫管理系統是一種操縱和管理數據庫的大型軟件,用於創建、使用和維護數據庫。
Foxpro,Access,Oracle,Sybase,DB2和Informix則是數據庫系統。
輔助程序
系統輔助處理程序也稱爲「軟件研製開發工具」、「支持軟件」、「軟件工具」,主要有編輯程序、調試程序、裝備和鏈接程序、調試程序。
2、描述內核功能以及做用
內核結構:
操做系統是一個用來和硬件打交道併爲用戶程序提供一個有限服務集的低級支撐軟件。一個計算機系統是一個硬件和軟件的共生體,它們互相依賴,不可分割。計算機的硬件,含有外圍設備、處理器、內存、硬盤和其餘的電子設備組成計算機的發動機。可是沒有軟件來操做和控制它,自身是不能工做的。完成這個控制工做的軟件就稱爲操做系統,在Linux的術語中被稱爲"內核",也能夠稱爲"核心"。Linux內核的主要模塊(或組件)分如下幾個部分:存儲管理、CPU和進程管理、文件系統、設備管理和驅動、網絡通訊,以及系統的初始化(引導)、系統調用等。
一、管理內存:計算機的內存是主要的資源, 處理它所用的策略對系統性能是相當重要的。內核爲全部進程的每個都在有限的可用資源上創建了一個虛擬地址空間。內核的不一樣部分與內存管理子系統經過一套函數調用交互,從簡單的malloc/free對到更多更復雜的功能。
二、管理進程:內核負責建立和銷燬進程, 並處理它們與外部世界的聯繫(輸入和輸出),不一樣進程間通信(經過信號,管道,或者進程間通信原語)對整個系統功能來講是基本的,也由內核處理。 另外, 調度器, 控制進程如何共享CPU,是進程管理的一部分。更一般地,內核的進程管理活動實現了多個進程在一個單個或者幾個CPU 之上的抽象。
三、文件系統:Unix 在很大程度上基於文件系統的概念;幾乎Unix中的任何東西均可看做一個文件。內核在非結構化的硬件之上創建了一個結構化的文件系統,結果是文件的抽象很是多地在整個系統中應用。另外,Linux 支持多個文件系統類型,就是說,物理介質上不一樣的數據組織方式。例如,磁盤可被格式化成標準Linux的ext3文件系統,廣泛使用的FAT文件系統,或者其餘幾個文件系統。
四、設備控制:幾乎每一個系統操做終都映射到一個物理設備上,除了處理器,內存和很是少的別的實體以外,所有中的任何設備控制操做都由特定於要尋址的設備相關的代碼來進行。這些代碼稱爲設備驅動。內核中必須嵌入系統中出現的每一個外設的驅動,從硬盤驅動到鍵盤和磁帶驅動器。內核功能的這個方面是本書中的咱們主要感興趣的地方。
五、網絡管理:網絡必須由操做系統來管理,由於大部分網絡操做不是特定於某一個進程: 進入系統的報文是異步事件。報文在某一個進程接手以前必須被收集,識別,分發,系統負責在程序和網絡接口之間遞送數據報文,它必須根據程序的網絡活動來控制程序的執行。另外,全部的路由和地址解析問題都在內核中實現。
3、按系列羅列常見Linux的發行版,並描述不一樣發行版之間的聯繫與區別。
Linux發行版(Linux distribution)是一種爲通常用戶預先集成好的Linux操做系統及各類應用軟件。通常不須要用戶從新編譯,在直接安裝以後,只須要做出小幅度的更改設置便可。Linux發行版一般包含了桌面環境、辦公包、媒體播放器、數據庫等應用軟件。這些操做系統一般使用Linux、以及來自GNU計劃的軟件、和基於X Window的圖形界面組成。
Linux發行版一般分爲商業發行版和社區發行版。也有少部分既不屬於發行版又不屬於社區發行版,其中最有名的是Slackware.
著名的Linux發行版
按照程序包管理器的不一樣,一般Linux的發行版也被分紅了不一樣的派系。
基於Debian |
Debian |
Ubuntu |
Linux Mint |
knoppix |
MEPIS |
Sidux |
|
基於Red Hat |
|||
|
|||
基於Slackware |
|||
基於Gentoo |
|||
|
|
Debian系列,包括Debian和Ubuntu等。Debian是社區類Linux的典範,是迄今爲止最遵循GNU規範 的Linux系統。Debian最先由Ian Murdock於1993年建立,分爲三個版本分支(branch): stable, testing 和 unstable。其中,unstable爲最新的測試版本,其中包括最新的軟件包,可是也有相對較多的bug,適合桌面用戶。testing的版本都經 過unstable中的測試,相對較爲穩定,也支持了很多新技術(好比SMP等)。而stable通常只用於服務器,上面的軟件包大部分都比較過期,可是 穩定和安全性都很是的高。Debian最具特點的是apt-get / dpkg包管理方式,其實Redhat的YUM也是在模仿Debian的APT方式,但在二進制文件發行方式中,APT應該是最好的了。Debian的資 料也很豐富,有不少支持的社區,有問題求教也有地方可去:)
Ubuntu嚴格來講不能算一個獨立的發行版本,Ubuntu是基於Debian的unstable版本增強而來,能夠這麼說,Ubuntu就是 一個擁有Debian全部的優勢,以及本身所增強的優勢的近乎完美的 Linux桌面系統。根據選擇的桌面系統不一樣,有三個版本可供選擇,基於Gnome的Ubuntu,基於KDE的Kubuntu以及基於Xfc的 Xubuntu。特色是界面很是友好,容易上手,對硬件的支持很是全面,是最適合作桌面系統的Linux發行版本。
Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所謂的Redhat Advance Server,收費版本)、Fedora Core(由原來的Redhat桌面版本發展而來,免費版本)、CentOS(RHEL的社區克隆版本,免費)。Redhat應該說是在國內使用人羣最多 的Linux版本,甚至有人將Redhat等同於Linux,而有些老鳥更是隻用這一個版本的Linux。因此這個版本的特色就是使用人羣數量大,資料非 常多,言下之意就是若是你有什麼不明白的地方,很容易找到人來問,並且網上的通常Linux教程都是以Redhat爲例來說解的。Redhat系列的包管 理方式採用的是基於RPM包的YUM包管理方式,包分發方式是編譯好的二進制文件。穩定性方面RHEL和CentOS的穩定性很是好,適合於服務器使用, 可是Fedora Core的穩定性較差,最好只用於桌面應用。
Gentoo,偉大的Gentoo是Linux世界最年輕的發行版本,正由於年輕,因此能吸收在她以前的全部發行版本的優勢,這也是Gentoo 被稱爲最完美的Linux發行版本的緣由之一。Gentoo最初由Daniel Robbins(FreeBSD的開發者之一)建立,首個穩定版本發佈於2002年。因爲開發者對FreeBSD的熟識,因此Gentoo擁有媲美 FreeBSD的廣受美譽的ports系統 ——Portage包管理系統。不一樣於APT和YUM等二進制文件分發的包管理系統,Portage是基於源代碼分發的,必須編譯後才能運行,對於大型軟 件而言比較慢,不過正由於全部軟件都是在本地機器編譯的,在通過各類定製的編譯參數優化後,能將機器的硬件性能發揮到極致。Gentoo是全部Linux 發行版本里安裝最複雜的,可是又是安裝完成後最便於管理的版本,也是在相同硬件環境下運行最快的版本。
SuSE AG在商界已經奮鬥了8年多,它一直致力於建立一個鏈接數據庫的最佳Linux版本。爲了實現這一目的,SuSE與Oracle 和IBM合做,以使他們的產品能穩定地工做。SuSE還開發了SuSE Linux eMail Server III,一個很是穩定的電子郵件羣組應用。基於2.4.10內核的SuSE 7.3,在原有版本的基礎上提升了易用性。安裝過程經過GUI完成,磁盤分區過程也很是簡單,但它沒有爲用戶提供更多的控制和選擇。在SuSE 操做系統下,能夠很是方便地訪問Windows磁盤,這使得兩種平臺之間的切換,以及使用雙系統啓動變得更容易。SuSE的硬件檢測很是優秀,該版本在服務器和工做站上都用得很好。SuSE擁有界面友好的安裝過程,還有圖形管理工具,可方便地訪問Windows磁盤,對於終端用戶和管理員來講使用它一樣方便,這使它成爲了一個強大的服務器平臺。 SuSE也經過基於Web的論壇提供技術支持,另外我還發現它有電話技術支持。
4、描述常見的開源協議(GPL,LGPL, BSD,Apache等)以及開源協議的區別
咱們很熟悉的Linux就是採用了GPL。GPL協議和BSD, Apache Licence等鼓勵代碼重用的許可很不同。GPL的出發點是代碼的開源/無償使用和引用/修改/衍生代碼的開源/無償使用,但不容許修改後和衍生的代碼作爲閉源的商業軟件發佈和銷售。這也就是爲何咱們能用免費的各類linux,包括商業公司的linux和linux上各類各樣的由我的,組織,以及商業軟件公司開發的免費軟件了。
GPL(GNU General Public License):
GPL協議的主要內容是隻要在一個軟件中使用("使用"指類庫引用,修改後的代碼或者衍生代碼)GPL 協議的產品,則該軟件產品必須也採用GPL協議,既必須也是開源和免費。這就是所謂的"傳染性"。GPL協議的產品做爲一個單獨的產品使用沒有任何問題,還能夠享受免費的優點。
因爲GPL嚴格要求使用了GPL類庫的軟件產品必須使用GPL協議,對於使用GPL協議的開源代碼,商業軟件或者對代碼有保密要求的部門就不適合集成/採用做爲類庫和二次開發的基礎。其它細節如再發布的時候須要伴隨GPL協議等和BSD/Apache等相似。
LGPL(GNU Lesser General Public License):
LGPL 是GPL的一個爲主要爲類庫使用設計的開源協議。和GPL要求任何使用/修改/衍生之GPL類庫的的軟件必須採用GPL協議不一樣。LGPL容許商業軟件經過類庫引用(link)方式使用LGPL類庫而不須要開源商業軟件的代碼。這使得采用LGPL協議的開源代碼能夠被商業軟件做爲類庫引用併發布和銷售。
可是若是修改LGPL協議的代碼或者衍生,則全部修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須採用LGPL協議。所以LGPL協議的開源代碼很適合做爲第三方類庫被商業軟件引用,但不適合但願以LGPL協議代碼爲基礎,經過修改和衍生的方式作二次開發的商業軟件採用。
GPL/LGPL都保障原做者的知識產權,避免有人利用開源代碼複製並開發相似的產品
BSD(Berkeley Software Distribution)協議:
一、若是二次發佈的產品中包含源代碼,則在源代碼中必須帶有原來的代碼中的BSD協定;
二、若是二次發佈產品是二進制格式的庫或程序,則須要在發佈的文檔或版權聲明中說明包含原來的代碼中的BSD協定;
三、不能夠用開源代碼的做者或組織,以及原來的產品的名字作市場推廣;
Apache Licence:
Apache Licence是著名的非盈利開源組織Apache採用的協議。該協議和BSD相似,一樣鼓勵代碼共享和尊重原做者的著做權,一樣容許代碼修改,再發布(做爲開源或商業軟件)。須要知足的條件也和BSD相似:
一、須要給代碼的用戶一份Apache Licence
二、若是你修改了代碼,須要在被修改的文件中說明。
三、在延伸的代碼中(修改和有源代碼衍生的代碼中)須要帶有原來代碼中的協議,商標,專利聲明和其餘原來做者規定須要包含的說明。
四、若是再發布的產品中包含一個Notice文件,則在Notice文件中須要帶有Apache Licence。你能夠在Notice中增長本身的許可,但不能夠表現爲對Apache Licence構成更改。
5、描述Linux的哲學思想,並按照本身的理解對其進行解釋性描述。
Linux的哲學思想:
一、一切皆文件:把幾乎全部資源通通抽象爲文件形式;包括硬件設備,甚至通訊接口等;
二、 由衆多功能單一的程序組成;一個程序只作一件事,而且作好;組合小程序完成複雜任務;
三、儘可能避免跟用戶交互;目標:易於以編程的方式實現自動化任務;
四、使用文本文件保存配置信息;
6、描述linux目錄結構以及目錄結構命名規定。
Linux目錄結構(倒置樹狀結構):
文件系統的層次結構標準FHS(Filesystem Hierarchy Standard)
/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:usr Hierarchy,全局共享的只讀數據路徑;
bin, sbin
lib, lib64
include:C程序頭文件;
share:命令手冊頁和自帶文檔等架構特有的文件的存儲位置
local:另外一個層級目錄;
X11R6:X-Window程序的安裝位置
src:程序源碼文件的存儲位置
/usr/local:Local hierarchy,讓系統管理員安裝本地應用程序;也一般用於安裝第三方程序;
/var:/var Hierarchy,存儲常發生變化的數據的目錄;
cache Application cache data
lib Variable state information
local Variable data for /usr/local
lock Lock files
log Log files and directories
opt Variable data for /opt
run Data relevant to running processes
spool Application spool data
tmp Temporary files preserved between system reboots
/proc:基於內存的虛擬文件系統,用於爲內核及進程存儲其相關信息;它們多爲內核參數,例如net.ipv4.ip_forward, 虛擬爲net/ipv4/ip_forward, 存儲於/proc/sys/, 所以其完整路徑爲/proc/sys/net/ipv4/ip_forward;
/sys:sysfs虛擬文件系統提供了一種比proc更爲理想的訪問內核數據的途徑;其主要做用在於爲管理Linux設備提供一種統一模型的的接口;
Linux目錄命令規定:
嚴格區分字符大小寫:file1, File1, FILE1
目錄也是文件,在同一路徑下,兩個文件不能同名;
支持使用除/之外的任意字符;
最長不能超過255個字符;