Архитектура современных операционных систем

187 Сжатие разреженных данных Разреженными (sparse) называются данные (часто большого размера), в которых лишь малая часть отлична от нулевых значений. Пример разреженных данных — разреженная матрица. Один из способов сжатия файла, применяемых NTFS, состоит в удалении из него длинных цепочек пулей. Если файл разрежен, он обычно сжимается до размера, составляющего лишь часть дискового пространства, необходимого для его хранения в нормальном виде. При последующей записи в этот файл NTFS выделяет пространство только для групп с ненулевыми данными. На рис. 5.19. изображены группы сжатого разреженного файла. Для неко- торых диапазонов VCN файла (16-31 и 64-127) дисковое пространство не выде- лено. Стандартная информация Имя файла Дескриптор защиты Данные VCN LCN Длина 0 1352 16 32 7568 16 48 2732 16 128 10340 16 Рис. 5.19. Когда программа читает данные из сжатого файла, NTFS проверяет за- пись MFT, чтобы выяснить, имеется ли сопоставление VCN-LCN для считыва- емого участка файла. Если программа обращается в невыделенную часть в фай- ле, значит, данные этой части файла состоят из нулей, и тогда NTFS возвращает нули, не обращаясь к диску. Если программа записывает в невыделенную часть ненулевые данные, NTFS автоматически выделяет дисковое пространство и за- писывает туда эти данные. Такой метод очень эффективен для разреженных файлов, содержащих много нулевых данных. Сжатие неразряженных данных Предыдущий пример описывает сжатие в том случае, когда целые обла- сти файла заполнены нулями, но на остальные файловые данные сжатие не ока-

RkJQdWJsaXNoZXIy MTY0OTYy