虚拟设备驱动程序初步
windows95是一个运行在最高级特权,第0层级别的多线程操作系统.所有的应用程序都运行在最低级特权,第3层级别上.这样就限制了应用程序对系统的操作.它们不能使用cpu特权指令,不能直接访问i/o端口,等等.你对gdi32,kernal32与user32这三个大的系统组件一定很熟悉.你肯定会认为这样重要的代码段一定是在第0层级别下运行的.但是实际上,它们与其他的应用程序一样,是在第三层级别下运行的.这就是说它们并不比windows计算器,或者扫雷游戏有更多的权限.系统的控制实权掌握在虚拟级管理器(vmm) 与虚拟设备驱动程序(vxd)手中. 【程序编程相关:ASP 中英文显示 WeekdayNam】在本教程里,我假定读者对诸如虚8086模式,调页,gdt,ldt,idt之类的intel 80x86保护模式的操作比较熟悉.如果你不了解这些,那你要先在 http://developer.intel.com/design/pentium/manuals/阅读intel的文档.内容: 【推荐阅读:如何学好J2ME(转)】
这个局面是很难处理的,因为dos程序与windows程序有本质的不同.dos程序认为它们拥有系统的一切:键盘,cpu,内存,硬盘等等.dos程序不知道怎样与其他程序合作,而windows程序(从那时候起)是可靠的多任务合作系统.也就是每个windows程序都必须通过getmessage或peekmessage来与其他程序进行交流. 【扩展信息:ASP语法速查表】这一切都是由dos引起的.在window 3.x的时代,在市场上有很多成功的dos软件.windows 3.x必须同时运行普通的windows程序与dos程序,否则,它就会失去市场. 解决办法就是,在一个8086虚拟机上运行所有的dos程序,而在另一个叫做系统虚拟机的虚拟机上运行其他所有的windows程序.windows负责把cpu运算时间轮流的分给每个虚拟机.这样,在windows 3.x里.windows程序之间用的是合作多任务,而虚拟机之间用的是优先级多任务. 什么是一个虚拟机?一个虚拟机是被软件创建的一个假象.一个虚拟机与在它上面运行的程序交互,就像这个程序是在真正的机器上运行一样.这样,一个程序不知道也不关心自己是否是在虚拟机上运行.只要虚拟机准确的像一个真的机器一样响应程序,我们就可以把它当成一个真正的机器. 你可以把虚拟机这种实机器与软件之间的接口看作一种api.这种不寻常的api由中断,bios调用与i/o端口组成.如果windows能够以某种方法完美的模拟这个api,那么在虚拟机上运行的程序就会表现的与它们在实际器上运行时完全一样. 这就是为什么会出现vmm与vxd的原因.为了协调与监视虚拟机(vms),windows需要一个程序来分配任务.这个程序就是虚拟机管理器(vmm).虚拟机管理器
vmm是一个32位的保护模式程序.它的主要任务是建立与维护一个支持虚拟机的框架.例如,它要创建,运行与结束一个虚拟机.vmm是众多的系统vxd程序之一,它被放在你的系统目录下的vmm32.vxd文件中.vmm本身是一个vxd程序,但它被当作一个监视其他vxd程序的监视器.... 下一页