Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРВ.docx
Скачиваний:
11
Добавлен:
25.12.2018
Размер:
434.95 Кб
Скачать

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, в которых в определенные моменты времени происходит изменение сигнала. (меняется скорость с низ. на выс.)

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