On Thu, Jun 27, 2019 at 5:13 AM Ben Greenfield via TUHS <tuhs@minnie.tuhs.org> wrote:

> On Jun 27, 2019, at 6:59 AM, arnold@skeeve.com wrote:
> Larry McVoy writes:
>>>> OK, I'll bite.  Go read the source in the FreeBSD tree, which has been
>>>> reduced in size by 60% according to someone on the team.  Then come
>>>> back and draw me a picture of what it does.
> On Jun 27, 2019, at 12:01 AM, Lyndon Nerenberg <lyndon@orthanc.ca> wrote:
>>> Larry, it seems to me your argument is the Mach code should never
>>> have been incorporated into BSD in the first place.  That's fine,
>>> but it's not the Mach developers fault that happened, so maybe you
>>> should lay off them for not writing their research software to a
>>> production shop standard they were never a part of?
> Ben Greenfield via TUHS <tuhs@minnie.tuhs.org> wrote:
>> My understanding is that the  BSD layer was a requirement from DARPA.
>> DARPA wanted a “normal” interface to the kernel and BSD was that interface.
> Yes, Mach had to provide a BSD layer on top, but that's not the source
> of Larry's gripes.
> It's the other way around. 4.4 BSD pulled the VM code out of Mach and
> into BSD to provide mmap and some level of portability off the Vax. From
> there the Mach code got into FreeBSD.  That's what Larry is complaining
> about and what Lyndon is saying isn't fair to the Mach guys.

Thank you for this clarification, so this conversation has been going on since the 80’s and gets ignited from time to time.

Yea, there's been three or four rounds of rototilling in the FreeBSD vm. While it shares some structures with its Mach ancestors, complaining about it to paint Mach as this or that is unfair.

FreeBSD's sys/vm has had a crapton of changes to make to scale in an MP system, to adopt non-uniform page sizes, etc. Some of these changes have been done with skill and subtly. Some have been done by a ham-fisted goober. It would overstate things to say the most recognizable part of Mach is the copyright headers :), but those bits are arguable the most unchanged. What's resulted lacks architectural purity because it wasn't designed from scratch to be pure. It's grown organically over the last 30-odd years as different groups, companies and organizations have found it necessary to fund development.

The SunOS 4.x code, which was almost donated to the BSD project only to be scuttled at the last minute, has the twin advantages of being purpose built for only two architectures and didn't need to scale to thousands of CPUs, and stopped evolving in the 90s. As such, it can maintain its architectural purity since it's not needed to grow and adapt since then. All that "growth" happened in Solaris. So it's also a bit unfair to compare that code which was developed over a decade to FreeBSD's.

But yea, DARPA was about networking in the Unix world. BSD was Unix at the time since AT&T didn't have the business structure to do the contracts, and BSD's 2BSD or 3BSD was little more than a slightly more evolved V7 research edition with some really cool user land features and a few more drivers for hardware BSD users had. The Mach VM came late to the game and was never the focus of the DARPA contracts.

For another view on how well CSRG integrated Mach into BSD, see NetBSD's uvm, a complete rewrite.