I’m assuming you’re asking about x86 processors, not the older 8-bit CPUs.

1. Real mode is always segmented, and everything (CPU, operating system, programs, even peripherals on the CPU bus) has access to all the system’s address space up to just over 1 MiB (1 MiB strictly before the 286). You can write programs without paying attention to segments, and you’ll be limited to 64 KiB, but nothing enforces that; this is the memory model used by default for COM programs under DOS.

1. The 8086, 8088, and 80186 CPUs only run in real mode. The 80286 introduced 16-bit protected mode with a 24-bit address space. The 80386 introduced 32-bit protected mode, which still relies on segments (but segments can provide direct access to all 4 GiB of address space). Newer CPUs support all the modes available in older CPUs.

1. Up to [Windows 3.0][1] included, Windows could run in real mode, using segments. Windows/386, Windows 3.0 and later could also run in protected mode, on 286s (Windows 3.0) and 386s. MS-DOS always ran in real mode; there were several DOS extenders which allowed programs to run in protected mode on top of DOS, such as DOS4GW.

There is an “unreal flat mode” on 386s and later, which allows programs to run in real mode while accessing all 4 GiB, but it’s difficult to use and never gained much popularity. Sometimes this is referred to as [“flat real mode”][2], when running 16-bit code with 32-bit registers and 4 GiB segment limits.


  [1]: https://retrocomputing.stackexchange.com/q/2386/79
  [2]: https://board.flatassembler.net/topic.php?p=1442#1442