diff --git a/TODO.md b/TODO.md index 82a5e7a248950364bac40b12c316889f0cb824bc..94c4bd096a70809f133c192a38f587267f838e1e 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 2d4726bbcc83489764b96ad522ee3d755e6edeaf..e10316b58a62c9d0a3b2741e56c729086a509b62 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; };