CSCI 461 Lab 2
==============

The purpose of this lab is to develop a tool to aid in the discovery of
a feasible cycle-executive schedule for a set of periodic tasks.

Depending on the task-set, there can be a large number of potential
schedules to explore.  Your tool should guide the user in setting
parameters to limit the search space in a reasonable way.  For example,
assigning jobs to individual frames and assigning jobs to combinations
of frames.

Requirements
-------------
A task in the task-set is inputted as Tn = (p, e). For example,
T1 = (5, 3) indicates Task1 has a period of  5 and a WCET of 3.

A job is an instance of a task. Let J(i,j) be the jth instance of task
Ti. For example, J(1, 3) is the 3rd instance of T1.

Frames are labelled F1 through Fm.

After selecting search space parameters, your tool should indicate
how many schedules will be explored and how long it will take.

Use the Max-Flow Graph approach to evaluate an individual schedule.

If a feasible schedule is found, output the schedule in the form
of a table. For example, consider T1 = (10, 3) and
T2 = (20, 4). Let the frame size be 10. If J(1, 1) and J(2, 1)
are allocated to F1 then the corresponding entry in the table
is as follows:
 
Job       Allocated to Frame      %Frame Occupied 
===       ==================      ==============
J(1,1)    F1                      30
J(2,1)    F1                      70

The table entries should be ordered using ascending frame values. That
is, all the entries for F1 should precede all the entries for F2 etc.

Deliverables
------------

Demonstration of your tool.
Tool user-manual.

Example  Perl Code
------------------

   Max-Flow Example: ~pwalsh/csci461/StaticSched/maxflowEx1.pl
   |Schedules|: ~pwalsh/csci461/StaticSched/calcA.pl
