BSD, Обзор, Память

Система виртуальной памяти FreeBSD

Система виртуальной памяти FreeBSD представляет сильно настроенную версию реализации виртуальной памяти 4.4BSD. Она содержит в себе эффективную поддержку для разделения памяти, четкое отделение машинно-независимых и машинно-зависи­мых средств, а также поддержку многопроцессорности. Процессы могут отображать файлы в любом месте своего адресного пространства. Они могут делать общими части своего адресного пространства, создавая разделяемые отображения одного и того же файла.

Проектные решения по управление памятью BSD

Требованиям предъявлемым к 4.2ВSD были поддержка больших разрозненных адресных про­странств, отображенных файлов и разделяемой памяти. Был определен интерфейс, на­званный ттар(), который позволял несвязанным процессам запрашивать разделяемое отображение файла в свои адресные пространства. Если несколько процессов отобра­жали один и тот же файл в свои адресные пространства, изменения адресного про­странства, относящиеся к отображенному файлу для одного процесса, были бы отражены в области, отображенной другими процессами, а также в самом файле.

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

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

RSS-материал