- Segmentation is a system allowing a process’s memory space to be subdivided into chunks of memory each associated with some aspect of the overall program
- Segments can be different sizes
- Segmentation isn’t transparent like Paging, but it is much more aware of program and data structures
- Segmentation came before paging, but it is visible to the ISA, so it doesn’t work as a retrofit to ISAs with contiguous memory models. IBM couldn’t use it in the 1970s because they had already committed during the 1960s to upper/lower bound register memory management and a contiguous address space.
- Hence, we have paging that could be transparently slipped under existing memory management. Other manufacturers followed suit because paging didn’t require their applications to be aware of paging.
- Typical Segments
- Code segments
- Global Data
- Heap
- Stack
Each segment has a number and a size
Each segment starts at its own address 0 and goes up to its size - 1
Segment addressing is almost like page addressing

Segmenation has no Internal Fragmentation but has External Fragmentation---opposite of Paging
This is basically Base + Limit but for segmented virtual memory
It is different because of the size in the segment table and the need to compare the bounds
