Sharing is another design issue for paging system.
It is very common for many computer users to be running the same program at the same time in a large multiprogramming computer system.
Now, to avoid having two copies of same page in the memory at the same time, just share the pages.
But a problem arises that not all the pages are shareable.
Generally, read-only pages are shareable, for example, program text; but data pages are not shareable.
With shared pages, a problem occurs, whenever two or more than two processes (multiple processes) share some code.
Let's suppose that the process X and process Y, both are running the editor and sharing its pages.
Now if the scheduler decides to remove the process X from the memory, evicting all its pages and filling the empty page frames with the other program will cause the process Y to generate large number of page faults just to bring them back again.
In the similar way, whenever the process X terminates, it is essential to be able to discover that the pages are still in use so that their disk space will not be freed by any accident.