Главная страница  Межпроцессное взаимодействие (состязание) 

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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

того, как завершится текуший обработчик. Когда все произошедшие вложенные прерывания будут обслужены, управление передается пользовательским процессам.

Алгоритм планирования в MINIX использует три очереди с разными приоритетами: для задач (высший приоритет), для файловой системы, менеджера памяти и прочих серверов (средний приоритет) и для пользовательских процессов (низший уровень приоритета). Пользовательские процессы планируются по круговому алгоритму с квантованием времени. Остальные процессы работают до тех пор, пока сами не перейдут в состояние блокировки.

Вопросы

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

2. На всех сушествуюших компьютерах как минимум часть обработчиков прерываний написана на ассемблере. Почему?

3. В тексте утверждалось, что модель, представленная на рис. 2.4, а, не подходит для файлового сервера с кэшем в памяти. Почему? Может ли каждый процесс иметь собственный кэш?

4. В случае разветвления многопоточного процесса возникнет проблема, если дочернему процессу достанутся копии всех нитей. Пусть одна из исходных нитей ожидала ввода с клавиатуры. После ветвления обе нити будут ожидать ввода с клавиатуры, по одному в каждом процессе. Может ли такая проблема возникнуть в случае ветвления однопоточного процесса?

5. Что такое состояние состязания?

6. Напишите сценарий оболочки, которая создает файл, содержащий последовательные числа, путем считывания последнего числа, прибавления к нему единицы и записывания результата в конец файла. Запустите одну копию сценария в качестве фонового процесса и одну - в качестве приоритетного процесса. Сколько времени пройдет, прежде чем образуется состояние соревнования? Что в данной модели является критической областью? Измените сценарий, чтобы избежать состояния состязания. Подсказка: воспользуйтесь следующим выражением, чтобы заблокировать файл данных

In file file.lock

7. Является ли выражение In file file.lock

эффективным механизмом разделения доступа для таких пользовательских программ, как сценарии в предыдущей задаче? Почему?



8. Будет ли работать решение активного ожидания с использованием переменной turn (рис. 2.6) в случае двух процессоров, совместно использующих общую память?

9. Рассмотрим компьютер, в котором нет инструкции tsl, но есть инструкция для обмена содержимого регистра и слова памяти за одну неделимую операцию. Можно ли применить эту инструкцию для написания программы enter region, аналогичной листингу 2.3?

10. Опишите коротко, как реализовать семафоры в операционной системе, умеющей блокировать прерывания.

11. Покажите, как можно реализовать считающие семафоры (то есть способные хранить произвольные значения) при помощи только бинарных семафоров и обычных машинных команд.

12. В разделе Примитивы межпроцессного взаимодействия была описана ситуация с высокоприоритетным процессом Н и низкоприоритетным процессом L, которая приводила к вечному зацикливанию процесса Н. Может ли возникнуть подобная проблема, если вместо планирования по приоритетам использовать карусельное? Поясните.

13. Синхронизация в мониторах происходит с использованием переменных состояния и двух специальных операций, wait и signal. Более общая форма синхронизации предполагает один примитив waituntil с произвольным булевым предикатом в качестве параметра. Например,

waituntil х<0 ог y+z<n

В данном случае примитив signal больше не нужен. Эта схема существенно более общая, чем схемы Хоара и Хансена, но тем не менее она не используется. Почему? Подсказка: подумайте о реализации.

14. В ресторане быстрого питания есть четыре категории обслуживающего персонала: 1) работники, принимающие заказы; 2) повара, готовящие пищу; 3) специалисты по упаковке блюд и 4) кассиры, принимающие у клиентов деньги и выдающие еду. Каждому из видов персонала можно сопоставить последовательный процесс взаимодействия. Какой формой межпроцессного взаимодействия они пользуются? Свяжите эту модель с процессами в UNIX.

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

16. Почему в процедуре take forks решения задачи обедающих философов (см. листинг 2.9) переменной состояния присваивается значение HUNGRY?

17. Рассмотрим процедуру put forks в листинге 2.9. Пусть переменной состояния присваивается значение THINKING после двух вызовов процедуры test, а не до. Как это повлияет на решение?



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

19. Компьютеры CDC 6600 в состоянии обрабатывать до 10 процессов ввода/ вывода одновременно благодаря интересной форме циклического планирования, называемой разделением процессора. Переключение между процессами происходит после каждой команды, поэтому команда 1 поступает от первого процесса, команда 2 - от второго и т. д. Переключение процессов производится аппаратными средствами, и издержки равны нулю. Если в отсутствие других процессов процессу для выполнения работы нужно Г секунд, сколько ему потребуется времени в случае п процессов?

20. Обычно планировщики с циклическим алгоритмом поддерживают список процессов, готовых к работе, причем каждый процесс находится в списке в единственном экземпляре. Что произойдет, если процесс окажется в списке дважды? Существует ли причина, по которой подобное изменение будет полезным?

21. Измерения показали, что время выполнения среднестатистического процесса до блокировки ввода/вывода равно Т. На переключение между процессами уходит время 5, которое теряется впустую. Напишите формулу расчета эффективности для циклического планирования с квантом Q, принимающим следующие значения:

1) Q = < ,

2) Q>T,

3) 5 < Q < Г,

4) Q = ,

5) Q около 0.

22. Запуска ожидают пять задач. Предполагаемое время выполнения задач составляет 9, 6, 3, 5 и X В каком порядке их следует запустить, чтобы минимизировать среднее время отклика? (Ответ должен зависеть от X.)

23. Пять пакетных задач. А, В, С, D, Е, поступают в компьютерный центр практически одновременно. Ожидается, что время их выполнения составит 10, 6, 2, 4 и 8 мин. Их установленные приоритеты равны 3, 5, 2, 1 и 4, причем 5 - высший приоритет. Определите среднее оборотное время для каждого из следующих алгоритмов планирования, пренебрегая потерями при переключении между процессами:

* циклическое планирование;

♦ планирование согласно приоритетам;



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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.