Friday, May 18th

Last update12:13:00 PM GMT

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

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

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

Дальнейшая разработка интерфейса продолжилась во время работы над 4.3BSD. Свыше 40 компаний и исследовательских групп приняли участие в обсуждениях, ведущих к пересмотру архитектуры, которая была описана в Руководстве архитектуры программного обеспечения Беркли [McKusick et al., 1994]. Первая UNIX-реализация интерфейса была выполнена фирмой Sun Microsystems [Gingell et al., 1987].

Опять-таки спешка не позволила 4.3BSD предоставить реализацию интерфейса. Хотя последний мог быть встроен в существующую систему виртуальной памяти 4.3BSD, разработчики решили не включать ее, поскольку этой реализации было около 10 лет. Более того, первоначальный дизайн виртуальной памяти был основан на предположении, что память компьютера небольшая и дорогая, тогда как диски были подключены локально, быстры и недороги. Таким образом, система виртуальной памяти была спроектирована для экономного использования памяти за счет создания лишнего дискового трафика. Вдобавок реализация 4.3BSD была пронизана зависимостями от аппаратного обеспечения управления памятью VAX, что затрудняло ее переносимость на другие архитектуры компьютеров. Наконец, система виртуальной памяти не была предназначена для поддержки тесно связанных микропроцессоров, что становилось все более обычным и важным в наши дни.

Попытки постепенного усовершенствования старой реализации казались обреченными на неудачу. С другой стороны, полностью новый дизайн мог использовать преимущества большой памяти, сберечь обмен с диском и получить возможность работы в многопроцессорной системе. В результате в 4.4BSD система виртуальной памяти была полностью заменена. Система виртуальной памяти 4.4BSD была основана на системе виртуальной памяти Mach 2.0 [Tevanian, 1987] с обновлениями от Mach 2.5 и Mach 3.0.

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


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

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

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