ОС Задания 3
.docЗадание 3. Добровольная многозадачность.
Продумайте систему переключения задач по принципу добровольной многозадачности. Исходные данные:
-
Программа на Cи (Си++), под Windows. Использовать многопоточность запрещено.
Инициализация менеджера многозадачности (если необходима) должна вся находиться в функции: void InitManager(void);
Добавление задачи в пул выполняемых: int AddTask(void *Task); Здесь Task есть указатель (имя) функции-задачи или структуры (класса), описывающей задачу. Функция возвращает код ошибки или 0, если задача удачно добавилась в пул выполняемых.
-
Задача – есть функция, выполняющая некоторое бесконечное периодическое действие. Например, циклический счет от 0 до 10000 с выводом на экран текущего значения счетчика.
-
Различных задач-функций должно быть не меньше 2-х.
-
Способ передачи управления от системы к задаче и обратно не регламентирован. Задача обязана выполнять все требования системного менеджера.
-
Инициация переключения на другую задачу должна производиться только менеджером.
-
Одну задачу (функцию) можно запускать в нескольких экземплярах. При этом текущее значение счетчика каждой копии должно выводиться в различных частях экрана. Возможен вывод всех счетчиков одновременно.
-
Все задачи имеют задаваемый при запуске квант времени выполнения. Задачи переключаются по кругу.
-
Менеджер НИЧЕГО не знает о том, что именно делают задачи, но может предоставлять задачам индивидуальное хранилище данных;
-
Задачи НИЧЕГО не знают о механизме многозадачности. Но обязаны выполнять требования менеджера;
-
Необходима функция для тестирования работоспособности менеджера многозадачности.