Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОС Задания 3

.doc
Скачиваний:
12
Добавлен:
16.04.2015
Размер:
24.06 Кб
Скачать

Задание 3. Добровольная многозадачность.

Продумайте систему переключения задач по принципу добровольной многозадачности. Исходные данные:

  1. Программа на Cи (Си++), под Windows. Использовать многопоточность запрещено.

Инициализация менеджера многозадачности (если необходима) должна вся находиться в функции: void InitManager(void);

Добавление задачи в пул выполняемых: int AddTask(void *Task); Здесь Task есть указатель (имя) функции-задачи или структуры (класса), описывающей задачу. Функция возвращает код ошибки или 0, если задача удачно добавилась в пул выполняемых.

  1. Задача – есть функция, выполняющая некоторое бесконечное периодическое действие. Например, циклический счет от 0 до 10000 с выводом на экран текущего значения счетчика.

  2. Различных задач-функций должно быть не меньше 2-х.

  3. Способ передачи управления от системы к задаче и обратно не регламентирован. Задача обязана выполнять все требования системного менеджера.

  4. Инициация переключения на другую задачу должна производиться только менеджером.

  5. Одну задачу (функцию) можно запускать в нескольких экземплярах. При этом текущее значение счетчика каждой копии должно выводиться в различных частях экрана. Возможен вывод всех счетчиков одновременно.

  6. Все задачи имеют задаваемый при запуске квант времени выполнения. Задачи переключаются по кругу.

  7. Менеджер НИЧЕГО не знает о том, что именно делают задачи, но может предоставлять задачам индивидуальное хранилище данных;

  8. Задачи НИЧЕГО не знают о механизме многозадачности. Но обязаны выполнять требования менеджера;

  9. Необходима функция для тестирования работоспособности менеджера многозадачности.