[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Отображение  пользовательской памяти в системную

Аппаратная реализация системы управления памятью и программное
обеспечение операционной системы отображает виртуальное пространство
пользователя в физическую память. Виртуальное адресное пространство
памяти неограничено, тогда как физическая память имеет конечный
размер. На иллюстрации  "[Текст]" указывает на возможность
использования данным процессом текста разделяемой программы,
загруженной ранее. Если разделяемый текст уже загружен в память, то
повторная загрузка  из файла a.out не производится. Адресное
пространство пользователя, находящееся  между концом сегмента данных
и стеком, не отображается.
На операционную систему часто ссылаются как на ядро. Ядро имеет свои
собственные сегменты текста, данных и стека для управления процессами,
ресурсами и устройствами.
Сегмент данных операционной системы содержит различные системные
структуры данных. Например, список структур активных процессов. Каждая
процесс-структура содержит информацию об активном процессе. В каждой
такой структуре содержится: необходимая информация для планирования
запуска данного процесса, управления его памятью, сведения о владельце
процесса. Процесс-структура описана в файле <sys/proc.h>.
Стек операционной системы используется ядром  при обработке вызова
функций (например, в ответ на системный вызов пользователя) и при
обработке прерываний.
Пользователь выполняет программу в окружении, которое называется
процессом пользователя (user proccess). При выполнении системного
вызова происходит переключение среды исполнения между пользовательским
режимом и системным режимом работы. Системный и пользовательский
процессы есть лишь разные фазы одного и того же процесса. Для защиты
каждый системный процесс имеет свой собственный стек. Стек,
используемый во время работы в системном режиме, в действительности
расположен в пользовательской области. После завершения  системного
вызова процесс опять возвращается в пользовательский режим работы.
Только один процесс может быть запущен в данный момент времени.
Процесс либо выполняется максимальный квант времени, либо ждет
выполнение запроса (например:  ввода/вывода и pause(2) ), либо
вытесняется процессом с более высоким приоритетом. При следующем
запуске  процесс начинает работу с того места, где он был остановлен
до этого. Несколько процессов могут быть готовы к исполнению.
Планировщик, основываясь на приоритетах, выбирает один из них для
запуска. Другие процессы могут быть приостановлены в ожидании
ресурсов или какого-то события в системе.