gpt4 book ai didi

lisp - 什么是 Lisp 图像?

转载 作者:太空宇宙 更新时间:2023-11-03 18:32:24 24 4
gpt4 key购买 nike

本质上,我想知道 Lisp 图像是什么?它是包含 Lisp 解释器和一个或多个程序的内存片还是什么?

最佳答案

作为转储内存的 Lisp 图像

图像通常是一个文件。它是 Lisp 系统内存的转储。它包含了 Lisp 系统的所有函数(通常被编译成机器代码)、变量值、符号等。它是正在运行的 Lisp 的快照。

要创建图像,首先要启动 Lisp,使用它一段时间,然后转储图像(执行此操作的函数名称取决于实现)。

使用 Lisp 图像

下次重新启动 Lisp 时,可以使用转储图像并大致恢复到之前的状态。转储图像时,还可以告诉 Lisp 在启动转储图像时它应该做什么。这样就可以重新连接到服务器、再次打开文件等。

要启动这样一个 Lisp 系统,需要一个内核和一个镜像。有时 Lisp 可以将两者放入一个文件中,这样一个可执行文件既包含内核(具有一些运行时功能)又包含图像数据。

在 Lisp 机器(运行 Lisp 操作系统的计算机)上,一种引导加载程序(FEP,前端处理器)可以将图像(称为“世界”)加载到内存中,然后启动该图像。在这种情况下,没有内核,计算机上运行的只是这个 Lisp 镜像,它包含所有功能(解释器、编译器、内存管理、GC、网络堆栈、驱动程序……)。基本上它是单个文件中的操作系统。

一些 Lisp 系统会在转储图像之前优化内存。他们可能会进行垃圾收集、对内存中的对象进行排序等。

为什么要使用图片?

为什么要使用图像?它节省了加载东西的时间,并且可以为用户提供带有应用程序代码和数据的预配置 Lisp 系统。使用保存的图像启动 Common Lisp 实现通常很快 - 在当前计算机上只需几毫秒。

由于 Lisp 镜像可能包含很多功能(编译器,甚至开发环境,大量调试信息,...),它的大小通常为几兆字节。

在 Lisp 中使用图像与 Smalltalk 系统所做的非常相似。例如,Squeak 还使用 Smalltalk 代码和数据的镜像以及运行时可执行文件。有一个实际的区别:大多数当前的 Lisp 系统使用编译的机器代码。因此,镜像不能在不同的处理器架构(x86、x86-64、SPARC、POWER、ARM 等)甚至操作系统之间移植。

历史

这样的 Lisp 图像已经使用了很长时间。例如,1967 年 BBN Lisp 中的函数 SYSOUT 创建了这样一个图像。 SYSIN 将在开始时读取这样的图像。

保存图片的函数示例

有关示例,请参阅函数 save-imageLispWorks或阅读 SBCL关于 saving core images 的手册.

关于lisp - 什么是 Lisp 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/480083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com