По сути, я хотел бы знать, что такое Lisp образ? Это фрагмент памяти, содержащий интерпретатор Lisp и одну или несколько программ или что?
Что такое Lisp изображение?
Ответ 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 руководство по сохранение основных изображений.
Ответ 2
Несколько языковых реализаций используют "образ" для хранения "все", что есть в текущем контексте. Это изображение может содержать несколько слоев абстракции компиляции (т. промежуточный уровень синтаксического анализа, промежуточный байт-код, собственные операционные коды). Загрузите это изображение будет намного быстрее, чем компиляция всех исходных файлов. Это очень похоже на спящий режим на уровне программы.
Например, если ваш-lisp -implementation использует изображение, чем сначала вы (или компилятор поставщик будет) загрузочный ремень изображения и сохранит его.
Тогда у вас есть две возможности: (1) либо загружать файл lisp каждый раз при вызове lisp, либо (2) загружать все ваши lisp и сохранять изображение и использовать это изображение
Надеюсь, что поможет
Ответ 3
В общем, это часть хранения процесса lisp (то есть все функции и данные "lisp" ), но не содержит частей базового lisp двоичного кода. С положительной стороны это дает быстрый старт, так как там (по существу) не нужно вести учет при загрузке изображения, все просто. С другой стороны, это означает, что любые открытые файлы, сокеты и то, что вас упускают, поэтому сохранение изображений как своего рода check-pointing потребует некоторой реализации, чтобы заставить ее работать.