У каждого процесса есть свое собственное отдельное адресное пространство. Адресное пространство изначально разделено на три логических сегмента: кода или текста (text), данных и стека. Сегмент text является сегментом только для чтения и содержит машинные инструкции программы. Сегменты данных и стека можно и читать, и записывать. Сегмент данных содержит разделы инициализированных и неинициализированных данных программы, тогда как сегмент стека содержит стек приложения времени выполнения. Сегмент стека автоматически расширяется ядром по мере выполнения процесса. Процесс может расширять или сокращать свой сегмент данных с помощью системных вызовов, тогда как размер своего сегмента текста он может изменять, лишь когда содержимое сегмента перекрывается данными из файловой системы или при отладке. Первоначальное содержание сегментов порожденных процессов является дубликатами сегментов родительского процесса.
Для выполнения процесса все содержимое адресного пространства процесса не должно обязательно постоянно находиться в оперативной памяти. Если процесс ссылается на часть своего адресного пространства, которое отсутствует в основной памяти, система подкачивает (pages) необходимую информацию в память. Когда системных ресурсов не хватает, система использует двухуровневый подход к поддержанию доступности ресурсов. Если доступно ограниченное количество памяти, система заберет ресурсы памяти от процессов, если эти ресурсы в последнее время не использовались. Если будет сильный недостаток ресурсов, система прибегнет к подкачке (swapping) всего контекста процесса из вторичного хранилища. Подкачка по требованию страниц и процессов, осуществляемая системой, прозрачна для процессов. Однако процесс может уведомить систему о будущем ожидаемом использовании памяти в качестве поддержки производительности.
- 11/05/2010 21:23 - Дескрипторы и ввод/вывод
- 11/05/2010 10:33 - Система ввода/вывода
- 11/05/2010 06:08 - Управление памятью внутри ядра
- 10/05/2010 20:06 - Отдельные отображения файла
- 10/05/2010 11:56 - Проектные решения по управлению памятью BSD
- 09/05/2010 22:28 - Группы процессов и сеансы
- 09/05/2010 13:03 - Сигналы
- 09/05/2010 05:44 - Управление процессами
- 08/05/2010 19:43 - Службы ядра
- 08/05/2010 13:45 - Организация ядра