You most probably don't care, but since I do, I'm putting this up
Having re-read everything I've just written, it seems to be a simplified "introduction to Real-Time Systems", almost. Well, I guess that's just the way it goes.
For my final year project at university, I'm implementing two aperiodic servers in Real-Time Linux
This is actually a considerably more interesting project that it sounds, scarily enough
Technically, my project's description is:
Implementing aperiodic servers in RT-Linux The aim of the project is to implement the Deferrable Server and Sporadic Server, two aperiodic server mechanisms, as additional scheduling policies in RT-Linux. The project involves setting up a RT-linux configuration and updating it with the two mechanisms. An evaluation of their implementation complexity and run-time overhead will also be performed. The project will also investigate the low-level implementation complexity of capacity sharing protocols.
Brief explanation of things, severally:
NOTE: The "pre-emptable kernel patch" does NOT provide, as all you journalists seem to think, "real-time behaviour". Linux is a MOLRTS now. It's a MOLRTS after you can pre-empt the kernel. Repeat. It is not a hard real-time system
What the pre-emptable kernel patch does do is make your userland apps more responsive to you. It does not mean that the kernel has to do less processing, or that the kernel can garauntee that a given exercise will be completed within the next 35 microseconds, which is the goal of a genuine Real-Time system
That's not to say it's not a cool toy that is of genuine use to you as a punter [although I wouldn't recommend it server side], but it isn't something you should be using and saying that your computer has real-time performance. It doesn't
Fine. But you need to know what an "aperiodic server" is to understand what my project actually is
An aperiodic server isn't actually a "server" as such, in the terms that people usually use [eg "web server"]
Here's a scenario: You're driving your car along the road, and you hit the brakes. It should be noted that this is a modern, all-computerised car [of which I actually disapprove, but that's another story], not one where you push the accellerator and a valve is physically opened by your muscle power
At the point just before you hit the brakes, the car was doing many many things, eg:
And then you hit the brakes
Obviously, you'd be really annoyed if nothing happened. The small child under bumper might die. Something actually serious like that. That's a "Hard Real-Time task"
The other tasks are "Soft Real-Time Tasks"... If you don't find out about the petrol in your car going down a nothingth-of-a-notch for 3 seconds, then no great loss
So, just about now, your car's computer needs to do the braking... but there may be other things that're pretty important for it to do, too. Of equal importance as the brakes, perhaps, although it may not seem obvious to you at the time. For example, you may be someone who brakes heavily and changes gear at the same time. If you don't like stick shifts, the learn to use one. Then you'll understand what I'm saying. If the gear wouldn't change until you'd actually either come to a stop or let go the brake, that would be really annoying
At this point, one solution to the whole problem is an aperiodic server. Broadly speaking, an aperiodic server gives aperiodic tasks a time budget. They're allowed as high a priority as they want on the system for that period of time, and then have their priority dropped
Once their priority is dropped, they may be pre-empted by other, higher-priority tasks
And after a while, their budget may increase again [which would allow their priority to increase again], in order for them to finish whatever they were doing [or run out of budget again, or...]
My actual project involves implementing an aperiodic server with two policies for the replenishment of time budget
These are the "Deferrable Server" and the "Sporadic Server"
And then there's the mathsy-bit of my project, about which I'm not yet thinking too much at the moment. I still have to do a fair bit of coding, and there's huge amounts of write-up I need to do, as our projects are marked on the write-up at the end of it, not our code. I can do really well in my project if my code never even compiles... Grr...
If you would like to see my code, at whatever point of flux it's in, feel free to e-mail me. I'm making no garauntees of functionality or anything, nor even that it will compile. Just if you're interested, it's here for the curious
Notes, etc, on the implementation I've done thusly far
This page is and |
My Website Starts Here
This page last modified: 2003-06-26