凯里市川叨峡谷294号
办公时间:上午9:00-下午6:00

行业资讯

首页 / Our Projects /用纸张模拟内存的奇特实验,竟能运行游戏

用纸张模拟内存的奇特实验,竟能运行游戏

2026-09-02

最近,内存条价格高飞,让人感到无奈。因此,我想尝试一种另类的方法:将数据存储在普通纸上,来代替传统内存。起初,我高估了这个项目的可行性,却没想到后续的运行速度极其缓慢。下面是我将普通白纸变成“内存条”的详细过程。

首先,我确定了实现的基本思路:通过编写一个程序来拦截内存写入请求,将数据手动记录在纸上,待需要读取时再输入回电脑。经过对比,我选择了Linux系统作为实验平台,使用的是一台装有用户版Linux的Apple Silicon MacBook和一堆空白打印纸。

现今的内存条已经经历了多个版本的迭代,我估算我的“纸内存”速度不到每秒1字节,相当于DDR-32,完全不具备现代科技的优势。启动Linux后,我尝试使用OBS录屏,结果因为软件与硬件不兼容而崩溃,最后转而使用KD Blasma中的Spectacle进行录制。 qy球友会官网

这台电脑自带8GB内存,我通过free -h命令查询交换空间,发现Linux几乎没有使用。在演示中,我决定创建一个256MiB的交换文件。但在尝试的时候,发现页面大小不匹配,苹果芯片的页面大小是16KB,而Linux标准是4KB。为避免系统崩溃,我决定另寻方法。

核心问题在于拦截内存访问,我找到了一种称为Userfaultfd的机制,可以用来捕获缺页错误。当程序试图访问尚未存在的内存时,我可以输入之前记录在纸上的内容以继续运行,同时将新数据写入纸上。由于我对C语言并不熟悉,便与ChatGPT合作编写内存管理程序,通过逐行确认代码的安全性,快速完成了编译。

测试中,我随机触发缺页错误并成功。为便于测试,我将信息编码成16进制形式,32字节的数据写成64个字符。为了纠错,我预留了修改的空间,污点的部分可以通过调整压缩。首次测试时,我手动输入纸上的内容,成功导入数据,虽然由于手误导致了一次纠错失败。 qy球友会官网

随后,我优化程序以适应64字节的容量,同时添加了写入功能,便于测试小游戏。我设计了一个终端版的乒乓球游戏,能在纸内存上保存进度。游戏运行流畅,包括对象的位置和得分等数据均能被完整存储。

最后,我测试了自己创造的文字冒险游戏《杂货店》,在游戏中,玩家在打烊后被困入店内,所有的剧情和玩法均由我自行构思,代码乃通过AI生成。为了这个游戏,我特别制作了一个印有吃豆人图案的纸内存条,依然是64字节的容量。

游戏一切顺利,可以将当前进度和信息成功保存到纸上。在清空原有数据后,我还尝试手动修改信息,却不慎触发了段错误,或许我就是第一个用纸引发段错误的人。这整个实验虽具挑战,却让我体验到从纸张中汲取数据的独特乐趣。 qy球友会官网