Improving the Address Translation Performance of Widely Shared Pages
Yousef A. Khalidi, Madhusudhan Talluri · 1995
Operating systems allow multiple processes to share physical objects, e.g., shared libraries, System V shared memory. Many UNIX implementations allow processes to use different virtual addresses to map a shared physical page, known as aliases. Each alias traditionally requires separate page table and translation lookaside buffer (TLB) entries that contain identical translation information. In systems with many aliases, this results in significant memory demand for storing page tables and unnecessary TLB misses on context switches. This paper first describes a common-mask scheme that allows translations from many different virtual address spaces to the same physical address to share a single translation entry. It extends the process context id with a bit vector that identifies a set of common regions that a process shares with other processes. It requires aliases to use the same virtual address, but aliases with different virtual addresses are still supported in the conventional manner...