[HN Gopher] The QNX Demo Disk: a full xNix OS, with GUI and brow...
___________________________________________________________________
The QNX Demo Disk: a full xNix OS, with GUI and browser, on just 1
1.4MB floppy
Author : lproven
Score : 154 points
Date : 2022-10-07 16:40 UTC (6 hours ago)
(HTM) web link (qnx.puslapiai.lt)
(TXT) w3m dump (qnx.puslapiai.lt)
| helf wrote:
| I love how this gets rediscovered by people every few years :)
|
| I still have a floppy set somewhere. I loved it. I ran it in a
| 486 IBM all in one I had with a compatible NIC for a long time as
| a conversation piece and guest light surfing machine. Amazing how
| well it ran up till fairly recently when standards outstripped
| its browser too much
| duffyjp wrote:
| I still have the Pentium box I used to run it on. Was that
| really 20+ years ago? How did that happen... I should boot it
| up and see how well frogfind.com works.
| lproven wrote:
| I was there at the time. I just amuse myself digging up
| obscure, mostly-forgotten languages and OSes and posting them
| on HN to blow the kids' minds. :-D
| helf wrote:
| Doing the Lord's Work lol.
|
| I need to rebuild my Ccmp collection. I ended up selling or
| giving it all away due to having to move. _sniff_
|
| I ran a NeXTstation Turbo Color as my daily driver up till
| around 2010. Me and some friends ported over newer line and
| what not for openstep 4.2.
|
| 33mhz 040 with 128mb of 60ns EDO RAM, SCSI HDD. Amazing what
| you could do with adequate performance on that.
|
| Also ran a BeOS r5 system with massive amounts of hacks and
| updates for way longer than was really reasonable lol
| taviso wrote:
| I once made an fvwm config designed to look like QNX photon (this
| was early 2000s). I got dozens of emails about it from people who
| had found the screenshot and wanted to try it!
|
| Here is an old screenshot from ~2003:
| http://www.xwinman.org/screenshots/fvwm2-taviso.png
|
| All the panels and menus were all fwvm, it's highly configurable.
| I dunno, it kinda holds up!
| bluedino wrote:
| I remember being impressed by the Geoworks environment that was
| contained in America Online 1.0 (?) for DOS.
|
| So snappy and smooth compared to Windows 3.11 on the same 2MB
| 386.
| lproven wrote:
| Now FOSS:
|
| https://github.com/bluewaysw/pcgeos
| marcodiego wrote:
| Here the same, but done with linux:
| https://news.ycombinator.com/item?id=28515025
| lproven wrote:
| I suspect the functionality is rather less, but still, that is
| impressive.
| AceJohnny2 wrote:
| I have fond memories of QNX.
|
| We used QNX in my last company as the foundation for our router.
| It was a "tandem" HA system (at least one of our lead architects
| were formerly from Tandem, the company). It had 2x Control Plane
| (1 Active, 1 Standby) boards, and 3x Data Plane boards (2 Active,
| 1 Standby). QNX was an important part of our architecture.
|
| Some features I loved in QNX: process control across the network.
| I could control processes on any of the processors (running QNX)
| on any of the boards of the system. Launch a program on a
| different processor with just the appropriate command prefix
| (which I forget). Also, driver restart: by the nature of being a
| microkernel, drivers were "just another process", and if they
| crashed or hung I could just restart/kill the process. Also,
| tighter coupling between drivers and files under /dev, unlike
| whatever Linux is doing, especially for networking devices!
| AceJohnny2 wrote:
| While I'm at it, I want to write down the lifecycle of that
| company.
|
| The router served as a "security endpoint", meaning it could
| "terminate" (decode), thousands of IPSec connections. Thus it
| would serve as the "border router" for a network operator.
|
| The company's big hit was providing this product to NTT Docomo
| for its LTE infrastructure. NTT had the (turned out unique)
| architectural challenge where they controlled the base
| stations, the core network... _but not the backhaul_
| (connection between the base stations and core)! So all
| "their" traffic coming from their base-station was on leased
| network, so they needed to encrypt, hence the IPSec, and hence
| the need for a "router" that could receive all these
| connections and decode them to feed into their Core Network.
|
| I joined the company shortly after they scored that huge
| contract, when they were flush with money and looking to grow.
|
| NTT Docomo was a pioneer in LTE deployment, so our company
| tried to sell this operating model to the rest of the world...
| but no-one took it. Turns out most operators just own their
| backhaul, so didn't feel the need to encrypt, or at least have
| the same architecture as NTT.
|
| So our company tried for a while to adapt our router (really,
| network middle-box) for other emerging use-cases, but it was
| hard to get a grip both in emerging network architectures and
| against the incumbents (lol the number of times we had bugs
| with Cisco equipment which _we proved was Cisco 's fault_ but
| nope we just had to work around it).
|
| The company was eventually bought at fire sale price by one
| that did cheap Software-Defined Networking on commodity
| hardware. Our expensive router was discontinued.
|
| (Also, fuck Broadcom)
| zuminator wrote:
| You can kind of play around with QNX by going here:
|
| https://copy.sh/v86/?profile=qnx
|
| If you're on a Windows system, you may have to go to C:\Windows
| and temporarily rename the HelpPane.exe system application in
| order to stop it from hijacking the F1 keypress that QNX expects.
| varispeed wrote:
| Ages ago I had original QNX Demo Disk. I was impressed that they
| could fit so much on a floppy.
| lproven wrote:
| This is the original QNX Demo Disk. That's why I posted it. :-)
|
| Downloads here:
|
| https://winworldpc.com/product/qnx/144mb-demo
|
| Screenshots here:
|
| http://toastytech.com/guis/qnxdemo.html
| varispeed wrote:
| Oh the memories. Thank you!
| lproven wrote:
| :-)
|
| Glad you enjoyed it!
| yamtaddle wrote:
| In high school I'd extensively used Windows from 3.1-98se, Linux
| (Debian, Mandrake), and dabbled a ton with BeOS and QNX (hampered
| from making either my main OS only by software support).
|
| BeOS and QNX (Photon) were my two favorite desktop experiences of
| the bunch. They were _so_ much better than the others--yes, very
| much including Linux. And BeOS was even _at least_ as "friendly"
| and polished as Windows was at the time.
|
| Here we are and neither's on the desktop and their closest modern
| equivalent that _is_ prevalent is probably macOS, which is...
| fine as a consolation prize, I guess, but I still wish I could
| see a world where either of those made a real splash in the
| desktop world (I know QNX wasn 't really trying to, but man, it
| performed _so_ much better as a desktop OS than Windows or
| Linux).
| MonkeyClub wrote:
| > yes, very much including Linux
|
| That makes perfect sense for that period, the Linux desktop
| experience was, well, not _atrocious_ , but definitely left
| things to be desired.
| yamtaddle wrote:
| It wasn't just that: it was much worse at handling multi-
| tasking and keeping the UI responsive, than either of those.
| But so was Windows, to be fair.
|
| I'm pretty sure it's not much better now but hardware's
| powerful enough to make that less-painful.
| blablabla123 wrote:
| Well a lot had to be configured especially for non-standard
| hardware. But generally it was far more stable and snappy
| than Windows. Also constant reinstalling and rebooting wasn't
| necessary. The QNX demo was nice but to be fair you couldn't
| do much with it unless you wrote your own software I guess...
| agumonkey wrote:
| For quite a while, watching 1997 BeOS demo brought tears to my
| eyes. It was so sweetly designed in every way. Maybe except the
| regular multithreading issues. Even the source code, at least
| the small bit I saw [0], was utterly brilliant.
|
| [0] part of the FS query language, so you could select/filter
| through file metadata for free.
| aliqot wrote:
| George Washington once said "The best time to become a Haiku
| contributor is yesterday. The second best time to become a
| Haiku contributor is today."
|
| You know, I think he was right.
| mdaniel wrote:
| Do you have experience running Haiku and if so what's the
| current hardware story like? IOW, could a reasonably
| determined person get it running as a daily driver on a
| modern laptop?
| dleslie wrote:
| I've used it just fine on a number of older laptops.
|
| The rule of thumb is if FreeBSD supports it then Haiku
| will, as a number of important drivers were ported from
| FreeBSD.
| basementcat wrote:
| Reminds me of tomsrtbt
|
| http://www.toms.net/rb/
| lproven wrote:
| I used that back when it was current. It was an impressive bit
| of kit, but TBH, what QNX did on a single floppy made -- and
| more than ever still makes -- Linux look very _very_ bloated.
|
| Tom's Root-and-Boot just about got you a working command line
| on one floppy.
|
| For comparison, using FOSS equivalents, QNX got that, plus all
| of X.org, plus Firefox, onto one floppy.
|
| And if you used the status bar to find your IP address, and
| went to another machine and put that in a browser's URL box,
| you found that _as well as_ all that, it was also a live
| webserver, serving live performance stats to the Internet.
|
| So, kernel, busybox, X server, desktop, web browser AND WEB
| SERVER on one (very heavily compressed) floppy.
|
| Sadly, the genius who built it died young. Cancer. Fsck cancer.
|
| https://openqnx.com/node/298
| bumblebritches5 wrote:
| FL410 wrote:
| Is there any good way to play with QNX on a workstation/VM to get
| familiar with it?
| IncRnd wrote:
| You can go to qnx.com and click the "FREE 30-DAY TRIAL" button
| to download.
| agumonkey wrote:
| I wonder what could be improved with todays knowledge while
| keeping it under 2MB.
| CyberDildonics wrote:
| Why would you keep it under 2MB?
| [deleted]
| flenserboy wrote:
| For one, to put retro systems to great use. For another, to
| keep as much cruft/unnecessary bells & whistles from being
| present as possible. Just because the space is there doesn't
| mean it has to be used.
| CyberDildonics wrote:
| What specific retro systems have a 2MB limit?
| bombcar wrote:
| 2.88 for Extra High Density - pretty rare outside of
| Japan iirc.
|
| http://209.68.14.80/ref/fdd/formatKB2880-c.html
| tssva wrote:
| 3COM NETBuilder II routers had 2.88MB floppies. I once
| spent an entire day tracking down a local supplier with a
| 2.88MB floppy drive and floppies in stock, so we could
| upgrade the software on a few routers being affected by a
| Vines/IP bug.
| Findecanor wrote:
| A "1.44 MB floppy" has that capacity for _files_ when
| formatted with the FAT file system from MS-DOS. The
| _unformatted_ capacity is actually closer to 2 MB but a
| proper file system has disk-space overhead for metadata
| and check sums.
|
| You could have a file system with much less disk-space
| overhead than FAT, and there are many out there. A demo
| disk would typically be read-only, and in particular
| there are some read-only file-systems that are really
| space-optimised,
|
| Another option would be to treat the disk sectors as a
| single compressed file which the bootloader decompresses
| into a RAM-disk image which the OS then boots from, but
| that would require a bit more than 2 MB of RAM.
| flenserboy wrote:
| It's not 2 mb in particular; honestly, I'd say 4 mb is
| the practical starting limit once you're into 16/32 bit
| CPUs -- a Mac Plus / Classic would go to 4, for instance,
| and every speck of memory free under that made a
| difference in performance. 2 is a nice limit for total
| system size, as it allows for (as can be seen in QNX) a
| very capable, flexible OS, while leaving headroom for
| programs to run.
| agumonkey wrote:
| I restricted myself, I wanted to say 1MB.
|
| I can't help but to find the min-max of everything. Well at
| least fantasize about what could be.
| lproven wrote:
| I don't think there is anything today that comes close to
| equalling it, and very definitely nothing that can improve on
| it.
| agumonkey wrote:
| Even without knowing it, I'm sure it's far from perfect and
| may enjoy a few tweaks here and there.
| lproven wrote:
| The QNX demo, from 25Y ago? Oh, yes. The miracle is that it
| worked at all, not that it's very complete.
|
| The full OS was a ~100MB download:
|
| https://archive.org/details/qnx-neutrino-rtos-x86-runtime-
| ki...
| [deleted]
| senko wrote:
| QNX was (is?) such a great OS. This was my first encounter with a
| microkernel based OS that actually worked, and well.
|
| If I remember correctly, they were moving towards OSS at some
| point (or at least toward opening it to a wider community). I had
| it installed in a VM, did some packaging of open source stuff to
| QNX (bash and irssi, I think), was fun.
|
| At some point they focused on industry/enterprise and that was
| the end of that for me, but led me to discover L4 later on, and I
| still have a soft spot for microkernels.
| lproven wrote:
| Indeed. I submitted this partly because I get so very tired of
| Linux zealots claiming that the HURD "proves" that microkernels
| can't work, or that Minix 3 shows that, OK, they _can_ work,
| but they 're crippled.
| flobosg wrote:
| (2008)
| snvzz wrote:
| Closest thing we have today (microkernel multiserver OS with a
| desktop) is Genode[0].
|
| 0. https://www.genode.org
| forgotpwd16 wrote:
| Why Genode over Hurd and Minix considering those are also Unix-
| like same as QNX (which still exists btw)?
| snvzz wrote:
| Hurd is still stuck using Mach, unfortunately. The issues
| from the Hurd critique paper haven't been addressed either.
|
| Minix, as cool as it is, does not have a maintainer, and
| hasn't seen activity for years. There's a lot of out-of-tree
| work that's just sitting there. It is a shame, because it is
| a really cool system architecture.
|
| Genode is a modern, proper multiserver OS that has a good
| architecture, frequent releases and quite solid overall
| direction. And it has POSIX compatibility, so a lot of
| software runs, including modern web browser engines.
| sloppycee wrote:
| I remember buying a magazine with this floppy disk attached, blew
| my mind back then. Great marketing from QNX at the time.
|
| How they did it:
| http://web.archive.org/web/20011106140711/http://www.qnx.com...
| MonkeyClub wrote:
| That bit of web archaeology was very helpful, much appreciated!
| myself248 wrote:
| This needs a [1999] or a [2008] in the title. (Original release,
| modification date.)
| Animats wrote:
| Around 2003 there was a demo CD. This brings up a nice system
| with a GUI and browser.[1][2]
|
| QNX started closed source with a free version, went open source,
| went closed source, went open source after an acquisition, and
| then went closed source when RIM (Blackberry) acquired them. Then
| RIM dropped the GUI to focus on whatever it is Blackberry still
| does.
|
| As I once told one of their sales execs, "quit worrying about
| people pirating your system and worry about people ignoring it".
| During the first free version period, people were porting open
| source software such as GCC, Eclipse, and browsers to QNX. With
| all the licensing changes, the open source community got fed up
| with QNX and stopped making versions for it.
|
| We used QNX for our DARPA Grand Challenge vehicle. All our
| desktop machines ran QNX, and we could run the real-time program
| on them as well as the vehicle. The real time features were so
| good that we could have the entire real-time vehicle system
| running, at hard real time priority, and run a browser or compile
| without missing a time check.
|
| [1] http://toastytech.com/guis/qnx621.html
|
| [2] https://archive.org/details/qnx_momentics_6.2.1
| [deleted]
| GekkePrutser wrote:
| It is a shame yes. There is no current desktop RTOS at all
| afaik.
|
| I know an RTOS does not guarantee smooth desktop performance
| but I just would love to try it out to compare.
| MisterTea wrote:
| > There is no current desktop RTOS at all afaik.
|
| Plan 9 has deadline scheduling out-of-the-box for real-time.
| It runs on x86-64, 386, Arm v7 and AArch64 (And more):
| http://doc.cat-v.org/plan_9/real_time/ (mostly obsolete but
| describes the motivation and implementation)
|
| See proc(3) man page for deadline scheduling (towards the
| bottom real-time i described): http://man.9front.org/3/proc
| (I always recommend the actively maintained 9front fork)
|
| The best part is you don't need special patches or libraries.
| You simply configure the process/group by writing messages to
| the procs ctl file using the command line, a script, or from
| within your program.
| GekkePrutser wrote:
| Interesting. Is that a desktop OS though? I'll have a play
| with it soon. Thanks for the heads-up.
| [deleted]
| PaulDavisThe1st wrote:
| Linux with a kernel built with RT_PREEMPT ?
| jcelerier wrote:
| this demo cd is my benchmark of how a computer is supposed to
| feel like. if UI interactions are in any way slower than what
| this provides (on, say, 2008-era hardware), it's basically poop
| ducktective wrote:
| 1- What's the FOSS alternative that is as good as QNX nowadays?
| FreeRTOS, NuttX, Zephyr etc are used for MCUs not general
| purpose computation AFAIK
|
| 2- What tech stack (language) you used for those challenges?
|
| 3- Your idea on Lisp (for these applications)?
| beagle3 wrote:
| QNX was a true microkernel architecture that worked, and
| worked well. The basic building block was called IIRC
| Send/Receive/Reply: Every "system" call looked like a regular
| function call, but would "Send" a message to a different
| process, and (usually) suspend the caller; The other process
| would "Receive", do whatever was requested, and "Reply", at
| which point control went back (with the response) to the
| calling process. IIRC it was also possibly to do async calls,
| but in that case the other process would call ("Send") the
| response back, rather than "Reply". I might be confusing this
| with another system though.
|
| device drivers weren't privileged - they were just another
| process you called into, and could be restarted in the case
| of a fault (rather than kernel panic or blue screen).
|
| A system that doesn't provide this is not an alternative to
| QNX; It's just another operating system (which are all, in
| some ways, alternative to each other and thus QNX, but ...)
| snvzz wrote:
| >What's the FOSS alternative that is as good as QNX nowadays?
| FreeRTOS, NuttX, Zephyr etc are used for MCUs not general
| purpose computation AFAIK
|
| SeL4 with CAmkES, or Genode.
| jonny_eh wrote:
| How about WindRiver Linux?
| https://www.windriver.com/products/linux
| snvzz wrote:
| Excluded, because it's Linux, with all its issues.
|
| Huge TCB being the main one.
| mise_en_place wrote:
| Dunno if it's an alternative but Linux had RT_PREEMPT and you
| can build a kernel that's fully preemptable.
| PaulDavisThe1st wrote:
| It's good, but ... there's "fully preemptable" and there's
| "fully preemptable". QNX is one of those, RT_PREEMPT
| kernels are the other.
| [deleted]
| Animats wrote:
| 1. Nothing. Someone was writing a QNX-type kernel in Rust.
| What happened to that? There's L4, but it's too low-level.
| It's more of a hypervisor. People usually run another OS,
| usually a stripped-down Linux, on top of L4. QNX offers a
| POSIX API, so you can run applications directly.
|
| 2. C++. Here's the source code. [1]
|
| 3. No.
|
| [1] https://github.com/John-Nagle/Overbot/
| snvzz wrote:
| >People usually run another OS, usually a stripped-down
| Linux, on top of L4.
|
| Look into Genode.
| MonkeyClub wrote:
| > 3. No.
|
| Why? No hope for real RT? (Or otherwise more generally due
| to the GC?)
| wakeupcall wrote:
| I was using it at that time as my main desktop OS. I ported and
| wrote several tools of it. The gui itself was simple, nice to
| use and to program for.
|
| Driver support wasn't extensive, but the available drivers were
| working fine. With qnxstart.com at the time and all the oss
| tooling I didn't have anything missing.
|
| I was in love in a way that only beos gave me before.
|
| This was the last commercial/closed-source OS I ever used in no
| small part due to the license change.
| wslh wrote:
| SqueakNOS was a project to build a complete operating system via
| Squeak. In this way you can quickly hack it. There is a great
| page about these initiatives here:
| http://wiki.squeak.org/squeak/5727
|
| Prior to SqueakNOS we implemented this:
| http://swain.webframe.org/squeak/floppy/ (using Linux and
| modifying Squeak to work with SVGALib instead of X) in just 900mb
| inspired in this QNX Demo Disk.
| lproven wrote:
| I think you meant 900 _kB_ not _MB_.
|
| TBH, even now, 900 meg isn't very impressive. ;-)
| h2odragon wrote:
| QNX always sounded interesting, until one saw just how much
| effort the company was going to to prevent people from actually
| using it. Vaguely recall a story about someone trying to buy 50
| licenses from them for a prototype kiosk thing but they wanted
| something like 1,000 minimum for a reseller account; and that
| killed the project.
| gbin wrote:
| Now it is basically a company just as predatory as Oracle. It
| is just sad.
| FpUser wrote:
| I did some demo projects with QNX in the 90s and I thought it
| was the best OS ever. Unfortunately trying to license it for
| use with our company products was a nightmare and after a while
| I just said the fuck with it.
| panick21_ wrote:
| Being proprietary killed such an huge large amount of great
| technology in the 90 and early 2000s.
| [deleted]
| [deleted]
| danuker wrote:
| It also made a large amount of money for those who knew how
| to walk the fine line between profitability and adoption.
| [deleted]
| userbinator wrote:
| Somewhat similar to MenuetOS:
| https://news.ycombinator.com/item?id=31290789
| sedatk wrote:
| "xNix", really? I thought we'd settled on using Unix as a generic
| name for all Unix-like operating systems.
| lproven wrote:
| Unix is very much not generic, and is (r), (tm) and (c) to the
| Open Group.
|
| Novell donated the trademark to them when it bought Bell Labs
| in 1993.
|
| 1 Linux is currently a registered UNIX(tm): Huawei EulerOS
|
| https://www.opengroup.org/openbrand/register/brand3622.htm
|
| Formerly Inspur K-UX was, too:
|
| https://www.opengroup.org/openbrand/register/brand3617.htm
|
| You can view the list here:
|
| https://www.opengroup.org/openbrand/register/
|
| Apple macOS, IBM AIX, HP-UX, the 2 old SCO OSes, and -- oddly
| -- IBM z/OS.
|
| But no, UNIX is very much not generic, and I generally find
| Linux people get very upset when I call it a UNIX. Which it is,
| but even 29 years on, people still think that "Unix" means
| "based on AT&T code".
| jakemauer wrote:
| This brings back memories. I remember marveling at this with my
| best friend when it came out. I got into BeOS around the same
| time.
|
| I used to use those ad-supported dial up ISP's and found one that
| worked with a standard PPP dialer so I didn't need their
| software. I remember carrying around the QNX disk and login info
| so I could get online with basically any computer.
| grendelt wrote:
| I got into these back in the late 90s because of the hackable
| 3Com Audrey "internet appliance" (remember _that_ term?)
|
| I never hear about QNX anymore, so this is def a blast from the
| past.
| Scoundreller wrote:
| > I used to use those ad-supported dial up ISP's and found one
| that worked with a standard PPP dialer so I didn't need their
| software
|
| Juno? Netzero?
| basementcat wrote:
| A touching tribute to the creator of the demo.
| https://openqnx.com/node/298
| haunter wrote:
| Something similar: https://pupngo.dk/xwinflpy/xwoaf_rebuild.html
|
| The 4.0 version works perfectly, 2.2.26 kernel though which was
| released in 1999
|
| Discussed before here
| https://news.ycombinator.com/item?id=28515025
| tibbydudeza wrote:
| I used to code a system that ran QNX 4 - it was great - not quite
| Linux but fast and responsive.
|
| The only issue was the file system and driver support - if it
| crashed there was not good recovery tools.
| oidar wrote:
| Back when QNX was distributed on floppy, my work locked down
| their computers so that I couldn't dial out to the internet. So I
| booted up the QNX off the floppy and was browsing within minutes.
| My boss walked in on me browsing the internet and I nearly got
| fired over it. He was worried because he thought he might get in
| trouble for it. Once I explained how it worked, he was less
| worried.
|
| It was amazing that they could fit a semi-functional browser on a
| floppy.
| bedast wrote:
| A while back, Ford used QNX for their infotainment. Not sure if
| they still do.
| svorakang wrote:
| Other automotive OEMs are using it also for other use cases,
| such as compute nodes doing plenty of crunching mixed with
| real-time control.
| mdaniel wrote:
| Must be "old OS week" seeing this and the recent OS/2 post:
| https://news.ycombinator.com/item?id=33107065
| glonq wrote:
| I remember attending the Embedded Systems Conference frequently
| during the late 90s and early 2000s. QNX always had a strong
| presence there.
|
| It always seemed too "big" (too capable, too complex, too pricey)
| for my projects so I never took it for a spin.
| whartung wrote:
| Ok, so skipping the kernel bit, where can I download the source
| to a GUI and a browser that runs off of 1.44MB binary?
|
| Why can't we run one of those on a generic Linux kernel?
| robertheadley wrote:
| This is one of my favorite things in computing.
| ncmncm wrote:
| I have long wondered... How was it possible to construct this? Is
| it just extreme self-discipline, omitting everything not strictly
| essential? Or is there an underlying formalism that makes a very
| small amount of code do a very great deal?
|
| It seems like the only way is for most of the code in the system
| to contribute to a multitude of different uses... Maybe an
| interpreter with especially powerful, composable operations and a
| very compact representation, and most of the system coded to that
| interpreter? (That got Apollo 11 from orbit to the moon and
| back.)
| Animats wrote:
| > I have long wondered... How was it possible to construct
| this? Is it just extreme self-discipline, omitting everything
| not strictly essential? Or is there an underlying formalism
| that makes a very small amount of code do a very great deal?
|
| Two really good designers, Gorden Bell and Dan Dodge.
|
| Here are the key design decisions:
|
| - All the kernel does is manage memory, dispatch processes,
| handle interrupts and timers, and pass messages from process to
| process. No device drivers, no file systems. Everything else is
| in user space. The kernel is small (about 60KB of code in some
| versions), very well written, and rarely changed. It's so
| small, so heavily used, and so rarely changed that it reached
| an essentially bug-free state.
|
| - All non-preemptable kernel operations have fixed upper bounds
| on how long they can take, worst case. That upper bound is in
| microseconds. That's why real time works.
|
| - Message passing and CPU scheduling are integrated and very
| efficient. In particular, the case of sending a message to
| another process and getting a reply message is not only low
| overhead, but does not involve losing your turn for the CPU.
| The two systems are designed together. So calling another
| process can be used almost like a subroutine call. Most
| interprocess message systems botch this, and calling another
| process means two or more trips through the CPU scheduler and
| may cost you your CPU quantum. Which means a "microservice
| architecture" runs too slowly. Which means people work around
| making interprocess calls, putting too much in one process.
|
| - There is no swapping or paging. This is essential for real-
| time. It simplifies other things. Message passing is copying
| user space to user space, and can't page fault. The destination
| area has to be in memory. So there is no need for kernel data
| buffers.
|
| - At boot time, the boot program loads the kernel, a user space
| utility process called "proc", plus any user space drivers or
| programs you want at startup. That's how it gets started with
| no device drivers in the kernel. More drivers can be loaded
| later, if desired. Having a file system or disk is optional.
| The minimal configuration is a CPU, boot ROM with the software,
| and memory. That's a common configuration for small embedded
| systems.
|
| - File systems, networking, and drivers are all user programs.
| Some have the privilege of writing to device space. The kernel
| turns interrupts into interprocess messages.
|
| It's a nice architecture for small and medium real-time systems
| that have to Just Work.
| Kenji wrote:
| mwcampbell wrote:
| > So calling another process can be used almost like a
| subroutine call.
|
| Any numbers on the overhead of a message send/reply round
| trip compared to a subroutine call? I always assumed it was
| just axiomatic that the difference in latency between those
| two options would be orders of magnitude.
| SirLJ wrote:
| I had one of those in another life :-)
___________________________________________________________________
(page generated 2022-10-07 23:00 UTC)