Re: How to read-protect a vm_area?

Itai Nahshon (nahshon@actcom.co.il)
Tue, 17 Feb 1998 01:02:25 +0200


Linus Torvalds wrote:
>
> Essentially, the problem is that currently I use the "present" bit to
> imply that the page is in RAM vs paged out. This is the obvious and
> straightforward implementation - it's what the hardware does. But I
> _could_ use two bits for that, where the pattern would be:
>
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx00 - truly not present (ie paged out)
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx10 - PROT_NONE
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1 - present
>
> which should work fairly well, and would still match the hardware
> behaviour we want.
>

I do not know if any modern hardware has a similar "feature", on some
systems it is really necessary to have two "present" bits, one
interpreted
by the MMU hardware and the other interpreted by the OS.

The VAX architecture did not have an "accessed" bit on the page table
entry (it did have a "dirty" bit).
The OS had to simulate the missing "accessed" bit.
When free memory became low the pager started to mark pages as "not
present"
for the hardware (but not swap them out yet), and put these pages on the
free page list. A separate bit tells the software that the page is still
there. If such page is accessed, it causes a page fault trap. The trap
handler
Just needs to turn on the "present" and the simulated "accessed" bits,
(some list manipulation was also involved). these events are counted as
"reclaims" by vmstat.
If a free page is really needed one of the older pages on the free list
can be used.
Forgive me if I do not remember the details very well... Last time that
I had a good study of that code (BSD 4.1) it was more than 15 years ago.

Itai

-- 
Itai Nahshon   nahshon@actcom.co.il
        Also   nahshon@vnet.ibm.com

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu