Discussion:
a question on mapping from PTE to swap entry
Larry
2018-11-15 15:53:56 UTC
Permalink
Hi all,

It's quoted that "When a page is swapped out, Linux uses the correspondingPTE to store enough
information to locate the page on disk again".

I'm curious when multiple process has the same PTE which points to the samepage,
how can kernel differenciate which page from swap space should be swappedin?

For example, there are 3 processes, each of them has a virtual page that is mapped to a
phyisical page PAGE_A, that means the same PTE is mapped to same PAGE

Process 1 runs out of its timeslice
Process 2 get scheduled, PAGE_A was from Process 1, so it should be swapped out
Process 3 get scheduled, PAGE_A was from Process 2, so it should be swapped out
Process 1 now comes back,

when he use PTE to look for its PAGE_A, it will get two PAGE_A,
one is from itself, and the other from Process 2

How does kernel handle this situation?

Thanks
v***@vt.edu
2018-11-15 17:59:52 UTC
Permalink
Post by Larry
I'm curious when multiple process has the same PTE which points to the samepage,
how can kernel differenciate which page from swap space should be swappedin?
The PTE tells where in /dev/swap to find the page. If it's a shared page, the
references all point at the same place, so "process 1's PAGE_A info" is the
same as "process 2's PAGE_A" info. They may have different addresses in the
two processes, but they're both referencing the same swap page.
Post by Larry
Process 2 get scheduled, PAGE_A was from Process 1, so it should be swapped out
Why? In general, there's no need to do so - and if it's shared, it's probably a hot page
so it won't be chosen for swapout.

(Remember - the kernel doesn't do swapin/swapout decisions in schedule(), it
only takes action once Process 2 starts running and references a page that requires
something be done.

Loading...