Общие положения

ОСРВ включает в себя управляющие модули и набор системных сервисов, доступных пользовательским приложениям.

Все объекты ОСРВ создаются статически на этапе компиляции и редактирования связей.

ОСРВ должна включать в себя подсистемы, подробно рассматриваемые в последующих главах, обеспечивающие следующие возможности:

· Управление задачами

· Синхронизацию задач посредством использования разделяемых ресурсов

Кроме того, если это определено в вашем индивидуальном задании, ОСРВ должна включать следующие подсистемы:

· Управление прерываниями

· Управление событиями

В рамках индивидуального задания кроме кода ОСРВ необходимо разработать
набор тестовых примеров, демонстрирующих правильность функционирования
реализованных модулей.

Управление задачами

Состояния задачи

В любой момент времени задача должна находиться в одном (и только одном) из следующих состояний:

· Выполняется (running). Задача назначена на выполнение и использует процессор для последовательного исполнения своих инструкций. Только одна задача может находиться в этом состоянии в заданный момент времени.

· Активна (ready). Задача получила все необходимые для выполнения ресурсы (память, стек и т. п.) и ожидает назначения на выполнение. Только из этого состояния задача может перейти в состояние running.

· Приостановлена (suspended, применяется также термин inactive). В этом состоянии задача пассивна, не занимает системных ресурсов и не может быть назначена на выполнение.

· Состояние ожидания (waiting). Задача ждет наступления некоторого события.[1]

Активизация задачи

Активизация задачи осуществляется сервисом ActivateTask. При этом задача переходит из состояния suspended в состояние ready, после чего может быть назначена на выполнение. Не допускается наличие нескольких работающих копий одной задачи, т.е. повторная активизация задачи допускается только после завершения работы предыдущей копии этой задачи.

Передавать задаче при активизации определённый набор параметров (как функции С) не допускается; поэтому для этой цели следует использовать другие механизмы (например, глобальные переменные).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: