My final year project

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

Gary (-;
<chunky@icculus.org>


This page is  Valid HTML 4.01 and  Valid CSS

My Website Starts Here

This page last modified: 2003-06-26