虚拟机cpu平台的基本执行环境研究

虚拟机cpu平台的基本执行环境研究

ID:20141439

大小:63.62 KB

页数:7页

时间:2018-10-08

虚拟机cpu平台的基本执行环境研究_第1页
虚拟机cpu平台的基本执行环境研究_第2页
虚拟机cpu平台的基本执行环境研究_第3页
虚拟机cpu平台的基本执行环境研究_第4页
虚拟机cpu平台的基本执行环境研究_第5页
资源描述:

《虚拟机cpu平台的基本执行环境研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、虚拟机CPU平台的基本执行环境研宄摘要:虚拟机是指通过软件方式模拟出具有完整计算机硬件系统功能的并运行在一个相对完全隔离环境中的完整计算机系统。虚拟机就像一台真正的计?机,它一样拥有自己的CPU、寄存器组、指令系统、输入输出以及堆栈等等。它和真实的计算机一样接受指令,执行指令并最终完成所规定的处理任务。虚拟机最重要的优点就是实现程序的跨平台性,即可以在不同的操作系统之间重复使用,这也是虚拟机被广泛应用的重要原因。本文对虚拟机CPU平台的基本执行环境进行了较深入的分析与研宄,分别阐述了CPU平台的基本执行环境,虚拟机的数据栈、计

2、算栈、参照栈的运行机制。关键词虚拟机执行环境运行机制中图分类号:TP312.2文献标识码:A文章编号:1674-098X(2015)04(a)-0000-00虚拟机技术在现代社会有着广泛的应用范围,基于虚拟机平台的软件具有很多优点,比如可移植性、高效性、简洁性和安全性等等。可移植性既是通过采用中间语言,使得一个程序能够在多个硬件平台或多个不同操作系统上能正常、准确的执行。高效性既是尽可以以牺牲本机代码的编译速度来调动执行引擎能够更加优化的使用底层机器的特性来提高程序的执行速度,确保软件开发具有更高的执行效率。简洁性既是指所采用

3、的中间代码通常比二进制代码具有更好的可读性和压缩性。这个特性能更好的支持动态下载代码并且非常适合一些内存紧缺的应用环境。安全性既是相对于二进制指令来说,中间代码具有更强的类型约束和语义配置操作,中间代码比二进制文件更能得到运行时系统的强制执行。深入研究虚拟机基本执行环境对于研发人员意义重大。1运行时系统与虚拟机计算机本身就是一个运行时系统,运行时系统是很多计算机程序赖以执行的一个环境。运行时系统提供了程序在执行时所需要的所有条件。比如运行时系统为程序分配内存、加载应用程序、执行程序中的指令、处理服务请求等等。运行时系统的种类可

4、以按不同的分类方式分为很多种。按执行程序指令的基本方式可以把运行时系统分为两大类。一类是以处理器本身的机器码为指令编写程序,另一类是用机器指令编写程序。以处理器本身的机器码为指令编写程序是指由计算机的操作系统和处理器构成运行时系统,操作系统负责总体筹划,而处理器用来执行程序的指令。也就是说操作系统定义了一套完整的规范,而由CPU来执行这套规范。虚拟机实际上是一整套规则,而不是单一用软件就能够简单实现的,虚拟机的实现完全是按照一套严谨的规范来定义的。虚拟机可以由任意一种程序设计语言来实现,它可以实现在任意一种硬件平台上,但前提必

5、须是遵守它的规范。只要是遵守同一套规范的运行时系统,你就可以不需要对它进行编译而直接能在其上运行各种指令代码,这和它是一套软件模拟系统还是一台真正的计算机没有关系。2虚拟机的栈实现2.1虚拟机数据栈的运行机制堆栈有很多优点,例如高效率的函数调用,清晰的递归调用,较小的上下文切换等。可以将虚拟机地址空间最顶部的那个内存段空间设置为堆栈段,用来支持以后所有的操作,所以建立一个堆栈是可行的。AVM虚拟机启动运行,进行系统初始化的设置,首先为堆栈类型的数据动态申请几段内存空间,这段空间是虚拟机最核心的数据结构,它是由代码区、数据栈、计

6、算栈、函数运行栈等组成的一个系统。在虚拟机中用来描述栈顶的一个元素是由计算栈和参照栈结合起来完成的,计算栈和参照栈主要实现计算功能,而数据栈则负责函数的局部变量和函数调用的运行环境。数据栈(data-Stk)是用来实现过程调用的上下文记录和切换,它的功能类似于活动记录,数据栈对任何一个过程的调用都一样,都是分配该数据栈的一个区域给该过程。每当有函数调用时,首先是压入一帧,其次当函数调用结束后,该帧出栈,最后恢复虚拟机的程序计数器。数据栈如果按区域划分可分为父过程运行环境保存区、本过程局部变量区以及传入实参区三个区域。AVM虚拟

7、机在运行时,会启动一个虚拟机实例,首先向宿主操作系统申请分配内存,然后用分配到的内存组成一个人工地址空间,这个空间用来提供给单个应用程序来使用。这段地址空间在内存中可被划分成堆栈段和代码段两个部分。首先,在虚拟机的初始化过程中,为数据段和进程代码段建立映射,然后将数据段和代码段的内容读入内存,这一工作是由虚拟机系统的过程加载处理函数负责的。此外,凡是未被赋初值的局部变量初始值都为零,这是因为虚拟机的初始化会将数据堆栈段清零。代码段分为只读数据和运行代码两个部分,在内存中,代码段的类型是只读的,所以代码段绝对不会被改写,任何企图

8、修改代码段的指令都将会引发严重的错误。程序在执行过程中除了有数据段和代码段的支持外,还要有动态环境的支持,堆栈就是其中重要的一个动态环境。在计算机领域中,数据堆栈是一种非常重要而且会被经常用到的抽象数据类型。堆栈有两个非常重要的操作,即是Push操作和Pop操作,也就是压入和

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。