Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Контекст задачи. Процесс переключения контекста.



 

Когда многозадачное ядро решает запустить следующую задачу, оно сохраняет контекст (содержимое регистров процессора) текущей задачи в ее стеке – области хранения контекста задачи (см. рис. 1.2). Затем контекст следующей задачи восстанавливается из области его хранения, после чего продолжается выполнение кода задачи, чей контекст загружен. Такая последовательность действий называется переключением контекста, или переключением между задачами. Переключение контекста приводит к дополнительным затратам процессорного времени и зависит от количества регистров, которые нужно сохранить и восстановить.

Кроме того, что очень важно, при переключении контекста происходят следующие программно-незаметные аппаратные действия, влияющие на производительность:

•Происходит очистка конвейера команд и данных процессора

•Очищается TLB, отвечающий за страничное отображение линейных адресов на физические

 

 

Задача. Машина состояния задачи, особенности перехода из состояния в состояние.

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

Состояние сна соответствует задаче, которая находится в памяти, но не помечена доступной для ядра ОС . Задача находится в состоянии готовности, когда она может выполняться, но ее приоритет меньше, чем у выполняющейся в данный момент задачи. Задача находится в состоянии выполнения, когда ее код исполняется на процессоре. Задача находится в состоянии ожидания события, когда для продолжения ее работы ей требуется появление системного события (такого как завершение операции ввода-вывода, освобождение разделяемого ресурса, появление тактирующего импульса, истечение времени, и т. п.). И, наконец, задача находится в состоянии прерывания, когда во время ее выполнения возникло прерывание и процессор занят процедурой его обработки.

15. Бинарный семафор. Назначение, составляющие блока контроля (SCB), машина состояний, пример использования. Особенности использования задания временных параметров на захват занятого семафора.

 

Семафоры применяются, когда необходимо:

а) управлять доступом к разделяемым ресурсам;

б) сигнализировать наступление события;

в) позволять двум задачам синхронизировать их деятельность.

Семафор – это ключ, которым должна овладеть задача, чтобы продолжить выполнение. Если семафор уже используется, запрашивающая задача приостанавливается, пока семафор не освободится.

Задача, желающая обладать семафором, выполняет операцию WAIT. Если семафор доступен (то есть его значение больше 0), значение уменьшается на единицу, а задача продолжает выполнение. Если значение семафора равно 0, задача, производящая операцию WAIT, помещается в список задач, ожидающих данный семафор. Задача освобождает семафор, производя операцию SIGNAL. Если нет задач, его ожидающих, значение семафора увеличивается на единицу. Если такие задачи есть, его значение не изменяется, а запускается одна из ожидающих задач.

Таблица SCB_SEMAPHORE_COLTROL_BLOCK содержит след. поля: SemID — идентификатор семафора(число); COUNTER — счетчик (0,1,..., N); TYPE — тип семафора; POINTER TO TASK WAITING LIST - указатель на список задач, ожидающих освобождения данного семафора (задачи из этого списка выбираются с пом. Планировщика (FIFO или приоритетное планирование).

16. Семафор-счетчик. Назначение, составляющие блока контроля (SCB), машина состояний, пример использования. Особенности использования задания временных параметров на захват занятого семафора.

Семафоры применяются, когда необходимо:

а) управлять доступом к разделяемым ресурсам;

б) сигнализировать наступление события;

в) позволять двум задачам синхронизировать их деятельность.

Семафор – это ключ, которым должна овладеть задача, чтобы продолжить выполнение. Если семафор уже используется, запрашивающая задача приостанавливается, пока семафор не освободится.

Семафор-счетчик — это целочисленная переменная, имеющая несколько состояний. (0,1,2,3,..., N) 0 — семафор захвачен, остальные состояния — свободен. Число, отличное от нуля указывает, сколько задач захватило семафор. Если задач < N, семафор свободен.

Таблица SCB_SEMAPHORE_COLTROL_BLOCK содержит след. поля: SemID — идентификатор семафора(число); COUNTER — счетчик (0,1,..., N); TYPE — тип семафора; POINTER TO TASK WAITING LIST - указатель на список задач, ожидающих освобождения данного семафора (задачи из этого списка выбираются с пом. Планировщика (FIFO или приоритетное планирование).

Счетные семафоры применяются, когда ресурс может использоваться более чем одной задачей одновременно. Например, счетный семафор может быть использован в управлении пулом буферов. Предположим, что исходно пул содержит 10 буферов. Задача может получить буфер, запросив его у менеджера, вызывая BufReq(). Если буфер больше не нужен, задача может вернуть его обратно, вызывая BufRel().

 

17.Mutex. Назначение, составляющие блока контроля (SCB), машина состояний, пример использования. Особенности использования задания временных параметров на захват занятого muteх.

Мьютекс — целочисленная пер-ная, имеющая 2 состояния (своб. и захвачен). (0,1, 2,...,N), где 0 — свободен, остальные — захвачен. Мьютекс указывает кем он захвачен, не давая другим задачам освободить мьютекс. Также здесь реализован рекурсивный захват и освобождение, при этом счетчик мьютекса увеличивается. Содержание таблицы CONTROL_BLOCK: SemID — идентификатор семафора(число); COUNTER — счетчик (0,1,..., N); TYPE — тип семафора; TASK ID OWNER – идентификатор задачи владельца; POINTER TO TASK WAITING LIST - указатель на список задач, ожидающих освобождения данного семафора (задачи из этого списка выбираются с пом. Планировщика (FIFO или приоритетное планирование).

 

 

18. Очереди сообщений. Назначение, составляющие блока контроля (MCB), машина состояний, пример использования. Особенности использования задания временных параметров при посылки и приеме сообщений.

Сообщения позволяют задачам обмениваться данными. Этот механизм может использоваться, когда одной задаче требуется не только известить другую о наступлении события, но и передать ей какие-то дополнительные сведения (например, уведомление о завершении чтения из порта с указанием адреса буфера, где находятся считанные данные). Принцип действия является таким же, как у сигналов и семафоров: задача, которой требуются данные, вызывает системную функцию, которая определяет, доступны ли данные в запрошенном почтовом ящике. Если данные доступны, то они передаются задаче, и ей возвращается управление. Если же ящик пуст, то задача переводится в режим ожидания. При посылке сообщения проверяется, нет ли задачи, ожидающей получение данных из этого же почтового ящика. Если такая задача есть, она переводится в режим готовности, и при необходимости выполняется переключение задач, если же данные никем не запрошены, они будут храниться в почтовом ящике до первого запроса.

Очереди сообщений могут использоваться, когда данные поступают нерегулярно, и неизвестно, будет ли задача успевать сразу считывать все поступающие сообщения. Очередь сообщений организована в виде циклического буфера типа FIFO. Длина очереди, а также количество очередей сообщений, которое может использоваться в программе, задаётся в конфигурационных файлах RTOS-проекта. Работа с очередями организована таким же образом, как и с одиночными сообщениями, с тем лишь различием, что можно хранить не одно сообщение, а несколько.

 

19. Прерывания, общая схема обработки прерываний.

Прерывание — сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.

 

Прерывания – правила, наз. INT, в которых в определенные моменты времени происходит изменение сигнала. (меняется скорость с низ. на выс.)

 

Вектор прерывания — закреплённый за устройством номер, который идентифицирует соответствующий обработчик прерываний. Векторы прерываний объединяются в таблицу векторов прерываний, содержащую адреса обработчиков прерываний. Местоположение таблицы зависит от типа и режима работы процессора. (УВВ - Устройства ввода-вывода).


Поделиться:



Последнее изменение этой страницы: 2019-04-21; Просмотров: 299; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.014 с.)
Главная | Случайная страница | Обратная связь