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

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

Вопросы 173

♦ первым пришел - первым обслужен (в порядке 10, 6, 2, 4, 8);

♦ кратчайшая задача - первая .

В случае 1 предполагается, что система многозадачная и каждой задаче достается справедливая доля процессорного времени. В случаях 2-4 считается, что в каждый момент времени запущена одна задача, работающая вплоть до завершения. Все задачи ограничены исключительно возможностями процессора.

24. Процессу, запущенному в системе CTSS, для завершения необходимо 30 квантов. Сколько раз он будет перегружен на диск, учитывая самый первый раз (прежде, чем он был запущен)?

25. Для предсказания времени выполнения используется алгоритм старения с а = 1/2. Предыдущие четыре значения времени составляли 40, 20, 40 и 15 мс (первое значение - самое давнее). Оцените следующее время выполнения.

26. В гибкую систему реального времени поступают четыре периодических сигнала с периодами 50, 100, 200 и 250 мс. На обработку каждого сигнала требуется 35, 20, 10 и х мс времени процессора. Укажите максимальное значение х, при котором система остается поддающейся планированию.

27. Объясните причины широкого распространения двухуровневого планирования.

28. В процессе работы MINIX использует переменную proc ptr, содержащую указатель на ячейку текущего процесса в таблице процессов. Зачем?

29. В MINIX сообщения не буферизуются. Поясните, почему это приводит к проблемам с прерываниями таймера и клавиатуры.

30. Когда в MINIX приостановленному процессу отправляется сообщение, вызывается подпрограмма ready, которая помещает процесс в одну из очередей планировщика. Эта подпрограмма начинается с блокирования прерываний. Почему?

31. В MINIX функция mini rec содержит цикл. Зачем?

32. Схема диспетчеризации в MINIX в целом соответствует показанной на рис. 2.10, с различными приоритетами для разных классов. Нижний класс (пользовательские процессы) планируется по циклической схеме, но задачи и серверы всегда выполняются, пока не попадут в блокировку. Возможно ли, что процессы нижнего уровня будут зависать? Почему (или почему нет)?

33. Походит ли MINIX для решения задач реального времени (таких как сбор данных)? Если нет, то что можно сделать, чтобы исправить это?

34. Предположим, у вас имеется операционная система, предоставляющая семафоры. Реализуйте систему обмена сообщениями. Напишите подпрограммы для отправки и приема сообщений.



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

36. Решите предыдущую задачу, но теперь постарайтесь избежать зависаний. Для этого, когда бабуин хочет перебраться на восток, и при этом на веревке уже висят несколько обезьян, движущихся на запад, бабуин ждет, когда веревка освободится. Другое условие: нужно запретить для остальных движение на запад, пока он не перейдет на восток.

37. Решите задачу обедающих философов в стиле каждому философу по монитору .

38. Добавьте в ядро MINIX код, который бы подсчитывал, сколько раз процесс (или задача) i обратился к процессу (или задаче) j. Сделайте так, чтобы эта матрица выводилась по нажатию клавиши F4.

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

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

41. Перепишите макросы hwint master и hwint slave так, чтобы действия, выполняемые функцией save, были бы встроены в код. Насколько увеличился объем кода? Можете ли вы измерить прирост производительности?



Глава 3 Ввод/вывод

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

Глава организована следующим образом. Сначала мы рассмотрим некоторые основы аппаратуры ввода/вывода, затем в общих чертах познакомимся с соответствующим программным обеспечением. Программное обеспечение ввода/вывода может быть структурировано в виде уровней, каждому из которых отведен строго очерченный круг задач. Мы побываем на всех уровнях, чтобы понять, что они делают и как согласуются друг с другом.

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

Затем мы сделаем общий обзор ввода/вывода в MINIX. После этого вступления мы подробно ознакомимся с четырьмя конкретными устройствами ввода/вывода: RAM-ДИСКОМ, жестким диском, часами и терминалом. Для каждого устройства мы рассмотрим его аппаратную часть, программное обеспечение и его реализацию в MINIX. Наконец, завершит главу краткое описание некоторых частей MINIX, расположенных на том же уровне, что и задачи ввода/вывода, но задачами не являющихся. Они предоставляют некоторые дополнительные службы для менеджера памяти и файловой системы, например выполняют передачу блоков данных от пользовательских процессов.

3.1. Принципы аппаратуры ввода/вывода

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



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 - 2018 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.