<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: OS&#8217;s that have better things to do than listen to you</title>
	<atom:link href="http://blog.reverberate.org/2007/01/30/oss-that-have-better-things-to-do-than-listen-to-you/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.reverberate.org/2007/01/30/oss-that-have-better-things-to-do-than-listen-to-you/</link>
	<description>parsing, performance, minimalism with C99</description>
	<lastBuildDate>Mon, 06 Feb 2012 23:44:51 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: ejecta</title>
		<link>http://blog.reverberate.org/2007/01/30/oss-that-have-better-things-to-do-than-listen-to-you/comment-page-1/#comment-12</link>
		<dc:creator>ejecta</dc:creator>
		<pubDate>Sat, 10 Feb 2007 00:23:57 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/?p=4#comment-12</guid>
		<description>Sounds like an interesting project - would be nice to see another scalable OS which will work well old on hardware and work superb on new hardware.</description>
		<content:encoded><![CDATA[<p>Sounds like an interesting project &#8211; would be nice to see another scalable OS which will work well old on hardware and work superb on new hardware.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: josh</title>
		<link>http://blog.reverberate.org/2007/01/30/oss-that-have-better-things-to-do-than-listen-to-you/comment-page-1/#comment-11</link>
		<dc:creator>josh</dc:creator>
		<pubDate>Fri, 09 Feb 2007 21:25:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/?p=4#comment-11</guid>
		<description>I wasn&#039;t saying that the RT patches do not do this, or that you can&#039;t get hard realtime from 2.6 with RT patches.  My indictment against Linux with RT patches is only that it&#039;s too complicated and monolithic.

These negative characteristics bleed into other areas like security and modularity -- supporting RT is not the only goal of this OS.  Basically I think that innovations in the OS space are hurting from the fact that no one can justify investing the resources to wipe the slate clean and start over.  Companies that did (BeOS) came up with some really good stuff, but the applications problem was too high a barrier and they eventually shriveled and died.

Yes, the driver problem is obviously huge.  All I can hope is that if I deliver something compelling enough, it will drive people to invest the work of porting ALSA drivers or something.  Or if there&#039;s an embedded device that wanted to use the OS and will have to write drivers for their new hardware *anyway*, they can write drivers that work with my OS from the get-go.

This is obviously very hand-wavey.  I&#039;m working on this on my own time, and my approach/motivations are somewhat of a mix between academic and commercial.  I want to really break new ground by integrating a lot of good ideas that are floating around in academia, but I also want it to be a usable system.  Whether I can convince anyone *else* to use it is totally unknown, but I have to try.</description>
		<content:encoded><![CDATA[<p>I wasn&#8217;t saying that the RT patches do not do this, or that you can&#8217;t get hard realtime from 2.6 with RT patches.  My indictment against Linux with RT patches is only that it&#8217;s too complicated and monolithic.</p>
<p>These negative characteristics bleed into other areas like security and modularity &#8212; supporting RT is not the only goal of this OS.  Basically I think that innovations in the OS space are hurting from the fact that no one can justify investing the resources to wipe the slate clean and start over.  Companies that did (BeOS) came up with some really good stuff, but the applications problem was too high a barrier and they eventually shriveled and died.</p>
<p>Yes, the driver problem is obviously huge.  All I can hope is that if I deliver something compelling enough, it will drive people to invest the work of porting ALSA drivers or something.  Or if there&#8217;s an embedded device that wanted to use the OS and will have to write drivers for their new hardware *anyway*, they can write drivers that work with my OS from the get-go.</p>
<p>This is obviously very hand-wavey.  I&#8217;m working on this on my own time, and my approach/motivations are somewhat of a mix between academic and commercial.  I want to really break new ground by integrating a lot of good ideas that are floating around in academia, but I also want it to be a usable system.  Whether I can convince anyone *else* to use it is totally unknown, but I have to try.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Davis</title>
		<link>http://blog.reverberate.org/2007/01/30/oss-that-have-better-things-to-do-than-listen-to-you/comment-page-1/#comment-10</link>
		<dc:creator>Paul Davis</dc:creator>
		<pubDate>Fri, 09 Feb 2007 21:07:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/?p=4#comment-10</guid>
		<description>you seem unaware of how the RT patch works these days too. 

it also models IRQ lines as processes (well, strictly, as kernel threads). the thread doesn&#039;t get run just because the IRQ line was raised, its scheduled along with everything else, just as you describe for L4. 

you&#039;re also slightly wrong that interrupts are not demands. from many devices, thats true. for audio interfaces, its not true. the interrupt is a *demand* for more data. you don&#039;t meet the demand, the device &quot;malfunctions&quot;  from a user perspective

you might not like that linux started out as so-non-RT and requires a substantial patch to make it so. but ... more and more of Ingo&#039;s work is now in the mainstream kernel, and his work does actually create a system where, given correct IRQ thread priorities and no drivers with absurd code in their interrupt handlers (yes, its prioritized but it can still do wierd, illegal stuff), you can get hard realtime from 2.6.

starting a new OS based on L4 to accomplish this seems basically nothing more than a self-learning experience. an RT OS is useless without drivers and the driver situation on linux is bad enough already. it is guaranteed to be at least as bad on anything you eventually cook up.</description>
		<content:encoded><![CDATA[<p>you seem unaware of how the RT patch works these days too. </p>
<p>it also models IRQ lines as processes (well, strictly, as kernel threads). the thread doesn&#8217;t get run just because the IRQ line was raised, its scheduled along with everything else, just as you describe for L4. </p>
<p>you&#8217;re also slightly wrong that interrupts are not demands. from many devices, thats true. for audio interfaces, its not true. the interrupt is a *demand* for more data. you don&#8217;t meet the demand, the device &#8220;malfunctions&#8221;  from a user perspective</p>
<p>you might not like that linux started out as so-non-RT and requires a substantial patch to make it so. but &#8230; more and more of Ingo&#8217;s work is now in the mainstream kernel, and his work does actually create a system where, given correct IRQ thread priorities and no drivers with absurd code in their interrupt handlers (yes, its prioritized but it can still do wierd, illegal stuff), you can get hard realtime from 2.6.</p>
<p>starting a new OS based on L4 to accomplish this seems basically nothing more than a self-learning experience. an RT OS is useless without drivers and the driver situation on linux is bad enough already. it is guaranteed to be at least as bad on anything you eventually cook up.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: josh</title>
		<link>http://blog.reverberate.org/2007/01/30/oss-that-have-better-things-to-do-than-listen-to-you/comment-page-1/#comment-9</link>
		<dc:creator>josh</dc:creator>
		<pubDate>Fri, 09 Feb 2007 20:18:28 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/?p=4#comment-9</guid>
		<description>Good to hear from you Paul.  I respect your opinion, but I think you&#039;re a bit premature in calling me totally wrong.  You also seem to be unfamiliar with L4, particularly its model for dealing with interrupts.

Interrupts are not demands, they are notifications.  Sure, you might starve hardware by not listening to these notifications, but they are nothing more than tools for getting information about external stimuli as soon as possible.

IRQ lines in L4 are modeled as processes, and interrupts are modeled as IPCs from those processes.  The priority of the drivers that subscribe to these IRQ lines determines whether they preempt the currently running thread when an interrupt comes in.  So in that sense, L4 already provides what Ingo&#039;s patches do.

The specifics of how the system should behave when an interrupt comes in are more complicated than belong in a blog comment.  But the point I want to leave here is that my plans are to give user-space programmers as many tools as possible for designing robust systems, and for the OS &lt;i&gt;never&lt;/i&gt; to be the bottleneck.  Nothing you&#039;ve written gives me reason to believe I cannot do that, or that I fundamentally misunderstand the problem space.  I&#039;ve been thinking about this a lot, and I think my ideas have merit.</description>
		<content:encoded><![CDATA[<p>Good to hear from you Paul.  I respect your opinion, but I think you&#8217;re a bit premature in calling me totally wrong.  You also seem to be unfamiliar with L4, particularly its model for dealing with interrupts.</p>
<p>Interrupts are not demands, they are notifications.  Sure, you might starve hardware by not listening to these notifications, but they are nothing more than tools for getting information about external stimuli as soon as possible.</p>
<p>IRQ lines in L4 are modeled as processes, and interrupts are modeled as IPCs from those processes.  The priority of the drivers that subscribe to these IRQ lines determines whether they preempt the currently running thread when an interrupt comes in.  So in that sense, L4 already provides what Ingo&#8217;s patches do.</p>
<p>The specifics of how the system should behave when an interrupt comes in are more complicated than belong in a blog comment.  But the point I want to leave here is that my plans are to give user-space programmers as many tools as possible for designing robust systems, and for the OS <i>never</i> to be the bottleneck.  Nothing you&#8217;ve written gives me reason to believe I cannot do that, or that I fundamentally misunderstand the problem space.  I&#8217;ve been thinking about this a lot, and I think my ideas have merit.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Davis</title>
		<link>http://blog.reverberate.org/2007/01/30/oss-that-have-better-things-to-do-than-listen-to-you/comment-page-1/#comment-8</link>
		<dc:creator>Paul Davis</dc:creator>
		<pubDate>Fri, 09 Feb 2007 19:45:22 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/?p=4#comment-8</guid>
		<description>Josh, I&#039;m sorry but you are just so totally wrong.

When a computer is working, at least when it is dealing with handling real-time streaming of continous data flows, it is trying to satisfy *two* masters: the user and the hardware.

the hardware places demands on the CPU by interrupting it. when it does, the OS has to decide what to do. interrupts can be blocked, handled by just noting that they happened, or fully serviced. 

if your Very Very Important Super-Dooper RealTime Application is in the middle of its work when an interrupt arrives, what should the CPU do? Should it waste cycles servicing it? Should it block interrupts? Or something else? It appears after a little thought that the correct answer depends on what the interrupt was from. If your VVISDRT application was processing audio, and the interrupt was from the audio interface, you should probably handle it, because it probably implies that you&#039;ve missed some deadline. Or might. But if it was from the keyboard controller, you can and probably defer doing much more than noting that it executed.

Ingo&#039;s latest RT patches basically allow you to configure even interrupt handlers themselves to have scheduling priority at the same level as application threads. 

There is much more here that you are wrong about, but alas I don&#039;t have the time to comment further - I have to get back to writing real time audio applications, which amazingly enough, actually work.</description>
		<content:encoded><![CDATA[<p>Josh, I&#8217;m sorry but you are just so totally wrong.</p>
<p>When a computer is working, at least when it is dealing with handling real-time streaming of continous data flows, it is trying to satisfy *two* masters: the user and the hardware.</p>
<p>the hardware places demands on the CPU by interrupting it. when it does, the OS has to decide what to do. interrupts can be blocked, handled by just noting that they happened, or fully serviced. </p>
<p>if your Very Very Important Super-Dooper RealTime Application is in the middle of its work when an interrupt arrives, what should the CPU do? Should it waste cycles servicing it? Should it block interrupts? Or something else? It appears after a little thought that the correct answer depends on what the interrupt was from. If your VVISDRT application was processing audio, and the interrupt was from the audio interface, you should probably handle it, because it probably implies that you&#8217;ve missed some deadline. Or might. But if it was from the keyboard controller, you can and probably defer doing much more than noting that it executed.</p>
<p>Ingo&#8217;s latest RT patches basically allow you to configure even interrupt handlers themselves to have scheduling priority at the same level as application threads. </p>
<p>There is much more here that you are wrong about, but alas I don&#8217;t have the time to comment further &#8211; I have to get back to writing real time audio applications, which amazingly enough, actually work.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Carrino</title>
		<link>http://blog.reverberate.org/2007/01/30/oss-that-have-better-things-to-do-than-listen-to-you/comment-page-1/#comment-7</link>
		<dc:creator>John Carrino</dc:creator>
		<pubDate>Mon, 05 Feb 2007 22:42:16 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/?p=4#comment-7</guid>
		<description>What do you do when the porn you want to look at is on the computer that is being slow.  Wouldn&#039;t you rather the computer display the pron, so you can look at it while it is being slow?</description>
		<content:encoded><![CDATA[<p>What do you do when the porn you want to look at is on the computer that is being slow.  Wouldn&#8217;t you rather the computer display the pron, so you can look at it while it is being slow?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Buffalo</title>
		<link>http://blog.reverberate.org/2007/01/30/oss-that-have-better-things-to-do-than-listen-to-you/comment-page-1/#comment-6</link>
		<dc:creator>Buffalo</dc:creator>
		<pubDate>Sat, 03 Feb 2007 02:23:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/?p=4#comment-6</guid>
		<description>Wize and insightful argumenters may cleverly notice that my last point has no technical points whatsoever.  Nor will this one incidently.

For the first post in Josh&#039;s new blog I figured I ought to lay it all on the line.  My essentially disagreement with Josh isn&#039;t technical so much as philisophical.  Now I may from time to time try to pretend like I&#039;m moving at this problem from a unbiased technical perspective, but I thought I&#039;d lay things on the line from the outset.  I can pretend to be objective later.</description>
		<content:encoded><![CDATA[<p>Wize and insightful argumenters may cleverly notice that my last point has no technical points whatsoever.  Nor will this one incidently.</p>
<p>For the first post in Josh&#8217;s new blog I figured I ought to lay it all on the line.  My essentially disagreement with Josh isn&#8217;t technical so much as philisophical.  Now I may from time to time try to pretend like I&#8217;m moving at this problem from a unbiased technical perspective, but I thought I&#8217;d lay things on the line from the outset.  I can pretend to be objective later.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Buffalo</title>
		<link>http://blog.reverberate.org/2007/01/30/oss-that-have-better-things-to-do-than-listen-to-you/comment-page-1/#comment-5</link>
		<dc:creator>Buffalo</dc:creator>
		<pubDate>Sat, 03 Feb 2007 02:15:35 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/?p=4#comment-5</guid>
		<description>Me and Josh, for people who actually seem to like each other pretty well, are often so much at odds with one another from a technical perspective it almost stops making sense.

The things that seem to stress Josh about about technical things never really seem to be particular problematic to me, and this is especially true of waiting for stuff.  It seems crazy to me.  You know how when you&#039;re at line at the bank, and you&#039;ve been there for *for-ev-er* and then you notice two perfectly good tellers hanging in the break room talking about last night&#039;s American Idol episode?  My opinion is that if you let that annoy you you&#039;re gonna spend a lot of time angry in banks.  Talking about American Idol is part of bank teller&#039;s jobs too, you know?

What I really don&#039;t want to do is have my OS allow me to allocate resources as precisely as possible and then respect these allocations.  I don&#039;t even know how much RAM any of the 3 computers in my house have.

Next time you&#039;re sitting there being annoyed by how slow your computer is being, do what I do: grab a magazine from your nearby stash (I personally like hardcore porn but it can be about efficient realtime OSes if you really want...whatever gets you off) and &quot;browse&quot; for about 20 seconds.</description>
		<content:encoded><![CDATA[<p>Me and Josh, for people who actually seem to like each other pretty well, are often so much at odds with one another from a technical perspective it almost stops making sense.</p>
<p>The things that seem to stress Josh about about technical things never really seem to be particular problematic to me, and this is especially true of waiting for stuff.  It seems crazy to me.  You know how when you&#8217;re at line at the bank, and you&#8217;ve been there for *for-ev-er* and then you notice two perfectly good tellers hanging in the break room talking about last night&#8217;s American Idol episode?  My opinion is that if you let that annoy you you&#8217;re gonna spend a lot of time angry in banks.  Talking about American Idol is part of bank teller&#8217;s jobs too, you know?</p>
<p>What I really don&#8217;t want to do is have my OS allow me to allocate resources as precisely as possible and then respect these allocations.  I don&#8217;t even know how much RAM any of the 3 computers in my house have.</p>
<p>Next time you&#8217;re sitting there being annoyed by how slow your computer is being, do what I do: grab a magazine from your nearby stash (I personally like hardcore porn but it can be about efficient realtime OSes if you really want&#8230;whatever gets you off) and &#8220;browse&#8221; for about 20 seconds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Phil Edry</title>
		<link>http://blog.reverberate.org/2007/01/30/oss-that-have-better-things-to-do-than-listen-to-you/comment-page-1/#comment-4</link>
		<dc:creator>Phil Edry</dc:creator>
		<pubDate>Wed, 31 Jan 2007 21:43:00 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/?p=4#comment-4</guid>
		<description>Note to self: When Josh is a millionaire and looking for help, do not consider a career change and become one of his &quot;human servants.&quot;</description>
		<content:encoded><![CDATA[<p>Note to self: When Josh is a millionaire and looking for help, do not consider a career change and become one of his &#8220;human servants.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: josh</title>
		<link>http://blog.reverberate.org/2007/01/30/oss-that-have-better-things-to-do-than-listen-to-you/comment-page-1/#comment-3</link>
		<dc:creator>josh</dc:creator>
		<pubDate>Tue, 30 Jan 2007 18:56:51 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/?p=4#comment-3</guid>
		<description>Yes, your second point is totally valid, and is the one thing I wanted to clear up before I took this entry live.  In this entry I sloppily equate several screwing-the-user scenarios.  I&#039;ll revise the entry soon, but the gist is: in each of these cases the CPU still always has the option of doing something useful (listening to ME, the user!).  The obstinance might be in the OS (refuses to schedule something I want) or in the application (refuses to service my UI because it&#039;s waiting for I/O or doing something CPU-intensive).  The user experience should be: the application always gives me responsive controls, even if the only control available to me is &quot;cancel -- what you&#039;re busy doing is not worth waiting for.&quot;

To your first point: there are ways to mitigate this.  You might configure a system policy where your real-time thread gets absolute first priority, BUT only for 20ms every 40ms.  The goal of the OS should be to allow the system owner/administrator to allocate resources as precisely as necessary, and to respect those allocations as fully as absolutely possible.  If you can write an audio thread that promises to only &lt;b&gt;use&lt;/b&gt; 20ms every 40ms, then you can give that thread the guarantees it needs without starving the rest of the system.</description>
		<content:encoded><![CDATA[<p>Yes, your second point is totally valid, and is the one thing I wanted to clear up before I took this entry live.  In this entry I sloppily equate several screwing-the-user scenarios.  I&#8217;ll revise the entry soon, but the gist is: in each of these cases the CPU still always has the option of doing something useful (listening to ME, the user!).  The obstinance might be in the OS (refuses to schedule something I want) or in the application (refuses to service my UI because it&#8217;s waiting for I/O or doing something CPU-intensive).  The user experience should be: the application always gives me responsive controls, even if the only control available to me is &#8220;cancel &#8212; what you&#8217;re busy doing is not worth waiting for.&#8221;</p>
<p>To your first point: there are ways to mitigate this.  You might configure a system policy where your real-time thread gets absolute first priority, BUT only for 20ms every 40ms.  The goal of the OS should be to allow the system owner/administrator to allocate resources as precisely as necessary, and to respect those allocations as fully as absolutely possible.  If you can write an audio thread that promises to only <b>use</b> 20ms every 40ms, then you can give that thread the guarantees it needs without starving the rest of the system.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

