[coyotos-dev] Hi + some stuff I found researching

Valerio Bellizzomi devbox at selnet.org
Thu Jul 13 15:43:17 EDT 2006


On 12/07/2006, at 21.21, Haplo wrote:

>> Yes. And I don't really want to discourage you. I think that the right
>> response here is: let's get something that works and then see if (a)
>> there are places where this type of technique would make sense and (b)
>> the risk of introducing it is acceptable.
>
>Indeed, I like to call that "the development process". If I come up  
>with or come across anything that might be useful in the future I'll  
>be sure to mention it. Even if only one in ten actually turns out to  
>be viable it's still a good possibility for improvement. I can only  
>do what my ability permits, but at least I'm bouncing it off people  
>who are both knowledgeable and willing to listen. That's far better  
>than leaving it speculative or wrong on my own and then end up not  
>having anything good I find ever put to use.
>
>> Sure, but that wasn't my point. We have a commit rule on the Coyotos
>> code base that is carried forward from EROS: code doesn't go in to the
>> main tree unless the person making the commit is willing to bet their
>> life on it being right.
>>
>> We fail, of course, but it helps explain what the level of confidence
>> needs to be. Coyotos actually *is* about to go into surgical
>> instruments, so it's not just a joke.
>
>Which is a truly good way to go about programming in any case. My  
>point, however, was that coyotos isn't necessarily limited to that,  
>though. For example, one of your goals is to have it scale to large  
>SMP systems. This has nothing to do with a medical usage which is  
>likely limited to one single core chip. As long as something that  
>gives improvement elsewhere doesn't incur problems for the more  
>critical applications, it shouldn't be a problem. However, my lack of  
>general knowledge in the field is something you'll have to help with.  
>As I'm not to familiar with the specifics, very often I might not be  
>able to see such relationships.
>
>> A separate layer isn't needed, this can be done inside the driver  
>> without
>> introducing a new layer in the system. With a correctly engineered  
>> pre-test
>> cycle, the driver can be slower but it gains robustness.
>> One more reason to avoid drivers written in haste to meet the time
>> schedule. There is nothing better than testing and verifying by hand.
>>
>> val
>
>I suppose so, but if all drivers did that wouldn't it mean a lot of  
>redundancy in the system? Drivers would be less efficient than the  
>kernel+restart layer in detecting their own crashes, and you'd end up  
>with the same code in a lot of drivers and slow them down. The  

It can be done with a (non-shared) library call. I think the kernel already
knows how to restart operations.
On the other hand the drivers live in user-land, it should be easier to
avoid crashes.

>healing layer wouldn't require direct observation or even need to run  
>during normal operation, so no performance penalty at all. The only  
>time it would be run is when invoked by the kernel when hangs are  
>detected. You'd still need an alternate driver specification for them  

But the real picture of life-critical software is: if a hang is detected
probably you have few seconds of life.
In this situation, relying on a recovery mechanism is not better than
relying on the correctness of software.

>to be able to respond to the restart layer, but that would require  
>much less work than encapsulating every driver individually.
>
>Yes, there's no substitute for doing it right, but in the real world  
>people really do have deadlines and so they don't have time to write  
>self-restarting drivers or even produce drivers that aren't going to  
>crash. Yes, they may eventually revise it until the driver is stable,  

In the real world producing life-critical software correctly is not
compatible with deadlines.

val




More information about the coyotos-dev mailing list