Linux 學習-電腦基礎 一、描述電腦的組成及其功能。 電腦系統是由硬體(Hardware)和軟體(Software )兩部分組成。 硬體: 從硬體基本結構上來講,電腦是由運算器、控制器、存儲器、輸入設備、輸出設備五大部分組成的,每一部分分別按要求執行特定的基本功能。 1、運算器(算數邏輯 ...
Linux 學習-電腦基礎
一、描述電腦的組成及其功能。
電腦系統是由硬體(Hardware)和軟體(Software )兩部分組成。
硬體:
從硬體基本結構上來講,電腦是由運算器、控制器、存儲器、輸入設備、輸出設備五大部分組成的,每一部分分別按要求執行特定的基本功能。
1、運算器(算數邏輯單元Arithmetical and Logical Unit)的主要功能是對數據進行各種運算。這些運算除了常規的加、減、乘、除等基本的的算術運算之外,還包括能進行“邏輯判斷”的邏輯處理能力,即“與”、“或”、“非”這樣的基本邏輯運算以及數據的比較、位移等操作。
2、控制器(Control Unit) 控制器是整個電腦系統的控制中心,它指揮電腦各部分協調地工作,保證電腦按照預先規定的目標和步驟有條不紊地進行操作及處理。 控制器從存儲器中逐條取出指令,分析每條指令規定的是什麼操作以及所需數據的存放位置等,然後根據分析的結果向電腦其它部分發出控制信號,統一指揮整個電腦完成指令所規定的操作。因此,電腦自動工作的過程,實際上是自動執行程式的過程,而程式中的每條指令都是由控制器來分析執行的,它是電腦實現“程式控制”的主要部件。 通常把控制器與運算器合稱為中央處理器(Central Processing Unit-CPU)。工業生產中總是採用最先進的超大規模集成電路技術來製造中央處理器,即 CPU 晶元。它是電腦的核心部件。它的性能,主要是工作速度和計算精度,對機器的整體性能有全面的影響。
3、存儲器(Memory unit)的主要功能是存儲程式和各種數據信息,並能在電腦運行過程中高速、自動地完成程式或數據的存取。存儲器是具有“記憶”功能的設備,它具有兩種穩定狀態的物理期間來存儲信息。這些器件也稱為記憶元件。由於記憶元件只有兩種穩定狀態,因此在電腦中採用只有兩個數位“0”和“1”的二進位來表示數據。記憶元件的兩種穩定狀態分別表示“0”和“1”。日常使用的十進位數必須轉換成等值的二進位數才能存入存儲器中。電腦中處理的各種字元,例如英文字母、運算符號等,也要轉換成二進位代碼才能存儲和操作。 存儲器是由成千上萬個“存儲單元”構成的,每個存儲單元存放一定位數(微機上為8位)的二進位數,每個存儲單元都有唯一的編號,稱為存儲單元的地址。“存儲單元”是基本的存儲單位,不同的存儲單元是用不同的地址來區分的,就好像居民區的一條街道上的住戶是用不同的門牌號碼來區分一樣。 電腦採用按地址訪問的方式到存儲器中存數據和取數據,即在電腦程式中,每當需要訪問數據時,要向存儲器送去一個地址指出數據的位置,同時發出一個“存放”命令(伴以待存放的數據),或者發出一個“取出”命令。這種按地址存儲方式的特點是,只要知道了數據的地址就能直接存取。但也有缺點,即一個數據往往要占用多個存儲單元,必須連續存取有關的存儲單元才是一個完整的數據。 電腦在計算之前,程式和數據通過輸入設備送入存儲器,電腦開始工作之後,存儲器還要為其它部件提供信息,也要保存中間結果和最終結果。因此,存儲器的存數和取數的速度是電腦系統的一個非常重要的性能指標。
4、輸入設備(Input device) 用來向電腦輸入各種原始數據和程式的設備叫輸入設備。輸入設備把各種形式的信息,如數字、文字、圖像等轉換為數字形式的“編碼”,即電腦能夠識別的用1和0表示的二進位代碼(實際上是電信號),並把它們“輸入”(INPUT)到電腦記憶體儲起來。鍵盤是必備的輸入設備、常用的輸入設備還有滑鼠器、圖形輸入板、視頻攝像機等。
5、輸出設備(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則是資料庫系統。
輔助程式
系統輔助處理程式也稱為“軟體研製開發工具”、“支持軟體”、“軟體工具”,主要有編輯程式、調試程式、裝備和連接程式、調試程式。
二、描述內核功能以及作用
內核結構:
操作系統是一個用來和硬體打交道併為用戶程式提供一個有限服務集的低級支撐軟體。一個電腦系統是一個硬體和軟體的共生體,它們互相依賴,不可分割。電腦的硬體,含有外圍設備、處理器、記憶體、硬碟和其他的電子設備組成電腦的發動機。但是沒有軟體來操作和控制它,自身是不能工作的。完成這個控制工作的軟體就稱為操作系統,在Linux的術語中被稱為"內核",也可以稱為"核心"。Linux內核的主要模塊(或組件)分以下幾個部分:存儲管理、CPU和進程管理、文件系統、設備管理和驅動、網路通信,以及系統的初始化(引導)、系統調用等。
1、管理記憶體:電腦的記憶體是主要的資源, 處理它所用的策略對系統性能是至關重要的。內核為所有進程的每一個都在有限的可用資源上建立了一個虛擬地址空間。內核的不同部分與記憶體管理子系統通過一套函數調用交互,從簡單的malloc/free對到更多更複雜的功能。
2、管理進程:內核負責創建和銷毀進程, 並處理它們與外部世界的聯繫(輸入和輸出),不同進程間通訊(通過信號,管道,或者進程間通訊原語)對整個系統功能來說是基本的,也由內核處理。 另外, 調度器, 控制進程如何共用CPU,是進程管理的一部分。更通常地,內核的進程管理活動實現了多個進程在一個單個或者幾個CPU 之上的抽象。
3、文件系統:Unix 在很大程度上基於文件系統的概念;幾乎Unix中的任何東西都可看作一個文件。內核在非結構化的硬體之上建立了一個結構化的文件系統,結果是文件的抽象非常多地在整個系統中應用。另外,Linux 支持多個文件系統類型,就是說,物理介質上不同的數據組織方式。例如,磁碟可被格式化成標準Linux的ext3文件系統,普遍使用的FAT文件系統,或者其他幾個文件系統。
4、設備控制:幾乎每個系統操作終都映射到一個物理設備上,除了處理器,記憶體和非常少的別的實體之外,全部中的任何設備控制操作都由特定於要定址的設備相關的代碼來進行。這些代碼稱為設備驅動。內核中必須嵌入系統中出現的每個外設的驅動,從硬碟驅動到鍵盤和磁帶驅動器。內核功能的這個方面是本書中的我們主要感興趣的地方。
5、網路管理:網路必須由操作系統來管理,因為大部分網路操作不是特定於某一個進程: 進入系統的報文是非同步事件。報文在某一個進程接手之前必須被收集,識別,分發,系統負責在程式和網路介面之間遞送數據報文,它必鬚根據程式的網路活動來控製程序的執行。另外,所有的路由和地址解析問題都在內核中實現。
三、按系列羅列常見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的論壇提供技術支持,另外我還發現它有電話技術支持。
四、描述常見的開源協議(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)協議:
1、如果二次發佈的產品中包含源代碼,則在源代碼中必須帶有原來的代碼中的BSD協定;
2、如果二次發佈產品是二進位格式的庫或程式,則需要在發佈的文檔或版權聲明中說明包含原來的代碼中的BSD協定;
3、不可以用開源代碼的作者或組織,以及原來的產品的名字做市場推廣;
Apache Licence:
Apache Licence是著名的非盈利開源組織Apache採用的協議。該協議和BSD類似,同樣鼓勵代碼共用和尊重原作者的著作權,同樣允許代碼修改,再發佈(作為開源或商業軟體)。需要滿足的條件也和BSD類似:
1、需要給代碼的用戶一份Apache Licence
2、如果你修改了代碼,需要在被修改的文件中說明。
3、在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協議,商標,專利聲明和其他原來作者規定需要包含的說明。
4、如果再發佈的產品中包含一個Notice文件,則在Notice文件中需要帶有Apache Licence。你可以在Notice中增加自己的許可,但不可以表現為對Apache Licence構成更改。
五、描述Linux的哲學思想,並按照自己的理解對其進行解釋性描述。
Linux的哲學思想:
1、一切皆文件:把幾乎所有資源統統抽象為文件形式;包括硬體設備,甚至通信介面等;
2、 由眾多功能單一的程式組成;一個程式只做一件事,並且做好;組合小程式完成複雜任務;
3、儘量避免跟用戶交互;目標:易於以編程的方式實現自動化任務;
4、使用文本文件保存配置信息;
六、描述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個字元;