The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: Andrew Warkentin <andreww591@gmail.com>
To: TUHS main list <tuhs@minnie.tuhs.org>
Subject: Re: [TUHS] Macs and future unix derivatives
Date: Mon, 8 Feb 2021 22:10:05 -0700	[thread overview]
Message-ID: <CAD-qYGrbFhrjtWgAxRxMBCtV812zM38zAphyaE-+1ehhT3795g@mail.gmail.com> (raw)
In-Reply-To: <f5977ed8-b5ac-b626-a5cf-ec18b1778f91@gmail.com>

On 2/8/21, Will Senn <will.senn@gmail.com> wrote:
>
> My thought for the day and question for the group is... It seems that
> the options for a free operating system (free as in freedom) are
> becoming ever more limited - Microsoft, this week, announced that their
> Edge update will remove Edge Legacy and IE while doing the update -
> nuts; Mac's desktop is turning into IOS - ew, ick; and Linux is wild
> west meets dictatorship and major corporations are moving in to set
> their direction (Microsoft, Oracle, IBM, etc.). FreeBSD we've beat to
> death over the last couple of weeks, so I'll leave it out of the mix for
> now. What in our unix past speaks to the current circumstance and what
> do those of you who lived those events see as possibilities for the next
> revolution - and, will unix be part of it?
>

Yes, those are almost exactly my thoughts on the current state of
OSes. I'm hoping that I can change it by writing my own OS
<https://gitlab.com/uxrt/>, because I don't see anyone else making
anything that I consider to be a particularly good effort to solve
those issues. However, it's still anyone's guess as to whether I will
succeed. I'm trying to give it every chance of success that I can
though by using existing code wherever possible and focusing on
compatibility with Linux (or at least I will be once I get to that
point).

BTW, I welcome any contributions to UX/RT. I currently am still only
working on the allocation subsystem (it's a bit trickier under seL4
than it would be on bare metal due to having to manage capabilities as
well as memory), but I think I am pretty close to being able to move
on.

>
> And a bonus question, why, oh why, can't we have a contained kernel that
> provides minimal functionality (dare I say microkernel), that is
> securable, and layers above it that other stuff (everything else) can
> run on with auditing and suchlike for traceability?
>

A lot of people still seem to believe that microkernels are inherently
slow, even though fast microkernels (specifically QNX) predate the
slow ones by several years. Also, it seems as if much of the academic
microkernel community thinks that there's a need to abandon Unix-like
architecture entirely and relegate Unix programs to some kind of
"penalty box" compatibility layer, but I don't see any reason why that
is the case. Certainly there are a lot of old Unix features that could
be either reimplemented in terms of something more modern or just
dropped entirely where doing so wouldn't break compatibility, but I
still think it's possible to write a modern microkernel-native
Unix-like OS that does most of what the various proposed or existing
incompatible OSes do.

>
> I can answer the microkernel question I think.  It's discipline.
> The only microkernel I ever liked was QNX and I liked it because it was
> a MICROkernel.  The entire kernel easily fit in a 4K instruction cache.
>
> The only way that worked was discipline.  There were 3 guys who could
> touch the kernel, one of them, Dan Hildebrandt, was sort of a friend
> of mine, we could, and did, have conversations about the benefits of a
> monokernel vs a microkernel.  He agreed with me that QNX only worked
> because those 3 guys were really careful about what went into the
> kernel.  There was none of this "Oh, I measured performance and it is
> only 1.5% slower now" nonsense, that's death by a hundred paper cuts.
> Instead, every change came with before and after cache miss counts
> under a benchmark.  Stuff that increased the cache misses was heavily
> frowned upon.
>
> Most teams don't have that sort of discipline.  They say they do,
> they think they do, but when marketing says we have to do $WHATEVER,
> it goes in.
>

I still don't get why QNX hasn't had more influence on anything else
even though it's been fairly successful commercially. If i am
successful, UX/RT will only be the second usable non-QNX OS with
significant QNX influence that I am aware of (after VSTa; there have
been a couple other attempts at free QNX-like systems that I am aware
of but they haven't really produced anything that could be considered
complete).

seL4 is fairly similar to QNX's kernel both in terms of architecture
and design philosophy. That's why I'm using it in UX/RT. I may end up
having to fork it at some point, but I am still going to keep to a
strict policy of not adding something to the kernel unless there is no
other way to reasonably implement it. For the sake of extensibility
and security I'm also going to have a strict policy against adding
non-file-based primitives of any kind, which is something that QNX
hasn't done (no other OS has AFAICT, not even Plan 9, since it has
anonymous memory, whereas UX/RT will use memory-mapped files in a
tmpfs instead).

On 2/8/21, Dan Stromberg <drsalists@gmail.com> wrote:
>
> But I also have high hopes for Redox OS, and may switch someday:
> https://en.wikipedia.org/wiki/Redox_(operating_system)
> https://www.theregister.com/2019/11/29/after_four_years_rusty_os_nearly_selfhosting/
>

The biggest problem I see with Redox is that they insist on writing
everything from scratch, whereas with UX/RT I am going to use existing
code wherever it is reasonable (this includes using the LKL project to
get access to basically the full range of Linux device drivers,
filesystems, and network protocols). Also, their VFS architecture is a
bit questionable IMO. Otherwise I might have been inclined to just
contribute to Redox (UX/RT will use quite a bit of Rust, but it won't
try to be a "Rust OS" like Redox is). I may end up incorporating more
code from Redox though (I'm already going to use their heap allocator
but will enhance it with dynamic resizing of the heap).

In addition they claim it to be a microkernel when it is actually a
Plan 9-style hybrid, since the kernel includes a bunch of Unix system
calls as primitives, disqualifying it from being a microkernel. This
is unlike QNX where the process server that implements the core of the
Unix API is built into the kernel but accessed entirely through IPC
and not through its own system calls (the UX/RT process server will be
similar in scope to that of QNX and will similarly lack any kind of
multi-personality infrastructure and be built alongside the kernel,
but will be a separate binary).

  parent reply	other threads:[~2021-02-09  5:10 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-08 18:11 Will Senn
2021-02-08 18:21 ` Larry McVoy
2021-02-08 18:32   ` Justin Coffey
2021-02-08 18:39     ` Larry McVoy
2021-02-09  1:59     ` Theodore Ts'o
2021-02-12 13:48     ` Angel M Alganza
2021-02-08 18:42 ` Henry Bent
2021-02-09  6:55   ` John Gilmore
2021-02-09  7:05     ` Michael Huff
2021-02-16 22:55       ` Greg A. Woods
2021-02-09  7:17     ` Will Senn
2021-02-09 19:02     ` Theodore Ts'o
2021-02-10  1:34       ` Larry McVoy
2021-02-09 22:59     ` Wesley Parish
2021-02-08 18:43 ` Dan Stromberg
2021-02-12 13:39   ` Angel M Alganza
2021-02-08 18:45 ` Thomas Paulsen
2021-02-25 22:45   ` Dave Horsfall
2021-02-08 20:07 ` Al Kossow
2021-02-09  5:10 ` Andrew Warkentin [this message]
2021-02-09  7:42   ` [TUHS] QNX John Gilmore
2021-02-09 11:03     ` Robert Brockway
2021-02-09 18:24       ` Nemo Nusquam
2021-02-09 20:18         ` Jose R Valverde via TUHS
2021-02-09 14:05     ` Larry McVoy
2021-02-09  3:58 [TUHS] Macs and future unix derivatives M Douglas McIlroy
2021-02-09  4:07 ` Adam Thornton
2021-02-09  4:13 ` Will Senn
2021-02-09  5:21 ` Andrew Warkentin
2021-02-09  5:29 ` Theodore Ts'o
2021-02-09  6:37   ` Andrew Warkentin
2021-02-09 16:13     ` Theodore Ts'o
2021-02-09 17:31       ` John Cowan
2021-02-09 19:06         ` Chet Ramey
2021-02-10  2:31       ` Andrew Warkentin
2021-02-09 19:00   ` Jon Steinhart
2021-02-10  1:41     ` Larry McVoy
2021-02-10  1:52       ` George Michaelson
2021-02-10  2:24         ` Larry McVoy
2021-02-10  2:44           ` Dan Cross
2021-02-10  3:10             ` Larry McVoy
2021-02-10 20:03             ` Kevin Bowling
2021-02-10  2:57         ` Warner Losh
2021-02-10  2:56       ` Warner Losh
2021-02-10  3:02         ` Larry McVoy
2021-02-10  3:53       ` Andrew Warkentin
2021-02-09 11:34 ` Thomas Paulsen
2021-02-09 18:29 ` Nemo Nusquam
2021-02-09  8:30 Bakul Shah
2021-02-09 12:22 M Douglas McIlroy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAD-qYGrbFhrjtWgAxRxMBCtV812zM38zAphyaE-+1ehhT3795g@mail.gmail.com \
    --to=andreww591@gmail.com \
    --cc=tuhs@minnie.tuhs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).