I'm learning by my self about OS theory and I have some troubles to understand what is a process address space.
So far, I came across two definitions of what a process address space is:
1 - The set of virtual addresses available to a process. Hence the address space, would be the numbers from 0x0 to 0x7FFFFFFF.
2 - The virtual memory addressable by a process. I picture it as a set of cells with addresses from 0x0 to 0x7FFFFFFF.

I would like to know which one is correct?
This is important for me because I read sentences like "the address space is organized into pages of 4096 bytes" which makes me lean towards the second definition.

Thank you.


The address space is the space (i.e., set) of addresses – see, e.g., Wikipedia. It's an abuse of terminology to claim that the address space is divided into pages. It isn't: it's the memory addressed by the addresses that's divided into pages.

(This confusion between addresses and the things referred to by addresses is common. How many times have you heard people say, "I'll give you my email" when they mean "I'll give you my email address"?)

  • 1
    $\begingroup$ So the correct way to say this is "the process's virtual memory is divided into pages"? $\endgroup$
    – othman
    Apr 27 '16 at 17:22
  • 2
    $\begingroup$ I don't think this is an abuse of terminology. I think of pages as sets of addresses. The set of addresses is divided (partitioned) into pages. (I am an OS implementer and I have worked on MMU management code.) $\endgroup$ Apr 27 '16 at 17:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.