6.5.3 Присоединение области к процессу
6.5.3 Присоединение области к процессу
Ядро присоединяет область к адресному пространству процесса во время выполнения системных функций fork, exec и shmat (алгоритм attachreg, Рисунок 6.19). Область может быть вновь назначаемой или уже существующей, которую процесс будет использовать совместно с другими процессами. Ядро выбирает свободную запись в частной таблице областей процесса, устанавливает в ней поле типа таким образом, чтобы оно указывало на область команд, данных, разделяемую память или область стека, и записывает виртуальный адрес, по которому область будет размещаться в адресном пространстве процесса. Процесс не должен выходить за предел установленного системой ограничения на максимальный виртуальный адрес, а виртуальные адреса новой области не должны пересекаться с адресами существующих уже областей. Например, если система ограничила максимально-допустимое значение виртуального адреса процесса 8 мегабайтами, то привязать область размером 1 мегабайт к виртуальному адресу 7.5M не удастся. Если же присоединение области допустимо, ядро увеличивает значение поля, описывающего размер области процесса в записи таблицы процессов, на величину присоединяемой области, а также увеличивает значение счетчика ссылок на область.
Кроме того, в алгоритме attachreg устанавливаются начальные значения группы регистров управления памятью, выделенных процессу. Если область ранее не присоединялась к какому-либо процессу, ядро с помощью функции growreg (см. следующий раздел) заводит для области новые таблицы страниц; в противном случае используются уже существующие таблицы страниц. Алгоритм завершает работу, возвращая указатель на точку входа в частную таблицу областей процесса, соответствующую вновь присоединенной области. Допустим, например, что ядру нужно подключить к процессу по виртуальному адресу 0 существующую (разделяемую) область, имеющую размер 7 Кбайт (Рисунок 6.20). Оно выделяет новую группу регистров управления памятью и заносит в них адрес таблицы страниц области, виртуальный адрес области в пространстве процесса (0) и размер таблицы страниц (9 записей).
алгоритм attachreg /* присоединение области к процессу */
входная информация:
(1) указатель на присоединяемую область (заблокированную)
(2) процесс, к которому присоединяется область
(3) виртуальный адрес внутри процесса, по которому будет присоединена область
(4) тип области
выходная информация: точка входа в частную таблицу областей процесса
{
выделить новую запись в частной таблице областей процесса;
проинициализировать значения полей записи:
установить указатель на присоединяемую область;
установить тип области;
установить виртуальный адрес области;
проверить правильность указания виртуального адреса и размера области;
увеличить значение счетчика ссылок на область;
увеличить размер процесса с учетом присоединения области;
записать начальные значения в новую группу аппаратных регистров;
return (точку входа в частную таблицу областей процесса);
}
Рисунок 6.19. Алгоритм присоединения области
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Области
Области В SCO UNIX адресное пространство процесса разделено на несколько участков, называемых областями (region). Область представляет собой непрерывный участок виртуального адресного пространства процесса, который рассматривается ядром системы как отдельный объект,
6.5.6 Освобождение области
6.5.6 Освобождение области Если область не присоединена уже ни к какому процессу, она может быть освобождена ядром и возвращена в список свободных областей (Рисунок 6.25). Если область связана с индексом, ядро освобождает и индекс с помощью алгоритма iput, учитывая значение
Определение области
Определение области Как правило, для определения областей в файлы krb5.conf и kdc.conf включаются специальные записи. Отредактировав файл, рассмотренный выше в качестве примера, вы измените конфигурацию KDC, серверов приложений и клиентов. Для того чтобы изменения были учтены
Администрирование области
Администрирование области Отредактировав конфигурационные файлы Kerberos и вызвав kdb5_util для создания основного ключа и инициализации базы данных Kerberos, можно приступать к администрированию области. Этот процесс в основном сводится к определению принципалов. Для выполнения
Библиотека документации по производственному процессу
Библиотека документации по производственному процессу Формируется для: 1) хранения документов процесса, обладающих потенциальной ценностью для текущего и будущих проектов, особенно в их связи с СППО; 2) совместного использования этих документов в рамках организации. Эта
9.4. Присоединение дополнительных аргументов
0
Области применения. NET
Области применения. NET Как и было заявлено Microsoft с самого начала обнародования сведений о. NET, этот набор технологий в первую очередь адресован программистам, которые работают с веб-приложениями, и предназначен для создания расширяемых распределенных приложений, которые,
Области значений
Области значений Область значений — это интервал от минимального до максимального значения, которое может быть представлено в переменной данного типа. В таблице 3.3 приведен размер занимаемой памяти и области значений переменных для каждого типа. Поскольку переменных
Области
Области CombineRgn Функция CombineRgn объединяет две области и сохраняет результат в третьей. Две области объединяются согласно указанному режиму объединения. int CombineRgn ( HRGN hrgnDest , // дескриптор результирующей области HRGN hrgnSrc 1 , // дескриптор исходной области HRGN hrgnSrc 2 , // дескриптор
Присоединение ссылки к объекту
Присоединение ссылки к объекту Классы, появляющиеся в этой лекции, не имели подпрограмм - у них были только атрибуты. Как отмечалось, такие классы почти бесполезны, так как у них нет способа изменить значение атрибутов. Необходимы способы модификации ссылок, не
Присоединение: две семантики - ссылок и значений
Присоединение: две семантики - ссылок и значений В этом разделе рассматривается специальная информация, и он может быть пропущен при первом чтении. Введение развернутых типов требует возвращения к рассмотрению двух фундаментальных операций, уже рассмотренных в этой
Присоединение
Присоединение Семантика присваивания, как отмечалось, распространяется еще на одну операцию - передачу аргумента при вызове подпрограмм. Предположим, существует подпрограмма (процедура или функция) в форме:r (..., x: SOME_TYPE, ...)Здесь сущность x это один из формальных
Присоединение: ссылочное и копии
Присоединение: ссылочное и копии При изучении ссылочного присваивания мы уже познакомились с эффектом присоединения. Если источник и цель являются ссылками, то эффект присваивания: x := yи соответствующей передачи аргументов состоит в том, что x получает значение ссылки y.
Гибридное присоединение
Гибридное присоединение В рассматриваемых до сих пор случаях источник и цель принадлежали одной категории - оба развернутого или ссылочного типа. Что если они из разных категорий? Вначале рассмотрим ситуацию, когда в присваивании x := y цель x развернутого типа, а источник y
Полиморфное присоединение
Полиморфное присоединение "Полиморфизм" означает способность обладать несколькими формами. В ОО-разработке несколькими формами обладают сущности (элементы структур данных), способные во время выполнения присоединяться к объектам разных типов, что контролируется