Hacker News new | past | comments | ask | show | jobs | submit login

Why would they do that? Mach allows for some cool stuff, like kernel extensions being isolated.



Because building and maintaining a competitive OS is a huge effort, and FreeBSD has lots of cool stuff which they can't use...


It's a huge effort worth that seems to be paying off quite handily. XNU seems like a competitive edge over the monolith FreeBSD, as far as desktop and mobile OS is concerned. FreeBSD has plenty of cool stuff, but in a completely different domain.


> XNU seems like a competitive edge over the monolith FreeBSD, as far as desktop and mobile OS is concerned.

This seems a bit delusional. I don't think it's controversial to say that Apple's biggest differentiators exist at higher levels than kernel space. I'd go so far as to say that anyone who claims that Apple's success is rooted in XNU and that the same could not have been done with Linux or *BSD at the lowest layer and all other pieces being equal does not understand what a kernel is.


I don't know anyone saying Apple's success is rooted in any one thing. However, IOKit is very important, "common code for device drivers, this framework also provides power management, driver stacking, automatic configuration, and dynamic loading of drivers". Even if the entire OSX could have been implemented on top of Linux and FreeBSD reusing those kernels (and it does reuse FreeBSD for low level POSIX apis!), how productive would that have been? I honestly don't know, but I choose to trust what I read from the original developers.


Those other kernels have driver frameworks too. And if they find them inadequate for some reason, they are of course able to make modifications.

But this is not a suggestion for them to scrap it, necessarily. As I said in some other comments on this thread, I think the real reason is that they had people that knew their existing kernel well, and don't see a need to replace it.


FreeBSD does not have Mach ports (the IPC system). There is a ton of what OSX does that needs this.

See my comment up thread about Jordan Hubbard's plans.


Needs mach ports, meaning can't be simulated with Unix domain sockets or something else? I doubt it.


I was assuming they would port iokit as part of it...


> XNU seems like a competitive edge over the monolith FreeBSD,

xnu is also a monolithic kernel, just with some nice message-passing primitives. Think Mach 2.5.


Darwin + Aqua also has lots of cool stuff which *BSD can't use. I can see a competitive advantage in making sure that remains the case.


xnu kexts are not isolated and probably never will be, although IOKit exposes some things to userspace.


They're isolated enough that drivers can crash and just be reloaded, without a kernel panic.


No, they are not. A crash in a kext causes a kernel panic.


You are right. An actual crash in kext causes kernel panic. I think I read that this is was possible, but I can't find how, and when, right now. The common thing that I'm thinking of is just voluntary error (exception) handling in kexts and reloading of kext on their own. There is some isolation and benefit to it.

Edit: ok, I just figured out my source of confusion. IOKit allows userspace drivers, which can crash without resulting in panic.


IOKit allows communication between kexts and userland. You could call that "userland drivers", but it's not like you can write only userland code to implement a driver.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: