From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Thu, 3 Jul 2008 17:25:10 +0100 From: Digby Tarvin To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> Message-ID: <20080703162509.GA14782@skaro.cthulhu.dircon.co.uk> References: <1a2bf3f90e7e54101acbd732969be516@quanstro.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1a2bf3f90e7e54101acbd732969be516@quanstro.net> User-Agent: Mutt/1.4.1i Subject: Re: [9fans] Bits of Plan 9 I wish were more popular... Topicbox-Message-UUID: d92bb302-ead3-11e9-9d60-3106f5b1d025 On Thu, Jul 03, 2008 at 08:51:22AM -0400, erik quanstrom wrote: > > The only issue is that I can't justify the time needed to write Plan 9 > > drivers when a usable system already exists. > > > > > Still you could use 9vx to run plan9 on top of this system, that way you could maybe > > > migrate the system gradually. > > > > Unless vx32 can run real-time tasks (pretty sure it cannot) that's not > > much use. Almost every bit of my code (all except a very thin command > > interface) is living in a loadable kernel module > > > > Don't you want Kalman filters in *your* OS kernel? > > it seems suprising that it all runs in the kernel. > doesn't linux support real-time user processes? It all depends on how strict your interpretation of real-time is. The situation with Linux is similar to what I recall existed in SVR4, There is 'real-time domain' scheduling, the POSIX.4 API for finer timing control, and you can lock processes in core to prevent them from swapping/paging... its ok if there is a bit of buffering to smooth out the occasional delay, such as for multimedia applications, but if delayed response to an interrupt could cause your reactor to go critical then it probably isn't good enough. Unix just wasn't designed for hard real-time. The standard solution used in LinuxRT and RTAI is essentially to run Linux on top of a real-time kernel. Your real-time applications then run in real-time on the same machine as your Linux apps with some limited ability to comunicate with them, but don't have access to Linux system calls or libraries. Putting your time critical code into the kernel is another way to get more predictable response times - particularly if you can do the time critical stuff in an interrupt service routine. but again you forgo the normal Linux/User API and library access, and you have to be careful of drivers and other parts of the kernel which may be masking interrupts. It is a bit like the attempts to retrofit multi-tasking to DOS. You are better off designing somethign that has real-time in mind from the start and then retrofitting the Unix/Linux compatability. Regards, DigbyT -- Digby R. S. Tarvin digbyt(at)digbyt.com http://www.digbyt.com