Дисковая система IBM PC

Дисковая система IBM PC

Сначала ( в 1981 году ) IBM PC имели один-единственный тип внешней памяти - пятидюймовые односторонние гибкие магнитные диски двойной плотности с програмной разбивкой секторов емкостью 150K. С тех пор IBM значительно увеличила емкость дисков, был добавлен новый стандартный размер дисков (три с половиной дюйма), однако физическая и логическая структура диска не притерпела значительных изменений. @ Физическая организация хранения информации на дискете Гибкий диск имеет пластиковую основу с нанесенным на нее магнитным покрытием. В центре находится шпиндельное отверстие , а на некотором смещении от центра имеется одно индексное отверстие.

Назначение индексного отверстия - обеспечить накопителю точку отсчета при счытывании или записи данных.

Гибкий диск помещен в квадратный чехол, в котором также имеются шпиндельное и индексное отверстие.

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

Запись по этому методу осуществляется путем изменения направления тока записи в магнитной головке в соответсвии с обрабатываемыми данными.

Изменение направления тока записи вызывает перемену магнитного потока в магнитной головке, что приводит к изменению намагниченности учаска носителя информаци, проходящего в это время под головкой. В зависимости от направления вектора намагниченности рабочего слоя магнитного носителя по отношению к направлению вектора скорости перемещения носителя, различают продольную, поперечную и перпендикулярную намагниченность. В накопителях IBM формата ( имеются в виду накопители 34 и 3740 фирмы IBM ) используется только продольная намагниченность, поэтому в дальнейшем речь пойдет именно о ней.

Процесс записи может быть представлен в виде следующих передаточных звеньев: i(t) -> F(t) -> H(x,y,z,t) -> M(l,y,z) Процесс воспроизведения: M(l,y,z) -> Ф(t) -> e(t) Здесь i(t) - ток в обмотке записи магнитной головки; F(t) - магнитодвижущая сила магнитной головки записи; H(x,y,z,t) - поле записи; M(l,y,z) - остаточная намагниченность после воздействия поля записи; Ф(t) - магнитный поток в сердечнике магнитной головки воспроизведения; e(t) - электродвижущая сила, наводимая в обмотке магнитной головки воспроизведения; x,y,z - пространственные координаты, связанные с головкой; l=vt - координата, связанная с носителем записи; v - скорость записи. Во время считывания на выходной обмотке головки воспроизведения наводятся разнополярные сигналы в те моменты времени, когда под головкой проходят участки поверхности с изменением направления намагниченности. Эти сигналы воспринимаются усилителем-формирователем, который преобразует их в выходные униполярные импульсы считывания 'единиц'. Записи 'нуля' соответствует отсутствие импульсов в некоторые определенные моменты времени. @ Методы кодирования информации на дискете Для записи информации на магнитные носители применяют специально разработанные модуляционные коды записи.

Данные коды разрабатываются специалистами и должны обладать высокой информативностью и способностью с самосинхронизации. Под информативностью способа записи понимают количество записанной информации, приходящийся на один период намагниченности. В накопителях 3740 ( IBM ) используется метод частотной модуляции, а в накопителях 34 - метод модифицированной частотной модуляции. 'Метод частотной модуляции Начало каждого элемента отмечается тактовым импульсом в виде смены направления намагниченности. Если элемент должен представлять 1, то в его центральной части записывается еще один тактовый импульс ( что бы создать изменение магнитного потока ), а если 0, то смены напрвления намагниченности не происходит вплоть до начала следующего элемента. Таким образм, если тактовая частота равна F, то поток двоичных единиц дает частоту 2F. тактовые импульсы данные 1 0 0 1 0 1 1 1 сигналы записи 'Метод модифицированной частотной модуляции В этом методы 1 всегда представляется переходом намагниченности в центре элемента.

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

Поэтому в зависимости от точки отчета одна и таже последовательность импульсов может трактоваться по-разному. Для устранения этой в высшей мере неприятной неоднозначности на каждой дорожке вводят специальные поля, заполненные нулями, размером каждого поля 12 байт. При считывании информации контроллер НГМД знает, что в них находятся нули, поэтому трактует поступающие сигналы как тактовые импульсы, одновременно соответствующим образ подстраивая схему сепаратора данных.

Помимо рассмотренных выше методов частотной и модифицированной частотной модуляции используется кодирование с ограниченным расстоянием между периодами намагниченности ( RLL - кодирование ). По сравнению с методом модифицированной частотной модуляции об'ем хранимой на диске информации увеличивается на 50%. Метод RLL основан на записи с групповым кодированием. В этом методе каждый байт поступающих данных разбивается на две тетрады, а затем тетрада шифруется специальным 5-ти разрадным кодом, характерным тем, что каждое число в нем содержит, по крайней мере, одну перемену направлении потока. При считывании две 5-ти разрядные тетрады снова сливаются в байты. @ Физическая структура диска Емкость диска зависит от характеристики дисковода и особенностей операционной системы; однако структура диска, в сущноcти, всегда одна и та же.

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

Сектор является единицей хранения информации на дискете.Количество информации на диске, таким образом, зависит от числа дорожек ( от плотности записи ) и общего размера секторов на каждой дорожке.

Старые модели дисководов работали с 40 дорожками, нынешние модели - с 80, большинство современных дисководов позволяют форматировать дискеты плотностью до 85 дорожек. Для стандартных дискет IBM расположение каждой дорожки не может быть изменен, потому что это прежде всего зависит не от ОС и не от дискеты, а от конструктивных особенностей дисковода.Однако, число, размер и расположение секторов задаются программно при первоначальной разметке ( форматировании ) дискеты.

Разметка осуществляется либо ОС, либо используются функции BIOS. Хотя MS-DOS поддерживает размеры сектора дискет 128, 256, 512 и 1024 байта, однако используется сектор размером 512 байт и, по-видимому, это в ближайшее время не изменится ( если и измениться, то только в сторону увеличения ). Структура формата дорожки зависит от типа контроллера, но, как правило, включает в себя байты синхронизации, указывающие на начало каждого сектора, идентификационные заголовки, cостоящие из номера цилиндра, головки, сектора и размера сектора, и поля, хранящего байты циклического контроля, предназначеные для обнаружения ошибок при считывании данных и служебной информации. На следующем рисунке представлен формат дорожки для стандарта IMB 34. индекс gap4a index gap1 sector 1 sector n gap4b sync IAM header data field sync SAM c h r n crc gap2 sync DAM data crc gap3 На приведенной выше схеме : Обозн.

Назначение поля Содержимое Длина GAP4A Предындексный зазор дорожки 4E 50 SYNC Поле синхронизации 00 0C IAM Адресный маркер начала дорожки C2* 3 FC 1 SAM Маркер начала сектора A1 3 FE 1 C Номер цилиндра -- 1 Н Номер головки -- 1 R Номер сектора -- 1 N Код размера сектора -- 1 CRC Контрольный код -- 2 GAP2 Зазор заголовка сектора 4E 16 DAM Маркер начала данных A1 3 FB 1 GAP3 Зазоp области данных 4E 50 data Данные -- ** GAP4B Зазор дорожки 4E *** * - ^^&Данные поля записываются со специально нарушенными битами ^^&синхронизации. ** - ^^&Длина данных определяется по формуле 128*2^N, где N - код ^^&длины из заголовка сектора: от 0 (128б) до 7 (16384б). *** - ^^&Длина определяется оставшимся расстоянием до индексного от- ^^&верстия и зависит только от скорости вращения дисковода в ^^&момент форматирования. Поля GAP1..GAP4 служат прежде всего для организации задержки при выдачи порций данных с дискеты, а также для компенсации разбросов физической длины различных полей, возникающих из-за несовершенства механизма дисковода ( конкретнее, из-за нестабильности вращения ). Маркеры служат для выделения определенных областей на диске: идентификатора дорожки, заголовка сектора или области данных. Для того что бы маркеры можно было отличить от даннных, их записывают со специально нарушенным кодом синхронизации.

Четвертый байт маркера обозначает тип выделяемой им области.

Конкретно в маркере области данных значение fb соответствует обычным данным, а f8 - удаленным.

Целостность информации в областях данных контролируется с помощью циклического контрольного кода, контрольные числа которого записываются после определенных областей. При считывании с дискеты контроллер самостоятельно высчитывает контрольную сумму, а затем сравнивает ее со считанной с диска. Эта контрольная сумма, называемая кодом циклического контороля ( CRC - Cyrcle Redundency Contol ), подсчитывается с помощью полинома следующего вида : X 16 + X 12 + X 5 + X + 1 В случае несовпадении этих двух чисел выставляется флаг ошибки. @ Интерфейс адаптера НГМД Функции сигналов адаптера НГМД следующие: Наименование Выполняемая функция High/Normal Используется для переключения схем записи/чтения для работы с нормальной и высокой плотностью Index Перепад напряжения с высокого уровня на низкий при обнаружение индексного отверстия Select Выбор накопителя ( присутствует постоянно ) Mot Включение мотора дисковода Direction Направление перемешения головок при сигнале Step низкий уровень - к центру дискеты; высокий уровень - к краю дискеты; Step Перемещеие головок на одну дорожку Write data Запись информации, каждый импульс вызывает изменение магнитного потока на обратный Write gate Разрешение записи информации Track 0 Перемещене головок к началу дискеты Write Запрет записи на дискеты ( сигнал появляется при protected присутствии дискеты с защитной наклейкой ) Read data Перепад напряжения с высокого уровня на низкий соответствуют обнаружению на дискете перехода намагниченности. Select head Выбор головки для чтения/записи низкий уровень - головка 1; высокий уровень - головка 0; Ready Дискета готова к работе Disk change Вставлена новая дискета Полярность всех сигналов интерфейса (кроме тех, где указано иное) отрицательная.

Сигналы Disk change и High/Normal в IBM PC/XT не используются. @ Логическая организация диска Первая операция, которую необходимо выполнить перед тем, как дискета будет готова к использованию - это форматирование. Этот процесс позволяет придать диску его окончательную структуру. В ходе форматирования определяется количество дорожек и число секторов на дорожке. MS-DOS предусматривает четыре логических области дискеты: - загрузочный сектор ( boot record ) - таблица размещения файлов ( file allocation table ) - корневой каталог - область данных 'Загрузочный сектор Содержит короткую ( менее 512 байт ) программу начальной загрузки ОС в память компьютера.

Независимо от типа ОС и способа форматирования дискеты, эта программа всегда занимает самый первый сектор на самом первой дорожке диска.

Следует различать Boot record и Master Boot record. Первый находится на дискеты в случае если эта дискета не системная.

Второй же находится исключительно на системных дисках. Также этот сектор содержит всю важную информацию о характеристиках диска.

Структура этой информации следующая : Cмещение Название байт Описание 00 Команда JMP 3 Длинный или короткий переход на программу загрузчика 03 Идентификатор 8 Идентификатор версии DOS, с помощью которой отформатирован диск 0B Байт/Сектор 2 Размер сектора в байтах 0D Сектор/Кластер 1 Число секторов в кластере 0E (*) Резерв 2 Количество резервных секторов 10 Число FAT 1 Число копий FAT на диске 11 Число корневых 2 Max количество записей в записей корневом каталоге диска 13(**) Всего секторов 2 Общее число секторов на диске 15 Носитель 1 Тип магнитного носителя 16 Сектор/FAT 2 Число секторов в каждой из FAT 18 Сектор/дорожка 2 Число секторов на одну дорожку 1A Число головок 2 Число головок на диске 1С Скрытых секторов 4 Число скрытых секторов на диске 20 Боьших секторов 4 Общее число секторов 22 Номер накопителя 1 Номер накопителя по BIOS'у 23 1 Резерв 24 Сигнатура 1 Содержит число 29 25 ID тома 4 Идентификатор тома диска 29 Метка тома 11 Копия метки тома 34 ID типа FAT 8 FAT12 или FAT16 -байт (*) - ^^&для формата IBM PC длина зарезервированной области всегда составляет 1 сектор ( сектор загрузчика ) (**)- ^^&если более 65535 то 0 'Таблица размещения файлов ( FAT ) Содержит информацию о месторасположении записанных на дискету файлов.

Системa MS-DOS выделяет для хранения файла, в зависимости от его длины, один или более кластеров ( кластер - единица хранения данных на диске, обычно один кластер равен нескольким секторам ), однако MS-DOS не заботится, чтобы запись файла происходила последовательно ( скорее наоборот : логика работы MS-DOS такова, что она всячески способствует фрагментации файлов ), поэтому необходимо хранить информацию, по каким именно кластерам раскидан данный файл. В силу особой важности этой информации FAT существует на диске в двух копиях. FAT дискеты состоит из 12-битовых элементов.

Структура таблицы размещения файлов - следующая: Элемент FAT Выполняемая функция 0 Идентификатор формата 1 Зарезервирован ( должен быть FFF ) 2 Статус кластера 2 3 Статус кластера 3 ... ... Идентификатор формата может принимать следующие значения : F0 - 3'5/2/18 ( дискета 3'5, 2 стороны, 18 секторов ) F8 - жесткий диск F9 - 5'25/2/15 или 3'5/2/9 FC - 5'25/1/9 FD - 5'25/2/9 FE - 5'25/1/8 FF - 5'25/2/8 Статус кластера может быть следующим : 000 - кластер свободен FF0..FF6 - зарезервирован FF7 - испорчен FF8...FFF - последний кластер иначе - номер следующего кластера файла Интересно заметить, что, по-видимому, значение статуса 001 является запрещенной комбинацей. 'Корневой каталог Следует непосредственно за FAT. Содержит информацию об основных параметрах файлов ( длине, дате создания,...). Каждая запись в каталоге, соответствуeт тому или иному файлу ( кроме, разумеется, метки диска ), включает номер первого кластера, назначенного MS-DOS этому файлу, который используется как точка входа в FAT. Начиная с этой точки, каждая запись в FAT содержит номер следующего кластера, распеределенного под этот файл, или метку последнего кластера.

Структура записи в корневом каталоге следующая : Cмещение Название Описание 00 Имя Имя файла 0 если запись свободна E5 если файл удален 2E запись родительского каталога 08 Расширение 0B Атрибуты Системный атрибут файла 0C Резерв 16 Время Время последней перезаписи файла 18 Дата Дата последней перезаписи файла 1A Кластер Номер первого отведенного кластера 1C Размер Размер файла ( 4 байта ) 'Область данных Именно то место, ради которого и используется дискета - здесь храниться информация пользователя. MS-DOS рассматривает эту область как совокупность кластеров, каждый из которых содержит один или несколько секторов. Из-за того что первые два поля FAT зарезервированы, первому кластеру в области данных присвоен номер 2. Все каталоги, кроме корневого, также раасматриваются MS-DOS как файлы особого вида, и поэтому помещаются в область данных. @Работа BIOS с НГМД Програмное управление дискетой ( точнее говоря, адаптером НГМД) осуществляется с помощью драйвера BIOS, вызов которого осуществляется через прерывание int 13. Методика вызова конкретных функций стандартна, то есть номер функции загружается в ah, остальные параметры в другие регистры общего назначения, для адресовки буферов так же используется регистровая пара es:bx. Всего стандартный драйвер поддерживает 6 функций работы с НГМД с номерами от 0 до 5. Перечислим их в порядке возрастания : 0 - Сброс системы НГМД 3 - Записать сектор 1 - Прочитать состояние 4 - Проверить сектор 2 - Прочитать сектор 5 - Разметка дорожки Все функции выполняются, согласовываясь с базовой дисковой таблицей, на которую указывает вектор 1e. Разумеется пользователь может модифицировать этот вектор и создать свою таблицу. При загрузке ОС BIOS инициализирует ее, а DOS модифицирует, чтобы улучшить производительность дискет.

Структура этой таблицы следующая ( везде, где не сказано иное, время указывается в квантах системного таймера ). Смещ Содержимое 0 биты 4-7: время перехода с дорожки на дорожку ( в млс ) биты 0-3: время под'ема головки после чтения/записи 1 бит 0: 1= исп.DMA , 0= DMA не используется биты 2-7: время опускания головок 2 время не остановки двигателя после окончания чтения/записи 3 размер сектора (0=128, 1=256, 2=512, 3=1024) 4 номер последнего сектора на дорожке 5 длина межсекторного промежутка для операций чтения/записи 6 Максимальная длина передаваемых данных 7 длина межсекторного промежутка для операции форматирования 8 символ-заполнитель для форматирования ( обычно f6 ) 9 время позиционирования головок a время разгона мотора (в 1/8-секундных интервалах) Также в BIOS Data Segment содержатся следующие параметры НГМД: 0:043e требуется рекалибрация флоппи-дисковода (бит 0=A, бит 1=B, etc.) 0:043f мотор дискеты включен (бит 0=drive A, бит 1=B, etc.) 0:0440 время до выкл. мотора. Если 0, то мотор выключается 0:0441 код ошибки дискеты (то же, что возвращается по int 13 ) 0:0442 область информации состояния контроллера дискет (7байт) @ Некоторые форматы дисков, принятые в MS-DOS Начиная с MS-DOS v2.0 возможна запись/чтение практически любых физических форматов дискет. Эта возможность осуществляется использованием механизмом загружаемых драйверов устройств.

Появление в последнее время расширенных версий BIOS'a практически упразнило понятие 'стандартный формат', теперь стандартным можно считать практически любой формат, который сответствует спецификации MS-DOS. Вообще, появление новых форматов тесно связано с историей развития DOS. Первоначальная версия MS-DOS v1.0 поддерживала только формат, обозначенный ниже как (1.0) следующая версия 1.1 добавила (1.1), а версия 2.0 - (2.0). Короче говоря, почти каждая версия DOS приносила что-то новое. Все, что из этого вышло, представлено ниже.

Возможные варианты форматов в зависимости от типа дисковода: 360 Кб дисковод (1) 160 Kb 40 дорожек 8 секторов 1 сторона 180 Kb 40 дорожек 9 секторов 1 сторона 200 Kb 40 дорожек 10 секторов 1 сторона (1.1) 320 Kb 40 дорожек 8 секторов (2.0) 360 Kb 40 дорожек 9 секторов 400 Kb 40 дорожек 10 секторов 420 Kb 42 дорожки 10 секторов 430 Kb 43 дорожки 10 секторов 720 Кб дисковод (3'5' и 5'25') 720 Kb 80 дорожек 9 секторов 747 Kb 83 дорожки 9 секторов 800 Kb 80 дорожек 10 секторов 820 Kb 82 дорожки 10 секторов 830 Kb 83 дорожки 10 секторов 1.2 Мб дисковод 180 Kb 40 дорожек 9 секторов 1 сторона 200 Kb 40 дорожек 10 секторов 1 сторона 320 Kb 40 дорожек 8 секторов 360 Kb 40 дорожек 9 секторов 400 Kb 40 дорожек 10 секторов 420 Kb 42 дорожки 10 секторов 430 Kb 43 дорожки 10 секторов 720 Kb 80 дорожек 9 секторов 747 Kb 83 дорожки 9 секторов 800 Kb 80 дорожек 10 секторов 820 Kb 82 дорожки 10 секторов 830 Kb 83 дорожки 10 секторов 1.2 Mb 80 дорожек 15 секторов 1.36 Mb 80 дорожек 17 секторов 1.39 Mb 82 дорожки 17 секторов 1.41 Mb 83 дорожки 17 секторов 1.44 Mb 80 дорожек 18 секторов 1.47 Mb 82 дорожки 18 секторов 1.49 Mb 83 дорожки 18 секторов 1.44 Мб дисковод 720 Kb 80 дорожек 9 секторов 800 Kb 80 дорожек 10 секторов 820 Kb 82 дорожки 10 секторов 830 Kb 83 дорожки 10 секторов 1.44 Mb 80 дорожек 18 секторов 1.52 Mb 80 дорожек 19 секторов 1.60 Mb 80 дорожек 20 секторов 1.64 Mb 82 дорожки 20 секторов 1.68 Mb 83 дорожки 20 секторов 1.68 Mb 80 дорожек 21 сектор 1.72 Mb 82 дорожки 21 сектор 1.74 Mb 83 дорожки 21 сектор Скорости передачи данных : Дисковод 360-720 5'25' - 300 Кбит 720 3'5' - 250 Кбит 1.2 5'25' - 300 Кбит (DD) 500 Кбит (HD) 1.44 3'5' - 250 Кбит (DD) 500 Кбит (HD) 2.88 3'5' - ??? (вероятно 1000 Кбит) Дисковод 1.44 Мб вообще интересен тем, что при той же скорости передачи данных обеспечивает гораздо более высокую плотность записи, чем дисковод 1.2 Мб. По этой причине при форматировании на 720-800 Кб скорость передачи ниже. ` @Как увеличить скорость чтения дискет Оказывается возможно форматировать диски так, что скорость обращения к дискете увеличивается в полтора раза (а в ряде случаев и больше). Суть состоит в следующем: когда дисковод перемещает головку с дорожки на дорожку после чтения/записи при обычном расположении секторов, первый сектор успевает 'ускользнуть' от головки и приходится ждать еще целый оборот диска, чтобы прочитать его.

Замечено, что если на каждой последующей дорожке 'сдвинуть' первый сектор на три сектора, то при перемещении головки он считывается сразу - что и является причиной увеличения производительности. @О восстановлении дискет @ Продолжитиельность жизни гибких дисков обычно около трех лет. Хотя чисто теоретически правильно эксплуатируемый диск выдерживает 70 миллионов проходов по одной дорожке, что составляет более 20 лет непрерывной работы.

Однако, все это относится к идеальным условиям эксплуатации, но где вы их видели ?! Дискеты зачастую лежат без конвертов на пыльной поверхности, их сгибают, на них пишут, их обкуривают 'Беломором', наконец. Кто же это выдержит ? И в итоге даже самые хорошие импортные диски начинают сыпаться. При обнаружении повреждения 0 дорожки на дискете ни одна программа не форматирует такую дискету. На западе такие дискеты, возможно, просто выбрасывают. Для нас такой подход не приемлем.

Дискеты стоят достаточно дорого и выбрасывать деньги на ветер не в моих правилах. Один из способов получения работоспособных дискет был предложен Панковым (автором PU_1700): нулевая дорожка перемещалась в середину дискеты.

Достаточно оригинальный способ, однако имеет недостатки: 1) Необходимость постоянно держать в памяти PU_1700 2) Невозможно прочитать обычную дискету без переустановки PU_1700 - что крайне неудобно на машине с 1 дисководом Достоинством является то, что этот способ работает с любым форматом даже при полном отсутствии 0 дорожки дискеты.

Однако, возможен и другой метод.

Обычно на 0 дорожке, а равно как и на других дорожках дискеты, в силу различных причин (в основном механическое повреждение), пропадает читабельность одного или двух сектора.

Дискета форматируется так, что поврежденная часть поверхности просто не используется. У метода есть недостаток: невозможно восстановить более одного сектора на дорожке (360-720 Кб) или двух (1.2-1.44 Мб), однако выбирайте: дискета с поврежденной 0 дорожкой на 800 Кб или абсолютно нормальная на 720 Кб ? @ Методы защиты от копирования По сути дела, проблема защиты от копирования - это прежде всего проблема идентификации дистрибутивного носителя.

Поэтому знание некоторых особенностей организации хранения информации на дискете делает возможным указание некоторых методов идентификации, которые программист может использовать для защиты своего ПО. Изложим их в порядке возрастания сложности. 'Использование собственного формата Возможны три варианта использования этого метода : 1) Часть дорожек на дискете, кроме тех, где размещаются системные области ОС, форматируется нестандартным способом.

Достаточно написать собственный драйвер работы с этим нестандартным форматом и сделать так, что бы он заменял стандартный обработчик int 13 после загрузки с данной дискеты и дискета становиться нечитаемой с помощью ОС. И, следовательно, скопировать ее стандартным образом также невозможно. 2) Возможно также отформатировать только одну дорожку на дискете и разместить там некоторую ключевую информацию, а затем после запуска программы, проверять наличие этой информации. 3) Как вариант возможно вообще не форматировать одну из дорожек где-нибудь в середине дискеты,за которой располагается некоторая информация ( записанная в стандартном формате ). При копировании стандартной утилитой ОС эта дискета также не будет скопирована полностью. 'Введение дополнительных секторов Открытое использование собственного формата равноценно установке железной двери в ранее неприметном доме - видно, что его хозяевам есть что прятать и видно, где это спрятано. Но можно вполне успешно имитировать стандартный формат, с вынесением меток за стандартные поля копирования. Самый очевидный способ - введение дополнительного сектора на дорожке, в котором храниться ключевая информация. В данном случае сам факт наличия этого сектора является достаточным основанем, что бы считать диск дистрибутивным. 'Использование дополнительных (инженерных) дорожек На любой дискете, отформатированной стандартным образом за последней дорожкой всегда остается некоторое пространство, которое можно использовать для хранения ключевой информации.

Разумеется никто не мешает отформатировать эти дорожки нестандартным образом. 'Использование промежуточных цилиндров Широко известен тот факт, что при форматировании дискеты на 360К на дисководе на 1.2М головки дисковода перемещаются не на одну, а на две дорожки, поэтому нечетные дорожки остаются не использованными. На этих дорожках вполне можно разместить весь код программы, оставив 'видимым' только небольшой загрузчик. 'Нестандартное чередование секторов Система MS-DOS ориентирована исключительно на стандартные форматы, которые характеризуются, в частности, строго последовательным возрастанием номеров секторов на дорожке.

Поэтому если изменить порядок следования секторов, то при создании копии DOS изменит их номера на 'правильный порядок'. Проверку же легко организовать, замеряя временные интервалы между чтениями секторов с определенными номерами. 'Создание псевдосбойных секторов Когда MS-DOS встречает сбойный сектор ( а с точки зрения MS-DOS, сбойным является сектор с неправильной контрольной суммой ), то она игнорирует его содержимое и просто не копирует его, таким образом данные, которые находились в сбойном секторе не попадут на копию, хотя сигнал несовпадения контрольных сумм вовсе не запрещает доступа к данным, а лишь предупреждает об ошибке.

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

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

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

независимая оценка аренды помещений в Туле
оценка аренды в Липецке
независимая экспертиза грузовых автомобилей в Белгороде