Friday, May 18th

Last update12:13:00 PM GMT

Вы находитесь на: FreeBSD Общая информация Управление памятью

Управление памятью

У каждого процесса есть свое собственное отдельное адресное пространство. Адресное пространство изначально разделено на три логических сегмента: кода или текста (text), данных и стека. Сегмент text является сегментом только для чтения и содержит машинные инструкции программы. Сегменты данных и стека можно и читать, и записывать. Сегмент данных содержит разделы инициализированных и неинициализированных данных программы, тогда как сегмент стека содержит стек приложения времени выполнения. Сегмент стека автоматически расширяется ядром по мере выполнения процесса. Процесс может расширять или сокращать свой сегмент данных с помощью системных вызовов, тогда как размер своего сегмента текста он может изменять, лишь когда содержимое сегмента перекрывается данными из файловой системы или при отладке. Первоначальное содержание сегментов порожденных процессов является дубликатами сегментов родительского процесса.

Для выполнения процесса все содержимое адресного пространства процесса не должно обязательно постоянно находиться в оперативной памяти. Если процесс ссылается на часть своего адресного пространства, которое отсутствует в основной памяти, система подкачивает (pages) необходимую информацию в память. Когда системных ресурсов не хватает, система использует двухуровневый подход к поддержанию доступности ресурсов. Если доступно ограниченное количество памяти, система заберет ресурсы памяти от процессов, если эти ресурсы в последнее время не использовались. Если будет сильный недостаток ресурсов, система прибегнет к подкачке (swapping) всего контекста процесса из вторичного хранилища. Подкачка по требованию страниц и процессов, осуществляемая системой, прозрачна для процессов. Однако процесс может уведомить систему о будущем ожидаемом использовании памяти в качестве поддержки производительности.


Похожие:
Еще по теме:
Советуем прочитать:

Сейчас 70 гостей онлайн

Реклама на сайте: