Требованием для 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. Она содержит в себе эффективную поддержку для разделения памяти, четкое отделение машинно-независимых и машинно-зависимых средств, а также поддержку многопроцессорности. Процессы могут отображать файлы в любом месте своего адресного пространства. Они могут делать общими части своего адресного пространства, создавая разделяемые отображения одного и того же файла. Изменения, сделанные одним процессом, видны в адресном пространстве других процессов, а также записываются обратно в сам файл.
- 12/05/2010 04:44 - Каналы 4.2BSD
- 11/05/2010 21:23 - Дескрипторы и ввод/вывод
- 11/05/2010 10:33 - Система ввода/вывода
- 11/05/2010 06:08 - Управление памятью внутри ядра
- 10/05/2010 20:06 - Отдельные отображения файла
- 10/05/2010 05:46 - Управление памятью
- 09/05/2010 22:28 - Группы процессов и сеансы
- 09/05/2010 13:03 - Сигналы
- 09/05/2010 05:44 - Управление процессами
- 08/05/2010 19:43 - Службы ядра