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