The Monotonizer Description ----------- The Monotonizer is performs Rate Monotonic Analysis to determine if a set of tasks can be guarenteed to meet its deadlines. It supports global RMA analysis, analysis of task utilization, and calculating response times with arbitrary deadlines and blocking. Different types of blocking are supported, including user-ented blocking, and resource-determined Priority Ceiling Protocol. Complete with print preview. Installation ------------ 1. Create a program directory (eg c:/RMA) 2. Copy the following files into the target program directory: RMA_SH.EXE -- Program file RMA.HLP -- Help File *.VTS -- Example files 3. Copy the following files into your \Windows\System directory *.dll *.vbx 4. Add RMA_SH.EXE to your favorite program group and run it! Limitations ----------- The Shareware version of the Monotonizer is limited to 5 tasks and 3 shared resources. All functions work, including print preview; the ability to add tasks has been disabled and the ability to add resources is limited to 3. The full version has no such limitations -- it has been used to analyze large systems with over 200 tasks sharing 20 resources. What if I don't Know about RMA? ------------------------------- RMA is a mathematical technique developed by Liu and Layland ("Scheduling Algorithms for Multiprogramming in a Hard Real-Time Environment" Journal of the ACM 20, 1, January 1973: pp 40-61), and subsequently elaborted by these authors and others. Based on certain assumptions about the tasks, it is possible to prove schedulability of those tasks. The Global method (1973) is provided as technique 1 by The Monotonizer. It assumes that the deadlines are equal to the period of each task, that each time takes less than or equal to its period to execute, and that the tasks are scheduled using the Rate Monotonic Scheduling (RMS) method. In RMS, tasks are infinitely preemptable; when a higher priority task becomes available to run, it will preempt any lower priority task running. In addition, RMS specifies that the priority of tasks is solely determined by the period of the tasks -- the shorter the period the higher the task. In the Monotonizer, the priority column may be specifically specified, but remember, the lower the numeric value of the priority, the higher the priority! A Priority of 10 will preempt a task of Priority 15. The Monotonizer identifies this method as Technique 1. The global method is very strict, so that it can (and does) happen that this method may fail to show that a set of tasks is schedulable even though it is (false negative). However, if it says the tasks are schedulable, then they always are (no false positives). If the set of tasks fails the first test, you might want to run one of the subsequent methods if the computed utilization is less than about 0.80. The second method ("Technique 2") checks task-by-task. It requires more processing time to determine, and can show that some subset of the tasks can in fact, meet all their deadlines, even if not all can. It calculates utilization on a task-by-task basis. It has basically the same assumptions as the Global method. The third method ("Technique 5") is more general than the other two, but can require more processing time, especially for large numbers of tasks. In this case, deadlines can be longer than the period. Blocking is the amount of time a task is prohibited from running by a lower priority task. This can happen, for example, if two tasks share a resource that is protected by a mutex semaphore. If the lower priority task owns the resource when the higher priority task is ready to run, the higher priority task cannot run because it needs the resource. The monotonizer allows different means for handling blocking. The simpliest way is to identify the blocking yourself and enter it in the Blocking column. When you do this, be sure to use the Options/RMA Options dialog to set the Blocking option to User Entered Blocking. The other way to handling blocking is to have The Monotonizer figure out the blocking for you. In this case, add resources (Edit/Add Resources) with the amount of time the task uses that resource in that resource column. The program will then compute the blocking from these resource utilizations. Simple blocking just assumes that it will "never happen" that you have unbounded priority inversion (UPI). UPI can occur, for example, with three tasks 1, 2, and 3 (1 has the highest priority and 3 the lowest). If task 1 and 3 share resource A, and task 2 and 3 share resource B, it can happen that task 3 blocks task 1 (because it is using "A"), but task 2 can run because as long as task 3 is not currently using "B". Now we task 2 must finish before task 3 can run, and task 3 must finish before task 1 can run. Priority Ceiling Protocol (along with some other methods, such as Highest Locker) use dynamic task priority elevation to stop priority inversion. If your system supports this, then use the the Priority Ceiling Protocol blocking determination method. See the help file for more information and references. Example Files ------------- 3 examples are provided, one for each RMA technique supported. To find out how to set the RMA options, check the Note (Options menu, Text Note item) and it will list the relevant options to set. To set the RMA options, select the RMA Options dialog (Options Menu, RMA Options Item) and click on the appropriate items. Upgrading --------- The Monotonizer costs $299.99 + $5.00 for shipping in the US ($10 overseas). Please contact A Priori Software by CIS (70673,2715), internet (70673.2715@compuserve.com), or by mail (Bruce Douglass, c/o Ohmeda, PO Box 7550, Madison, WI 53707). In Europe, we can be contacted at Dachsklingeweg 17, Sindelfingen, Germany. Upgrading by Compuserve ----------------------- You can upgrade on Compuserve by typing GO SWREG, and entering the product number 5611. Tech Support ------------ If you have any questions, you may contact Tech Support on our CIS account, as mentioned above, or by mail. If voice support is required, set it up using one of these methods first.