Out of all the operating systems for the 80286 processor I found, only two make use of the protected mode's ability to load more than one segment for text and one for data. These are MS-DOS (through various DOS extenders) and Windows. All other operating systems I checked would only give one text segment and one data segment to each process and call it a day. Were there any other operating systems that made full use of protected mode segmentation on the 80286?
Which operating systems for 80286 computers allowed a process to use more than 128k data?
OS/2 supported “huge memory” on 286s. The New Executable format used for 16-bit OS/2 executables (and 16-bit Windows executables) supports multiple segments. At runtime, using the
DosAllocHuge function, programs could allocate more than 64KiB of memory at a time, and would get a sequence of segment selectors which could be used to easily access all the allocated memory. The process is detailed in section 9.2.2 of Gordon Letwin’s Inside OS/2.
Xenix 286 also supported multiple text and data segments; processes with multiple segments were called “large model processes” (the same terminology as was used with C compilers under DOS). See Overview of the Xenix 286 Operating System.
FlexOS 286 (and perhaps Concurrent DOS 286) also allowed programs to allocate multiple segments.
malloc could only allocate up to 64KiB at once, but programs could call it multiple times to allocate more than 64KiB in total in multiple segments.
I suspected Coherent 3 might have supported multiple segments, but it turns out that’s not the case, at least according to the Coherent 3.2 FAQ (question 7).
Oh yeah, I totally forgot about OS/2. Any others you know of?– fuzOct 30, 2018 at 16:50
1I'm pretty sure Concurrent DOS 286 could give something close to 1 Meg. (depending on how many holes for BIOS, video, etc.) per process. Even older CDOS on 8088/8086 could do that using LIM EMS - limiting processing to 128k in CDOS 286 would have made it totally useless. Of course once the 386 came along CDOS 386 did it all much better. Oct 30, 2018 at 17:44
2QNX is another likely candidate. Versions up to 4 ran on 286s. Some applications of the system (eg "QNX Windows", a variant with an openlook based GUI) required multiple megabytes of memory, so must have been running in protected mode. It would seem unusual for a system to require that much memory but only give out 128KiB per process.– JulesOct 30, 2018 at 18:23
1iRMX286 is a possible candidate. It was Intel's real-time OS offering. It worked in protected mode and could address the full 16Mb range. I can't remember the details and I can't look them up either, having binned the manuals after not having looked at them for over 20 years.– cupNov 1, 2018 at 4:26
Yes, OS/2 v1.1 was marketed on just such a capability. Nov 4, 2018 at 20:22
chmemutility to give programs more space. It's not possible to change segment sizes at runtime, there isn't even a