许毅见还有几个人(没有参加虚拟机编写计划的)对这个并不了解于是便耐着性子给他们讲解起来……
虚拟机顾名思义虚拟的机器。其核心思想是用软件来模拟硬件。它作为原操作系统下的一个应用程序可以为运行于其上的目标操作系统创建出一部虚拟的机器目标操作系统就像是运行在单独的一台真正的机器上一样丝毫察觉不到自己处于虚拟机的控制之下。在一个成熟的虚拟机中完全可以模拟整个计算机开机、启动、运行、关机等过程。按下电源键(poeron)窗口中也会出现机器自检的画面接着是操作系统的载入一切都和真实的一模一样甚至还有专门的一套BIos来处理各种I/o中断。而实际上他们只不过运行在一个虚拟的平台上而已表现在真实的操作系统中它只是系统中的系统只要硬件配置足够高这样的系统可以运行很多个就像应用程序那样多线程互不影响互不妨碍。在虚拟机中运行的应用程序认为自己独占整个机器它们相信自己是从真正的键盘和鼠标获得输入并从真正的屏幕上输出它们甚至认为自己完全拥有bsp;例如虚拟机中操作系统的硬盘是最外层操作系统中的表现通常是一个文件这个文件是模拟硬盘虚拟机中的操作系统要进行文件的读取的保存操作实际上只是在这个文件中进行——在这个文件中格式化、分区、建立和删除文件等。
因为这个平台是软件的是能够通过程序员编程而控制的所以在虚拟机中无论是操作系统的运行还是应用程序的执行所有过程都是可跟踪和可观察的。程序员可以随时观察虚拟的cpu各个寄存器的状况和跟踪内存中数据地交换——这是一个多么奇妙的功能!编写操作系统的时候最令程序员头疼的就是各种各样千奇百怪不可预期的Bug一不小心就会导致cpu挂死(死机)。而这个时候根本没有任何有效的手段来得知那个时候cpu中的状态到底是怎么样的为什么会生这种情况?所有的这些仅仅通过程序员来推测、来估计几乎是不可能的。所以虚拟机往往被用来编写操作系统。
许毅最开始动心思编写虚拟机就是因为这个原因。后来由于实在是太过复杂转而去编写了一个比较简单的。这也就是“生死斗”平台的前身。
“啊原来还有这样的好东西!”一个刚刚加入团队学习的新人惊叹道“那样的话我们岂不是只要将病毒程序创建一个虚拟的执行环境提供它可能用到的一切元素包括硬盘端口等让它在上面自由挥……而我们则慢慢跟踪最后根据它的结果来判定其运行机制就可以了?”
《基因大时代》
好几个人深以为然地点了点头。当然这些人都是没有参加过虚拟机开的。
小黑听完之后苦笑道:“理论上是行得通的不过实际操作起来就没有那么容易了。”
许毅说道:“小黑说得不错一个完整的虚拟机的开是一个非常庞大的工程并不是说想开就能开出来的。在里面需要模拟的元素太多了单单只是做虚拟机就已经非常困难了再加上一些其他判断其行为分析甚至还要借助于人工智能理论。”
“那……你们编写的那个不是虚拟机吗?”好问的新人再次问道。
“当然是虚拟机!”小黑反驳道之后他又说道“不过不是你认为的虚拟机罢了。严格说来叫它为虚拟cpu更为准确一点或者说是通用解密器不过大家都习惯称之为虚拟机。”这个项目是许毅一手策划的其中很多东西都进行了简化要不然现在肯定还完成不了。