Virtual Machine ManagerVirtual 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 ManagementVMM 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 HandlingInterrupts 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.
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]
本文地址:http://com.8s8s.com/it/it30044.htm