Главная  Радио и связь 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 [ 99 ] 100 101 102 103 104

описанная в п. 2.3? Какие типы задач для этого непригодны? Объясните, почему.

2.5. Спроектируйте и запрограммируйте на языке Ада пассивный пакет для работы с буферами, проект которого описан в п. 2.4. Согласно п. 2.3, этот пакет должен включать процедуры для записи символов и чтения строк. Однако формирование условия, разрешающего доступ к строке символов, должно быть организовано по-другому.

2.6. Для буферизующей задачи (рис. 2.7), реализованной согласно схеме рис. 2.8, укажите минимальное н максимальное числа требуемых контекстных переключений при передаче одного символа от отправителя к адресату, предполагая, что в системе функционируют только те три задачи, которые приведены на рисунке. Объясните решение.

2.7. Перепишите заново стековый пакет, приведенный на рнс. 2.4, определяя процедуры PUSH и POP с помощью заглушек, согласно рис. 2.12. (Метод, иллюстрируемый рис. 2.12, может быть применен не только к вложенным пакетам, но и к процедурам пакета.)

2.8. Исследуйте различные способы обработки прерываний, применяемые в разных многозадачных системах, сравнив их детально с методом, использующим концепции языка Ада (рис. 2.15).

2.9.(а) Запрограммируйте на языке Ада спецификацию и тело задачи, реализующей функции общего семафора со счетчиком. Семафоры используются как средство синхронизации задач, предотвращающее потерю сигналов, которыми они обмениваются. Такой семафор общего типа реализуется с помощью неделимых примитивов WAIT и SIGNAL внутреннего счетчика, позволяющего оценивать разность между числом задач, посылающих сигналы, и числом задач, ожидающих их поступления, и, наконец, очереди ожидающих задач с дисциплиной обслуживания «первым пришел - первым обслужен». Задача, вызывающая WAIT, попадает в указанную очередь и блокируется в том случае, если ранее было зарегистрировано большее число обращений к примитиву WAIT, чем к SIGNAL; в противном случае ее выполнение продолжается без задержки. Задача, стоящая на первом месте в очереди ожидающих, будет выполняться после того как поступит очередной вызов примитива SIGNAL.

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



ли ранее было зарегистрировано достаточное число вызовов входа SIGNAL. Объясните, каким образом это предположение нарушается в вашей Ада-программе; опишите два способа реализации, в которых подобное нарушение могло бы повлиять на поведение во времени задач, обращающихся к семафорам.

Глава 3

3.1. Изобразите структурные графы для буферизующих задач, которые рассматривались в качестве примеров в гл. 2, используя графические обозначения, приведенные на рис. 3.2 и 3.3.

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

3.3. Рис. 3.10 и 3.11 служат иллюстрацией образного представления механизма рандеву в языке Ада на примере взаимодействий людей. Однако они иллюстрируют не все возможные случаи (согласно графическим обозначениям на рис. 3.2 и 3.3). Приведите новые схемы, соответствующие рис. 3.10 и 3.11, для условного и временнбго вызовов входов, а также для оператора отбора с альтернативой задержки и объясните их смысл.

3.4. Изобразите структурные графы, показав все возможные формы взаимодействия главного и подчиненного процессов, и прокомментируйте различия между ними (см. подразд. 3.3.1). Возникают ли при этом случаи, когда подчиненная задача может быть заменена пассивным пакетом? Объясните свой ответ.

3.5. Принимая во внимание определение функциональных типов задач, данное в подразд. 3.3.1, приведите примеры использования задач этих типов на рис. 3.6, б. Выполняет ли задача-секретарь, указанная на рис. 3.6,6, функции секретаря системы в соответствии с определением, данным в подразд. 3.3.1 ? Какие функциональные типы задач не представлены на рис. 3.6,6 ? Можете ли вы дополнить рисунок, найдя в нем место этим задачам?

3.6. Рассмотрите рис. 3.14, в, на котором изображен активный стековый пакет, содержащий вложенную задачу-планировщик ресурсов. Приведите полную структурную диаграмму для системы задач, использующих этот пакет, и затем объясните проявляющиеся в рабочем режиме фундаментальные различия между характером задач, изображенных на этом рисунке, и природой данного пакета. В каком смысле можно было бы сказать, что пакет «исчезает» в процессе выполнения программы, оставляя место задачам? Какую роль в этом случае играет указанный пакет в ходе выполнения задач? В каком смысле можно говорить об отсутствии различий в рабочем режиме между



вложенным планировщиком (рис. 3.14, е) и отдельным планировщиком (рис. 3.14,5).

3.7. Рассмотрите рис. 3.17, иллюстрирующий косвенное взаимодействие различных задач через буферизующую задачу. Имеются ли существенные различия в эффективности между методом, использующим единственную буферизующую задачу (рис. 3.17, г), и методом, использующим несколько таких задач, одну для каждого абонента (рис. 3.17,6)?

3.8. Рассмотрите рис. 3.19, на котором схематически представлена задача, реализующая сервисные функции на основе приоритетов. Объясните, почему существует теоретическая возможность приема обращений к входам в порядке, отличном от предписываемого приоритетами. При каких состояниях операционного окружения системы такие ситуации были бы возможны?

3.9. Предполагается, что одна высокоприоритетная задача вызывает вход задачи, реализующей сервисные функции (см. рис. 3,19), используя оператор временного вызова, а остальные задачи, имеющие средний и низкий приоритет, обращаются к ее другим входам. Постройте временную диаграмму, иллюстрирующую чередование последовательностей событий, соответствующих точкам синхронизации, когда сервисная задача оказывается не в состоянии обслужить задачи, обращающиеся к ее средне- и низкоприоритетному входам, несмотря на то что очередь вызовов высокоприоритетного входа пуста,

3.10. Приведите временные диаграммы, показывающие чередующиеся активности различных задач, взаимодействующих через задачу-курьер, выполняющую транспортировку данных (рис. 3.21,(3), или с помощью задачи, осуществляющей их буферизацию (рис. 3.21, з). Прокомментируйте различия.

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

3.12. Предполагается, что спроектированная система представляет собой набор задач, которые для ее успешного функционирования должны взаимодействовать друг с другом. Приведите примеры, показывающие, что использование произвольных комбинаций различных схем взаимодействия, изображенных на рис. 3.21, может приводить к тупику.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 [ 99 ] 100 101 102 103 104


0.007