Глава 14 Адресное пространство процесса
Глава 14
Адресное пространство процесса
В главе 11, "Управление памятью", было рассказано о том, как ядро управляет физической памятью. В дополнение к тому, что ядро должно управлять своей памятью, оно также должно, управлять и адресным пространством процессов — тем, как память видится для каждого процесса в системе. Операционная система Linux — это операционная система с виртуальной памятью (virtual memory operating system), т.е. для всех процессов выполняется виртуализация ресурсов памяти. Для каждого процесса создается иллюзия того, что он один использует всю физическую память в системе. Еще более важно, что адресное пространство процессов может быть даже значительно больше объема физической памяти. В этой главе рассказывается о том, как ядро управляет адресным пространством процесса.
Адресное пространство процесса состоит из диапазона адресов, которые выделены процессу, и, что более важно, в этом диапазоне выделяются адреса, которые процесс может так или иначе использовать. Каждому процессу выделяется "плоское" 32- или 64-битовое адресное пространство. Термин "плоское" обозначает, что адресное пространство состоит из одного диапазона адресов (например, 32-разрядное адресное пространство занимает диапазон адресов от 0 до 429496729). Некоторые операционные системы предоставляют сегментированное адресное пространство — адресное пространство состоит больше чем из одного диапазона адресов, т.е. состоит из сегментов. Современные операционные системы обычно предоставляют плоское адресное пространство. Размер адресного пространства зависит от аппаратной платформы. Обычно для каждого процесса существует свое адресное пространство. Адрес памяти в адресном пространстве одного процесса не имеет никакого отношения к такому же адресу памяти в адресном пространстве другого процесса. Тем не менее несколько процессов могут совместно использовать одно общее адресное пространство. Такие процессы называются потоками.
Значение адреса памяти — это заданное значение из диапазона адресов адресного пространства, как, например, 41021f000. Это значение идентифицирует определенный байт в 32-битовом адресном пространстве. Важной частью адресного пространства являются интервалы адресов памяти, к которым процесс имеет право доступа, как, например, 08048000–0804c000. Такие интервалы разрешенных адресов называются областями памяти (memory area). С помощью ядра процесс может динамически добавлять и удалять области памяти своего адресного пространства.
Процесс имеет право доступа только к действительным областям памяти. Более того, на область памяти могут быть установлены права только для чтения или запрет на выполнение. Если процесс обращается к адресу памяти, который не находится в действительной области памяти, или доступ к действительной области выполняется запрещенным образом, то ядро уничтожает процесс с ужасным сообщением "Segmentation Fault" (ошибка сегментации).
Области памяти могут содержать следующую нужную информацию.
• Отображение выполняемого кода из выполняемого файла в область памяти процесса, которая называется сегментом кода (text section).
• Отображение инициализированных переменных из выполняемого файла в область памяти процесса, которая называется сегментом данных (data section).
• Отображение страницы памяти, заполненной нулями, в область памяти процесса, которая содержит неинициализированные глобальные переменные и называется сегментом bss[79] (bss section). Нулевая страница памяти (zero page, страница памяти, заполненная нулями) — это страница памяти, которая полностью заполнена нулевыми значениями и используется, например, для указанной выше цели.
• Отображение страницы памяти, заполненной нулями, в память процесса, которая используется в качестве стека процесса пространства пользователя (не нужно путать со стеком процесса в пространстве ядра, который является отдельной структурой данных и управляется и используется ядром).
• Дополнительные сегменты кода, данных и BSS каждой совместно используемой библиотеки, таких как библиотека libc и динамический компоновщик, которые загружаются в адресное пространство процесса.
• Все файлы, содержимое которых отображено в память.
• Все области совместно используемой памяти.
• Все анонимные отображения в память, как, например, связанные с функцией malloc()[80].
Каждое действительное значение адреса памяти в адресном пространстве процесса принадлежит только и только одной области памяти (области памяти не перекрываются). Как будет показано, для каждого отдельного участка памяти в выполняющемся процессе существует своя область: стек, объектный код, глобальные переменные, отображенный в память файл и т.д.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Отображение файла на адресное пространство процесса
Отображение файла на адресное пространство процесса Следующим шагом является распределение виртуального адресного пространства и отображение на него файла с использованием объекта отображения. С точки зрения программиста этот процесс распределения памяти
Адресное пространство процесса
Адресное пространство процесса Адресное пространство ядра обычно совпадает с адресным пространством выполняющегося в данный момент процесса. В этом случае говорят, что ядро расположено в том же контексте, что и процесс. Каждый раз, когда процессу передаются
ГЛАВА 2. ПЯТЬ УРОВНЕЙ ЗРЕЛОСТИ ПРОИЗВОДСТВЕННОГО ПРОЦЕССА
ГЛАВА 2. ПЯТЬ УРОВНЕЙ ЗРЕЛОСТИ ПРОИЗВОДСТВЕННОГО ПРОЦЕССА Постоянное совершенствование производственного процесса основано на многих небольших эволюционных шагах, а не на революционных нововведениях [Imai 86]. CMM предоставляет концептуальную структуру, организующую эти
Глава 15 Пространство и компоновка чертежа
Глава 15 Пространство и компоновка чертежа Формирование в AutoCAD модели объекта, в том числе трехмерной, обычно не является самоцелью. Это делается для дальнейшего использования такой модели в системах прочностных расчетов и кинематического моделирования, при получении
Пространство модели и пространство листа
Пространство модели и пространство листа Пространство модели (Model Space) – это пространство AutoCAD, где формируются модели объектов как при двумерном, так и при трехмерном моделировании. О том, что в окне AutoCAD на текущий момент установлено пространство модели, говорят
ГЛАВА 16. Пространство имен System.IO
ГЛАВА 16. Пространство имен System.IO При создании полноценных приложений исключительно важна возможность сохранения информации между сеансами доступа пользователя. В этой главе рассматривается целый ряд вопросов, связанных с реализацией ввода-вывода в .NET. Первой нашей
Глава 10. Размер области процесса сканирования
Глава 10. Размер области процесса сканирования Этот параметр определяет максимальные размеры документа, который вы имеете возможность считать с помощью данного сканера. Некоторые младшие модели планшетных сканеров позволяют обрабатывать листы формата Legal (8,5 х 14 дюймов,
Глава 11. Скорость процесса сканирования
Глава 11. Скорость процесса сканирования Общее быстродействие сканера зависит от большого количества разнообразных факторов: характеристик механизма сканера, производительности компьютера, быстродействия используемых программ, текущего разрешения и глубины цвета.
Глава 15 Пространство и компоновка чертежа
Глава 15 Пространство и компоновка чертежа Формирование в AutoCAD модели объекта, в том числе трехмерной, обычно не является самоцелью. Это делается для дальнейшего использования такой модели в системах прочностных расчетов и кинематического моделирования, при получении
Пространство модели и пространство листа
Пространство модели и пространство листа Пространство модели (Model Space) – это пространство AutoCAD, где формируются модели объектов как при двумерном, так и при трехмерном моделировании. О том, что в окне AutoCAD на текущий момент установлено пространство модели, говорят
Глава 15 Пространство и компоновка чертежа
Глава 15 Пространство и компоновка чертежа Пространство модели и пространство листа Мастер компоновки листа Работа с листами Вставка листа с помощью Центра управления AutoCAD Видовые экраны Именованные виды Неперекрывающиеся видовые экраны Создание нескольких видовых
Пространство модели и пространство листа
Пространство модели и пространство листа Пространство модели (Model Space) – это пространство AutoCAD, где формируются модели объектов как при двумерном, так и при трехмерном моделировании. О том, что в окне AutoCAD на текущий момент установлено пространство модели, говорят
Глава 12 Пространство и компоновка чертежа
Глава 12 Пространство и компоновка чертежа Формирование в AutoCAD модели объекта, в том числе трехмерной, обычно не является самоцелью. Это делается для дальнейшего использования такой модели в системах прочностных расчетов и кинематического моделирования, при получении
Пространство модели и пространство листа
Пространство модели и пространство листа Пространство модели (Model Space) – это пространство AutoCAD, где формируются модели объектов как при двумерном, так и при трехмерном моделировании. О том, что в окне AutoCAD на текущий момент установлено пространство модели, говорят