Подтвердить что ты не робот

Что такое Lisp изображение?

По сути, я хотел бы знать, что такое Lisp образ? Это фрагмент памяти, содержащий интерпретатор Lisp и одну или несколько программ или что?

4b9b3361

Ответ 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 потребует некоторой реализации, чтобы заставить ее работать.