a question on mapping from PTE to swap entry
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
On Thu, 15 Nov 2018 23:53:56 +0800, "Larry" said:
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.
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.
participants (2)
-
Larry -
valdis.kletnieks@vt.edu