From de64a17fd06ebf78fd371e5a839e43558dd31402 Mon Sep 17 00:00:00 2001 From: Nils Vreman <nils.vreman@gmail.com> Date: Tue, 21 Aug 2018 16:05:38 +0200 Subject: [PATCH] Fixed EDF hopefully. Not sure but it looks promising --- TODO.md | 9 +++------ strategy/EDF.java | 5 +++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/TODO.md b/TODO.md index 82a5e7a..94c4bd0 100644 --- a/TODO.md +++ b/TODO.md @@ -3,13 +3,12 @@ ## TODO 1. Write "Help" documentation -2. Add schedulability checks +2. Add schedulability checks *Maybe* ## FIXED 1. Fix issue with taskset not arranging correctly when tasks are added before scheduling algorithm is choosen. *FIXED* -2. EDF is implemented poorly. It is wrong when sorting by priority (when time till deadline is equal). *Think it works fine now* -3. Fix Strategy-based priority assignment *- WORKS CORRECTLY?* -4. Make space between buttons on left and the taskset-list. *- FIXED BUT NEEDS REVISITING* +2. Fix Strategy-based priority assignment *FIXED* +3. Make space between buttons on left and the taskset-list. *FIXED* ## SUGGESTIONS *- Add Task, Change Task, Remove Task på samma rad* @@ -27,6 +26,4 @@ Bort med alla 3 knapparna, lägg ett "+"-tecken under den task som är längst n *- File-menyn ändra till "Save As..." och "Open File..." eller "Open Project...". Ta bort Close, det är redundant* -- Hover-funktion på typ allt i guit där det efter 1 sek dyker upp en liten bubbla som förklarar vad det man hoverar är för något. Användarvänligt - *- Påminnelse ifall man inte vill spara projektet innan man stänger ned programmet, ifall man ändrat något. Detta görs enkelt om du håller reda på states med historik* diff --git a/strategy/EDF.java b/strategy/EDF.java index 2d4726b..e10316b 100644 --- a/strategy/EDF.java +++ b/strategy/EDF.java @@ -19,8 +19,9 @@ public class EDF extends QueueStrategy { // (compares distance to deadline first and then priority) Comparator<Integer> order = (Integer i1, Integer i2) -> { - int res = ts.getTask(i1).get().deadline() - time % ts.getTask(i1).get().deadline() - - (ts.getTask(i2).get().deadline() - time % ts.getTask(i2).get().deadline()); + int res = + (time / ts.getTask(i1).get().period()) * ts.getTask(i1).get().period() + ts.getTask(i1).get().deadline() - time - + ((time / ts.getTask(i2).get().period()) * ts.getTask(i2).get().period() + ts.getTask(i2).get().deadline() - time); if ( res == 0 ) return i1 - i2; else return res; }; -- GitLab