Одноуровневая память
Управление дисками
Компонент SLIC, отвечающий за управление дисками AS/400, называется управлением вспомогательной памятью (auxiliary storage management). В его обязанности входит:
- управление пулами вспомогательной памяти ASP (набор из одного или не скольких дисковых устройств);
- создание, расширение, усечение и разрушение сегментов на диске;
- управление свободным пространством на каждом диске;
- управление справочниками, связывающими виртуальные адреса с областями на диске.
Пулы вспомогательной памяти
В основе System/38 лежала мысль: локализовать все сведения о дисковых устройствах ниже границы MI. Никакой код выше MI, будь то прикладная программа, или ОС, не должны были владеть какойлибо информацией, даже о том, подключены ли к системе диски. Независимость от технологии предполагает, что никакое ПО не должно зависеть от особенностей устройств вводавывода. Однако ПО, конечно, необходимо иметь информацию о таких устройствах, как терминалы и принтеры. Так почему диски должны быть исключением?
Дело в том, что некоторые из нас, разработчиков System/38, были тогда, середине 70-х, твердо убеждены, что у дисков нет будущего. В конце концов, сколько еще может продержаться технология, занимающаяся покрытием пластин ржавчиной? Мы полагали, что диски скоро и неизбежно будут вытеснены какими-нибудь новыми полупроводниковыми устройствами: цилиндрическими магнитными доменами, или приборами с зарядовой связью… А может быть, технологии основной памяти станут настолько дешевы, что никакой иной формы хранилища и не потребуется11Очевидно, однако, что не все перечисленные технологии оправдывают возлагавшиеся на них ожидания. Так что, похоже, дискам суждена еще очень долгая жизнь..
Так вот, для того, чтобы эти новые технологии по мере готовности можно было легко встроить в System/38, мы изолировали все сведения о дисках ниже MI. Однако, это "незнание" о дисках, привело к возникновению проблем12Здесь следует учитывать, что когда компонент управления дисками записывает объект, особенно большой, на диск, он обычно пытается распределить его между несколькими дисковыми устройствами. Причина этого — стремление повысить производительность и загруженность дисков. Путем распределения объектов на несколько дисков можно сократить время его считывания или записи, так как дисковые операции могут выполняться параллельно. Даже сегодня диски на AS/400 не считаются устройствами ввода-вывода. Они рассматриваются как память.. Если диск в System/38 выходил из строя, и восстановление было невозможно, то нигде выше MI не сохранялось сведений, что же было на этом диске. После ремонта или замены диска, приходилось заново восстанавливать данные на всей дисковой подсистеме из после дней резервной копии — не очень приятное занятие. Поэтому мы решили, что в OS/400 все же нужны некоторые сведения и возможности управления дисками. Так появились пулы вспомогательной памяти (ASP).
ASP — это набор дисковых устройств. Вся дисковая память пула выглядит как одна непрерывная область в памяти. Отдельные устройства невидимы. Минимальный размер ASP — один диск, а вся дисковая память AS/400 может быть разделена максимум на 16 ASP.
Первый ASP — всегда системный. OS/400 и некоторые типы системных объектов, управляемые ею, должны располагаться в системном ASP. Кроме того, может быть определено до 15 пользовательских ASP. Объект, который не обязан находиться в системном ASP, может быть помещен в любой пользовательский ASP, на котором должен уместиться целиком. Объекты не могут пересекать границу ASP.
Благодаря такому разделению дисковой памяти, любой сбой диска изолирован внутри одного ASP, что позволяет значительно сократить время восстановления, если таковое потребуется. Некоторые типы объектов, например, приемники журналов, также могут быть изолированы от других частей системы.
Управлением ASP занимается компонент управления дисками в SLIC.
Сегменты памяти
Каждый объект состоит из одного или нескольких не перекрывающихся сегментов. При создании сегмента должны быть заданы несколько характеристик. Одна из них — начальный размер. На основании начального размера компонент управления дисками выделяет страницы для сегмента. Как мы отмечали в "Объекты" , бит авторасширения в заголовке сегмента указывает, может ли сегмент быть расширен. Если это так, то его размер может увеличиваться до максимального размера в 16 МБ.
Дисковые экстенты
При создании нового сегмента дисковое пространство выделяется для него в виде одного или нескольких экстентов. Дисковый экстент — это набор последовательных 520-байтовых секторов диска. Минимальное число секторов в экстенте равно восьми, так как минимальным участком выделяемой памяти является 4килобайтная страница. Число страниц экстента всегда выражено степенью двойки. Таким образом, возможны размеры экстентов 4, 8, 16, 32, 64 КБ, и т. д. до 16 МБ.
Использование экстентов упрощает управление свободным пространством на диске, так как ограничивает число размеров фрагментов. Управление вспомогательной памятью использует машинный индекс, чтобы отследить свободные экстенты каждого диска и объединяет смежные экстенты в экстент большего размера. Такое объединение очень просто и быстро. Так как величина любого экстента всегда наполовину меньше размера следующего, то при освобождении экстента простая проверка позволяет определить, свободна ли другая половина. Если это так, то обе половины объединяются в экстент большего размера. Процесс продолжается до тех пор, пока дальнейшее слияние не окажется невозможным.
Виртуальный сегмент, особенно расширенный, может состоять из нескольких физически несмежных экстентов диска. Когда сегмент нужно расширить, компонент управления памятью находит комбинацию экстентов, размер которой позволяет хранить запрошенное число страниц. Такие экстенты могут располагаться даже на разных дисковых устройствах, но обязательно в одном ASP.
Выводы:
- Объект может состоять из одного или нескольких сегментов.
- Сегмент может состоять из одного или нескольких экстентов.
- Экстент состоит из одной или нескольких страниц (их число всегда — степень 2).
- Страница состоит из восьми секторов диска.
- Сектор состоит из 520 байтов диска (512 байтов данных и 8 байтов заголовка)13На самом деле в секторе может быть 520 или 522 байта. Формат 522байтового сектора в сочетании с современными дисковыми контроллерами (типа 6512 или 6532) позволяет улучшить характеристики ввода/вывода. — Прим. консультанта..
Сегменты группы доступа
Ранее мы говорили, что сегменты создаются либо как постоянные, либо как временные. Временный сегмент может быть также создан как часть группы доступа. На этих группах доступа мы остановимся немного подробней.
Назначение группы доступа — повышение производительности при считывании в память и переписывании на диск временных сегментов, связанных с каким-либо пользовательским заданием. Типична ситуация, когда с таким заданием связаны десятки временных объектов. Если бы работа с ними велась как с обычными объектами, то каждый занимал бы один или несколько временных сегментов, состоящих, по меньшей мере, из одного экстента. Перемещение всех страниц данного задания на диск потребовало бы минимум по одной операции вводавывода на экстент. Те же накладные расходы требовались бы и при считывании всех страниц задания обратно в память.
Группа доступа — это системный объект, введенный для устранения большей части описанных накладных расходов. Группа доступа состоит из двух сегментов: первый, базовый, включает в себя таблицу содержимого (ТОС); второй — сегмент данных. Каждая запись ТОС содержит эффективный адрес одной из страниц в сегменте данных.
При создании временного объекта в группе доступа, его сегменты будут размещены на следующих доступных местах сегмента данных группы доступа, и ТОС будет соответствующим образом модифицирована. Таким образом, несколько физически небольших временных сегментов могут быть упакованы внутри одного экстента сегмента данных на диске, и их чтение/запись можно будет выполнять одной операцией ввода-вывода.
Обратите внимание, что группы доступа работают только с физически небольшими объектами и их маленькими сегментами. Все сегменты имеют 16 МБ адресного пространства, но большинство временных сегментов задания занимают лишь несколько страниц физической памяти. Группы доступа очень хороши для таких маленьких временных сегментов. Для постоянных объектов они не используются, так как постоянные объекты обычно имеют больший размер.
Каталоги вспомогательной памяти
Теперь рассмотрим каталоги, которые поддерживаются и используются компонентом управления вспомогательной памятью для контроля за дисковым пространством.
- Каталог свободного пространства — это машинный индекс (описанный в "Интегрированная база данных" ), каждая запись которого показывает расположение на диске одного экстента свободного пространства.
- Статический каталог представляет собой список экстентов, выделенных предопределенным постоянным сегментам. Статический каталог используется для поиска виртуальных сегментов, которые необходимы для работы системы, когда использование нормальных (постоянного и временного) каталогов невозможно.
- Постоянный каталог — машинный индекс, каждая запись которого показывает расположение на диске от одного до четырех экстентов, выделенных постоянному виртуальному сегменту.
- Временный каталог — машинный индекс, каждая запись которого указывает расположение на диске от одного до четырех экстентов, выделенных временному виртуальному сегменту.
- Справочный каталог — содержит список экстентов из постоянного и временного каталогов, которые недавно были востребованы. Фактически, справочный каталог — это кэш для постоянного и временного каталога. Он предназначен для того, чтобы избежать относительно долгого поиска в этих каталогах.
- Каталог членов группы доступа — машинный индекс, каждая запись которого содержит адрес группы доступа, к которой относится данный член (сегмент) группы доступа.
- Таблица содержимого группы доступа (TOC) — как уже говорилось, такую таблицу имеет каждая группа доступа. ТОС представляет собой список, каждый элемент которого задает расположение на диске страницы некоторого члена (сегмента) группы.
Так как каталог свободного пространства и постоянный каталог — это машинные индексы, то в результате сбоя системы они могут быть разрушены. При каждой IPL управление вспомогательной памятью проверяет состояние этих каталогов. Если каталоги разрушены, то запускается процедура восстановления каталогов: сканируется содержимое всех дисков и собирается информация, хранящаяся в заголовках секторов и сегментов. Поскольку временные объекты, включая группы доступа, во время IPL исчезают, то восстановление других каталогов не требуется.
Выводы
В 1976 году Белл (Bell) и Стрекер (Strecker) опубликовали работу с критикой Digital PDP11. По их словам: "При проектировании компьютера только одну ошибку трудно исправить — недостаточное количество адресных разрядов"14G. Bell and W.D. Strecker. Computer Structures: What Have We Learned From the PDP11? / Proc. Third Annual Symposium on Computer Architecture. 1976. January. Pp. 114.. Они описали несколько причин, по которым Digital пришлось отказаться от архитектуры PDP, имевшей лишь 16-разрядный адрес, и перейти на архитектуру VAX с 32-разрядным адресом. В последние годы Digital перешла на 64-разрядную архитектуру Alpha.
Архитекторы System/38 и AS/400 поклялись, что их архитектура никогда не потерпит неудачу изза недостатка адресных разрядов. Они определили для хранения адресов 128-разрядный указатель и обеспечили достаточно места для расширения. С точки зрения адресации, у AS/400 — большой запас прочности.
В будущем значение большой одноуровневой памяти AS/400 только усилится. Многие производители компьютеров только сейчас открывают для себя важность постоянства объектов. По мере того как все больше ОС становятся объектно-ориентированными, специалисты осознают, что для совместного использования объектов для последних должна быть возможность существовать вне процесса. В объектно-ориентированном мире системы виртуальной памяти, которые разрушают все объекты процесса после его завершения — не самый лучший вариант. Постоянные объекты AS/400 — элегантное решение этой проблемы.
В "Управление процессами" мы рассмотрим процессы AS/400 и увидим, как связаны друг с другом многие из уже обсужденных нами тем.