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

4. Монопольные (Standalone) приложения

Standalone приложение:

монопольно используюет ресурсы целевой платформы;

поддерживается платформо-ориентированной (native) библиотекой драйверов устройств (драйвер осуществляет управление устройством, реализует процедуры ввода/вывода);

Библиотека

 

Standalone приложение

драйверов

 

 

 

 

 

Целевая платформа

 

 

 

может включать в себя самостоятельные процедуры обработки прерываний и действия по вводу/выводу;

сильно зависит от платформы

4. Standalone приложения

2002

1

v.0.3

 

 

Пример

Таймер

Управление

 

УСО

Запрос на печать

 

 

ОУ

 

Печать

Управление:

Период = 1 s

WCET < 0.3 ms

Функции

Измерение

Принятие решения

Вывод воздействия

Запрос на печать

Период = 180 sWCET < 0,05 msФункции

Запуск печати:

ВыводНаПечать(Данное: X)

4. Standalone приложения

2002

2

v.0.3

 

 

Пример (2) Возможная реализация

 

Таймер

 

 

Прерывание

Таймер:

 

 

 

Запрос на прерывание каждую секунду

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Часы;

 

 

 

 

 

 

 

 

 

 

Управляющая программа

 

 

 

 

 

if flag_1 then

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Управление;

 

 

 

 

 

 

 

flag_1:= false;

 

 

 

 

 

 

if flag_2 then

 

 

“Внешняя

 

 

ВыводНаПечать(X);

 

 

flag_2:= false;

 

 

 

среда”

 

 

 

 

 

 

while(true)do end;

 

 

 

 

 

 

 

 

 

Часы:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Часы

 

реализует два счетчика, значения которых

 

 

 

 

 

увеличиваются на 1 при каждом

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ОУ

 

 

 

 

обращении; когда

 

 

Управление

 

 

 

 

счетчик_1 = 1 flag_1:= true

 

 

 

 

 

 

 

счетчик_2 = 180 flag_2:= true

 

Печать

 

 

Драйвер

 

 

 

 

 

Драйвер печати:

 

 

 

 

печати

 

 

 

 

 

 

 

 

Библиотечная программа

 

 

 

 

 

 

 

4. Standalone приложения

2002

3

v.0.3

 

 

Пример (3) Возможная реализация

Предлагаемая реализация некорректна - вывод на печать время от времени “зависает”

Необходимо более детальное рассмотрение работы системы

4. Standalone приложения

2002

4

v.0.3

 

 

Пример (4) Работа печати

Буфер печати X1

X2

Xn

 

 

Программа

 

 

 

1.

Запрос: ВыводНаПечать(Данное:

Запрос на

1

 

Драйвер

 

X)

 

2.

Секция запуска считывает Х в буфер

печать

 

 

печати

 

 

2

Секция

 

вывода, пересылает порцию Х1 на

 

 

 

устройство и возвращает управление

 

 

 

запуска

 

3

4

Прерывание

3.

Программа и устройство работают

 

параллельно

 

 

 

 

 

 

 

 

Передача Xi

4.

Устройство закончило печать Х1,и

 

 

5

 

 

формирует запрос на прерывание

7

6

 

Возврат

5.

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

 

 

 

пересылает Х2 на устройство

 

 

 

 

6.

Возврат в точку прерывания

 

 

 

 

7.

Программа и устройство работают

 

 

 

 

 

параллельно

8. И так далее для Х2 Х3 Х4 ...

4. Standalone приложения 2002 5 v.0.3

Пример (5) Работа печати

Управляющая программа

Секция запуска

Управление

1

2

2

2

1

 

3

6

6

6

3

6

4

5

5

Драйвер печати

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

2.Прерывания печати

3.Часы

7

7

8

5.Управление

6.Занятое ожидание while(true) do end

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

4.Секция запуска драйвера печати 8. Драйвер прерывается таймером (!)

Некорректно реализован возврат из процедуры обработки прерывания таймера (Управляющая программа). Вследствие этого зависает драйвер печати

4. Standalone приложения

2002

6

v.0.3

 

 

Пример (5) Корректная реализация

Таймер

Прерывание

 

Часы

“Внешняя

Возврат

среда”

 

 

Секция

 

запуска

 

Прерывание

Печать

Передача Xi

 

Возврат

Управляющая программа

while(true)do

if flag_1 then Управление; flag_1:= false;

if flag_2 then ВыводНаПечать(Данное:

X);

flag_2:= false;

end;

ОУ

Управление

4. Standalone приложения

2002

7

v.0.3

 

 

Проблемы

Критическая секция

КС - участок программы, выполнение которого не должено прерываться

Синхронизация

согласование во времени выполнения заданных участков программы

4. Standalone приложения

2002

8

v.0.3

 

 

Критическая секция

 

 

Прерывание

a

R:= A;

R:= A;

b

R:= R+1;

R:= R+1;

 

A:= R;

A:= R;

 

 

Возврат

a)

A = 5;

R = 5; R = 5; R = 6; A = 6; R = 7; A = 7;

b)

A = 5;

R = 5; R = 6; R = 5; R = 6; A = 6; A = 6;

Возможное средство:

маскировать прерывания (CLI …… STI). Однако, КС не должна быть длинной – увеличение latancy (В предыдущем примере недопустимо целиком маскировать обработку прерывания печати)

4. Standalone приложения

2002

9

v.0.3

 

 

Синхронизация

Программа X

Программа Y

a

Прерывание

 

b

Работа

Ввод

c

с данным

данного

 

 

 

 

Возврат

Возможное средство: механизм флагов

Идея:

Программа X:

 

flag := false;

 

repeat until flag;

 

Работа с данным;

 

flag := false;

Программа Y:

Ввод данного; flag := true;

4. Standalone приложения

2002

10

v.0.3

 

 

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