In computing, an address space defines a range of discrete addresses, each of which may correspond to a network host, peripheral device, disk sector, a memory cell or other logical or physical entity. The Internet Assigned Numbers Authority (IANA)[1] allocates ranges of numbers to various registries in order to enable them to each manage their particular address space.
Overview
Address spaces are created by combining enough uniquely identified qualifiers to make an address unambiguous. For a person's physical address, the address space would be a combination of locations, such as a neighborhood, town, city, or country. Components of an address space may be the same but unless all are identical, the locations will be different. An example could be that there are multiple buildings at the same address of "32 Main Street" but in different towns. Or in the same town but different states. An example of how address spaces work in computing is Internet domains, where the same filename, say, "index.html" can be unique even though it is resident on millions of domains.
Examples
Example address spaces:
- House numbers in street addresses
- Street addresses in towns
- Main memory (physical memory)
- Virtual memory
- I/O port space
- Network addresses
- IP addresses in particular
- Domain Name System
- The cylinder-head-sector scheme for hard drives
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 addresses, all refer to the same physical byte of RAM.
Memory models
Many programmers prefer to use a flat memory model, in which there is no distinction between code space, data space, and virtual memory — in other words, numerically identical pointers refer to exactly the same byte of RAM in all three address spaces.
However, many early computers did not support a flat memory model — in particular, Harvard architecture machines force program storage to be completely separate from data storage. Many modern DSPs (such as the Motorola 56000) have 3 separate storage areas — program storage, coefficient storage, and data storage. Some commonly-used instructions fetch from all three areas simultaneously — fewer storage areas (even if there were the same total bytes of storage) would make those instructions run slower.
Memory models in x86 architecture
Early x86 computers used addresses based on a combination of two numbers: a memory segment, and an offset within that segment. Some segments were implicitly treated as code segments, dedicated for instructions, stack segments, or normal data segments. Although the usages were different, the segments did not have different memory protections reflecting this.
Now, many programmers prefer to use a flat memory model, in which all segments (segment registers) are generally set to zero, and only offsets are variable.
References
- ^ "IPv4 Address Space Registry" (in English). Internet Assigned Numbers Authority (IANA). March 11, 2009. Retrieved 2009-03-15.
0 comment:
Yorum Gönder