Address space
From Free net encyclopedia
In computing, an address space defines a context in which a memory address makes sense.
A memory address identifies a physical location in computer memory, somewhat similar to a street address in a town. The address points to the location where data is stored, just like your address points to where you live. In the analogy of a person's address, the address space would be an area of locations, such as a neighborhood, town, city, or country. Two addresses may be numerically the same but refer to different locations, if they belong to different address spaces. This is similar to your address being, say, "32, Main Street", while another person may reside in "32, Main Street" in a different town from yours.
Example address spaces:
- Main memory (physical memory)
- Virtual memory
- I/O port space
- IP address
- House numbers in street addresses
- Street addresses in towns
Specific examples: the Linux kernel:
- Kernel virtual address space
- User virtual address space, accessed by the kernel through copy_to_user(), copy_from_user and similar functions
- I/O memory, accessed through readb(), writel(), memcpy_toio(), etc.
Address translation
In general, things in one address space are physically in a different location than things in another address space. For example, "house number 101 South" on one particular southward street is completely different from any house number (not just the 101st house) on a different southward street.
However, sometimes different address spaces overlap (some physical location exists in both address spaces). When overlapping address spaces are not aligned, translation is necessary. For example, virtual-to-physical address translation is necessary to translate addresses in the virtual memory address space to addresses in physical address space -- one physical address, and one or more numerically different virtual address, all refer to the same physical byte of RAM.de:Adressraum pl:Przestrzeń adresowa