tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Possibility of basing a QNX-like OS on NetBSD?



On Sat, May 25, 2024 at 07:40:39PM -0600, Andrew Warkentin wrote:
 > > I think the question you should be asking is what your goal is -- are
 > > you using seL4 because you specifically want to leverage seL4's
 > > properties? If so, launching off in another direction seems like the
 > > wrong move. If not, there are other L4-style microkernels you can use
 > > that don't have as many restrictions as seL4, and there's a largish
 > > community of advocates that will each be eager to help you decide to
 > > use theirs.
 > 
 > AFAIK the only other active L4-like kernels are NOVA and Fiasco.OC,

Barrelfish? Also, compared to the cost of the rest of the system,
dusting off a microkernel that's been on the shelf a bit is cheap.
But IDK, I don't follow these in any detail.

 > My OS is going to be multi-server, although it will mostly have a
 > process-per-subsystem architecture like QNX does, and not a
 > process-per-component architecture like Genode or L4Re. Protection
 > domains correspond to subsystems more often than they do to
 > components, so there's not much point in splitting up components in a
 > lot of cases.

Well, that depends. The whole premise of a microkernel is that you
gain something by being in a separate address space and that it makes
sense to split up the (traditionally unitary) kernel protection domain
to gain that something. How finely you split it seems like a matter of
taste. (Or, sometimes, religious doctrine...)

 > > The primary reason the world's gradually moved from that model of
 > > threads to a model where threads are second-class within processes
 > > is... design stupidity in pthreads. If you want to support pthreads,
 > > especially if you have any concerns about it being fast, don't go in
 > > this direction.
 > 
 > I don't think I've seen any Unix-like OS that uses the thread model
 > I'm planning to use. They pretty much all either use a Plan
 > 9/Linux-like rfork()/clone() "threads are processes sharing state"
 > model, or a Mach-like "processes consist of state and threads" model,
 > rather than a "state is independent of processes and explicitly bound
 > to specific threads" model. The model I'm planning to use is a close
 > match to that of seL4, where capability spaces and virtual address
 > spaces exist independently of each other and threads.

I don't see the difference between what you're describing and the
rfork/clone model. But in any event, the problems with pthreads
remain; it's difficult to implement the pthreads behavior of
fork/exec/wait in a model where threads aren't tied to processes.

 > >  > Another thing that I'm not sure about is the real-time performance. In
 > >  > addition to desktop and server use, embedded systems with hard
 > >  > real-time constraints are also an important use case for this system.
 > >
 > > In that case you want to stay a long way away from anything that looks
 > > like Unix.
 >
 > QNX is Unix-like and has reasonable performance for real-time systems,
 > although of course it is quite different from conventional Unix in its
 > architecture.

It only looks like Unix from the outside, and not all that much even
then...

-- 
David A. Holland
dholland%netbsd.org@localhost


Home | Main Index | Thread Index | Old Index