中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > ASM汇编
iczelionVxdtut2
作者:jimgreen 时间:2001-12-09 11:28 出处:互联网 责编:chinaitpower
              摘要:iczelionVxdtut2

 

Virtual Machine Manager

Virtual Machine Manager (VMM) is the true operating system behind Windows 95. It erects and maintains the framework for managing virtual machines. It also provides many important services to other VxDs. The three important services are:
  • Memory management
  • Interrupt handling
  • Thread scheduling

Memory Management

VMM uses paging capability of Intel 80386 and later processors to create a 32-bit virtual address space for the system VM. It divides the address space into four distinct areas.
  • V86 region extending from address 0h to 10FFEFh. This region belongs to the currently executing virtual machine.
  • Private application region extending from the address 4MB to 2GB. This is the area where win32 applications run. Each win32 process will have its own private 2GB (minus 4 MB).
  • Shared application region extending from address 2 GB to 3 GB. This area is shared to ALL applications in the system VM. This region is where the system DLLs (user32, kernel32, and gdi32) reside. All Win16 apps run here as well because they are ill-behaved: they are used to reading/writing from/to other win16 apps in memory. In this region, Win16 apps can see all other Win16 apps. Memory mapped files are stored here as well as the memory allocated for DPMI calls.
  • Shared system region extending from the address 3GB to 4GB. This is where VMM and VxDs live.
VMM provides three types of memory services to VxDs
  • Page-based memory services. This kind of services allocate/manage memory in pages of 4 KBs. It's the lowest level memory services available. All other memory services use page-based memory services as their base.
  • Heap memory services. Manage smaller blocks of memory. This is a higher-level of memory management services built on top of the page-based ones.
  • List services. Manage fixed-size memory blocks suitable for implementing linked lists.

Interrupt Handling

Interrupts in protected mode vector to Interrupt Descriptor Table (IDT). VMM supervises the IDTs of VMs with the help of VxDs. Normally VMM handles nearly all the entries in IDTs. It provides first-level interrupt handlers which save the state of interrupted program on the stack and transfer control to the second-level interrupt handlers which may be provided by various VxDs for the actual processing. When the second-level handler finishes its job, it transfers control to the redispatch routine which will restore the state of the interrupted program and resume execution at the previous point of interruption.
The above description is an oversimplified one. Redispatching may not be immediate because the interrupted VM's timeslice may expire. VxDs can install interrupt handlers via VMM services such as Set_PM_Int or Hook_V86_Int_Chain. VxDs must not modify IDT entries directly (but you can do it if you are sure you know what you're doing)

Thread Scheduling

The VMM uses two scheduler components to implement preemptive multitasking among threads and VMs.
  • primary scheduler
  • time-slicer or secondary scheduler
Primary scheduler's task is to choose the thread with highest execution priority to run. This selection occurs while the VMM is servicing an interrupt (such as timer interrupts). The outcome determines which thread/VM will be given control when the VMM returns from servicing the interrupt. Primary scheduler works under all-or-nothing rule. Either a thread will be run or it will not. Only one thread is chosen. VMM and other VxDs can boost/adjust execution priority of threads via VMM services. For example, if a hardware interrupt occurs, VMM will boost the interrupt handler's execution priority so that it will have higher chance of completion in the shortest possible time.
Secondary scheduler uses the services of the primary scheduler to allocate CPU time among threads that share the highest execution priority by giving each thread a time slice. When a thread executes until its time slice expires, the secondary scheduler boosts the execution priority of the next thread so that it will be chosen by the primary scheduler to run.

You can get more detail about these subjects from Walter Oney's Systems Programming for Windows 95 and the Windows 95 DDK documentation.


[Iczelion's Win32 Assembly Homepage]
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有