Memory management is the job for an operating system which handles or manages primary memory and moves processes to and from the main memory and disk during its execution. The OS keeps track of every memory location, whether it is allocated or not, checks how much memory is to be allocated to a process, decides which process will get memory at what time and tracks every time a memory is freed. Both Windows and UNIX have similarities in memory management which includes hardware abstraction layer, copy on write, shadow paging memory mapped files and inter-process communication. However, the highlight of this paper is the significant differences between both OS in terms of memory relocation, protection, sharing, logical and physical organization.
Both systems are originated from different backgrounds – Windows in Commercial Settings and UNIX in Hackers settings. Both are modern and have good theoretical concepts and are suitable for production environments. Windows is developed into sophisticated, complex code whereas UNIX is simple and elegant but still modern. Which results to Windows having more features but is difficult to maintain and improve from the developers while UNIX has fewer features but is easier to maintain and develop.
UNIX uses demand paging for their memory allocation strategy where whenever a page is needed, it transfers a fixed-sized unit of the virtual address called virtual page. Every process is logically divided and allocated in the virtual address space, and a page table in the virtual memory will be helpful to allocate and keep track of the pages to map into the frames. This strategy decreases the paging time and physical memory needed because only the needed pages are paged and reading unused pages can be avoided. Windows uses clustered demand paging for fetching pages, and the clock algorithm for the page replacement. In clustered demand paging, the pages are only brought to memory when they are required. Also, instead of 1, Windows often brings cluster of them of 1-8 pages, depending on the current state of the system.
In memory protection, a protection bit is associated with each frame. A valid-invalid bit is added to each entry in the page table. If the bit is valid, it means that the page is valid and is present in process’s logical address space and if the bit is invalid, it means that the page is invalid and is not present in the process’s logical address space. If the page is not present, it leads to generate page fault.