D3 Reference Manual

Index | Help

Поиск по страницам

Разделы / Общие сведения / group format error

group format error

Ошибка формата группы

"Ошибка формата группы" ("gfe") - это состояние, означающее наличие структурной непоследовательности в определенной "группе" файла.

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

  • Незапланированное закрытие системы. Это может быть следствием выхода из строя питания системы, системного сбоя или неподготовленного отключения питания системы (без предварительного правильного "закрытия", которое гарантировало бы синхронизацию виртуальной памяти). Как правило, это вызывает проблемы только в случае, если непосредственно перед отключением жесткий диск был занят (busy), и некоторые изменения, уже имеющиеся в памяти, не удалось записать на физический диск.
  • Необдуманное снятие блокировки групп (см. глагол "clear-group-locks") может способствовать возникновению ошибок, потенциально вызывая состояние, когда два процесса одновременно обновляют одни и те же внутренние структуры, ничего не зная друг о друге.
  • Отмена встроенной защиты файлов при использовании глагола "delete-file" также может быть источником проблем. Как правило, система обнаруживает попытку удалить файл, открытый в данный момент другим процессом, но для совместимости с более ранними системами пользователь/программист имеет возможность обойти это "предупреждение".
  • Неправильное использование системного отладчика. Системный отладчик полностью передает пользователю управление всем виртуальным пространством файлов и внутренними управляющими таблицами системы. Это очень мощные средства, поэтому всем, кто просматривает или изменяет области, содержащие критические структуры, рекомендуется проявлять осторожность. Описание команд отладчика и способа его отключения см. в разделе документации, посвященном системному отладчику.

Если процесс сталкивается с GFE, D3 вызывает программу обработки ошибок GFE ("GFE handler"), давая возможность процессу разобраться с возникшей ситуацией прежде, чем продолжать обработку. Каждый пользователь должен быть правильно сконфигурирован в зависимости от того, должна ли система автоматически исправить ошибку GFE или прекратить работу и дать возможность оператору выбрать метод исправления. Это контролируется присутствием опции "m" в атрибуте опций в файле "users". В настоящее время по умолчанию пользователь должен принять решение сам, хотя в будущем это может измениться.

Взаимосвязи

Файловая система D3 состоит из записей файлов, причем каждый файл включает одну или более групп для увеличения эффективности обращения к записям. Каждая группа состоит из одного или более связанных фреймов виртуального пространства, используемых для хранения записей, а в некоторых случаях указателей на записи. Каждая запись в группе имеет свой "заголовок" ("item header"), содержащий некоторую информацию об этой записи. Группа, в которой должна храниться запись, определяется алгоритмом "хеширования", который прежде всего вычисляет контрольную сумму с использованием идентификатора записи, а затем вычисляет группу в зависимости от количества групп в файле (так называемого "модуло файла"). В одну группу может попасть более одной записи. В этом случае группа становится потенциально бесконечной цепью записей и/или указателей записей. Если файл хорошо организован, на каждую группу должно приходиться не более одного виртуального фрейма. Память, используемая в системе D3 как для хранения файлов, так и в качестве рабочего пространства, учитывается на диске в виде статических единиц, называемых "фреймами" (как правило, размером от 1К до 4К в зависимости от исполнения). Т.к. главный компьютер не работает прямо с этим физическим пространством на диске, необходимо сначала загрузить его во временную быстродействующую память для доступа и введения необходимых изменений прежде, чем эти изменения будут записаны на диск. Загрузкой "физических фреймов диска" в реальную память и записью модифицированных фреймов назад на диск управляет программа управления виртуальной памятью D3 ("D3 Virtual Memory Manager"). Кроме того, во всей системе может блокироваться доступ к записям файлов, группам и т.д., что не позволяет процессу модифицировать вышеуказанные структуры в то время, когда какой-то другой процесс их просматривает.

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