"Jonathan S. Shapiro" shap@eros-os.org writes:
A second naive question.
Imagine that thread A performs separate map operations to each of B and C (maps of the same thing). This results in a dependency relationship of the form:
A / \
B C
Given that these operations have happened, is there a way for A to revoke the mapping held by B without also revoking the mapping held by C?
No.
Does it matter?
In the context of L4Linux we discussed whether it would be useful to be able to unmap pages in a certain address space. It could be used during execve to unmap pages of the child process while leaving the mapping of the parent intact. And there are a lot of shared pages like pages from shared libraries which should be unmapped only in the one process.
We are able to ignore the problem because we:
- track which pages are actually mapped and reduce the necessary unmap operations
- handle process termination and execve in a special way. We don't unmap the pages, we kill the address space instead.
So I think this is a useful operation.
Regards, Jean