Глава 7

Устройства

Основная задача ОС — обеспечение работы с различными устройствами ввода, хранения и отображения информации, входящими в состав вашей системы. Некоторые из этих устройств являются физическими объектами (например, дисководы, дисплей, принтер), другие организованы программно (например, RAM-диск). Разумеется, для того, чтобы ОС могла использовать какое-либо из устройств, оно должно быть прежде всего распознано (или, как говорят компьютерщики, смонтировано). Одни устройства стандартны для ОС и распознаются автоматически. Другие устройства монтируются встроенным в ОС протоколом автоматического распознавания подключенных физических устройств (AutoConfig). И, наконец, некоторые устройства надо монтировать явно, сообщив ОС об их наличии и характеристиках с помощью Shell-команды MOUNT или BINDDRIVERS. Подробнее о процессе монтирования см. в описании команды MOUNT.

Отличительным признаком имени устройства (как и корневой директории) является двоеточие в конце имени.

Существует три основных типа устройств: физические (devices), тома (volumes) и логические (dirs). Вы можете просмотреть список всех устройств в вашей системе, исполнив Shell-команду ASSIGN без параметров.

Физическими устройствами (devices) считаются, например, дисководы (DF0:, DF1:, и т.д.), партиции жесткого диска (DH0:, DH1:), принтер (PRT.), параллельный порт (PAR:), последовательный порт (SER:).

Тома (volumes) — имеющие имя (метку) конкретные диски, находящиеся в дисководах, например "Workbench:" или "Storage:". Имена присваиваются дискам при форматировании или с помощью команды RELABEL.

И, наконец, к логическим устройствам (dirs, logical devices) относят псевдонимы маршрутов, назначенные либо системой при начальном запуске, либо с помощью команды ASSIGN.

Каждая Амига всегда имеет по крайней мере один 3.5" дисковод (устройство DF0:). Обычно он двойной плотности (работает с дискетами DS/DD) и имеет полезный объем 880 Кб. В модели А4000 устанавливается дисковод высокой плотности, емкость которого ровно в 2 раза выше за счет более плотной записи на дорожках (1.76 Мб; дискеты HD). который может работать и с дискетами DS/DD (тип дискеты распознается автоматически — у дискет высокой плотности два отверстия по углам, а у дискет двойной плотности — только одно). Число дорожек на всех типах дисководов равно 80; число секторов на дорожке — 11 для дисков двойной плотности и 22 — для дисков высокой плотности. Скорость обмена данными с дисководами составляет порядка 24 Кб/сек. Амига всегда читает/пишет на дискету целыми дорожками, даже если нужен всего один сектор, что в реальной работе дает значительный выигрыш в скорости.

Кроме DF0: к Амиге можно подключить еще до 3-х дисководов — DF1:, DF2:, и DF3: через внешний разъем (в А4000 дисковод "DF1:" дополнительно устанавливается внутрь корпуса, а дисководы DF2: и DF3: — внешние).

Важным устройством является RAM-диск — динамически выделяемая область оперативной памяти, предназначенная для временного хранения файлов. "Динамически выделяемая" означает то, что размер RAM-диска всегда находится в соответствии с общей длиной хранящихся в нем файлов. RAM-диск является органичной частью системы настолько, что три стандартных системных каталога ("ENV:", "Т:" и "CLIPS:") обычно создаются именно в нём. RAM-диск с точки зрения логики можно считать обычным диском переменного объёма с чрезвычайно быстрым доступом. Вот только форматировать RAM-диск бессмысленно, система выдаст сообщение об ошибке "несоответствие типа объекта".

Поскольку RAM-диск всегда имеет тот размер, который требуется для размещения всех находящихся в нём файлов, бессмысленно говорить о какой-либо степени его заполненности — поэтому, например, команда INFO всегда сообщает, что RAM-диск заполнен на все 100%. Можно, конечно, отталкиваться от общего объема свободной памяти: в левой части Workbench-окон ОС 1.2 и 1.3 находится вертикальный "градусник", показывающий степень заполнения дисков, где степень заполнения RAM-диска определяется именно исходя из общего объема доступной оперативной памяти. (Workbench-окна ОС 2.04, 3.0, 3.1 не имеют "градусника", но в ОС 3.5, 3.9, он появляется опять — прим. aGGreSSor).

Недостатком RAM-диска является тот факт, что при рестарте системы, возможно вызванном каким-либо сбоем, а также при отключении питания все его файлы теряются. В качестве частичной компенсации ОС предлагает устройство "RAD:", которое хоть и не выдерживает отключения питания, поскольку как и RAM-диск хранит свои файлы в оперативной памяти системы, тем не менее позволяет сохранить их в 99% случаев системных сбоев, повлекших за собой горячий рестарт. Устройство "RAD:" в отличие от RAM-диска не является неотъемлемой частью системы и поэтому перед использованием должно быть смонтировано. "RAD:" всегда имеет фиксированный объём, который жестко задается в файле описаний устройств (т.н. mountlist). Как правило, этот объём в точности равен размеру одной дискеты двойной плотности (880 Кб), хотя ничто не мешает как угодно его изменить, модифицировав значение "HighCyl" в описании устройства "RAD:" (см. описание команды MOUNT).

Под управлением ОС 2 или 3, "RAD:" может состоять из нескольких модулей равного или неравного объёма, каждый из которых считается как бы отдельным диском. Для каждого модуля должно быть отдельное описание в mountlist-файле со значением поля "Unit", соответствующим номеру модуля. Нумерация модулей начинается с нуля.

Ещё одним свойством "RAD:" является то, что с него может осуществляться старт системы (в случае, если его стартовый приоритет выше приоритета любых других устройств, с которых Амига также может стартовать).

Итальянский программист Никола Салмориа написал драйвер устройства "statram.device", которое во всём похоже на "RAD:", однако поддерживает любые типы файловых систем (вплоть до MS-DOS) и расходует память динамически (как и RAM-диск).

Дистрибутивный пакет "statram.device" версии 3.1 является свободно распространяемым и бесплатным; вы можете установить его на свою систему с диска, прилагаемого к этой книге. Поскольку требованием автора является сохранение дистрибутива в первозданном виде, мы не можем добавлять и/или изменять какие-либо файлы дистрибутива и переводить их на русский язык.

Клип (буферы обмена)

В AmigaOS (только для ОС 2 и 3) есть ещё одно очень полезное устройство — т.н. клип (clipboard). По сути дела это, как и RAM-диск — некая динамически резервируемая системой область памяти, куда любые программы могут класть данные, а затем забирать их оттуда.

Вся прелесть клип-устройства состоит в том, что оно является удобным средством для межпрограммного обмена данными — ведь совершенно необязательно, чтобы и запись и чтение данных в/из клип-устройства производила одна и та же программа. Вы можете резонно заметить, что для этих целей сгодился бы и RAM-диск. Так-то оно так, да есть нюанс: RAM-диск имеет дело с файлами, а достучаться до файла можно только в том случае, если известно его имя. Не присваивать же имя каждому помеченному блоку текста, прежде чем помещать этот блок в буфер! Гораздо проще знать, что этот блок просто находится в клипе и всё.

Клип-устройство подразделяется на модули общим числом до 256-ти. Данные в разных модулях абсолютно независимы друг от друга. Между прочим, клип-модули представляют собой файлы логического устройства "CLIPS:" которое, как правило, соответствует маршруту "RAM:Clipboards" (назначение производится в файле "S:Startup-Sequence"); имена файлов соответствуют номерам модулей клип-устройства. Файлы имеют универсальный формат IFF (Interchange File Format), для работы с ними ОС использует библиотеку "iffparse.library".

Кроме множества прикладных программ, с клип-устройством могут общаться также и Shell-окна; если у вас ОС 2 или 3, произведите простой эксперимент — набейте какой-нибудь текст в Shell-окне, затем поставьте курсор на начало текста, нажмите левую кнопку мышки, проведите указателем по тексту и отпустите кнопку. Вы увидите, что текст, по которому прошел указатель, помечен контрастным цветом. Теперь скопируйте текст в нулевой модуль клип-устройства, нажав комбинацию клавиш "Правая Amiga + С". Цветная маркировка исчезнет — сигнал, что помеченный текст был благополучно скопирован в клип. Вы можете тут же нажать комбинацию клавиш "Правая Amiga + V" и текст из клип-устройства будет немедленно вставлен по текущей позиции курсора. Можно закрыть Shell-окно, затем опять открыть и снова нажать "Правая Amiga + V" — текст снова будет вставлен в позиции курсора. Можно войти в любой редактор — хоть GoldEd, хоть CygnusEd, и опять нажать "Правая Amiga + V" — снова текст из клипа будет благополучно перенесен туда, куда вы приказали.

По умолчанию работа всегда происходит с нулевым модулем ("Unit") клип-устройства (для Shell-окон номер модуля определяется командой CONCLIP, исполняемой в файле "S:Startup-Sequence"; подробно эта команда описана далее). Таких модулей, повторяем, может быть до 256-ти, все они абсолютно независимы друг от друга. Клип-устройство для своей работы требует наличия библиотеки "iffparse.library" и драйвера "clipboard.device".


Сайт создан в системе uCoz