虚拟机指令集架构
所谓指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合。因为指令集表示了一个给定的CPU能做哪些工作,所以在设计一个机器时考虑需要提供什么样的指令是非常重要的步骤。实际上总会有一些基本指令,所有的处理器、虚拟机或运行时环境都会提供,比如算术运算、逻辑运算、位操作、比较运算、跳转等。CPU的指令集从主流的体系结构上分为精简指令集RISC和复杂指令集CISC,CISC指令系统庞大,指令功能复杂,指令格式、寻址方式多;而RISC指令数量少,大部分为单周期指令,操作寄存器,只有Load/Store操作内存。
在设计指令集时,除了考虑RISC和CISC之外,还需要考虑指令集的正交性。如果一个指令集是均匀平衡的,就可以认为它是正交的。正交性可以扩展某些指令的功能,使之与逻辑上同组的其他指令相对,比如加法指令和减法指令。
一个基本的指令集可分为算术运算类指令、逻辑运算类指令、数据传送指令、程序控制指令、串操作指令、浮点运算指令和数据转换指令等。在myvm的指令集中,已经初步分析处算术运算类指令、逻辑运算类指令和程序转移指令,并且发现它们是成组出现的。继续分析时发现判断不出来指令,感觉对数据传送指令和串操作指令不熟悉,之后会对这些类别的指令的执行过程和原理进行了解。
深入理解计算机系统
继续阅读《深入理解计算机系统》第1章,主要了解存储器的层次结构和操作系统的相关内容。
存储器的层次结构
1.层次化结构:CPU–寄存器–Cache–主存–辅存
存储器层次结构的主要思想是上一层的存储器作为低一层存储器的高速缓存。
2.分类方式
按存取方式分:随机存储器(在程序的执行过程中可读可写)、只读存储器(在程序的执行过程中只读)、串行访问存储器(如磁带是顺序访问存储器,硬盘是直接访问存储器)
按层次划分:主存储器即内存、辅存储器即硬盘等、高速缓存Cache
按信息可保护性分:断电易失如RAM、断电不丢失如ROM、破坏性读如DRAM、非破坏性读如SRAM
3.性能指标
实际容量=存储单元个数 单元长度;理论容量=存储字数 存储字长
存取时间=取出结果时间-启动存储器时间
存取周期=存取时间+存储器状态恢复时间=连续读或写的最小时间间隔,显然存取周期>=存取时间
主存带宽=传输速率=每秒能传输多少bit
操作系统
1.操作系统是什么?
操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,提供了各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口。实际上,用户是不用接触操作系统的,操作系统管理着计算机硬件资源,同时按着应用程序的资源请求,为其分配资源,如:划分CPU时间,内存空间的开辟,调用打印机等。
2.操作系统中有几个基本的抽象概念
(1)进程是操作系统对一个正在运行的程序的抽象。操作系统会记录每一个进程的状态,这些状态就称作进程的上下文。这些状态主要包括了PC,寄存器以及主存的当前内容。当操作系统在进程间切换的时候,也会切换相应的上下文,从而保证进程恢复到之前的状态。
在进程当中,又被计算机界的大神们引入了线程的概念,这些线程可以共享进程级的代码与数据,这种共享一般比进程间的共享更加高效。
(2)虚拟存储器是一种抽象描述,从物理上讲,它包含了I/O设备以及主存。在逻辑上讲,虚拟存储器被描述为虚拟地址空间。下图为进程的虚拟地址空间表示。
这里的地址自下向上依次增大,可以看出,图中标注了起始地址,分别为0x08048000(32位)以及0x00400000(64位),然后向上分别是只读代码和数据、读写数据、运行时堆、共享库的内存映射区间、用户栈以及内核虚拟内存区域。
(3)文件是I/O设备逻辑上的概念,它其实就是字节序列,也就是1和0组成的一些信息。因此所有的I/O设备,包括磁盘、键盘、鼠标、显示器都可以看成是文件。
所有的I/O设备其实都是文件这一抽象概念的具体表现,那么网络其实也是文件的一种,因为说到底,它也可以被看做是一系列的字节序列。网络适配器的作用就是给计算机输入一堆被传送过来的字节序列,这里面可能包括图片、文字,甚至可能是代码等等。
3.操作系统的特征
(1)并发:操作系统的并发性是指计算机系统中同时存在多个运行着的程序,因此它具有处理和调度多个程序同时执行的能力。
(2)共享:资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
(3)虛拟:在操作系统中利用了多种虚拟技术,分别用来实现虚拟处理器、虚拟内存和虚拟外部设备等。
(4)异步:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。