In 1992 a friend and I ported BSD/Net2 to the Mac II, and found (weeks into the project!) that kernel functions like fork() and exec() and all of TTY were missing. We thought we were screwed, but found 386BSD and grabbed its versions. I don't know if other BSD ports (like NetBSD) did the same or wrote theirs from scratch. We were certainly indebted to Bill Jolitz for saving our project!
Indeed, one of the first 386 OSes was Xenix. In retrospect, I really wished that DRI added GEM and native 32-bit application support into Concurrent DOS 386. GEM would probably be built into the kernel, with virtual 8086 mode used to run legacy 16-bit GEM apps and developers could write new 32-bit GEM (and even command-line) apps. It would be far more interesting than DR-DOS and probably a good competitor to even OS/2 2.0.
Xenix was also ported to a variety of other architectures as well. At my very first programming job, we had a Z8000 running a very early (V7-like) Xenix port. Its performance was not impressive; a 386 could run rings around it. Also, the segmented memory architecture limited processes to 64K instructions and 64K data.
At a later job, we had several projects that we put together on the 386 version of Xenix; one of those is still in service today. It had moved to OpenServer relatively early on, and stayed that way until early this summer; my task was to get it running on a modern Linux. I was very (pleasantly) surprised to discover that the Unify database is still available, even for RHEL7 - and it was possible to directly take the database files from the old system and use them unmodified on the new one.
I wonder what prompted Microsoft to give up on Xenix? AT&T wanting too much money, or perhaps Not-Invented-Here syndrome? Windows could have been an X desktop.
I ported a large Fortran codebase for mech eng analysis to Xenix from VMS back in the late 80s. We needed more than 640K, so DOS wouldn't do, and this was before Windows. I had to write a device driver for the 68000 based graphics card. That was my first real C coding experience. Fun! I didn't know about BSD at the time, but it looks like Xenix was System V [1].
Did you have a means of using extended or expanded memory?
There were memory libraries like DOS/16M that would allow use of extended memory and 80286+ Protected Mode without a lot of source changes. Informix, Lotus, etc. used it for their Protected Mode product line on DOS starting in the late 1980s.
The authors explicitly said they want to build something more free: "We hope to see those interested in this technology build on it in both commercial and noncommercial ventures."
And they did port Unix (Berkeley flavor) to the 386. I remember using it in the nineties, it was a great adventure. And its progeny FreeBSD is arguably the best alternative to Linux, should something go terribly wrong.
There might not be that much - the 386BSD project concentrated specifically on the 386 implementation, whereas Mac OS X was initially launched for PowerPC.
BSD was slow because in the early 1990s they had a major constraint before working on ports: they had to get rid of AT&T code whose licenses were very expensive and blocking distribution.
The cleaning was complete in June 1991.
when did x86 add mmu support? it would have been pretty hard with segments (maybe not...oh yeah, you would have had to swap segment registers on demand alot*)