CS452 - Real-Time Programming - Fall 2008
Lecture 30 - Cyclic Execution
Questions & Comments
- Projects
Real-time Scheduling
Much real-time computing operates in an environment like the following
- Groups of sensors that provide polling with fixed periodicity
- Sensor input triggers tasks which also run with fixed periodicity
Typical example, a group of sensors that returns
- the rotational speed of the wheels, and
- the exhaust mixture, and
- the torque, and ...
and a set of tasks that
- updates the engine parameters, and
- updates the transmission parameters, and
- passes the speed on to the instrument controller, and ...
Each time a sensor returns a new datum a scheduler runs
- makes ready any task that the data makes ready to run
- decides which of the ready tasks to schedule, and
- starts it running.
Your kernel can handle problems like this one pretty efficiently,
Cyclic Execution
Let's make a schedule
A A
AC BA A C A A C A A B CA A C A AC B A A C A A C A B
| | | | | | | | | | | | | | | | | |
| | | |
| | | | | | | |
________________________________________________________________________________________________________ time
Because the times are integers the pattern repeats after a while.
- The total amount of thinking you have to do is finite.
- The thinking you do is inserting into the schedule the amount of
processing that needs to be done
- Work it all out so that nothing collides.
- using heuristics, no doubt
Make it a little easier
- Make the complete pattern short by making sensor periods multiples of
one another
- You control sensor periods,
- but only up to a point.
- Standardize the processing at each point
- Minimize the interaction between tasks
- Prove some theorems, such as Liu
& Layland
Theorems
Important assumptions
- No interaction execpt contention for CPU
- All tasks scheduled periodically
- Task must finish processing event n before event n+1 occurs
- When tasks are ready simultaneously the higher priority one runs
Main idea
- Identify the bottleneck
- We call this the critical instant for a task.
Main result
- A method for deriving priorities from task characteristics
Subsidiary result
- Maximum possible CPU utilization
Is this of any practical value?
More Interesting Cyclic Execution
For example: mobile phone, iPod, digital assistant, etc
An easier design environment
- No foreign tasks
- Basic cycle
- Design tasks for the basic cycle
- e.g. choose size of audio buffer for transfer
- Provide tasks to a dispatcher
- tasks yield so pre-emption is not necessary
- compiler protects tasks from one another
Return to: