20. Адресное пространство процесса
Адресное пространство ядра обычно совпадает с адресным пространен выполняющегося в данный момент процесса. В этом случае говорят, ядро расположено в том же контексте, что и процесс. Каждый раз, k: процессу передаются вычислительные ресурсы, система восстанавливает контекст задачи этого процесса, включающий значения регистров об;, назначения, сегментных регистров, а также указатели на таблицы страз отображающие виртуальную память процесса в режиме задачи. При системный контекст остается неизменным для всех процессов.
Специальный регистр (CR3 для Intel) указывает на расположение к таблиц страниц в памяти. В SCO UNIX используется только один к независимо от выполняющегося процесса, таким образом значение ; стра CR3 не меняется на протяжении жизни системы. Поскольку (код и данные) является частью выполняющегося процесса, таблицы ниц, отображающие старший 1 Гбайт виртуальной памяти, принадлежащей ядру системы, не изменяются при переключении между процессами. Для отображения ядра используются старшие 256 элементов каталога.
При переключении между процессами, однако, изменяется адресное пространство режима задачи, что вызывает необходимость изменения оставшихся 768 элементов каталога. В совокупности они отображают 3 Гбайт виртуального адресного пространства процесса в режиме задачи. Таким .образом, при смене процесса адресное пространство нового процесса ставится видимым (отображаемым), в то время как адресное пространство предыдущего процесса является недоступным,
Формат виртуальной памяти процесса в режиме задачи зависит, в первую очередь, от типа исполняемого файла, образом которого является процесс. Заметим, что независимо от формата исполняемого файла виртуальные адреса процесса не могут выходить за пределы 3 Гбайт.
Для зашиты виртуальной памяти процесса от модификации другими прессами прикладные задачи не могут менять заданное отображение. Поскольку ядро системы выполняется на привилегированном уровне, оно может управлять отображением как собственного адресного пространств так и адресного пространства процесса.
Управление памятью процесса
Можно сказать, что каждый процесс в операционной системе UNIX выполняется на собственной виртуальной вычислительной машине, где все ресурсы принадлежат исключительно данному процессу. Подай управления памятью обеспечивает такую иллюзию в отношении физ. с кой памяти.
Как уже говорилось, аппаратная поддержка страничного механизма имеет существенное значение для реализации виртуальной памяти. Однако при этом также требуется участие операционной системы. Можно перечислить ряд операций, за выполнение которых отвечает сама операционная система:
- Размещение в памяти каталога страниц и таблиц страниц; инициализация регистра — указателя на каталог таблиц страниц (для — CR3) (в системах, использующих несколько каталогов стр. каждый процесс хранит в u-area значение этого регистра; в 3TON чае инициализацию указателя необходимо проводить при каждом переключении контекста); инициализация каталога страниц.
- Установка отображения путем записи соответствующих значений в таблицы страниц, ----
- обработка страничных ошибок.
- Управление сверхоперативным кэшем.
- Обеспечение обмена страницами между оперативной и вторичной памятью.
В реализации перечисленных функций существенную роль играют структуры данных, обеспечивающие удобное представление адресного пространства процесса для операционной системы. Фактический формат этих структур существенным образом зависит от аппаратной архитектуры и версии UNIX, поэтому в следующих разделах для иллюстрации тех или иных положений также использована операционная система SCO UNIX.
|