計算機的組成前端
通常而言,計算機的組成應該分爲兩部分:
一部分指的是硬件部分。根據馮諾伊曼提出的計算機體系架構,一臺計算機主要分爲五個部分:控制器、運算器、存儲器、輸入設備、輸出設備
二部分指的是計算機軟件。包括彙編語言、系統軟件及應用軟件,他們不像硬件同樣「有形」,但只有軟件硬件互相配合,纔是一臺標準的計算機組成
各組成的功能linux
硬件部分
控制器(Control):CPU的組成部分之一。至關於計算機的中樞神經,經過控制器,能夠有效的控制和協調整個計算機的操做
運算器(Datapath):CPU的組成部分之一。包含算數邏輯單元(ALU)、累加器、狀態寄存器、通用寄存器組等
通用寄存器組:可用於傳送和暫存數據,也能夠參與算術邏輯運算,保存運算結果,通用寄存器組包括如下幾類:數據寄存器、變址寄存器、指針寄存器、段寄存器、指令指針寄存器
存儲器(memory):存儲程序和數據,並能在計算機運行過程當中高速、自動地完成從程序或數據的存取,也就是俗稱的內存RAM(Random Access Memory)
輸入設備(Input):外部設備之一。做用是將程序、原始數據、文字、字符、控制命令或現場採集的數據輸入到計算機。常見的輸入設備有:鍵盤、鼠標、磁帶機、磁盤機、光盤機等
輸出設備(Output):外部設備之一。做用是把計算機的中間結果或最後結果、機內的各類數據及文字等信息輸出來。常見的輸出設備有:CRT、打印機、繪圖儀等數據庫
軟件部分
彙編語言(assembly language):一種用於cpu的低級語言。它使用助記符代替二進制語言,方便人類的閱讀及操做。但一種彙編語言只能與相對應的計算機系統結構對應,沒法在不一樣平臺移植
系統軟件(system software):用來運行或控制硬件所開發的計算機軟件,如操做系統、編譯器、數據庫等等apache
內核指的是一個提供硬件抽象層、磁盤及文件系統控制、多任務等功能的系統軟件。內核是一個操做系統的核心,是操做系統最基本的部分。它負責管理系統的進程、內存、設備驅動程序、文件和網絡系統等,決定着系統的性能和穩定性。它是爲衆多應用程序提供對計算機硬件的安全訪問的一部分軟件,這種訪問是有限的,而且內核決定一個程序在何時對某部分硬件操做多長時間。直接對硬件操做是很是複雜的,因此內核一般提供一種硬件抽象的方法來完成這些操做。硬件抽象隱藏了複雜性,爲應用軟件和硬件提供了一套簡潔,統一的接口,使程序設計更爲簡單。編程
一個內核不是一套完整的操做系統。好比一套基於Linux內核的完整操做系統叫做Linux操做系統,或是GNU/Linux。小程序
進程管理:內核負責建立和銷燬進程, 並處理它們與外部世界的聯繫(輸入和輸出),不一樣進程間通信(經過信號,管道,或者進程間通信原語)對整個系統功能來講是基本的,也由內核處理。 另外, 調度器, 控制進程如何共享CPU,是進程管理的一部分。更一般地,內核的進程管理活動實現了多個進程在一個單個或者幾個CPU 之上的抽象。windows
內存管理:計算機的內存是主要的資源, 處理它所用的策略對系統性能是相當重要的。內核爲全部進程的每個都在有限的可用資源上創建了一個虛擬地址空間。內核的不一樣部分與內存管理子系統經過一套函數調用交互,從簡單的malloc/free對到更多更復雜的功能。緩存
文件管理:Linux 在很大程度上基於文件系統的概念;幾乎Linux中的任何東西均可看做一個文件。內核在非結構化的硬件之上創建了一個結構化的文件系統,結果是文件的抽象很是多地在整個系統中應用。另外,Linux 支持多個文件系統類型,就是說,物理介質上不一樣的數據組織方式。例如,磁盤可被格式化成標準Linux的ext3文件系統,廣泛使用的FAT文件系統,或者其餘幾個文件系統。安全
驅動管理:幾乎每一個系統操做終都映射到一個物理設備上,除了處理器,內存和很是少的別的實體以外,所有中的任何設備控制操做都由特定於要尋址的設備相關的代碼來進行。這些代碼稱爲設備驅動。內核中必須嵌入系統中出現的每一個外設的驅動,從硬盤驅動到鍵盤和磁帶驅動器。服務器
網絡管理:網絡必須由操做系統來管理,由於大部分網絡操做不是特定於某一個進程: 進入系統的報文是異步事件。報文在某一個進程接手以前必須被收集,識別,分發,系統負責在程序和網絡接口之間遞送數據報文,它必須根據程序的網絡活動來控制程序的執行。另外,全部的路由和地址解析問題都在內核中實現。
Linux是一種自由和開放源代碼的類Unix操做系統。該操做系統的內核由Linus Torvalds於1991年10月5日首次發佈。根據其發佈的內核(kernel)搭配上GNU上的應用程序,成爲了當今世界上運用領域最普遍、使用人數最多的操做系統。一般狀況下,Linux被打包成供我的計算機和服務器使用的Linux發行版。
Linux發行版包含Linux內核和支撐內核的實用程序和庫,一般還帶有大量能夠知足各種需求的應用程序。我的計算機使用的Linux發行版一般包含X Window和一個相應的桌面環境,如GNOME或KDE.
什麼是Linux發行版
Linux發行版(Linux distribution)
是一種爲通常用戶預先集成好的Linux操做系統及各類應用軟件。通常不須要用戶從新編譯,在直接安裝以後,只須要做出小幅度的更改設置便可。Linux發行版一般包含了桌面環境、辦公包、媒體播放器、數據庫等應用軟件。這些操做系統一般使用Linux、以及來自GNU計劃的軟件、和基於X Window的圖形界面組成。
Linux發行版一般分爲商業發行版和社區發行版。也有少部分既不屬於發行版又不屬於社區發行版,其中最有名的是Slackware.
著名的Linux發行版
按照程序包管理器的不一樣,一般Linux的發行版也被分紅了不一樣的派系。
首先說一下什麼是程序包管理器
程序自己是由二進制程序、配置文件、庫文件以及幫助文件組成的。有時候咱們發現,可能一個程序會有不少文件,很是不利於安裝卸載管理,因而,又產生了程序包管理器。
程序包管理器的做用:
1)程序的組成文件打包成一個或有限幾個文件;
2) 安裝;
3) 卸載;
4) 查詢;
所以,咱們能夠劃分以下
Redhat系
Slackware系
Debian系
其餘
發行版之間的不一樣
在Linux發行版中,一般均使用軟件包管理系統,不一樣的操做系統,軟件包管理系統也不盡相同。比較常見的軟件包管理系統有如下幾種
dpkg:通常爲Debian系使用,前端管理工具爲apt-get
rpm(The RPM Package Manager):通常爲Red Hat系使用,S.u.S.E也有使用,前端工具包含多種:
yum:做爲RHEL及CentOS的前端工具
dnf:做爲Fedora的前端工具
ZYpper:做爲S.u.S.E及opensuse的前端工具
urpmi:做爲Mandriva Linux及Mageia的前端工具
軟件開源是許多軟件企業須要關注的問題,不一樣的開源軟件協議,對應不一樣的源代碼使用限制。只有瞭解這些開源軟件協議,才能更好地使用和回饋開源軟件,不然就有可能觸犯法律。今天介紹四種常見的開源軟件協議:
GPL(GNU General Public License)LGPL(GNU Lesser General Public License)BSD(Berkerley Software Distribution)Apache License
GPL
GPL的出發點是代碼的開源/無償使用和引用/修改/衍生代碼的開源/無償使用,但不容許修改後和衍生的代碼作爲閉源的商業軟件發佈和銷售。
GPL的「傳染性」在於:只要在一個軟件中使用(」使用」指類庫引用,修改後的代碼或者衍生代碼)GPL 協議的產品,則該軟件產品必須也採用GPL協議,既必須也是開源和免費。咱們所熟悉的Linux就是採用了GPL。
LGPL
LGPL是GPL的一個爲主要爲類庫使用設計的開源協議。LGPL容許商業軟件經過類庫引用(link)方式使用LGPL類庫而不須要開源商業軟件的代碼。所以LGPL協議的開源代碼很適合做爲第三方類庫被商業軟件引用,但不適合但願以LGPL協議代碼爲基礎,經過修改和衍生的方式作二次開發的商業軟件採用。
BSD
BSD開源協議是一個給於使用者很大自由的協議。基本上使用者能夠自由的使用,修改源代碼,也能夠將修改後的代碼做爲開源或者專有軟件再發布。
當使用了BSD協議的代碼,或者以BSD協議代碼爲基礎作二次開發本身的產品時,須要知足三個條件:
若是再發布的產品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協議;若是再發布的只是二進制類庫/軟件,則須要在類庫/軟件的文檔和版權聲明中包含原來代碼中的BSD協議;不能夠用開源代碼的做者/機構名字和原來產品的名字作市場推廣。所以,不少公司企業在選擇開源軟件的時候都首選BSD協議,由於能夠徹底控制這些第三方的代碼,並且在必要的時候能夠進行修改或者二次開發。
Apache License
Apache Licence是著名的非盈利開源組織Apache採用的協議。該協議和BSD相似,一樣鼓勵代碼共享和尊重原做者的著做權,一樣容許代碼修改,再發布(做爲開源或商業軟件)。須要知足的條件也和BSD相似:
須要給代碼的用戶一份Apache Licence;若是你修改了代碼,須要在被修改的文件中說明;在延伸的代碼中(修改和有源代碼衍生的代碼中)須要帶有原來代碼中的協議,商標,專利聲明和其餘原來做者規定須要包含的說明;若是再發布的產品中包含一個Notice文件,則在Notice文件中須要帶有Apache Licence。你能夠在Notice中增長本身的許可,但不能夠表現爲對Apache Licence構成更改。
Linux系統不一樣的目錄能夠分佈在不一樣的分區或者不一樣的硬盤設備上,這是windows難以作到的。目錄和磁盤分區沒有關聯。
掛載點是系統進入設備的入口。如mount /dev/cdrom /mnt就是把/mnt與/dev/cdrom聯繫起來。
全部的目錄都是按照必定的類別有規律的組織和命名的。FHS(目錄層次結構)是Linux的目錄規範標準
[FHS(目錄層次結構)]