Выполнить на месте
Эта статья нуждается в дополнительных цитатах для проверки . ( август 2009 г. ) |
В информатике оперативную выполнение на месте ( XIP ) — это метод выполнения программ непосредственно из долговременного хранилища, а не копирования их в память . Это расширение использования общей памяти для уменьшения общего объема необходимой памяти.
Его общий эффект заключается в том, что текст программы не использует доступную для записи память, сохраняя ее для динамических данных, и что все экземпляры программы запускаются из одной копии.
Чтобы это работало, необходимо соблюдение нескольких критериев:
- Хранилище должно обеспечивать интерфейс с ЦП , аналогичный обычной памяти (или должен присутствовать адаптивный уровень).
- Этот интерфейс должен обеспечивать достаточно быстрые операции чтения с произвольным доступом .
- Файловая система , если она используется, должна предоставлять соответствующие функции сопоставления.
- Программа должна быть либо связана , чтобы знать адрес, по которому хранилище отображается в системе, либо быть независимой от позиции .
- Программа не должна изменять данные в загруженном изображении.
Требования к хранению обычно удовлетворяются за счет использования флэш-памяти NOR или EEPROM , которая может иметь побайтовую адресацию для операций чтения, хотя в большинстве конфигураций она немного медленнее, чем обычное системное ОЗУ.
XIP во время загрузки
[ редактировать ]Как правило, загрузчик первого этапа представляет собой программу XIP, которая запускается по адресу, по которому отображаются флэш-чипы при включении питания, и содержит минимальную программу для настройки системной оперативной памяти (которая зависит от компонентов). используется на отдельных платах и не может быть достаточно обобщен, чтобы можно было встроить правильную последовательность в аппаратное обеспечение процессора), а затем загружает загрузчик второго этапа или ядро ОС в ОЗУ.
Во время этой инициализации доступная для записи память может быть недоступна, поэтому все вычисления должны выполняться в регистрах процессора. По этой причине загрузчики первого этапа, как правило, пишутся на языке ассемблера и делают лишь минимум, обеспечивающий нормальную среду выполнения для следующей программы. Некоторые процессоры либо встраивают небольшой объем SRAM в сам чип, [ 1 ] или разрешить использовать встроенную кэш-память в качестве оперативной памяти, [ 2 ] чтобы упростить написание загрузчика первого этапа с использованием языка высокого уровня.
Для ядра или загрузчика адресное пространство обычно назначается внутри, поэтому для того, чтобы использовать для них XIP, достаточно указать компоновщику размещать немодифицируемые и модифицируемые данные в разных диапазонах адресов и обеспечить механизм копирования модифицируемых данных. в доступную для записи память перед запуском любого кода, предполагающего, что к данным можно получить обычный доступ. Это можно сделать как часть предыдущего этапа или в небольшом сегменте кода в начале программы.
Если адресное пространство назначается извне, например, в прикладной программе, которая запускается в системе, которая не предоставляет виртуальную память , компилятору необходимо получить доступ ко всем изменяемым данным, добавляя смещение к указателю на частную копию области данных. В этом случае внешний загрузчик отвечает за настройку областей памяти, специфичных для экземпляра.
BIOS и UEFI используют XIP для инициализации основной памяти .
XIP как файловая система
[ редактировать ]XIP предъявляет к файловым системам требования, которые зачастую трудно удовлетворить. В системах без таблицы страниц весь файл должен храниться в последовательных байтах и не должен быть фрагментирован, в то время как файловые системы на основе флэш-памяти часто стремятся распределить данные по секторам флэш-чипа, которые имеют наименьшее количество циклов стирания и выравнивают износ . чипа, продлевая срок его службы.
Все эти сложности и компромисс в скорости означают, что XIP обычно используется только для загрузчиков первого этапа или когда оперативной памяти крайне не хватает. В частности, игровые консоли второго-четвертого поколений подключают адрес и шину данных ПЗУ-картриджа к адресу консоли. [ 3 ] что позволяет (например) Atari 2600 работать только со 128 байтами оперативной памяти в интерфейсе IC джойстика .
Относительно новая файловая система для Linux, называемая AXFS ( Advanced XIP File System ), призвана преодолеть некоторые недостатки, связанные с XIP, особенно в отношении выполнения приложений пользовательского пространства на месте . Например, он позволяет разбить исполняемый двоичный файл на «регионы XIP», избежав тем самым ограничения фрагментации, упомянутого выше.
Реализация NetBSD также находится в стадии разработки. [ 4 ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Samsung S3C2416X имеет встроенную SRAM объемом 64 КБ, доступную на системной шине.
- ^ Broadcom BCM2835 использует свой кеш уровня 2 в качестве ОЗУ загрузчика перед инициализацией SDRAM.
- ^ Патент США 4485457 , Ричард К. Баласка, Роберт Л. Хантер и Скотт С. Робинсон, «Система памяти, включая ОЗУ и ПЗУ с переключением страниц», выдан 27 ноября 1984 г., передан CBS Inc.
- ^ Уебаяси, Масао (5 апреля 2010 г.). «Поддержка eXecute-In-Place (XIP) для NetBSD» (PDF) . BSDCan .
Внешние ссылки
[ редактировать ]- Берд, Тим Р. (2004). «Методы улучшения времени загрузки Linux» (PDF) . Оттавский симпозиум по Linux .
- Халберт, Джаред (2008). «Представляем расширенную файловую систему XIP» (PDF) . Оттавский симпозиум по Linux .
- Уилшир, Фил (28 августа 2002 г.). «Обзор eXecute In Place (XIP)» . uCdot . Архивировано из оригинала 20 октября 2007 г. Проверено 25 сентября 2007 г.
- Веллхёфер, Сёрен (17 сентября 2009 г.). «Приложение eXecute-In-Place (XIP) с Linux и AXFS» . Проверено 17 сентября 2009 г.
- «Настройка Linux для XIP (выполнение на месте) на PowerPC» . Разработка программного обеспечения DENX.
- «Ядро XIP» . Встроенная Linux-вики .
- «Приложение Linux XIP» . Встроенная Linux-вики .
- «Выполнить на месте драйвер файловой системы — xip2fs» . Linux для S/390 .