What is Segmentation?

In this article today we will learn about segmentation concept of memory management in the operating system. Let us have a look on segmentation , its example and hardware support to segmentation.

Segmentation is a memory management scheme that support user view of the memory. A logical address  space is a collection of segments. Each segment has a name and a length. The addresses specify both the segment name and the offset within the segment. The user therefore specifies each address by two quantities: a segment name and an offset. For simplicity of implementation, segments are numbered and are referred to by a segment number, rather than by a segment name.



what is segmentation in memory management

                                                                        Figure 1: User View of a Program

Generally users prefer to view memory as a collection of variable-sized segments, with no necessary ordering among segments.When we write a program then we think of it as a main program with a set of methods, procedures, or functions. It may also include various data structures: objects, arrays, stacks, variables. Each of these modules or data elements is a logical unit and known as segment which is referred by a name. when we talk about stack, main program, library then we dont care about at what address in memory they occupy neither we are concerned in which order they are stored? Each of these segments is of variable length; the length is intrinsically defined by the purpose of the segment in the program.


Elements within a segment are identified by their offset from the begining of the segment: the first statement of the program, the seventh stack frame entry in the stack, the fifth instruction of the Sqrt (), and so on.


segmentation table or hardware support for segmentation




Segmentation Hardware or use and Implementation of Segmentation Table


Segment table – maps two-dimensional user defined address into one dimensional physical address. Each entry in the segment table has a segment base and a segment limit. The segment base contains the starting physical address where the segment resides in memory, and the segment limit specifies the length of the segment.

Segment-table base register (STBR) points to the segment table’s location in memory.Segment-table length register (STLR) indicates number of segments used by a program.A logical address consists of two parts: a segment number, s, and an offset into that segment, d.The segment number is used as an index to the segment table. The offset d of the logical address must bebetween 0 and the segment limit. If it is not, we trap to the operating system (logical addressing attempt beyondend of segment). When an offset is legal, it is added to the segment base to produce the address in physicalmemory of the desired byte. The segment table is thus essentially an array of base-limit register pairs.segment number s is legal if s < STLR.


Segmentation Example


Consider the situation shown in Figure 13. We have five segments numbered from 0 through 4. The segments are stored in physical memory as shown. The segment table has a separate entry for each segment, giving the beginning address of the segment in physical memory (or base) and the length of that segment (or limit). For example, segment 2 is 400 bytes long and begins at location 4300. Thus, a reference to byte 53 of segment 2 is mapped onto location 4300 +53= 4353. A reference to segment 3, byte 852, is mapped to 3200 (the base of segment 3) + 852 = 4052. A reference to byte 1222 of segment 0 would result in a trap to the operating system, as this segment is only 1000 bytes long.

segmentation memory management in os
                                                             Figure 3: Example of Segmentation


Keywords: segmentation,memory management, user view of a program, segmentation example,hardware support in segmentation, segmentation table,logical and physical address