Адресное пространство – список адресов памяти от некоторого минимума до некоторого максимума, которые процесс может прочесть и в которое он может писать. Сюда входят код, данные и стек процесса, а также другие области, например, разделяемая память или код и данные динамических библиотек.
Стек состоит из фреймов, содержится в памяти и используется для хранения локальных переменных программы и передачи параметров. Когда процесс выполняет обращение к функции или подпрограмме, в стек отправляется новый фрейм. Одной из частей каждого фрейма является указатель на предыдущий фрейм, который позволяет вернуться из вызова функции. Т.о. надо знать местоположение текущего фрейма и вершину стека.
Стеки, используемые работающими в разных режимах процессами, различны - переменный сегментный стек используется в пользовательском режиме, а режим ядра использует стек определенной величины.
Выполнение процесса заключается в точном следовании набору инструкций. Процесс выполняет последовательность инструкций в адресном пространстве. Процесс отслеживает последовательность выполняемых инструкций при помощи счетчика команд (это аппаратный регистр). Более поздние версии UNIX поддерживают несколько счетчиков команд (нитей), т. е. могут существовать несколько параллельно выполняемых последовательностей инструкций в одном процессе.
Адресное пространство процесса является виртуальным, и обычно только его часть соответствует участкам в физической памяти. Ядро хранит содержимое адресного пространства процесса в областях свопинга (swap areas), находящихсяобычно на локальных дисках. Подсистема управления памятью ядра переключает страницы (блоки фиксированного размера) памяти процесса между этими областями по мере необходимости.