架构之美阅读笔记05

第九章 JPC:一个纯javaX86 PC模拟程序

本章介绍了一个纯Java x86 pc模拟程序,在一个安全带java沙箱内启动LinuxWindows时速度仍然保持快到足以用于实际。这个任务的关键在于仿制物理x86 pc的设计。

纯虚拟化可以完全隔离阮籍服务的安全性和可靠性,但是也有问题,就是在一定程度上依赖硬件的支持来运行,因此也受到物理机的影响。目前对模拟程序的批评集中在它引起的速度损失上。BochsQWMU是模拟x86 pc最著名的例子,它们都可以准确的运行,它们都是本机码编写的,如果运行在新的底层架构就需要重新编译。但是在安全性上有一些问题。而在java虚拟机上建造一个虚拟程序,可以保证安全。Jpc完全是java编写的一个x86 pc模拟程序,它在java Applet沙箱内模拟了一个x86 PC的所有标准组件,只要不越出安全约束虚拟机就和硬件完全分离。

x86 pc在每个时期都向后兼容,所以直到今天都非常成功。因此最有用的模拟程序将是以x86 pc架构为目标的模拟程序。用软件模拟硬件是一个巨大的工程,在这之前,评估预期的成果这很重要。通过从现有的模拟程序获得这项工作是可行的信心,通过选择一个简单的pc架构作为最初的目标,我们把最初的范围降到一个可完成的级别。然后,我们需要评估二进制转换提高速度并确保达到一个实际可用的性能的可能性。如果JPC在应用了所有的编程技巧后的最优结果是以1%的速度运行,那么,这个项目是不值得做的。

现在的pc硬件已经优化和迭代了许多次以形成一个高效和普遍的计算平台。它也保留了设计来维持它向后兼容的功能。JPC的大部分设计是相对简单的系统分析,对这个模拟程序来说,把初始的系统映射到JPC也几乎是在硬件规范和Java类之间进行一一对应。

保护模式的到来带来了一个完整的存储器管理系统,同时在物理地址空间上又增加了一个复杂的层。在保护模式中,内存分页是可以激活的,这容许物理地址空间的4kb块进行重新排列。

第十章 元循环虚拟机的力量:Jikes RVM

在一个托管运行时环境中运行代码是当今开发人员的普遍选择,实际上大部分已开发代码都适合于托管运行时环境。本章接受JikesRVM的虚拟机,它采用java语言编写来运行java运行程序,这个架构的所有其他组件都是java编写的。与传统的编程语言不同,大多数现代的语言都能编译成架构中立的机器码。Java中,这成为java字节码。中立的机器码容许应用程序导出到任意运行时环境,所以java可以运行在任意java虚拟机上。

关于运行时环境相关的传言,因为运行时编译器必须快,所以它们必须简单;静态编译器中的无限分析必然意味着更好的性能;运行时分析使用许多资源;动态类加载抑制了性能;垃圾收集比显示内存管理更慢。

posted @ 2017-02-11 16:31  键盘已坏  阅读(126)  评论(0编辑  收藏  举报