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

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

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

Драйвер дисковода для гибких дисков не включает в себя сложных алгоритмов планирования, таких как SSF или элеваторная схема. Запросы выполняются строго последовательно, причем следующий запрос не принимается, пока не выполнен текущий. Изначально при разработке MINIX предполагалось, что эта система предназначена для персональных компьютеров, где большую часть времени будет активен только один процесс, и вероятность появления одного запроса во время обработки другого мала. Таким образом, поддержка очередей запросов не дала бы заметного увеличения производительности, зато потребовала бы значительного усложнения кода. Сейчас это тем более не имеет смысла, так как дискеты остаются нужны по большей части для переноса отдельных файлов с одной системы на другую.

Таким образом, хотя драйвер флоппи-дисковода и не поддерживает упорядочивание запросов, он должен, как и все драйверы блочных устройств, обеспечивать разрозненный ввод/вывод, поэтому он накапливает подобные запросы в массиве до тех пор, пока запрашиваются последовательные секторы. Но здесь массив запросов меньшего объема, чем у драйвера жесткого диска. Количество запросов в нем ограничено числом секторов в одной дорожке. Кроме того, драйвер учитывает флаг OPTIONAL и игнорирует необязательный запрос, если для его выполнения требуется переход на другую дорожку.

Простота устройства аппаратной части дисковода гибких дисков приводит к усложнению его драйвера. Использовать в дешевых, медленных и обладающих малой емкостью дисководах сложные контроллеры, входящие в современные жесткие диски, неоправданно. Вследствие чего программному обеспечению приходится явно учитывать все аспекты взаимодействия с диском. В качестве примера, показывающего сложность работы с флоппи-дисководом, рассмотрим процесс позиционирования магнитной головки на нужную дорожку при выполнении операции SEEK. Для жесткого диска драйверу вообще никогда не требуется явно вызывать SEEK. У жестких дисков номера цилиндров, головок и секторов, видимые программисту, могут не совпадать с реальными. Фактически реальная геометрия может быть весьма запутанной, например, на внешних цилиндрах может быть больше секторов, чем на внутренних. Тем не менее пользователь этого не замечает. Жесткие диски способны поддерживать логическую адресацию блоков (LBA), когда сектор указывается его абсолютным номером на диске, как альтернативу традиционной адресации цилиндр/головка/сектор . Но даже при традиционной адресации можно использовать любую геометрию, раз контроллер



сам вычисляет, куда переместить головку и при необходимости выполняет операцию поиска.

Но для дискет операция SEEK требует явного профаммирования. Если команда SEEK завершилась неудачей, требуется вызвать подпрофамму, выполняющую операцию RECALBRATE, которая принудительно перемещает головку на нулевой цилиндр. Это позволяет контроллеру заново найти нужную дорожку, пошагово перемещая головку на известное количество дорожек. Конечно же, подобные действия необходимы и для жесткого диска, но контроллер жесткого диска обходится и без детальных инструкций драйвера.

Вот некоторые из особенностей дисководов для гибких дисков, которые усложняют драйвер.

1. Сменный носитель.

2. Различные форматы дисков.

3. Необходимость управления мотором.

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

Сменный носитель по определению заменяется другим, причем в случае дискет носители могут иметь множество различных форматов. MINIX поддерживает как 3,5-дюймовые, так и 5,25-дюймовые диски, отформатированные с различной плотностью записи, от 360 Кбайт до 1,2 Мбайт (для 5-дюймовых дискет) или 1,44 Мбайт (для 3-дюймовых). MINIX работает с семью различными форматами. Существует два способа решения проблемы размножения форматов, и в MINIX реализованы оба. При первом подходе каждому формату соответствует отдельное устройство, с собственным младшим номером. Например, в MINIX вы можете увидеть 14 различных устройств, начиная с /dev/pcO, которому сопоставлен 5-дюймовый диск объемом 360 Кбайт, и заканчивая /dev/PSl, то есть 3-дюймовой дискетой на 1,44 Мбайт. Помнить все четырнадцать вариантов неудобно, поэтому реализован альтернативный метод. Когда к дисководу обращаются через файл /dev/fdO или /dev/fdl (второй дисковод), драйвер тестирует дискету, чтобы определить ее формат. У разных форматов разное число цилиндров и секторов, и чтобы определить формат, делается попытка прочитать последние секторы



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

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

3.8. Часы

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

3.8.1. Аппаратное обеспечение часов

в компьютерах используются таймеры двух типов, и оба типа заметно отличаются от тех, которые используются людьми. Простейший таймер подключается к линии питания на 110 или 220 В и генерирует прерывания в каждый период колебания переменного напряжения, с частотой 50 или 60 Гц.

Второй тип часов состоит из трех компонентов: кварцевого резонатора, счетчика и регистра. Условная схема приведена на рис. 3.15. Кварцевый резонатор представляет собой особым образом укрепленный кусочек кристалла кварца, который может генерировать колебания с очень высокой стабильностью. Обычно частота колебаний резонатора находится в пределах от 5 до 100 МГц, в зависимости от параметров кристалла. В компьютере практически всегда есть как минимум один такой элемент, который генерирует синхросигнал для различных схем компьютера. Сигнал от резонатора передается на счетчик, отсчитывающий время в обратном направлении. Когда значение счетчика становится равным нулю, генерируется прерывание.

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



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