From mboxrd@z Thu Jan 1 00:00:00 1970 MIME-Version: 1.0 In-Reply-To: <696697023ebf5da42e6983939dacfacb@quanstro.net> References: <3e1162e60909220739t61cff0e3t8eea92b6e8d26641@mail.gmail.com> <696697023ebf5da42e6983939dacfacb@quanstro.net> Date: Tue, 22 Sep 2009 08:04:42 -0700 Message-ID: <3e1162e60909220804m3a3a26b9pa8fca2061f37d893@mail.gmail.com> From: David Leimbach To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> Content-Type: multipart/alternative; boundary=000e0cd61a3404e4b404742beb6c Subject: Re: [9fans] linux stats in last year from linuxcon Topicbox-Message-UUID: 7519e864-ead5-11e9-9d60-3106f5b1d025 --000e0cd61a3404e4b404742beb6c Content-Type: text/plain; charset=ISO-8859-1 On Tue, Sep 22, 2009 at 7:47 AM, erik quanstrom wrote: > > Are these systems more complex to reason about though? Probably :-). > But > > when you've only got 7 system calls (per the original L4 specifications > I've > > read over) you don't really have a lot to debug. Just gotta make sure > you > > chose the correct primitives to compose all the software you need to > write > > on the system. > > that functionality doesn't disappear, does it? where ever it goes, > the bugs will follow. > That's absolutely correct. However, if you can test a piece in isolation from other noise, you can rule out certain areas as being suspect in the process of diagnosing issues. > > if the argument is that it's easier to debug if it's not in the kernel, > i think that argument requires some proof. > > The argument is that if something is logically separable from a larger system, and independently testable, then once you've verified it is correct, and that the "glue" is correct that is used to compose a larger system, that you can more readily decide where to look for problem sources. This is actually the basis of pure functional programming. Pure functions can not deviate in the values they produce because they have a property called referential transparency. Not all code can be written this way obviously, but if you can build a small system, test that it works, then compose with another small system to do more processing, you can "glue" those things together to build something more complex. Think Unix/Plan 9 pipelines of small commands and you get the point. I believe this concept took a little mind-bending to get to as well, but seems almost obvious now. You can think of sort, uniq, and grep as pure functional routines, which you run some I/O through. If the inputs are the same, the outputs (damn well better) be the same. Back in the "old days" (20 years ago?) Microkernels were going to make it so that all software was organized this way. It's just not practical to do so though. They wanted servers for disk access, servers for network etc. Basically it looked like what GNU Hurd was after... and we see how well that's done. You'll find systems based on the L4 microkernels today that implement a single address space (like Inferno I suppose? or Singularity) and you'll find stuff like L4-Linux, mostly being used as a way to bridge other OSes to Linux's drivers, or just to run multiple instances of Linux as in a virtualization like system like VMWare's high end products provide (they're basically using a microkernel too for their high-end hypervisors). > > However some of the more practical academics (yeah I know it's like jumbo > > shrimp or military intelligence) have spun very interesting things off > like > > we used to call these people research fellows at corporate > labs. sadly, their astroid has landed. > Yeah :-(. It's a sad time. Microsoft, for as much as they've been bashed, is keeping that dream alive for some. They seem to understand that R&D is actually important to keeping on top of things. I feel a little "icky" to admit it but I really like Visual Studio and F#. I was amazed at how quickly I was able to learn C# and write GUI programs compared to say, Xcode and Cocoa. Dave > > - erik > > --000e0cd61a3404e4b404742beb6c Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

On Tue, Sep 22, 2009 at 7:47 AM, erik qu= anstrom <quan= stro@quanstro.net> wrote:
> Are these systems more complex to reason about thoug= h? =A0 Probably :-). =A0But
> when you've only got 7 system calls (per the original L4 specifica= tions I've
> read over) you don't really have a lot to debug. =A0Just gotta mak= e sure you
> chose the correct primitives to compose all the software you need to w= rite
> on the system.

that functionality doesn't disappear, does it? =A0where ever it g= oes,
the bugs will follow.

That's absolu= tely correct. =A0However, if you can test a piece in isolation from other n= oise, you can rule out certain areas as being suspect in the process of dia= gnosing issues.
=A0

if the argument is that it's easier to debug if it's not in the ker= nel,
i think that argument requires some proof.


The argument i= s that if something is logically separable from a larger system, and indepe= ndently testable, then once you've verified it is correct, and that the= "glue" is correct that is used to compose a larger system, that = you can more readily decide where to look for problem sources.

This is actually the basis of pure functional programmi= ng. =A0Pure functions can not deviate in the values they produce because th= ey have a property called referential transparency. =A0Not all code can be = written this way obviously, but if you can build a small system, test that = it works, then compose with another small system to do more processing, you= can "glue" those things together to build something more complex= .

Think Unix/Plan 9 pipelines of small commands and you g= et the point. =A0I believe this concept took a little mind-bending to get t= o as well, but seems almost obvious now. You can think of sort, uniq, and g= rep as pure functional routines, which you run some I/O through. =A0If the = inputs are the same, the outputs (damn well better) be the same. =A0

Back in the "old days" (20 years ago?) Microk= ernels were going to make it so that all software was organized this way. = =A0It's just not practical to do so though. =A0They wanted servers for = disk access, servers for network etc. =A0Basically it looked like what GNU = Hurd was after... and we see how well that's done.

You'll find systems based on the L4 microkernels to= day that implement a single address space (like Inferno I suppose? or Singu= larity) and you'll find stuff like L4-Linux, mostly being used as a way= to bridge other OSes to Linux's drivers, or just to run multiple insta= nces of Linux as in a virtualization like system like VMWare's high end= products provide (they're basically using a microkernel too for their = high-end hypervisors). =A0
=A0
> However some of the more practical academics (yeah I know it's lik= e jumbo
> shrimp or military intelligence) have spun very interesting things off= like

we used to call these people research fellows at corporate
labs. =A0sadly, their astroid has landed.

Yeah :-(. =A0 It's a sad time. =A0Microsoft, for as much as they'= ;ve been bashed, is keeping that dream alive for some. =A0They seem to unde= rstand that R&D is actually important to keeping on top of things. =A0<= /div>

I feel a little "icky" to admit it but I real= ly like Visual Studio and F#. =A0I was amazed at how quickly I was able to = learn C# and write GUI programs compared to say, Xcode and Cocoa.

Dave



=


=A0

- erik


--000e0cd61a3404e4b404742beb6c--