Дисковые экстенты

Дисковые экстенты

При создании нового сегмента дисковое пространство выделяется для него в виде одного или нескольких экстентов. Дисковый экстент — это набор последовательных 520-байтовых секторов диска. Минимальное число секторов в экстенте равно восьми, так как минимальным участком выделяемой памяти является 4-килобайтная страница. Число страниц экстента всегда выражено степенью двойки. Таким образом, возможны размеры экстентов 4, 8, 16, 32, 64 КБ, и т. д. до 16 МБ.

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

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