there is normally one hash table, contiguous in physical memory, shared by all processes. a per-process identifier is used to disambiguate the pages of different processes from each other. it is somewhat slow to remove the page table entries of a given process; the os may avoid reusing per-process identifier values to delay facing this. alternatively, per-process hash tables may be used, but they are impractical because of memory fragmentation, which requires the tables to be pre-allocated.