深刻理解计算机系统【一】

  引用与查看了: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)
  二、代码尺寸小和解码效率会更高些
  三、堆栈虚拟机指令有隐含的操做数。

  --感悟

  确实,看了前面就有种很激动的感受,这就是“程序员”应该必须掌握的东西吧!为了之后能在强制加班时说声 “我有事”而加油吧~