Windows 95/98

Windows Support Menu


Windows 9X

Virtual Memory

Windows 95 virtualizes memory just as it virtualizes machines and drivers. This memory virtualization allows each program to behave as if the program had its own physical RAM.

Virtual memory is the way a program views memory.

Each program is allocated a unique virtual address space, which is a set of addresses available for the program to use. Every 32-bit Windows-based and Microsoft MS-DOS̉-based program is allocated its own virtual address space. Programs access the memory through their virtual addresses that are mapped by the Windows 95 memory manager onto physical addresses. These physical addresses may point to locations in RAM or on the hard disk.

In Windows 95, the operating system can allocate more memory than is physically available on the workstation. Windows 95 offers virtual memory using the demand-paging capabilities of the Intel 80386 or higher processor. Program code and data in physical memory can be swapped into a specially created swapfile on the hard disk.

The swapfile changes size with the needs of the system. If hard drive space is running low, the size of the swapfile is decreased. If hard drive space is available and more memory is required, the size of the swapfile is increased.

Each address space is divided into 1,048,576 (220) pages. Each page is 4K in size. Physical memory is allocated on a per page basis. A page may indicate memory that is located somewhere in RAM (the actual location may be changed by the system), in a swapfile on a disk, or marked as unused. If the page is indicated as unused, the address exists but physical memory is not allocated.

The Virtual Memory Manager maps virtual addresses in the process's address space to physical pages in the computer's memory or swapfile. In doing so, it hides the physical organization of memory from the program. This ensures that the threads can access its process's memory as needed, but not the memory of other processes.

Swapping in and out is controlled by the Windows Virtual Memory Manager. The virtual memory manager performs paging and maintains a list of 4K pages currently in physical memory by accessing a page table. The page table tells Windows which pages are swapped to disk, which belong to which process, and so on.

Virtual Addresses

Windows 95 allocates each Virtual Memory space 4 GB of memory addresses. This is address space only, 4 GB of physical memory is not required. The memory addresses are mapped out as follows.

  1. 0-1 MB-In an MS-DOS VM, these addresses are used by the MS?DOS?based programs. If this is not an MS-DOS VM, the addresses are not used by the program but are made available for any real-mode device drivers that are loaded.
  2. 1-4 MB-Normally not used. Microsoft Windows NTÔ loads above this address and to maintain compatibility, Windows 95 does not use these address spaces, nor do 32-bit Windows-based programs use these spaces. However, these address spaces are available for use by 16-bit Windows?based programs.
  3. 4 MB-2 GB-Used by 32-bit (and some 16-bit) Windows-based programs.
  4. 2-3 GB-Used by DLLs and other shared objects. For example, the standard dialog boxes that are used by all programs are contained in the common dialog DLLs, COMMDLG.DLL, and COMDLG32.DLL. These files are loaded in this address space.
  5. 3-4 GB-Reserved for operating system use (all Ring 0 components are mapped in here). For example, video drivers and other virtual drivers are loaded in this address space.

Excessive Paging

When a virtual address points to a page that is not in physical memory (that is, the referenced page is stored on the hard disk), the processor generates a page fault. The page fault signals the Virtual Memory Manager to load the page from disk into memory; this is called a page-in. If there is not enough free memory available to fit the page, then the Virtual Memory Manager must swap a page out of memory and store it on disk; this is called a page-out.

The system is designed for a certain amount of paging. However, if paging happens frequently a point can be reached where the system is doing so much paging that there is little time left for useful work. Excessive paging (or disk thrashing) degrades overall system performance and can also cause premature hard disk failure.

Generally, the solution to excessive paging is to add more RAM to the computer or to work with fewer programs simultaneously.