Linkers collect pages with the same attributes into "sections" or "program sections" or "psects." Usually is the default is to create one section for each memory attribute. Typically:
- Readonly
- Read/write
- Demand Zero
- Executable
However, most linkers have advanced settings that allow the programmer to set up the psects differently.
Some assemblers have psect directives to place data in a particular section.
Sometimes psects are called "segments." E.g., the "code segment"
There are also hardware segments that, as you suggest, are pretty much a brain damaged aspect of many Intel processors (although some other processors use[d] them). In 64-bit mode, Intel has finally dumped segments. A segment in this uses is accessed by segment registers.
Thus, these are two different concepts.