Jabir Al Fatah

Memory management is the process of controlling and coordinating computer memory, assigning portion called block to various running program to optimize overall system performance. It resides in hardware in Operating System (OS), and in programs and applications.

Unlike other operating system, windows perform so many sophisticated operations to be done with its job. Memory involves process, threads and other underlying theory to complete a command from users. Thus, my discussion is kept in a certain level, which covers the most basic area of memory management in computing.

A memory is a physical device used to store some sequence of instructions. Now, this memory can be two types- one is primary and the other one is secondary memory. Primary memory is used for the information in physical systems which function at high speed (i.e. RAM), as a distinction from secondary memory, which are physical devices for program and data storage which are slow to access but offer higher memory capacity [2]. Primary memory is often associated with addressable semiconductor memory. There are two main types of semiconductor memory: volatile and non-volatile (i.e. flash memory) [2]. Windows pretend as it is providing a flat virtual address space. But, in reality, there is a much smaller amount of physical memory. The hardware memory management un its of today’s microprocessors provides a way for the OS to map virtual address to physical address and it does this in the granularity of page [2]. The windows memory manager needs a demand paged virtual memory subsystem. Another way to explain is if we launch an application (e.g. Notepad), it doesn’t need to execute the entire Notepad, rather the application demands as it touches code pages, as it touches data pages, it’s at that point where the memory makes a connection between virtual memory and physical memory, reading in contents off disk as needed [2]. When a process requests a page, it brings the oldest page first. Those pages are not overwritten, because they only represent a copy of data that was once being used by this process. So windows keep those on several paging list. The way that the windows memory manager keeps track of this is that it keeps track of this unassigned memory in one of four paging lists. These pages are organized by type:
Free page list:
Free page list is specific location with few lists. Memory manager may need to choose this location (or list) while performing a page reading.
Zero page list:
The free page list has a common characteristics and that is it has to be a certain sized. When it gets that size, a zero page thread ( also known as kernel thread) is awakened that runs in priority 0. Besides, windows may need zeroed page. Zero page thread’s job is to zero out those pages.
Modified & Standby page list:
Memory manager needs to pull-out a page of a process's working set. But that page may still needed by the process, moreover it may have to be reused by the process. It may (being on the standby or modified page list) represents code or a DLL of an image and be reused by another process [2].

[1] Jimmy Wales. (2001). http://www.wikipedia.org . Retrieved 08 11 2014, from Memory Management: https://en.wikipedia.org/wiki/Computer_memory
[2] logicchild. (2008). http://www.codeproject.com. Retrieved 08 11 2014, from Windows memory Management: http://www.codeproject.com/Articles/29449/Windows-Memory-Management

Page 5 of