計算機的組成及其功能
計算機是一種能接收和存儲信息,并按照存儲在其 內部的程序對海量數據進行自動、高速地處理,然后把處理結果輸出的現代化 智能電子設備 。
計算機組成.jpg
一、計算機硬件
1946年馮·諾依曼提出馮·諾依曼體系結構,計算機硬件由運算器、 控制器、存儲器、輸入設備和輸出設備五大部分組成。
1.運算器
運算器由算術邏輯單元(ALU)、累加器、狀態寄存器、通用寄存器組等組成。是對數據進行各種算術運算和邏輯運算。算術運算為加、減、乘、除及其復合運算。邏輯運算為與、或、非等邏輯運算以及數據的比較和移位等操作。
2.控制器
控制器(Control Unit),是整個計算機系統的中樞神經,通常與運算器合稱為中央處理器(CPU)。它從存儲器中逐條取出指令,分析每條指令規定的是什么操作以及所需數據的存放位置等,然后根據分析的結果向計算機其它部件發出控制信號,統一指揮整個計算機完成指令所規定的操作。
3.存儲器
存儲器用來存放程序和數據等信息。按用途存儲器可分為主存儲器(內存)和輔助存儲器(外存)。內存用來存放當前正在執行的數據和程序,如果斷電數據就會丟失。外存作為內存的延伸,通常以硬盤等形式存在,能長期保存信息。
4.輸入設備
輸入設備用來向計算機輸入數據和信息的設備。常見的輸入設備有鍵盤、鼠標等。
5.輸出設備
輸出設備用于接收計算機數據的輸出顯示、打印、聲音、控制外圍設備操作等。常見的輸出設備有顯示器、打印機等。
二、計算機軟件
計算機軟件由系統軟件和應用軟件組成。
1.系統軟件
系統軟件是指控制和協調計算機及外部設備,支持應用軟件開發和運行的系統,是無需用戶干預的各種程序的集合。主要功能是調度,監控和維護計算機系統;負責管理計算機系統中各種獨立的硬件,使得它們可以協調工作。
2.應用軟件
應用軟件是用戶可以使用的各種程序設計語言,以及用各種程序設計語言編制的應用程序的集合。主要為了解決某類問題而設計的程序。
Linux內核功能及作用
內核是用來管理和分配計算機資源的,是一個提供硬件抽象層、磁盤及文件系統控制、多任務等功能的系統軟件。它主要負責調度進程、管理內存、提供文件系統、驅動設備、聯網、提供一套統一的系統調用的接口等功能。
1.進程管理
內核負責創建和銷毀進程, 并處理它們與外部世界的聯系(輸入和輸出). 不同進程間通訊(通過信號, 管道, 或者進程間通訊原語)對整個系統功能來說是基本的, 也由內核處理. 另外, 調度器, 控制進程如何共享 CPU, 是進程管理的一部分. 更通常地, 內核的進程管理活動實現了多個進程在一個單個或者幾個 CPU 之上的抽象。
2.內存管理
計算機的內存是主要的資源, 處理它所用的策略對系統性能是至關重要的. 內核為所有進程的每一個都在有限的可用資源上建立了一個虛擬地址空間. 內核的不同部分與內存管理子系統通過一套函數調用交互, 從簡單的 malloc/free 對到更多更復雜的功能。
3.文件管理
內核在非結構化的硬件之上建立了一個結構化的文件系統, 結果是文件的抽象非常多地在整個系統中應用. 另外, Linux 支持多個文件系統類型, 就是說, 物理介質上不同的數據組織方式. 例如, 磁盤可被格式化成標準 Linux 的 ext3 文件系統, 普遍使用的 FAT 文件系統, 或者其他幾個文件系統。
4. 驅動管理
幾乎每個系統操作終都映射到一個物理設備上,除了處理器,內存和非常少的別的實體之外,全部中的任何設備控制操作都由特定于要尋址的設備相關的代碼來進行。這些代碼稱為設備驅動。內核中必須嵌入系統中出現的每個外設的驅動,從硬盤驅動到鍵盤和磁帶驅動器。
5.網絡管理
網絡必須由操作系統來管理,因為大部分網絡操作不是特定于某一個進程: 進入系統的報文是異步事件。報文在某一個進程接手之前必須被收集,識別,分發,系統負責在程序和網絡接口之間遞送數據報文,它必須根據程序的網絡活動來控制程序的執行。另外,所有的路由和地址解析問題都在內核中實現。
Linux常見的發行版的聯系和區別
聯系
1)都使用linux內核;
2)都需要遵循GNU的GPL協定;
3)版本格式基本一樣(主版本號.次版本號.發行號或修正號)。
區別
1.社區組織維護:以Debian為代表; 企業維護:以Redhat為代表。
2.不同發行版采用了不同的包管理器。Debian系使用DPKG包,包管理工具是apt。SUSE、Redhat使用RPM包,SUSE系的包管理工具是zypper,Redhat系的包管理工具是yum,Gentoo包管理工具是emerge,ArchLinux包管理工具是pacman。
常見的開源協議
1.GPL
GPL(Gun General Public License)的出發點是代碼的開源/免費使用和引用/修改/衍生代碼的開源/免費使用,但不允許修改后和衍生的代碼做為閉源的商業軟件發布和銷售。
1)確保軟件自始至終都以開放源代碼形式發布,保護開發成果不被竊取用作商業發售。
2)GPL 大致就是一個左側版權的體現。
3)無論軟件以何種形式發布,都必須同時附上源代碼。
4)開發或維護遵循 GPL 協議開發的軟件的公司或個人,可以對使用者收取一定的服務費用。
2.LGPL
LGPL(Lesser General Public License)是GPL的一個為主要為類庫使用設計的開源協議。允許商業軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業軟件的代碼。
如果修改LGPL協議的代碼或者衍生,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用LGPL協議。
3.MPL
MPL(The Mozilla Public License)是1998年初Netscape的 Mozilla小組為其開源軟件項目設計的軟件許可證。
1) MPL雖然要求對于經MPL許可證發布的源代碼的修改也要以MPL許可證的方式再許可出來,以保證其他人可以在MPL的條款下共享源代碼。
2)允許被許可人將經過MPL許可證獲得的源代碼同自己其他類型的代碼混合得到自己的軟件程序。
3)明確要求源代碼的提供者不能提供已經受專利保護的源代碼(除非他本人是專利權人,并書面向公眾免費許可這些源代碼),也不能在將這些源代碼以開放源代碼許可證形式許可后再去申請與這些源代碼有關的專利。
4.BSD
BSD(original BSD license、FreeBSD license、Original BSD license)開源協議是一個給于使用者很大自由的協議??梢宰杂?br> 的使用,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發布。
以BSD協議代碼為基礎做二次開發自己的產品時需要滿足三個條件:
1)如果再發布的產品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協議。
2)如果再發布的只是二進制類庫/軟件,則需要在類庫/軟件的文檔和版權聲明中包含原來代碼中的BSD協議。
- 不可以用開源代碼的作者/機構名字和原來產品的名字做市場推廣。
5.MIT
MIT(The MIT License)是作者只想保留版權,而無任何其他了限制。
6.Apache Licence
Apache Licence鼓勵代碼共享和尊重原作者的著作權,同樣允許代碼修改,再發布(作為開源或商業軟件)。
1)需要給此開源項目的用戶一份Apache Licence。
2)如果你修改了代碼,需要再被修改的文件中說明。
3)在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協議,商標,專利聲明和其他原來作者規定需要包含的說明。
4)如果再發布的產品中包含一個NOTICE文件,則在NOTICE文件中需要帶有Apache Licence。你可以在NOTICE中增加自己的許可,但不可以表現為對Apache Licence構成更改。
Linux的哲學思想
1.一切皆文件
幾乎把所有的資源系統抽象為文件形式:包括硬件設備,甚至通信接口等
2.由眾多功能單一的程序組成
一個程序只做一件事。組合小程序完成復雜任務。
3.盡量避免跟用戶交互
使用命令行接口執行效率高,易于以腳本的方式實現自動化任務
4.使用文本文件保存配置信息
linux所有的配置文件都存放在文本配置文件當中,無論什么配置修改都只需修改其配置文件即可,配置文件時文本形式的只需任意一款文本編輯器修改即可。
linux目錄結構以及目錄結構命名規定
依據FHS(Filesystem Hierachy Standard)
/bin:所有用戶可用的基本命令程序文件
/boot:引導加載器必須用到的各靜態文件:kernel,initramfs(initrd),grub等
/dev:存儲特殊文件或設備文件。設備有兩種類型:字符設備(線性設備)、塊設備(隨機設備)
/etc:系統程序的配置文件,只能為靜態
/home:普通用戶的家目錄的集中位置:一般每個普通用戶的家目錄默認為此目錄下與用戶名同名的子目錄
/lib:為系統啟動或根文件系統上的應用程序(/bin,/sbin等)提供共享庫,以及為內核提供模塊。libc.so.:動態鏈接的C庫;ld:運行時鏈接器/加載器;modules:用于存儲內核模塊的目錄
/lib64:64位系統特有的存放64位共享庫的路徑
/media:便攜式設備掛載點,CDROM,floppy等
/mnt:其他文件系統的臨時掛載點
/opt:附加應用程序的安全位置:可選路徑
/proc:基于內存的虛擬文件系統,用于為內核及進程存儲其相關信息;它們多為內核參數,例如net.ipv4.ip_forward,虛擬為net/ipv4/ip_forward,存儲于/proc/sys/,因此其完整路徑為/proc/sys/net/ipv4/ip_forward
/root:管理員的家目錄:可選
/sbin:供系統管理使用的工具程序
/srv:當前主機為服務提供的數據
/sys:sysfs虛擬文件系統提供了一種比proc更為理想的訪問內核數據的途徑;其主要作用在于為管理Lin設備提供一種統一模型的接口
/tmp:為那些會產生臨時文件的程序提供的用于存儲臨時文件的目錄:可供所有用戶執行寫入操作;有特殊權限
/usr:usr Hierachy ,全局共享的只讀數據路徑
/var:/var Hierarchy,存儲常發生變化的數據的目錄