Starting from:
$35

$29

PROJECT 3


Project Requirements


    • Build a Rate Monotonic Scheduler with four threads

    • Scheduler details:

        ◦ Threads T1 through T4
        ◦ Thread T1 has a period of 1 unit

        ◦ Thread T2 has a period of 2 units

        ◦ Thread T3 has a period of 4 units

        ◦ Thread T4 has a period of 16 units

        ◦ A unit shall be anywhere from 10-100 ms (depending on operating system options)
        ◦ Each thread will execute the same doWork method but run it a different amount of times:

            ▪ Thread T1 executes doWork 1 time

            ▪ Thread T2 executes doWork 2 times

            ▪ Thread T3 executes doWork 4 times
            ▪ Thread T4 executes doWork 16 times

4



Project Requirements


    • Scheduler shall have a major frame period of 16 units of time

    • Program shall start scheduler and four threads that are to be scheduled
        ◦ Scheduler needs to be woken up by a periodic source (signal/timer/etc) and it shall schedule the threads

        ◦ The program shall run for 10 periods and then terminate, but not before printing out how many times each thread ran

    • Each thread shall increment a dedicated counter each time it runs
    • The scheduler shall be able to identify if a thread has missed its deadline and keep track of how many times it happens

5



Project Requirements


    • The following test cases shall be demonstrated

        ◦ Nominal case with no overruns

        ◦ Failed case where the doWork function is called as many times as required to lead to an overrun condition in T2 – what happens to other threads?

        ◦ Failed case where T3 has an overrun condition – what happens to other threads?

        ◦ All results are printed out at the completion of the run to not effect the timing

        ◦ When an overrun condition occurs, the scheduler shall still schedule the thread and not skip a period

6



Project Requirements


    • doWork function will do the following:

        ◦ Will multiply the content of each cell of a 10x10 matrix starting with column 0 followed by 5, then 1 followed by 6, etc












inthisdirectionTraverse and multiply


1
3
5
7
9
2
4
6
8
10










1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

Column order of execution

7



Hints

    • Remember that you have a scheduler that is orchestrating everything else – separate thread
    • Priorities are essential – remember rules of RMS

    • Semaphores needed for synchronization

    • May need mutex to protect shared data between scheduler and threads – remember priority inversion

    • You need to use processor affinity on all your threads (including the scheduler)

    • For the overrun conditions, you should keep scheduling the thread that has missed its deadline even after it is in an overrun condition
        ◦ Do not skip scheduling for that execution period

    • You can initially use a sleep( ) or similar function to set the timing on your scheduler until you work out the synchronization with the other threads and then replace with a timer

8



Project Artifacts


    • Demonstrate by outputting the counters for each thread that shows how many times each one ran and how many times an overrun occurred per thread

        ◦ Can be printed to the screen or sent to a file

    • Students must turn in the following:

        ◦ Source code

        ◦ Executable

        ◦ Output of the program

        ◦ A brief design description that explains the design, how were the threads synchronized and dispatched








Operating System Concepts – 9th Edition    Silberschatz, Galvin and Gagne ©2013

More products