Скачиваний:
43
Добавлен:
01.05.2014
Размер:
107.52 Кб
Скачать

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

Приложение

Задача_1 . . . Задача_N

API

«Виртуальная машина»:

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

Надежная синхронизация

Аппаратная платформа

«Объект» (Внешняя среда)

1. Задача – работа, выполняемая машиной; задаче соответствует статическая программа, описывающая поведение машины

2. Приложение – совокупность задач, конкурирующих за ресурс (процессор, память, ввод/вывод)

3. API (Application Program

Interface) – функции операционной системы, доступные из прикладной программы (сервисы операционной системы)

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

1

2002 v.0.4

 

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

Приложение

 

Программа ‘Х’

 

 

 

Описание

 

 

 

 

Вызов сервиса

 

 

действия,

 

Создать_задачу(…)

 

выполняемых

 

 

 

задачей

 

 

 

 

«Виртуальная

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

машина»

 

 

 

 

 

адрес ‘X

 

 

 

 

 

 

 

адрес стека

 

Создание дескриптора

 

 

 

 

 

 

 

 

 

 

(Операционная система)

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

2

2002 v.0.4

 

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

Событие i

x:

«Основная»

 

 

Вектор

Системный

 

Регистр

 

 

 

указателя

программа

 

прерывания i-го

 

стек

 

стека (SP)

 

 

 

события

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

Контекст

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Адрес P

 

 

 

 

 

 

 

 

 

 

 

«основной

 

 

 

 

Запоминание контекста,

программы»

 

 

 

 

в точке x

 

 

 

 

 

передача управления по

 

 

 

 

 

 

адресу Р

Р:

 

 

 

Процедура

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

обработки

 

 

 

 

 

 

 

 

return

 

прерывания

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

прерывания, автоматически восстанавливает контекст

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

3

2002 v.0.4

 

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

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

активизируется с адреса Р

Активизация задачи должна производится с той точки, где она была приостановлена

Идея реализации переключения - по событию,

требующему активизации новой задачи, обработчик прерывания:

обеспечивает запоминание контекста текущей задачи в ее стеке

из дескриптора новой задачи «достает» адрес стека

делает этот стек текущим

осуществляет возврат в соответствии с контекстом из нового стека

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

4

2002 v.0.4

 

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

События

 

x0:

Задача А

 

 

 

 

 

 

 

 

 

 

ТСВ А

 

ТСВ В

 

 

 

 

 

 

 

 

 

 

 

 

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

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

 

 

 

 

 

 

 

 

Задача B

 

 

адрес стека s1

 

адрес стека s2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y0:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Стек A

 

 

Стек

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B

**

 

 

 

 

 

 

 

 

 

 

 

s1:

 

 

 

s2:

 

1

 

 

 

 

 

 

 

 

 

 

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Контекст А

 

Контекст В

 

 

 

 

 

 

 

:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в точке x1

 

в точке у0

 

 

 

 

 

 

y1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

5

2002 v.0.4

 

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

Событие * :

Контекст задачи (в том числе адрес возврата x1) помещается в «активный» стек A

Из ТСВ задачи В выбирается адрес стека s2 и помещается в регистр процессора SP – стек задачи В становится «активным»

Передача управления по адресу возврата из нового «активного» стека B - (y0)

Действия задачи B

Событие **:

Контекст задачи (в том числе адрес возврата y1) помещается в «активный» стек B

Из ТСВ задачи А выбирается адрес стека s1 и помещается в регистр процессора SP – «активным» становится стек задачи А

Передача управления по адресу (x1) из нового «активного» стека А с восстановлением контекста

Действия задачи А

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

6

2002 v.0.4

 

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

События вызывают прерывания

• Аппаратные (interrupt)

сигналы от аппаратуры – готовность АЦП, таймер, нажатие кнопки на функцианальной клавиатуре ...

• программные (trap)

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

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

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

7

2002 v.0.4

 

Дисциплины переключения

 

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

 

Time-slicing

 

Таймер

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

Задача 1

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

Задача 2

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

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

 

Событие

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

t

Задача 1

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

Задача 2

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

8

2002 v.0.4

 

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

Диспетчеризация - выбор следующей выполняемой задачи из набора задач, готовых к выполнению

Критерий выбора – приоритет задачи

Приоритет задачи – целое число, характеризующее

важность задачи на данный момент времени; устанавливается

разработчиком системы на этапе проектирования, может

изменяться системой в процессе работы в зависимости от

текущих условий

 

 

 

 

 

 

 

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

адрес ‘X

 

 

 

адрес стека

 

 

 

(TCB)

 

 

 

приоритет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

9

2002 v.0.4

 

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

Внешние

Системные

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

прерывания

вызовы (trap)

таймера

Обработка

аппаратных

прерываний

case of

create_task suspend_task

create_timer

...

Таймерные

сервисы

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

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

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

10

2002 v.0.4

 

 

TCB

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

 

 

 

 

 

адрес ‘X

 

 

 

адрес стека

 

 

 

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

 

 

 

 

приоритет

 

 

 

 

 

 

 

 

 

 

 

состояние

 

 

 

 

Ready

 

 

 

 

 

 

 

 

активизация

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вытеснение

 

Blocked

 

 

Running

 

 

ресурс занят

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

11

2002 v.0.4

 

Соседние файлы в папке Конспект в презентациях