Segmentation is a non-contiguous memory management technique. Here the program is divided into variable size parts called segments. So far, we have read about paging, which supports the operating system view of memory. Paging divides the secondary memory into fixed-size partition called pages. Whereas segmentation is a variable size partitioning technique that supports the user’s view of memory. As a user, we view the process as consisting of functions or modules. Therefore in segmentation, the system divides the memory requirement of a process into modules. The modules may be allocated to different locations inside the memory. But, all the addresses of one particular module are together.
A segment is a logical unit such as the main program, function, stacks, common blocks, symbol table etc.
As shown in the figure above, the process consists of four segments. So, the segments can be given different memory location. But, the addresses of one particular segment are together.
The logical address space is a collection of segments. Each segment has a
1. Name
2. Length
Name specifies the segment name. For example S1 or Segment 1. The length tells the total number of addresses in the segment.
The address specifies both the segment name and the offset within the segment. Thus, a logical address consists of two things
1. segment number
2. offset
The syntax of writing a logical address is as shown below
<segment-number, offset>
For example, <2,100> means the segment number is 2 while the offset is 100.
Hardware Support using Segment Table
For every process, the system maintains a segment table. This segment table is used to map the logical address into a physical address. Each entry in the segment table has a segment base and segment limit. The segment base contains the starting physical address while the segment limit specifies the length of the segment.
Example
Calculate the physical address for each of logical address given below in the form of <segment number, offset>
a) <0,400>
the base address of segment number 0 is 200. The vale of limit is 500. Thus, the address space of segment 0 is lies between 200 to 700. Hence, the physical address will be 200+400= 600.
b) <1,21>
the base address of segment number 1 is 2300. The value of limit is 20. Thus, the address space of segment 1 lies between 2300 to 2320. Hence, the physical address after the calculation is 2300+21= 2321. But, this will generate a trap because the address is going beyond the limit.
Practice Question
For the given segment table, calculate the physical address if the logical addresses are
- <0,430>
- <1,15>
- <2,400>
- <3,95>
Share your answers in the comments section
PPT on Segmentation
Note: Clicking on the “next” slide button will not display any animation. Hence, Click within the slide area for animations.
Video on Segmentation
Previous Next Paging Virtual Memory
1. 649
2. Trap
3. 1727
4. 2047
0-649
1-trap adressing error
2.1727
3.2047
Segment 0 ->649
Segment 1 -> 2315 , trap because it’s beyond limit which is 2314
Segment 2 -> 1727
Segment 3 -> 2047
0 -649
1 -Trap(2315)
2- 1727
3 -2057
649
Trap
1727
2047
Seg 0 =649
Seg 1 =2315 , trap
Seg 2 =1727
Seg 3 = 2047
1. 649 in range of 219 to 819
2. 2315 out of range in 2300 to 2314 which will generate a trap
3. 1727 in range of 1327 to 1907
4. 2047 in range of 1952 to 2048
Seg 0-> 649
Seg1->2315(trapped)
Seg2->1727
Seg3->2047
649
Trap
1727
2047
6053
Seg 0 =649
Seg 1 = trap,2315
Seg 2 =1727
Seg 3 = 2047
6053
1. 0-649
2. It will generate a trap because the adddress is going beyond the limit.
3. 1727
4. 1952