/**/ Segmentation - Dextutor

# Segmentation

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

1. <0,430>
2. <1,15>
3. <2,400>
4. <3,95>

### 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```

### 13 thoughts on “Segmentation”

1. cv Karthik

1. 649
2. Trap
3. 1727
4. 2047

2. Aman Kumar

0-649
2.1727
3.2047

3. Paritosh

Segment 0 ->649
Segment 1 -> 2315 , trap because it’s beyond limit which is 2314
Segment 2 -> 1727
Segment 3 -> 2047

4. Manish

0 -649
1 -Trap(2315)
2- 1727
3 -2057

5. Shuubham Dongarwar

649
Trap
1727
2047

6. K M RIDOY HASAN

Seg 0 =649
Seg 1 =2315 , trap
Seg 2 =1727
Seg 3 = 2047

7. Vaishnavi

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

8. Saketh

Seg 0-> 649
Seg1->2315(trapped)
Seg2->1727
Seg3->2047

9. Pranit Patil

649
Trap
1727
2047

10. Harman

6053

11. shovon

Seg 0 =649
Seg 1 = trap,2315
Seg 2 =1727
Seg 3 = 2047

12. Shahbaz Khan

6053

13. Himanshu Khanduri

1. 0-649
2. It will generate a trap because the adddress is going beyond the limit.
3. 1727
4. 1952