linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: pnilesh@in.ibm.com
To: "Stephen C. Tweedie" <sct@redhat.com>
Cc: linux-mm@kvack.org
Subject: Re: how text page of executable are shared ?
Date: Wed, 29 Mar 2000 13:16:37 +0530	[thread overview]
Message-ID: <CA2568B1.002BB512.00@d73mta05.au.ibm.com> (raw)


Hi,

No, the page count will be three at least.  The presence of the page
in the page cache counts as one, and both of the page-table mappings of
the page each count as a further reference.

So when no process is pointing to a page in page cache the count will be
one.
But what is the difference if we have this to zero any way it is not being
refernced by any process.
Or can we have a page cache entry with page count as zero ?

Also all the pages which are present in the memory for any process will
also be part of the page hash queue and if they belong to a file then they
will also be on the inode queue.
Am I right.




Yes.  swap_out() is responsible for unlinking pages from process page
tables.  In the case you describe, the page will still have outstanding
references, from the other process and from the page cache.  Only when
the page cache cleanup function (shrink_mmap) gets called, after all of
the ptes to the page have been cleared, will the page be freed.

If you think about it, this is natural: when a process pages in a binary
and then exits, we really want the pages still to remain in memory so
that if you immediately rerun the program, we don't have to go back to
disk for the pages.  The process exiting acts a bit like a complete
swap_out, freeing up the pte reference to the page, but the page still
remains in the page cache until the memory is needed for something else.

> Q    When a page of a file is in page hash queue, does this page have
page
> table entry in any process ?

It may have, but it doesn't have to.

> Q     Can this be discarded right away , if the need arises?

Not without first doing a swap_out() on all the references to the page.
The Linux VM does its swapout based on virtual, not physical, page
scanning (although shrink_mmap() is physical).

--Stephen



--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux.eu.org/Linux-MM/

             reply	other threads:[~2000-03-29  7:56 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-03-29  7:46 pnilesh [this message]
2000-03-29 13:49 ` Stephen C. Tweedie
  -- strict thread matches above, loose matches on Subject: below --
2000-03-28  3:51 pnilesh
2000-03-28 13:22 ` Stephen C. Tweedie
2000-03-28 15:58   ` Mark Hahn
2000-03-28 18:10     ` Andrea Arcangeli
2000-03-29  1:01     ` Stephen C. Tweedie
2000-03-29  1:59       ` Kanoj Sarcar
2000-03-29  5:21       ` Andrew Morton
2000-03-29 13:45         ` Stephen C. Tweedie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CA2568B1.002BB512.00@d73mta05.au.ibm.com \
    --to=pnilesh@in.ibm.com \
    --cc=linux-mm@kvack.org \
    --cc=sct@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox