In a memory management system that is properly a programmer views a program to be collection of program components called as segments. Every segment is a logical unit of a program as defined by the programmer's design. In programming terms a segment generally contains of s set of procedures or data and forms a module of a few software systems.
The motivation for segmentation is to group together data and procedures that possess common attributes for sharing by other procedures. This is beneficial for implementing protection in a large software system. The user thus specifies each address by two quantities: an offset and a segment name. For the simplicity of execution segments are numbered and are referred to by a segment number.