的那些常用软件,运行于艹作系统的上层应用层,最多只涉及一些系统调用编程,完全不用考虑底层的细节。
而底层系统开发,则需要深入了解艹作系统的底层运行原理,需要知道硬件的具体结构,用软件的方式去艹作硬件。
吴东花了一天的时间在图书馆寻找答案,最终给出的回答是后者。
于是,林鸿便给了他一个项目做,让他用软件的实现一个简单的虚拟机,模拟8086这一16位的CPU功能。
这个虚拟机软件,运行于艹作系统的应用层,但是它却模拟一个基于x86的标准PC环境。这个环境和普通的计算机一样,都有芯片组、CPU、内存、显卡、声卡、网卡、硬盘、光驱、USB控制器、SCSI控制器等等设备,提供这个应用程序的“窗口”就是虚拟机的显示器。
在这个虚拟机中,可以进行系统的安装,例如直接将windows或者LINUX系统安装到里面,艹作系统一样正常运行,它们会以为自己运行在真实的硬件上面。
当然,这是一个非常复杂的东西,要想将这些功能全部实现出来,凭吴东一人之力,根本不可能完成。
林鸿只是让他实现对8086CPU的模拟,以及简单的几个指令集而已。
例如,将CPU模拟出来之后,实现简单的ADD指令,在里面实现整数的相加。
要想实现这个虚拟机,就必须要对计算机组成和原理非常了解,尤其是CPU的具体结构,例如CPU由哪些寄存器组成,这些寄存器分别充当什么作用,数据是如何在这些寄存器中流动……等等等等。
这个过程一般人还真不知道如何去做。
不过没关系,林鸿已经将要学习的知识,以及如何编写这个虚拟机的步骤全部写成了一个清单,吴东只要按照这个清单去学习就行了。
吴东肯花心思钻研