7.3: Додавання алгоритму
До цих пір ми створювали графіки шляхом вгадування і перевірки, який працює досить добре для невеликих графіків, але не буде добре працювати з десятками або сотнями завдань. Щоб створити більш процедурний підхід, ми могли б почати з якось створення списку пріоритетів. Після того, як у нас є список пріоритетів, ми можемо почати планування, використовуючи цей список та алгоритм обробки списку.
Список пріоритетів - це перелік завдань, що даються в тому порядку, в якому ми хочемо, щоб вони були виконані.
Алгоритм обробки списків перетворює список пріоритетів у розклад.
- На диграфі або списку пріоритетів обведіть всі завдання, які готові, тобто всі обов'язкові завдання виконані.
- Призначте кожному доступному процесору, по порядку, перше готове завдання. Позначте завдання як виконується, можливо, проставивши один рядок через завдання.
- Рухайтеся вперед у часі, поки завдання не буде виконано. Позначте завдання як виконане, можливо, перекреслюючи завдання. Якщо якісь нові завдання стануть готовими, позначте їх як такі.
- Повторюйте до тих пір, поки всі завдання не будуть заплановані.
Використовуючи наш диграф зверху, заплануйте його, використовуючи список пріоритетів нижче:
T1,T3,T4,T5,T6,T7,T8,T2,T9
Рішення
Час 0: Позначте готові завдання
Список пріоритетів:(T1),(T3),(T4),(T5),T6,T7,T8,T2,T9
Перше завдання ми призначаємо,T1 на перший процесорP1, а друге готове завданняT3, на другий процесор. Роблячи ці завдання, ми відзначаємо ці завдання як виконувані:
Список пріоритетів:(T1),(T3),(T4),(T5),T6,T7,T8,T2,T9
Заплануйте до тут:
Перестрибуємо до часу, коли чергове завдання завершиться, яке на час 2.
Час 2: Обидва процесори завершують свої завдання. Ми відзначаємо ці завдання як завершені. Коли завдання 1 завершено, Завдання 2 стає готовим:
Список пріоритетів:(T1),(T3),(T4),(T5),T6,T7,T8,(T2),T9
Призначаємо наступне готове завдання в списку,T4 доP1, іT5 доP2.
Список пріоритетів:(T1),(T3),(T4),(T5),T6,T7,T8,(T2),T9
Час 3: Процесор 1 завершеноT4. Завершення неT4 робить жодних інших завдань готовими (зверніть увагу, що всі інші вимагають,T2 щоб вони були виконані першими).
Список пріоритетів:(T1),(T3),(T4),(T5),T6,T7,T8,(T2),T9
Так як наступні три завдання ще не готові, призначаємо наступне готове завдання,T2 щобP1
Список пріоритетів:(T1),(T3),(T4),(T5),T6,T7,T8,(T2),T9
Час 3.5: Процесор 1 завершеноT2. ЗавершитиT2 причиниT6 іT7 стати готовим. ДоручаємоT6 доP1.
Список пріоритетів:(T1),(T3),(T4),(T5),(T6),(T7),T8,(T2),T9
Час 4: Обидва процесори завершують свої завдання. ДоопрацюванняT5T8 дозволяє стати готовим. ПризначаємоT7 доP1 іT8 доP2.
Список пріоритетів:(T1),(T3),(T4),(T5),(T6),(T7),(T8),(T2),T9
Час 4.5: Обидва процесори завершують свої завдання. T9стає готовим, і покладається наP1. Немає готового завданняP2 для роботи, так щоP2 холостий хід.
Список пріоритетів:(T1),(T3),(T4),(T5),(T6),(T7),(T8),(T2),(T9)
Коли останнє завдання виконано, ми маємо завершений графік, час закінчення 5,5 днів.
Використовуючи диграф нижче, створіть розклад, використовуючи список пріоритетів:
T1,T2,T3,T4,T5,T6,T7,T8,T9
- Відповідь
-
Час 0: Завдання 1, 4 та 7 готові. Призначити завдання 1 і 4
Час 9: Завдання 4 завершено. Готово тільки завдання 7; призначити завдання 7
Час 10: Завдання 1 завершено. Завдання 2 тепер готове. Призначити завдання 2
Час 17: Завдання 2 завершено. Нічого не готово. Процесор 1 холостий
Час 22: Завдання 7 виконано. Завдання 5 і 8 готові. Призначте завдання 5 і 8
Час 26: Завдання 8 виконано. Завдання 9 готове. Призначити завдання 9
Час 27: Завдання 5 виконано. Завдання 3 і 6 готові. Призначити завдання 3
Час 31: Завдання 3 виконано. Призначити завдання 6
Час 35: Все зроблено. Час закінчення - 35 для цього графіка.
Важливо відзначити, що сам алгоритм обробки списків не впливає на отриманий графік — графік повністю визначається списком пріоритетів, за яким слідує. Обробка списку, хоча це можна зробити вручну, може так само легко бути виконана комп'ютером. Цікавою частиною планування є те, як вибрати список пріоритетів, який створить найкращий графік.