It did, but it was honestly quite limited in 16-bit mode, not only due to the (intentionally) limited scope of the OS but because the 16-bit addressing only allowed for a 64k code segment and a 64k data segment per process.
As an aside, this reminds me of an amusing early example of a rough-and-ready configure-style script[1] included in the BSD source for the compress(1) utility, used to limit the maximum supported LZW code length based on an estimate of memory that will be available to the process[2].
[1] https://github.com/dspinellis/unix-history-repo/blob/BSD-4_3...
[2] https://github.com/dspinellis/unix-history-repo/blob/BSD-4_3...