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