From 133e4f48c03085399e85a9a3f23f1ea3c174817b Mon Sep 17 00:00:00 2001 From: Nils Vreman <nils.vreman@gmail.com> Date: Fri, 9 Nov 2018 10:43:49 +0100 Subject: [PATCH] Added fixedpriority strategy to the strategy pool --- Makefile | 1 + gui/menu/FPStrategyMenuItem.java | 10 ++++++ gui/menu/ScheduLearnMenuBar.java | 1 + strategy/FixedPriority.java | 49 +++++++++++++++++++++++++++ strategy/FixedPriorityComparator.java | 13 +++++++ 5 files changed, 74 insertions(+) create mode 100644 gui/menu/FPStrategyMenuItem.java create mode 100644 strategy/FixedPriority.java create mode 100644 strategy/FixedPriorityComparator.java diff --git a/Makefile b/Makefile index da33b85..b75019f 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ all: javac gui/ScheduLearn.java java gui.ScheduLearn + find . -name "*.class" -type f -delete clean: find . -name "*.class" -type f -delete diff --git a/gui/menu/FPStrategyMenuItem.java b/gui/menu/FPStrategyMenuItem.java new file mode 100644 index 0000000..e474076 --- /dev/null +++ b/gui/menu/FPStrategyMenuItem.java @@ -0,0 +1,10 @@ +package gui.menu; + +import model.SchedulingModel; +import strategy.FixedPriority; + +public class FPStrategyMenuItem extends StrategyMenuItem { + public FPStrategyMenuItem(SchedulingModel scheduleMdl) { + super(scheduleMdl, new FixedPriority(), "FP"); + } +} diff --git a/gui/menu/ScheduLearnMenuBar.java b/gui/menu/ScheduLearnMenuBar.java index 7c77c2e..dc1e5cd 100644 --- a/gui/menu/ScheduLearnMenuBar.java +++ b/gui/menu/ScheduLearnMenuBar.java @@ -26,6 +26,7 @@ public class ScheduLearnMenuBar extends JMenuBar { edit.add(new ClearTasksetMenuItem(taskset)); edit.add(new ClearAllMenuItem(scheduleMdl)); strategy.add(new NoneStrategyMenuItem(scheduleMdl)); + strategy.add(new FPStrategyMenuItem(scheduleMdl)); strategy.add(new EDFStrategyMenuItem(scheduleMdl)); strategy.add(new RMSStrategyMenuItem(scheduleMdl)); diff --git a/strategy/FixedPriority.java b/strategy/FixedPriority.java new file mode 100644 index 0000000..ad0485a --- /dev/null +++ b/strategy/FixedPriority.java @@ -0,0 +1,49 @@ +package strategy; + +import tasks.Taskset; +import tasks.Task; + +import java.util.Comparator; +import java.util.Queue; +import java.util.PriorityQueue; +import java.util.Map; +import java.util.HashMap; + +public class FixedPriority extends QueueStrategy { + + protected Queue<Integer> updateQueue(Queue<Integer> q, Taskset ts, int time) { + Comparator<Integer> order = + (Integer i1, Integer i2) -> { + return i1 - i2; + }; + + Queue<Integer> internalQ = new PriorityQueue<>(order); + while (q.size() != 0) internalQ.add(q.poll()); + + //If we are at a job release, add that much CPU usage to the Q. + for (int taskNbr : ts.getPriorities()) { + Task t = ts.getTask(taskNbr).get(); //I know it exists so I can collect it from the optional directly + if (time % t.period() == 0) { + for (int i = 0; i < t.exectime(); i++) { + internalQ.add(taskNbr); + } + } + } + + return internalQ; + } + + /* + * Return which Strategy you are using + */ + public String toString() { + return "FP"; + } + + /* + * Return a Comparator for this scheduling strategy + */ + public Comparator<Task> prioComparator() { + return new FixedPriorityComparator(); + } +} diff --git a/strategy/FixedPriorityComparator.java b/strategy/FixedPriorityComparator.java new file mode 100644 index 0000000..6fb0325 --- /dev/null +++ b/strategy/FixedPriorityComparator.java @@ -0,0 +1,13 @@ +package strategy; + +import tasks.Task; + +public class FixedPriorityComparator implements PriorityComparator { + + /* + * compares two tasks according to scheduling algorithm. + */ + public int compare(Object o1, Object o2) { + return 1; + } +} -- GitLab