Oto mała ilustracja mojego pytania:
Załóżmy zadanie kompilacji, które składa się z 4 niezależnych zadań o nazwie AD. D w sumie trwa dłużej niż AC.
System kompilacji, który nie może uwzględnić względnych czasów zadań, może zaplanować takie zadania:
---------------------------------------
CPU1: A | C |
---------------------------------------
CPU2: B | D |
---------------------------------------
W przeciwieństwie do tego, jeśli program planujący zdaje sobie sprawę z różnic czasu między zadaniami, może zaproponować znacznie krótszy harmonogram:
---------------------------------------
CPU1: A | B | C |
---------------------------------------
CPU2: D |
---------------------------------------
Moje pytania:
- Czy są jakieś systemy kompilacji uwzględniające w harmonogramie względne oczekiwane czasy zadań?
- Jakie istnieją badania naukowe dotyczące tego rodzaju systemów kompilacji?
- Skąd te systemy kompilacji (jeśli istnieją) pobierają informacje o czasie? Heurystyka, czasy zebrane podczas poprzednich kompilacji?
- Jeśli takie systemy kompilacji nie istnieją, dlaczego? Czy istnieje gotcha, która sprawiłaby, że byłyby mniej wartościowe niż się wydaje na pierwszy rzut oka?