程序員必須知道的電腦知識(shí)(2)
0段—領(lǐng)域知識(shí)菜鳥(niǎo)
對(duì)領(lǐng)域知識(shí)沒(méi)有多少認(rèn)知,通過(guò)搜索引擎找到一些該領(lǐng)域的軟件和硬件的介紹性文章,按照文章指示配置和使用軟件。勉強(qiáng)能夠使用現(xiàn)有軟硬件。
1段—領(lǐng)域知識(shí)行家
了解領(lǐng)域內(nèi)常用硬件,深入掌握領(lǐng)域內(nèi)常用軟件的配置和使用技巧。能夠使用現(xiàn)有軟硬件熟練搭建解決方案,能夠解決實(shí)際工作中遇到的種種問(wèn)題。
2段—領(lǐng)域知識(shí)專家
當(dāng)你不僅僅掌握了該領(lǐng)域的軟件和工具,知道怎么用,還知道其原理,“知其然,也知其所以然”,就是該領(lǐng)域的知識(shí)專家了。
你知道網(wǎng)絡(luò)協(xié)議的原理,你才能在網(wǎng)絡(luò)出現(xiàn)問(wèn)題時(shí)知道是哪里可能出現(xiàn)了問(wèn)題。是mac沖突,ip沖突,還是網(wǎng)絡(luò)環(huán)路?
你知道存儲(chǔ)的原理,你才能知道為什么這種存儲(chǔ)方式不適合虛擬化,那種存儲(chǔ)方式適合虛擬化,另一種方式適合資料備份。
你知道PCI協(xié)議,你才能知道你怎樣才能虛擬化一個(gè)硬件設(shè)備。
你知道網(wǎng)卡硬件協(xié)議,你才能模擬出一個(gè)虛擬機(jī)能正常使用的虛擬網(wǎng)卡。
你知道視頻編碼格式和原理,才能知道什么視頻格式占用帶寬最少,什么視頻格式占用CPU最少。
你了解IntelVT/Amd V指令集,才能知道虛擬化是怎樣實(shí)現(xiàn)的。
你明白工作流其實(shí)就是狀態(tài)機(jī),在遇到復(fù)雜工作流程時(shí),你才能知道怎樣設(shè)計(jì)滿足要求的工作流引擎。
3段—科學(xué)家
你是領(lǐng)域知識(shí)專家,但你的知識(shí)都是來(lái)自于書(shū)本,來(lái)自于其他人的。
如果你滿足于當(dāng)領(lǐng)域知識(shí)專家,你只能拾人牙慧,永遠(yuǎn)別想超越。別人的研究成果,未必愿意告訴你。當(dāng)別人告訴你的時(shí)候,它可能已經(jīng)發(fā)現(xiàn)了更新的理論,并且新一代產(chǎn)品可能馬上就要發(fā)布了。
科學(xué)家是探索未知,勇于創(chuàng)新的人,是推動(dòng)人類社會(huì)進(jìn)步的人。
傳說(shuō),思科的一位高管曾經(jīng)半開(kāi)玩笑地說(shuō)過(guò):“如果思科停止了新技術(shù)的研發(fā),華為就會(huì)找不著方向”。這是在嘲笑華為只是處在領(lǐng)域知識(shí)專家的水平,只能山寨無(wú)法超越。我不知道華為的實(shí)際情況,但希望現(xiàn)在的華為已經(jīng)走到了領(lǐng)跑者的位置。
歐文·雅各布斯發(fā)現(xiàn)了CDMA碼分多址的原理,并發(fā)現(xiàn)它在通訊上大有可為,組建了高通公司。高通公司主要以專利授權(quán)費(fèi)為生,它雇傭了大量科學(xué)家在通訊領(lǐng)域展開(kāi)研究。有人說(shuō)高通是專利流氓。這些人不明白知識(shí)的價(jià)值。在他們眼里,Windows的合理價(jià)格就應(yīng)該是5元錢,一張光盤的價(jià)格。iPhone就應(yīng)該是1000多元裸機(jī)的價(jià)格。高通是專利流氓,那你也流氓一個(gè)CDMA,LTE出來(lái)給我看看!
X86芯片在設(shè)計(jì)上沒(méi)有考慮虛擬化。因此會(huì)有所謂的“虛擬化漏洞”出現(xiàn)。就是說(shuō),一些CPU特權(quán)指令執(zhí)行時(shí),在虛擬機(jī)環(huán)境下不會(huì)拋出異常,因此就無(wú)法切換到Host。這樣,X86芯片上就無(wú)法運(yùn)行虛擬機(jī)。
VmWare公司是由美國(guó)的幾位科學(xué)家在1998年創(chuàng)建的。他們發(fā)現(xiàn)可以使用二進(jìn)制翻譯的技術(shù),在X86計(jì)算機(jī)上運(yùn)行虛擬機(jī)。
Xen虛擬化軟件也是幾位科學(xué)家發(fā)明的。他們發(fā)現(xiàn)只要修改虛擬機(jī)操作系統(tǒng)和Host操作系統(tǒng)的內(nèi)核,在需要執(zhí)行“虛擬化漏洞”指令時(shí)直接調(diào)用Host的功能,就可以實(shí)現(xiàn)虛擬化,而且大大提高了虛擬機(jī)的運(yùn)行性能。
后來(lái),Intel為自己的芯片添加了IntelVT指令集,Amd為自己的芯片添加了AmdV指令集,彌補(bǔ)了“虛擬化漏洞”。于是就有了KVM虛擬機(jī)軟件,它直接用CPU硬件指令實(shí)現(xiàn)虛擬化。
KVM在執(zhí)行CPU指令時(shí),是直接在物理CPU上運(yùn)行的,因此效率極高。但是,虛擬機(jī)運(yùn)行虛擬外設(shè)時(shí),就必須用軟件模擬,因此虛擬機(jī)的IO訪問(wèn)速度很慢。
IBM科學(xué)家RustyRussell,借鑒了Xen的研發(fā)經(jīng)驗(yàn),創(chuàng)建了VirtIO技術(shù)。就是在虛擬機(jī)中編寫(xiě)一套PCI虛擬設(shè)備和驅(qū)動(dòng),這套虛擬PCI設(shè)備有一塊虛擬設(shè)備內(nèi)存。這個(gè)虛擬設(shè)備內(nèi)存Host是可以訪問(wèn)的,虛擬機(jī)通過(guò)VirtIO驅(qū)動(dòng)程序也可以訪問(wèn)。也就是一塊內(nèi)存在虛擬機(jī)和Host中共享,這就解決了虛擬機(jī)的IO性能問(wèn)題。