引用與查看了:html
http://www.javashuo.com/article/p-kkxhtxmg-em.htmljava
https://blog.csdn.net/strliu/article/details/7906017程序員
這周開始看深刻理解計算機系統,也是計算機4大基礎書中最後一本我沒看過的了。架構
週日在辦公室裏聽着歌寫讀書筆記,也是別有一番滋味了。函數
劉大給了3個題目性能
1. 信息=位+上下文, 什麼是上下文? 工做中有哪些例子操作系統
2. RISC指令集和CISC指令集有什麼區別,它們的典型CPU有哪些? .net
3. 基於棧的"CPU"和基於寄存器的"CPU"有什麼區別。翻譯
一個個來吧,設計
系統全部信息都是由位組成的,區分位表示不一樣的含義,就是上下文,上下文就是程序的運行環境。英文叫context;
和語文中的上下文差很少,結合先後文,一句話有不一樣的意思吧。就像js和java中,有不一樣關鍵字?還看到個輪子哥解釋,說上下文就是方法形參??
--第二個問題
RISC指令集是精簡指令集計算機;CISC是複雜指令集計算機
他們區別是不一樣CPU的設計理念和方法。
CISC是用最少機器語言指令來完成所需的計算任務。這種架構會增長CPU結構的複雜和CPU工藝的要求,對編譯器開發有利。到今天只有Intel及其兼容CPU還在使用這種架構。
RISC的創造人發現,最常常使用的的80%指令,只佔處理器指令系統的20%,又是典型的82法則啊。
從硬件角度來看CISC處理的是不等長指令集,它必須對不等長指令進行分割,所以在執行單一指令的時候須要進行較多的處理工做。而RISC執行的是等長精簡指令集,CPU在執行指令的時候速度較快且性能穩定。
從軟件角度來看,CISC運行的則是咱們所熟識的DOS、Windows操做系統。並且它擁有65%以上的軟件廠商代理爲基於CISC體系結構的PC及其兼容機服務的,像赫赫有名的Microsoft就是其中大量的應用程序。而RISC在此方面卻顯得有些勢單力薄。雖然在RISC上也可運行DOS、Windows,可是須要一個翻譯過程,因此運行速度要慢許多。
--三
基於寄存器的虛擬機:
一、使用堆棧來分配激活記錄器
二、基於寄存器代碼免去了使用push和pop命令的麻煩,減小了每一個函數的指令總數。
三、代碼尺寸和解碼效率不如基於棧虛擬機,由於它包含操做數,因此指令大於基於堆棧的指令。可是基於寄存器產生更少的代碼,因此總的代碼數不會增長。
四、寄存器虛擬機必須從操做指令中解碼操做數,須要額外的解碼操做。
基於棧的虛擬機:
一、代碼必須使用這些指令來移動變量(即push和pop)
二、代碼尺寸小和解碼效率會更高些
三、堆棧虛擬機指令有隱含的操做數。
--感悟
確實,看了前面就有種很激動的感受,這就是「程序員」應該必須掌握的東西吧!爲了之後能在強制加班時說聲 「我有事」而加油吧~