Linux does this, as does basically every other modern OS.
Pick a random large process on a linux host - like your web browser. cat /proc/$pid/status.
VmExe is the size of the mapped executable; VmLib is the size of all the other mapped libraries and executable pages. Add those two numbers together to find the size of all the executable code mapped into this binary.
VmRSS is the amount of physical memory that the process is currently using. You'll find that this is a lot smaller than the code mapped into the binary. That's because the kernel hasn't loaded any of that into physical memory.
Thank you. I'm not at all sure why the 'old hands' here on HN have decided to so viciously downvote this. I didn't call anybody names, didn't violate any posting rules, did not violate etiquette, and provided a very nice link to Multics.
If there is a perceived error in what I wrote, then, like the one nice responder, explain, please.
HN is such a different community now than when I joined 1,835 days ago. It brings tears to my eyes.
Pick a random large process on a linux host - like your web browser. cat /proc/$pid/status.
VmExe is the size of the mapped executable; VmLib is the size of all the other mapped libraries and executable pages. Add those two numbers together to find the size of all the executable code mapped into this binary.
VmRSS is the amount of physical memory that the process is currently using. You'll find that this is a lot smaller than the code mapped into the binary. That's because the kernel hasn't loaded any of that into physical memory.