2.2. Схема организации файлового ввода-вывода

 

Рассмотрим представленные на рис. 2.1 основные способы адресации и последовательность операций[1] выборки данных, обеспечивающих чтение прикладной программой с тома внешней памяти (например, магнитного диска ПЭВМ) некоторой произвольной (I-ой) записи. Отметим еще раз, что «специализация» компонент, участвующих в операциях ввода-вывода, выражается прежде всего в используемом способе адресации.

Прикладная программа использует одномерную (или сводимую к одномерной) сквозную адресацию данных на уровне логических записей: запись определяется номером, например, соответствующему порядку их размещения.

Система управления физическим вводом-выводом (в рассматриваемом примере - BIOS ПЭВМ) использует трехмерную систему координат: адрес записи составляется из номера дорожки, номера головки чтения-записи (номер поверхности) и номера сектора. Т.е., операционная система использует одномерную сквозную систему координат: сектора нумеруются от края диска к центру последовательно, причем сначала в рамках одного сегмента цилиндра (кластера), далее сектора следующего сегмента дорожки, после чего происходит переход к следующей дорожке.

Этот способ адресации и, соответственно, порядок использования пространства отчасти отражает специфику аппаратных решений, ориентированных на временную оптимизацию операций ввода-вывода: большее количество данных будет считано при одном обращении к диску за счет одновременного обращения через головки чтения-записи к данным, размещенным на параллельных дорожках в одном секторе одного цилиндра. Фиксированное количество битов, равное размеру сектора, определенное при разметке, умноженному на число головок, будет прямо (без дополнительной обработки, например, проверки логических условий конца файла или записи) предано в буфер оперативной памяти устройства или операционной системы.

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

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

 

В общем случае операция чтения физической записи включает следующие действия:

1.     Определение адреса записи в координатах устройства (например, для файлов с записями фиксированной длины - пересчетом номера нужной записи в относительный адрес сектора и далее определение абсолютного номера сектора на диске);

2.     Перемещение головки чтения в соответствующую координату: позиционирование к дорожке и сектору на дорожке, складывающееся из двух действий – собственно радиального перемещения головки на расстояние от текущего положения до нужной дорожки и ожидания подхода указанного сектора вращающегося диска к позиции, где находится головка. Следует также отметить, что высокая плотность записи данных означает, что промежуток между секторами[2] и дорожками сравнительно мал (сопоставим с погрешностями механизма перемещения и тепловым расширением), и поэтому правильность позиционирования определяется по служебным данным заголовка[3] сектора, считываемым до начала передачи прикладных данных;

3.     Пересылка данных, расположенных в области кластера, в буфер, который физически может быть как частью устройства, так и областью оперативной памяти;

4.     Завершение операции (проверка корректности чтения, например по контрольной сумме) и возврат управления ОС для обработки считанных данных;

5.     Выделение системой данных, относящихся к затребованным записям. Причем во многих случаях в системный буфер считываются не только данные логической записи, нужные прикладной программе, но и соседние. Это позволяет сократить суммарные затраты времени при чтении нескольких записей, исключив наиболее долгую операцию позиционирования. Указание на такое блокирование может выдаваться явно прикладной программой при открытии файла, или операционной системой, использующей собственные механизмы кэширования для оптимизации[4] ввода-вывода;

6.     Передача в рабочую область прикладной программы данных запрошенной ею логической записи или указателя на соответствующую область памяти в системном буфере.

 

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

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

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

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

Практическое решение состоит во введении контролируемой функциональной и информационной избыточности, обеспечивающей сокращение времени доступа за счет: 1) специализации компонент упрощение процедур преобразований, и  2) за счет построения вспомогательных структур (в той или иной степени дублирующих основную информацию). Основой этого подхода является принцип выделения и представления описательных составляющих в виде самостоятельных операционных объектов, хранимых отдельно от определяемых ими данных[5].

 

 

К оглавлению

Назад к разделу "2.1. Введение в технологии машинной обработки данных и основные определения"

Вперед к разделу "2.3. Эволюция концепций обработки данных"



[1] В целях общности в этом примере не рассматриваются подготовительные операции, такие как открытие файла и выделение памяти для рабочих и системных буферов, хотя они также достаточно ресурсоемки.

[2]  Если контроллер не успевает завершить обработку передачи и подготовиться к передаче данных, размещаемых на физически следующем секторе, то придется ожидать завершения полного оборота диска. С целью исключения таких потерь диск форматируется так, что логически последовательные секторы разделены одним или несколькими физическими секторами (коэффициент чередования) так, что контроллер будет готов выполнить операцию со следующим логическим сектором не ожидая дополнительного оборота.

[3]  Такой подход форматирования (разметки) пространства внешней памяти используется и в случае таких устройств «истинно» последовательного доступа, как магнитные ленты, для обеспечения ускоренного «прямого» доступа к сектору по его номеру – прямому адресу (еще с тех времен, когда не были созданы дисковые накопители, например, ЭВМ 2-го поколения Минск-22). При этом, поскольку данные секторов, предшествующих нужному, передавать не надо, позиционирование будет выполняться с максимальной скоростью перемещения ленты.

[4] Автоматическое использование системы кэширования и упреждающего чтения (не учитывающее особенности порядка обращения к данным, обусловленного алгоритмом обработки) может привести к обратному результату, например в случае обращения к логическим записям в произвольной последовательности (случайной) не соответствующей физическому следованию записей.

[5] Сюда относятся не только определения данных в виде описаний типов, схем баз данных, разделов деклараций, но и упомянутые ранее описания физической и логической структуры носителя, параметры подсистемы ввода-вывода и т.д.