first, let me say that you are reading an outdated book
in the world of 16-bit code, we used to define our own segments if we wanted ultimate control over them
the 16-bit memory models are "segmented"
that's because a 16-bit address can access only 64 Kb without changing a segment register
if you want 2 segments to combine, they should have the same attributes
in 32-bit code, microsoft uses a "flat" memory model
and, while there are still different sections, the segment registers are now used as "selectors"
a 32-bit address can access 4 Gb without changing anything

code, data, stack, everything in one "segment"
in fact, we rarely mess with the segment registers, at all