Введение
В архитектуре хранения IBM System/360 таблица содержимого тома (VTOC) – это структура данных, обеспечивающая возможность определения местоположения наборов данных, расположенных на конкретном томе DASD. За исключением дисковой структуры, совместимой с IBM Z в Linux on Z, она является функциональным эквивалентом таблицы распределения файлов MS/PC DOS (FAT), главной таблицы файлов NTFS (MFT) и таблицы inode в файловой системе Unix-подобной системы. VTOC не используется для хранения IPLTEXT и не играет никакой роли в процессе IPL, следовательно, не содержит данных, используемых или функционально эквивалентных MBR. В ней перечисляются имена каждого набора данных на томе, а также размер, местоположение и права доступа. Кроме того, она содержит запись для каждой области смежного свободного пространства на томе. Третья запись на первом треке первого цилиндра любого тома DASD (например, диска) известна как метка тома и должна содержать указатель на местоположение VTOC. Местоположение VTOC может быть указано при инициализации тома. В целях повышения производительности его можно расположить как можно ближе к центру тома, поскольку к нему часто обращаются. VTOC добавляется к тому DASD при его инициализации с использованием программы поддержки устройств ICKDSF в современных системах. Когда OS/360 и последующие версии выделяют набор данных, они обычно обращаются к каталогу для определения томов, на которых он находится. Когда программа открывает набор данных устройства прямого доступа (DASD), подпрограмма OPEN ищет в индексе VTOC (VTOCIX), если он существует, или непосредственно в VTOC, если VTOCIX отсутствует.
Формат 1 ДСЦБ
В данной записи VTOC описывается набор данных и определяются его первые три экстента. Это формат DSCB от OS/360 Release 21.7 в 1973 году, до изменений, связанных с Y2K. Позиция Длина Описание 0 44 Имя набора данных, выровненное по левому краю и заполненное пробелами – это ключ записи DSCB. 44 1 Идентификатор формата, '1' для DSCB формата 1 (символьный) 45 6 Серийный номер тома первого DASD-тома для этого набора данных (алфависочный) 51 2 Номер тома этого тома для многотомных наборов данных (двоичный) 53 3 Дата создания набора данных (двоичный): один байт для года столетия и два байта для дня года. 56 3 Дата истечения срока действия набора данных (в том же формате, что и дата создания). Значение 99365 указывает, что срок действия набора данных не истекает. 59 1 Количество экстентов для этого набора данных (двоичный) 60 1 Если этот набор данных является разделенным, это количество байтов, используемых в последнем блоке каталога (двоичный). 61 1 Не используется, зарезервировано IBM. 62 13 Код, идентифицирующий операционную систему, создавшую этот набор данных (символьный). 75 7 Не используется, зарезервировано IBM. 82 2 Код, указывающий организацию набора данных (последовательная, индексированная и т.д.) (битовое поле). 84 1 Код, указывающий формат записи этого набора данных (фиксированный, переменный и т.д.) (битовое поле). 85 1 Код опции, другие опции, указанные при создании набора данных (битовое поле). 86 2 Размер блока (фиксированный размер или максимальный размер для файлов с записями переменной длины) (двоичный). 88 2 Длина записи (фиксированный размер или максимальная длина для записей переменной длины) (двоичный). 90 1 Длина ключа, если этот файл содержит записанные ключи записи (двоичный). 91 2 Положение ключа (если он есть) в записи относительно начала (двоичный). 93 1 Индикаторные биты, например, указывающие, что набор данных защищен паролем (битовое поле). 94 4 Параметры выделения набора данных, указывающие, например, что пространство для этого набора данных выделяется блоками, цилиндрами и т.д. (битовое поле). 95 3 Вторичный объем выделения: количество блоков, цилиндров и т.д., выделяемых при необходимости дополнительного пространства (двоичный). Например, если набор данных создан со спецификацией карты DD SPACE=(CYL,(4,2)), набор данных первоначально выделяется четыре цилиндра, а затем дополнительно два цилиндра (не обязательно смежных) каждый раз, когда требуется больше места, до пятнадцати дополнительных экстентов. 98 3 Адрес DASD последнего записанного блока в наборе данных. 101 2 Количество байтов, оставшихся на последнем треке после последнего указанного блока (двоичный). 103 2 Не используется, зарезервировано IBM. 105 10 Описание первого или единственного экстента. Тип экстента (один байт, битовое поле), номер последовательности экстента (один байт, двоичный), начальный цилиндр и трек экстента (четыре байта, двоичный), конечный цилиндр и трек экстента (четыре байта, двоичный). 115 10 Описание возможного второго экстента, в том же формате, что и выше. 125 10 Описание возможного третьего экстента, в том же формате, что и выше. 135 5 Указатель на DSCB формата 2 (индексный) в VTOC в формате цилиндр/головка/запись, если это индексированный набор данных. Указатель на DSCB формата 3 (расширение), если этот набор данных имеет более трех экстентов.
For example, if the dataset is created with the DD card specification SPACE=(CYL,(4,2)) the dataset is initially allocated four cylinders, and an additional two cylinders, not necessary contiguous, will be allocated each time more space is needed, up to fifteen additional extents. 98 3 DASD address of last block written in the dataset. 101 2 Number of bytes remaining on last track following last block indicated above. (binary) 103 2 Unused, listed as reserved by IBM. 105 10 Description of first or only extent. Type of extent (one byte, bitfield),extent sequence number (one byte, binary),extent starting cylinder and track (four bytes, binary),
extent ending cylinder and track (four bytes, binary). 115 10 Description of possible second extent, same format as above. 125 10 Description of possible third extent, same format as above. 135 5 Pointer to Format 2 (index) DSCB in VTOC in format cylinder/head/record if this is indexed dataset. Pointer to Format 3 (extension) DSCB if this dataset has more than three extents.