Segmentation works with variable size segments, thus eliminating internal fragmentation at the expense of external fragmentation.
Segmentation facilitates the sharing of common code by processes.
The hardware required is similar to that needed for paging, except that each segment table entry is a pair: base, bounds. Thus, in general, a segment table entry is about twice as big as a page table entry; but since segments can be very long, the total number of entries may be less.