Лисп-образ как дамп памяти
Изображение обычно представляет собой файл. Это дамп памяти системы Lisp. Он содержит все функции (часто скомпилированные в машинный код), значения переменных, символы и т. Д. Системы Lisp. Это снимок работающего Лиспа.
Чтобы создать изображение, нужно запустить Lisp, использовать его некоторое время, а затем сбросить изображение (имя функции, которая зависит от реализации).
Использование изображения Lisp
В следующий раз, когда вы перезапускаете Лисп, вы можете использовать выгруженное изображение и получить состояние примерно на том же уровне, что и раньше. При выгрузке изображения также можно указать Lisp, что он должен делать, когда запускается дамп-изображение. Таким образом, можно повторно подключиться к серверам, снова открыть файлы и т. Д.
Чтобы запустить такую систему на Лиспе, нужно ядро и образ. Иногда Lisp можно поместить как в один файл, так что исполняемый файл содержит как ядро (с некоторыми функциями времени выполнения), так и данные изображения.
На машине Lisp (компьютере, работающем под управлением операционной системы Lisp) своего рода загрузчик (FEP, Front End Processor) может загрузить образ (называемый «мир») в память и затем запустить этот образ. В этом случае нет ядра, и все, что работает на компьютере, - это образ Lisp, который содержит все функции (интерпретатор, компилятор, управление памятью, GC, сетевой стек, драйверы, ...). По сути это ОС в одном файле.
Некоторые системы Lisp оптимизируют память перед выгрузкой образа. Они могут выполнять сборку мусора, размещать объекты в памяти и т. Д.
Зачем использовать изображения?
Зачем использовать изображения? Это экономит время на загрузку, и можно предоставлять предварительно сконфигурированные системы Lisp с кодом приложения и данными пользователям. Запуск реализации Common Lisp с сохраненным изображением обычно выполняется быстро - несколько миллисекунд на текущем компьютере.
Поскольку образ Lisp может содержать множество функций (компилятор, даже среда разработки, много отладочной информации, ...), его размер обычно составляет несколько мегабайт.
Использование изображений в Lisp очень похоже на то, что делают системы Smalltalk. Squeak, например, также использует образ кода и данных Smalltalk и исполняемый файл во время выполнения. Существует практическое отличие: большинство современных систем Lisp используют скомпилированный машинный код. Таким образом, образ не переносим между различными процессорами (x86, x86-64, SPARC, POWER, ARM, ...) или даже операционными системами.
История
Такие изображения на Лиспе используются уже давно. Например, функция SYSOUT
в BBN Lisp с 1967 года создала такой образ. SYSIN
будет читать такое изображение при запуске.
Примеры функций сохранения изображений
Например, см. Функцию save-image из LispWorks или прочитайте руководство SBCL по сохранению основных образов .