Многозадачность

Содержание

Слайд 2

8. Многозадачность, ядро RTOS 2002 v.0.4 Вызов сервиса Создать_задачу(…) Программа ‘Х’

8. Многозадачность, ядро RTOS 2002 v.0.4

Вызов сервиса
Создать_задачу(…)

Программа ‘Х’
Описание
действия,
выполняемых
задачей

Создание

дескриптора

Приложение

«Виртуальная машина» (Операционная система)

адрес ‘X’

адрес стека


Дескриптор задачи (ТСВ)

Динамическое создание задачи

Слайд 3

8. Многозадачность, ядро RTOS 2002 v.0.4 return x: Системный стек Процедура

8. Многозадачность, ядро RTOS 2002 v.0.4

return

x:

Системный стек

Процедура обработки прерывания

«Основная» программа

Событие i

Восстановление

контекста, возврат из прерывания

Контекст «основной программы»
в точке x

x

Адрес P

Обработка прерывания

Вектор прерывания i-го события

Запоминание контекста, передача управления по адресу Р

Регистр указателя стека (SP)

Р:

return - инструкция возврата из процедуры обработки прерывания, автоматически восстанавливает контекст

Слайд 4

8. Многозадачность, ядро RTOS 2002 v.0.4 Обработчик прерывания – при каждом

8. Многозадачность, ядро RTOS 2002 v.0.4

Обработчик прерывания – при каждом событии

активизируется с адреса Р
Активизация задачи – должна производится с той точки, где она была приостановлена
Идея реализации переключения - по событию, требующему активизации новой задачи, обработчик прерывания:
обеспечивает запоминание контекста текущей задачи в ее стеке
из дескриптора новой задачи «достает» адрес стека
делает этот стек текущим
осуществляет возврат в соответствии с контекстом из нового стека

Переключение задач

Слайд 5

8. Многозадачность, ядро RTOS 2002 v.0.4 Задача А Задача B x1:

8. Многозадачность, ядро RTOS 2002 v.0.4

Задача А

Задача B

x1:

x0:

y0:

События

s2

SP

s1:

s2:

Стек A

Стек B

Переключение задач,

пример

y1:

адрес программы ‘А’

адрес стека s1

адрес программы ‘В’

адрес стека s2

ТСВ А

ТСВ В

адрес возврата x1

Контекст А
в точке x1

адрес возврата у0

Контекст В
в точке у0

*

**

(Обработчики прерываний на рисунке не показаны)

Слайд 6

8. Многозадачность, ядро RTOS 2002 v.0.4 Событие * : Контекст задачи

8. Многозадачность, ядро RTOS 2002 v.0.4

Событие * :
Контекст задачи (в том

числе адрес возврата x1) помещается в «активный» стек A
Из ТСВ задачи В выбирается адрес стека s2 и помещается в регистр процессора SP – стек задачи В становится «активным»
Передача управления по адресу возврата из нового «активного» стека B - (y0)
Действия задачи B
Событие **:
Контекст задачи (в том числе адрес возврата y1) помещается в «активный» стек B
Из ТСВ задачи А выбирается адрес стека s1 и помещается в регистр процессора SP – «активным» становится стек задачи А
Передача управления по адресу (x1) из нового «активного» стека А с восстановлением контекста
Действия задачи А

Переключение задач, пример (2)

Слайд 7

8. Многозадачность, ядро RTOS 2002 v.0.4 Инициирование переключения События вызывают прерывания

8. Многозадачность, ядро RTOS 2002 v.0.4

Инициирование переключения

События вызывают прерывания
Аппаратные (interrupt)
сигналы от

аппаратуры – готовность АЦП, таймер, нажатие кнопки на функцианальной клавиатуре ...
программные (trap)
обращение к функциям, реализующим API (системные вызовы) – создание задачи, завершение задачи, приостановка задачи, вызов семафорной операции ....

Прерывания инициируют переключение задач

Слайд 8

8. Многозадачность, ядро RTOS 2002 v.0.4 Таймер Обработчик прерывания t t

8. Многозадачность, ядро RTOS 2002 v.0.4

Таймер

Обработчик прерывания

t

t

Дисциплины переключения (диспетчеризация задач)

Time-slicing

Задача 1

t

Задача

2

t

Вытеснение (preempting)

Событие

Обработчик прерывания

t

t

Задача 1

t

Задача 2

t

При ограничениях жесткого реального времени не применяется !

Слайд 9

8. Многозадачность, ядро RTOS 2002 v.0.4 Диспетчеризация задач Диспетчеризация - выбор

8. Многозадачность, ядро RTOS 2002 v.0.4


Диспетчеризация задач

Диспетчеризация - выбор следующей

выполняемой задачи из набора задач, готовых к выполнению
Критерий выбора – приоритет задачи
Приоритет задачи – целое число, характеризующее важность задачи на данный момент времени; устанавливается разработчиком системы на этапе проектирования, может изменяться системой в процессе работы в зависимости от текущих условий

адрес ‘X’

адрес стека


приоритет

Дескриптор задачи (TCB)

Слайд 10

8. Многозадачность, ядро RTOS 2002 v.0.4 create_task suspend_task create_timer ... Управление

8. Многозадачность, ядро RTOS 2002 v.0.4

create_task

suspend_task

create_timer

...

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

Системные вызовы (trap)

case of

Внешние

прерывания

Прерывания от таймера

Возврат в задачу

Обработка
аппаратных
прерываний

Таймерные
сервисы

Ядро операционной системы

Слайд 11

8. Многозадачность, ядро RTOS 2002 v.0.4 Состояния задачи Blocked Ready Running

8. Многозадачность, ядро RTOS 2002 v.0.4

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

Blocked

Ready

Running

создание задачи

активизация

вытеснение

ресурс занят

ресурс освободился

адрес ‘X’

адрес

стека


приоритет

состояние

TCB

Слайд 12

8. Многозадачность, ядро RTOS 2002 v.0.4 Управление задачами ОЧЕРЕДЬ ГОТОВЫХ (Ready

8. Многозадачность, ядро RTOS 2002 v.0.4

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

ОЧЕРЕДЬ ГОТОВЫХ
(Ready tasks)

ПЛАНИРОВЩИК
(Scheduler)

ИСПОЛНЯЕМАЯ
ЗАДАЧА
(Running task)

Q1

Q2

Qn

ОЧЕРЕДИ БЛОКИРОВАННЫХ
(Blocked

tasks)

ДИСПЕТЧЕР
(Dispatcher)

RQ