計算機的組成及其功能
計算機是一種能接收和存儲信息,并按照存儲在其 內(nèi)部的程序?qū)A繑?shù)據(jù)進行自動、高速地處理,然后把處理結(jié)果輸出的現(xiàn)代化 智能電子設(shè)備 。
計算機組成.jpg
一、計算機硬件
1946年馮·諾依曼提出馮·諾依曼體系結(jié)構(gòu),計算機硬件由運算器、 控制器、存儲器、輸入設(shè)備和輸出設(shè)備五大部分組成。
1.運算器
運算器由算術(shù)邏輯單元(ALU)、累加器、狀態(tài)寄存器、通用寄存器組等組成。是對數(shù)據(jù)進行各種算術(shù)運算和邏輯運算。算術(shù)運算為加、減、乘、除及其復(fù)合運算。邏輯運算為與、或、非等邏輯運算以及數(shù)據(jù)的比較和移位等操作。
2.控制器
控制器(Control Unit),是整個計算機系統(tǒng)的中樞神經(jīng),通常與運算器合稱為中央處理器(CPU)。它從存儲器中逐條取出指令,分析每條指令規(guī)定的是什么操作以及所需數(shù)據(jù)的存放位置等,然后根據(jù)分析的結(jié)果向計算機其它部件發(fā)出控制信號,統(tǒng)一指揮整個計算機完成指令所規(guī)定的操作。
3.存儲器
存儲器用來存放程序和數(shù)據(jù)等信息。按用途存儲器可分為主存儲器(內(nèi)存)和輔助存儲器(外存)。內(nèi)存用來存放當(dāng)前正在執(zhí)行的數(shù)據(jù)和程序,如果斷電數(shù)據(jù)就會丟失。外存作為內(nèi)存的延伸,通常以硬盤等形式存在,能長期保存信息。
4.輸入設(shè)備
輸入設(shè)備用來向計算機輸入數(shù)據(jù)和信息的設(shè)備。常見的輸入設(shè)備有鍵盤、鼠標(biāo)等。
5.輸出設(shè)備
輸出設(shè)備用于接收計算機數(shù)據(jù)的輸出顯示、打印、聲音、控制外圍設(shè)備操作等。常見的輸出設(shè)備有顯示器、打印機等。
二、計算機軟件
計算機軟件由系統(tǒng)軟件和應(yīng)用軟件組成。
1.系統(tǒng)軟件
系統(tǒng)軟件是指控制和協(xié)調(diào)計算機及外部設(shè)備,支持應(yīng)用軟件開發(fā)和運行的系統(tǒng),是無需用戶干預(yù)的各種程序的集合。主要功能是調(diào)度,監(jiān)控和維護計算機系統(tǒng);負(fù)責(zé)管理計算機系統(tǒng)中各種獨立的硬件,使得它們可以協(xié)調(diào)工作。
2.應(yīng)用軟件
應(yīng)用軟件是用戶可以使用的各種程序設(shè)計語言,以及用各種程序設(shè)計語言編制的應(yīng)用程序的集合。主要為了解決某類問題而設(shè)計的程序。
Linux內(nèi)核功能及作用
內(nèi)核是用來管理和分配計算機資源的,是一個提供硬件抽象層、磁盤及文件系統(tǒng)控制、多任務(wù)等功能的系統(tǒng)軟件。它主要負(fù)責(zé)調(diào)度進程、管理內(nèi)存、提供文件系統(tǒng)、驅(qū)動設(shè)備、聯(lián)網(wǎng)、提供一套統(tǒng)一的系統(tǒng)調(diào)用的接口等功能。
1.進程管理
內(nèi)核負(fù)責(zé)創(chuàng)建和銷毀進程, 并處理它們與外部世界的聯(lián)系(輸入和輸出). 不同進程間通訊(通過信號, 管道, 或者進程間通訊原語)對整個系統(tǒng)功能來說是基本的, 也由內(nèi)核處理. 另外, 調(diào)度器, 控制進程如何共享 CPU, 是進程管理的一部分. 更通常地, 內(nèi)核的進程管理活動實現(xiàn)了多個進程在一個單個或者幾個 CPU 之上的抽象。
2.內(nèi)存管理
計算機的內(nèi)存是主要的資源, 處理它所用的策略對系統(tǒng)性能是至關(guān)重要的. 內(nèi)核為所有進程的每一個都在有限的可用資源上建立了一個虛擬地址空間. 內(nèi)核的不同部分與內(nèi)存管理子系統(tǒng)通過一套函數(shù)調(diào)用交互, 從簡單的 malloc/free 對到更多更復(fù)雜的功能。
3.文件管理
內(nèi)核在非結(jié)構(gòu)化的硬件之上建立了一個結(jié)構(gòu)化的文件系統(tǒng), 結(jié)果是文件的抽象非常多地在整個系統(tǒng)中應(yīng)用. 另外, Linux 支持多個文件系統(tǒng)類型, 就是說, 物理介質(zhì)上不同的數(shù)據(jù)組織方式. 例如, 磁盤可被格式化成標(biāo)準(zhǔn) Linux 的 ext3 文件系統(tǒng), 普遍使用的 FAT 文件系統(tǒng), 或者其他幾個文件系統(tǒng)。
4. 驅(qū)動管理
幾乎每個系統(tǒng)操作終都映射到一個物理設(shè)備上,除了處理器,內(nèi)存和非常少的別的實體之外,全部中的任何設(shè)備控制操作都由特定于要尋址的設(shè)備相關(guān)的代碼來進行。這些代碼稱為設(shè)備驅(qū)動。內(nèi)核中必須嵌入系統(tǒng)中出現(xiàn)的每個外設(shè)的驅(qū)動,從硬盤驅(qū)動到鍵盤和磁帶驅(qū)動器。
5.網(wǎng)絡(luò)管理
網(wǎng)絡(luò)必須由操作系統(tǒng)來管理,因為大部分網(wǎng)絡(luò)操作不是特定于某一個進程: 進入系統(tǒng)的報文是異步事件。報文在某一個進程接手之前必須被收集,識別,分發(fā),系統(tǒng)負(fù)責(zé)在程序和網(wǎng)絡(luò)接口之間遞送數(shù)據(jù)報文,它必須根據(jù)程序的網(wǎng)絡(luò)活動來控制程序的執(zhí)行。另外,所有的路由和地址解析問題都在內(nèi)核中實現(xiàn)。
Linux常見的發(fā)行版的聯(lián)系和區(qū)別

聯(lián)系
1)都使用linux內(nèi)核;
2)都需要遵循GNU的GPL協(xié)定;
3)版本格式基本一樣(主版本號.次版本號.發(fā)行號或修正號)。
區(qū)別
1.社區(qū)組織維護:以Debian為代表; 企業(yè)維護:以Redhat為代表。
2.不同發(fā)行版采用了不同的包管理器。Debian系使用DPKG包,包管理工具是apt。SUSE、Redhat使用RPM包,SUSE系的包管理工具是zypper,Redhat系的包管理工具是yum,Gentoo包管理工具是emerge,ArchLinux包管理工具是pacman。
常見的開源協(xié)議

1.GPL
GPL(Gun General Public License)的出發(fā)點是代碼的開源/免費使用和引用/修改/衍生代碼的開源/免費使用,但不允許修改后和衍生的代碼做為閉源的商業(yè)軟件發(fā)布和銷售。
1)確保軟件自始至終都以開放源代碼形式發(fā)布,保護開發(fā)成果不被竊取用作商業(yè)發(fā)售。
2)GPL 大致就是一個左側(cè)版權(quán)的體現(xiàn)。
3)無論軟件以何種形式發(fā)布,都必須同時附上源代碼。
4)開發(fā)或維護遵循 GPL 協(xié)議開發(fā)的軟件的公司或個人,可以對使用者收取一定的服務(wù)費用。
2.LGPL
LGPL(Lesser General Public License)是GPL的一個為主要為類庫使用設(shè)計的開源協(xié)議。允許商業(yè)軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業(yè)軟件的代碼。
如果修改LGPL協(xié)議的代碼或者衍生,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用LGPL協(xié)議。
3.MPL
MPL(The Mozilla Public License)是1998年初Netscape的 Mozilla小組為其開源軟件項目設(shè)計的軟件許可證。
1) MPL雖然要求對于經(jīng)MPL許可證發(fā)布的源代碼的修改也要以MPL許可證的方式再許可出來,以保證其他人可以在MPL的條款下共享源代碼。
2)允許被許可人將經(jīng)過MPL許可證獲得的源代碼同自己其他類型的代碼混合得到自己的軟件程序。
3)明確要求源代碼的提供者不能提供已經(jīng)受專利保護的源代碼(除非他本人是專利權(quán)人,并書面向公眾免費許可這些源代碼),也不能在將這些源代碼以開放源代碼許可證形式許可后再去申請與這些源代碼有關(guān)的專利。
4.BSD
BSD(original BSD license、FreeBSD license、Original BSD license)開源協(xié)議是一個給于使用者很大自由的協(xié)議??梢宰杂?br> 的使用,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發(fā)布。
以BSD協(xié)議代碼為基礎(chǔ)做二次開發(fā)自己的產(chǎn)品時需要滿足三個條件:
1)如果再發(fā)布的產(chǎn)品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協(xié)議。
2)如果再發(fā)布的只是二進制類庫/軟件,則需要在類庫/軟件的文檔和版權(quán)聲明中包含原來代碼中的BSD協(xié)議。
- 不可以用開源代碼的作者/機構(gòu)名字和原來產(chǎn)品的名字做市場推廣。
5.MIT
MIT(The MIT License)是作者只想保留版權(quán),而無任何其他了限制。
6.Apache Licence
Apache Licence鼓勵代碼共享和尊重原作者的著作權(quán),同樣允許代碼修改,再發(fā)布(作為開源或商業(yè)軟件)。
1)需要給此開源項目的用戶一份Apache Licence。
2)如果你修改了代碼,需要再被修改的文件中說明。
3)在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協(xié)議,商標(biāo),專利聲明和其他原來作者規(guī)定需要包含的說明。
4)如果再發(fā)布的產(chǎn)品中包含一個NOTICE文件,則在NOTICE文件中需要帶有Apache Licence。你可以在NOTICE中增加自己的許可,但不可以表現(xiàn)為對Apache Licence構(gòu)成更改。
Linux的哲學(xué)思想
1.一切皆文件
幾乎把所有的資源系統(tǒng)抽象為文件形式:包括硬件設(shè)備,甚至通信接口等
2.由眾多功能單一的程序組成
一個程序只做一件事。組合小程序完成復(fù)雜任務(wù)。
3.盡量避免跟用戶交互
使用命令行接口執(zhí)行效率高,易于以腳本的方式實現(xiàn)自動化任務(wù)
4.使用文本文件保存配置信息
linux所有的配置文件都存放在文本配置文件當(dāng)中,無論什么配置修改都只需修改其配置文件即可,配置文件時文本形式的只需任意一款文本編輯器修改即可。
linux目錄結(jié)構(gòu)以及目錄結(jié)構(gòu)命名規(guī)定

依據(jù)FHS(Filesystem Hierachy Standard)
/bin:所有用戶可用的基本命令程序文件
/boot:引導(dǎo)加載器必須用到的各靜態(tài)文件:kernel,initramfs(initrd),grub等
/dev:存儲特殊文件或設(shè)備文件。設(shè)備有兩種類型:字符設(shè)備(線性設(shè)備)、塊設(shè)備(隨機設(shè)備)
/etc:系統(tǒng)程序的配置文件,只能為靜態(tài)
/home:普通用戶的家目錄的集中位置:一般每個普通用戶的家目錄默認(rèn)為此目錄下與用戶名同名的子目錄
/lib:為系統(tǒng)啟動或根文件系統(tǒng)上的應(yīng)用程序(/bin,/sbin等)提供共享庫,以及為內(nèi)核提供模塊。libc.so.:動態(tài)鏈接的C庫;ld:運行時鏈接器/加載器;modules:用于存儲內(nèi)核模塊的目錄
/lib64:64位系統(tǒng)特有的存放64位共享庫的路徑
/media:便攜式設(shè)備掛載點,CDROM,floppy等
/mnt:其他文件系統(tǒng)的臨時掛載點
/opt:附加應(yīng)用程序的安全位置:可選路徑
/proc:基于內(nèi)存的虛擬文件系統(tǒng),用于為內(nèi)核及進程存儲其相關(guān)信息;它們多為內(nèi)核參數(shù),例如net.ipv4.ip_forward,虛擬為net/ipv4/ip_forward,存儲于/proc/sys/,因此其完整路徑為/proc/sys/net/ipv4/ip_forward
/root:管理員的家目錄:可選
/sbin:供系統(tǒng)管理使用的工具程序
/srv:當(dāng)前主機為服務(wù)提供的數(shù)據(jù)
/sys:sysfs虛擬文件系統(tǒng)提供了一種比proc更為理想的訪問內(nèi)核數(shù)據(jù)的途徑;其主要作用在于為管理Lin設(shè)備提供一種統(tǒng)一模型的接口
/tmp:為那些會產(chǎn)生臨時文件的程序提供的用于存儲臨時文件的目錄:可供所有用戶執(zhí)行寫入操作;有特殊權(quán)限
/usr:usr Hierachy ,全局共享的只讀數(shù)據(jù)路徑
/var:/var Hierarchy,存儲常發(fā)生變化的數(shù)據(jù)的目錄
