計(jì)算機(jī)的組成及其功能
計(jì)算機(jī)是一種能接收和存儲(chǔ)信息摇零,并按照存儲(chǔ)在其 內(nèi)部的程序?qū)A繑?shù)據(jù)進(jìn)行自動(dòng)、高速地處理桶蝎,然后把處理結(jié)果輸出的現(xiàn)代化 智能電子設(shè)備 遂黍。
計(jì)算機(jī)組成.jpg
一终佛、計(jì)算機(jī)硬件
1946年馮·諾依曼提出馮·諾依曼體系結(jié)構(gòu),計(jì)算機(jī)硬件由運(yùn)算器雾家、 控制器铃彰、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備五大部分組成芯咧。
1.運(yùn)算器
運(yùn)算器由算術(shù)邏輯單元(ALU)牙捉、累加器、狀態(tài)寄存器敬飒、通用寄存器組等組成邪铲。是對(duì)數(shù)據(jù)進(jìn)行各種算術(shù)運(yùn)算和邏輯運(yùn)算。算術(shù)運(yùn)算為加无拗、減带到、乘、除及其復(fù)合運(yùn)算英染。邏輯運(yùn)算為與揽惹、或、非等邏輯運(yùn)算以及數(shù)據(jù)的比較和移位等操作四康。
2.控制器
控制器(Control Unit)搪搏,是整個(gè)計(jì)算機(jī)系統(tǒng)的中樞神經(jīng),通常與運(yùn)算器合稱為中央處理器(CPU)闪金。它從存儲(chǔ)器中逐條取出指令疯溺,分析每條指令規(guī)定的是什么操作以及所需數(shù)據(jù)的存放位置等,然后根據(jù)分析的結(jié)果向計(jì)算機(jī)其它部件發(fā)出控制信號(hào)哎垦,統(tǒng)一指揮整個(gè)計(jì)算機(jī)完成指令所規(guī)定的操作囱嫩。
3.存儲(chǔ)器
存儲(chǔ)器用來(lái)存放程序和數(shù)據(jù)等信息。按用途存儲(chǔ)器可分為主存儲(chǔ)器(內(nèi)存)和輔助存儲(chǔ)器(外存)漏设。內(nèi)存用來(lái)存放當(dāng)前正在執(zhí)行的數(shù)據(jù)和程序挠说,如果斷電數(shù)據(jù)就會(huì)丟失。外存作為內(nèi)存的延伸愿题,通常以硬盤(pán)等形式存在损俭,能長(zhǎng)期保存信息。
4.輸入設(shè)備
輸入設(shè)備用來(lái)向計(jì)算機(jī)輸入數(shù)據(jù)和信息的設(shè)備潘酗。常見(jiàn)的輸入設(shè)備有鍵盤(pán)杆兵、鼠標(biāo)等。
5.輸出設(shè)備
輸出設(shè)備用于接收計(jì)算機(jī)數(shù)據(jù)的輸出顯示仔夺、打印琐脏、聲音、控制外圍設(shè)備操作等。常見(jiàn)的輸出設(shè)備有顯示器日裙、打印機(jī)等吹艇。
二、計(jì)算機(jī)軟件
計(jì)算機(jī)軟件由系統(tǒng)軟件和應(yīng)用軟件組成昂拂。
1.系統(tǒng)軟件
系統(tǒng)軟件是指控制和協(xié)調(diào)計(jì)算機(jī)及外部設(shè)備受神,支持應(yīng)用軟件開(kāi)發(fā)和運(yùn)行的系統(tǒng),是無(wú)需用戶干預(yù)的各種程序的集合格侯。主要功能是調(diào)度鼻听,監(jiān)控和維護(hù)計(jì)算機(jī)系統(tǒng);負(fù)責(zé)管理計(jì)算機(jī)系統(tǒng)中各種獨(dú)立的硬件联四,使得它們可以協(xié)調(diào)工作撑碴。
2.應(yīng)用軟件
應(yīng)用軟件是用戶可以使用的各種程序設(shè)計(jì)語(yǔ)言,以及用各種程序設(shè)計(jì)語(yǔ)言編制的應(yīng)用程序的集合朝墩。主要為了解決某類問(wèn)題而設(shè)計(jì)的程序醉拓。
Linux內(nèi)核功能及作用
內(nèi)核是用來(lái)管理和分配計(jì)算機(jī)資源的,是一個(gè)提供硬件抽象層收苏、磁盤(pán)及文件系統(tǒng)控制亿卤、多任務(wù)等功能的系統(tǒng)軟件。它主要負(fù)責(zé)調(diào)度進(jìn)程倒戏、管理內(nèi)存怠噪、提供文件系統(tǒng)恐似、驅(qū)動(dòng)設(shè)備杜跷、聯(lián)網(wǎng)、提供一套統(tǒng)一的系統(tǒng)調(diào)用的接口等功能矫夷。
1.進(jìn)程管理
內(nèi)核負(fù)責(zé)創(chuàng)建和銷毀進(jìn)程, 并處理它們與外部世界的聯(lián)系(輸入和輸出). 不同進(jìn)程間通訊(通過(guò)信號(hào), 管道, 或者進(jìn)程間通訊原語(yǔ))對(duì)整個(gè)系統(tǒng)功能來(lái)說(shuō)是基本的, 也由內(nèi)核處理. 另外, 調(diào)度器, 控制進(jìn)程如何共享 CPU, 是進(jìn)程管理的一部分. 更通常地, 內(nèi)核的進(jìn)程管理活動(dòng)實(shí)現(xiàn)了多個(gè)進(jìn)程在一個(gè)單個(gè)或者幾個(gè) CPU 之上的抽象葛闷。
2.內(nèi)存管理
計(jì)算機(jī)的內(nèi)存是主要的資源, 處理它所用的策略對(duì)系統(tǒng)性能是至關(guān)重要的. 內(nèi)核為所有進(jìn)程的每一個(gè)都在有限的可用資源上建立了一個(gè)虛擬地址空間. 內(nèi)核的不同部分與內(nèi)存管理子系統(tǒng)通過(guò)一套函數(shù)調(diào)用交互, 從簡(jiǎn)單的 malloc/free 對(duì)到更多更復(fù)雜的功能。
3.文件管理
內(nèi)核在非結(jié)構(gòu)化的硬件之上建立了一個(gè)結(jié)構(gòu)化的文件系統(tǒng), 結(jié)果是文件的抽象非常多地在整個(gè)系統(tǒng)中應(yīng)用. 另外, Linux 支持多個(gè)文件系統(tǒng)類型, 就是說(shuō), 物理介質(zhì)上不同的數(shù)據(jù)組織方式. 例如, 磁盤(pán)可被格式化成標(biāo)準(zhǔn) Linux 的 ext3 文件系統(tǒng), 普遍使用的 FAT 文件系統(tǒng), 或者其他幾個(gè)文件系統(tǒng)双藕。
4. 驅(qū)動(dòng)管理
幾乎每個(gè)系統(tǒng)操作終都映射到一個(gè)物理設(shè)備上淑趾,除了處理器,內(nèi)存和非常少的別的實(shí)體之外忧陪,全部中的任何設(shè)備控制操作都由特定于要尋址的設(shè)備相關(guān)的代碼來(lái)進(jìn)行扣泊。這些代碼稱為設(shè)備驅(qū)動(dòng)。內(nèi)核中必須嵌入系統(tǒng)中出現(xiàn)的每個(gè)外設(shè)的驅(qū)動(dòng)嘶摊,從硬盤(pán)驅(qū)動(dòng)到鍵盤(pán)和磁帶驅(qū)動(dòng)器延蟹。
5.網(wǎng)絡(luò)管理
網(wǎng)絡(luò)必須由操作系統(tǒng)來(lái)管理,因?yàn)榇蟛糠志W(wǎng)絡(luò)操作不是特定于某一個(gè)進(jìn)程: 進(jìn)入系統(tǒng)的報(bào)文是異步事件叶堆。報(bào)文在某一個(gè)進(jìn)程接手之前必須被收集阱飘,識(shí)別,分發(fā),系統(tǒng)負(fù)責(zé)在程序和網(wǎng)絡(luò)接口之間遞送數(shù)據(jù)報(bào)文沥匈,它必須根據(jù)程序的網(wǎng)絡(luò)活動(dòng)來(lái)控制程序的執(zhí)行蔗喂。另外,所有的路由和地址解析問(wèn)題都在內(nèi)核中實(shí)現(xiàn)高帖。
Linux常見(jiàn)的發(fā)行版的聯(lián)系和區(qū)別
聯(lián)系
1)都使用linux內(nèi)核缰儿;
2)都需要遵循GNU的GPL協(xié)定;
3)版本格式基本一樣(主版本號(hào).次版本號(hào).發(fā)行號(hào)或修正號(hào))棋恼。
區(qū)別
1.社區(qū)組織維護(hù):以Debian為代表; 企業(yè)維護(hù):以Redhat為代表返弹。
2.不同發(fā)行版采用了不同的包管理器。Debian系使用DPKG包爪飘,包管理工具是apt义起。SUSE、Redhat使用RPM包师崎,SUSE系的包管理工具是zypper默终,Redhat系的包管理工具是yum,Gentoo包管理工具是emerge,ArchLinux包管理工具是pacman。
常見(jiàn)的開(kāi)源協(xié)議
1.GPL
GPL(Gun General Public License)的出發(fā)點(diǎn)是代碼的開(kāi)源/免費(fèi)使用和引用/修改/衍生代碼的開(kāi)源/免費(fèi)使用,但不允許修改后和衍生的代碼做為閉源的商業(yè)軟件發(fā)布和銷售犁罩。
1)確保軟件自始至終都以開(kāi)放源代碼形式發(fā)布齐蔽,保護(hù)開(kāi)發(fā)成果不被竊取用作商業(yè)發(fā)售。
2)GPL 大致就是一個(gè)左側(cè)版權(quán)的體現(xiàn)床估。
3)無(wú)論軟件以何種形式發(fā)布含滴,都必須同時(shí)附上源代碼。
4)開(kāi)發(fā)或維護(hù)遵循 GPL 協(xié)議開(kāi)發(fā)的軟件的公司或個(gè)人丐巫,可以對(duì)使用者收取一定的服務(wù)費(fèi)用谈况。
2.LGPL
LGPL(Lesser General Public License)是GPL的一個(gè)為主要為類庫(kù)使用設(shè)計(jì)的開(kāi)源協(xié)議。允許商業(yè)軟件通過(guò)類庫(kù)引用(link)方式使用LGPL類庫(kù)而不需要開(kāi)源商業(yè)軟件的代碼递胧。
如果修改LGPL協(xié)議的代碼或者衍生碑韵,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用LGPL協(xié)議缎脾。
3.MPL
MPL(The Mozilla Public License)是1998年初Netscape的 Mozilla小組為其開(kāi)源軟件項(xiàng)目設(shè)計(jì)的軟件許可證祝闻。
1) MPL雖然要求對(duì)于經(jīng)MPL許可證發(fā)布的源代碼的修改也要以MPL許可證的方式再許可出來(lái),以保證其他人可以在MPL的條款下共享源代碼遗菠。
2)允許被許可人將經(jīng)過(guò)MPL許可證獲得的源代碼同自己其他類型的代碼混合得到自己的軟件程序联喘。
3)明確要求源代碼的提供者不能提供已經(jīng)受專利保護(hù)的源代碼(除非他本人是專利權(quán)人,并書(shū)面向公眾免費(fèi)許可這些源代碼)辙纬,也不能在將這些源代碼以開(kāi)放源代碼許可證形式許可后再去申請(qǐng)與這些源代碼有關(guān)的專利豁遭。
4.BSD
BSD(original BSD license、FreeBSD license牲平、Original BSD license)開(kāi)源協(xié)議是一個(gè)給于使用者很大自由的協(xié)議堤框。可以自由
的使用,修改源代碼蜈抓,也可以將修改后的代碼作為開(kāi)源或者專有軟件再發(fā)布启绰。
以BSD協(xié)議代碼為基礎(chǔ)做二次開(kāi)發(fā)自己的產(chǎn)品時(shí)需要滿足三個(gè)條件:
1)如果再發(fā)布的產(chǎn)品中包含源代碼,則在源代碼中必須帶有原來(lái)代碼中的BSD協(xié)議沟使。
2)如果再發(fā)布的只是二進(jìn)制類庫(kù)/軟件委可,則需要在類庫(kù)/軟件的文檔和版權(quán)聲明中包含原來(lái)代碼中的BSD協(xié)議。
- 不可以用開(kāi)源代碼的作者/機(jī)構(gòu)名字和原來(lái)產(chǎn)品的名字做市場(chǎng)推廣腊嗡。
5.MIT
MIT(The MIT License)是作者只想保留版權(quán)着倾,而無(wú)任何其他了限制。
6.Apache Licence
Apache Licence鼓勵(lì)代碼共享和尊重原作者的著作權(quán)燕少,同樣允許代碼修改卡者,再發(fā)布(作為開(kāi)源或商業(yè)軟件)。
1)需要給此開(kāi)源項(xiàng)目的用戶一份Apache Licence客们。
2)如果你修改了代碼崇决,需要再被修改的文件中說(shuō)明。
3)在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來(lái)代碼中的協(xié)議底挫,商標(biāo)恒傻,專利聲明和其他原來(lái)作者規(guī)定需要包含的說(shuō)明。
4)如果再發(fā)布的產(chǎn)品中包含一個(gè)NOTICE文件建邓,則在NOTICE文件中需要帶有Apache Licence盈厘。你可以在NOTICE中增加自己的許可,但不可以表現(xiàn)為對(duì)Apache Licence構(gòu)成更改官边。
Linux的哲學(xué)思想
1.一切皆文件
幾乎把所有的資源系統(tǒng)抽象為文件形式:包括硬件設(shè)備沸手,甚至通信接口等
2.由眾多功能單一的程序組成
一個(gè)程序只做一件事。組合小程序完成復(fù)雜任務(wù)拒逮。
3.盡量避免跟用戶交互
使用命令行接口執(zhí)行效率高罐氨,易于以腳本的方式實(shí)現(xiàn)自動(dòng)化任務(wù)
4.使用文本文件保存配置信息
linux所有的配置文件都存放在文本配置文件當(dāng)中臀规,無(wú)論什么配置修改都只需修改其配置文件即可滩援,配置文件時(shí)文本形式的只需任意一款文本編輯器修改即可。
linux目錄結(jié)構(gòu)以及目錄結(jié)構(gòu)命名規(guī)定
依據(jù)FHS(Filesystem Hierachy Standard)
/bin:所有用戶可用的基本命令程序文件
/boot:引導(dǎo)加載器必須用到的各靜態(tài)文件:kernel,initramfs(initrd),grub等
/dev:存儲(chǔ)特殊文件或設(shè)備文件塔嬉。設(shè)備有兩種類型:字符設(shè)備(線性設(shè)備)玩徊、塊設(shè)備(隨機(jī)設(shè)備)
/etc:系統(tǒng)程序的配置文件,只能為靜態(tài)
/home:普通用戶的家目錄的集中位置:一般每個(gè)普通用戶的家目錄默認(rèn)為此目錄下與用戶名同名的子目錄
/lib:為系統(tǒng)啟動(dòng)或根文件系統(tǒng)上的應(yīng)用程序(/bin,/sbin等)提供共享庫(kù)谨究,以及為內(nèi)核提供模塊恩袱。libc.so.:動(dòng)態(tài)鏈接的C庫(kù);ld:運(yùn)行時(shí)鏈接器/加載器胶哲;modules:用于存儲(chǔ)內(nèi)核模塊的目錄
/lib64:64位系統(tǒng)特有的存放64位共享庫(kù)的路徑
/media:便攜式設(shè)備掛載點(diǎn)畔塔,CDROM,floppy等
/mnt:其他文件系統(tǒng)的臨時(shí)掛載點(diǎn)
/opt:附加應(yīng)用程序的安全位置:可選路徑
/proc:基于內(nèi)存的虛擬文件系統(tǒng),用于為內(nèi)核及進(jìn)程存儲(chǔ)其相關(guān)信息;它們多為內(nèi)核參數(shù)澈吨,例如net.ipv4.ip_forward,虛擬為net/ipv4/ip_forward,存儲(chǔ)于/proc/sys/,因此其完整路徑為/proc/sys/net/ipv4/ip_forward
/root:管理員的家目錄:可選
/sbin:供系統(tǒng)管理使用的工具程序
/srv:當(dāng)前主機(jī)為服務(wù)提供的數(shù)據(jù)
/sys:sysfs虛擬文件系統(tǒng)提供了一種比proc更為理想的訪問(wèn)內(nèi)核數(shù)據(jù)的途徑把敢;其主要作用在于為管理Lin設(shè)備提供一種統(tǒng)一模型的接口
/tmp:為那些會(huì)產(chǎn)生臨時(shí)文件的程序提供的用于存儲(chǔ)臨時(shí)文件的目錄:可供所有用戶執(zhí)行寫(xiě)入操作;有特殊權(quán)限
/usr:usr Hierachy ,全局共享的只讀數(shù)據(jù)路徑
/var:/var Hierarchy,存儲(chǔ)常發(fā)生變化的數(shù)據(jù)的目錄