Biscuit 研究操作系统
Biscuit 是一个单体式的 POSIX 子集操作系统内核,使用 Go 语言编写,适用于 x86-64 类型的 CPU。它的编写目的是为了研究使用高级语言和垃圾回收来实现具有通用架构风格的内核的性能 trade-off。您可以在以下链接中找到有关 Biscuit 的研究论文:https://pdos.csail.mit.edu/projects/biscuit.html
Biscuit 还包含一个引导加载程序、一个部分 libc(“litc”)以及一些用户空间程序,尽管我们本可以使用 GRUB 或现有的 libc 实现,比如 musl。
这个仓库是 Go 仓库(https://github.com/golang/go)的一个分支。Biscuit 的几乎所有代码都在 biscuit/ 目录下。
仓库的根目录包含 Go 1.10.1 的工具链和运行时。Biscuit 的一些代码是对运行时的修改,主要位于 src/runtime/os_linux.go 中。
Biscuit 过去可以在 Linux 和 OpenBSD 上构建,但目前可能只能在 Linux 上构建。在构建 Biscuit 之前,你必须先构建 Biscuit 修改过的 Go 运行时:
$ git clone https://github.com/mit-pdos/biscuit.git
$ cd biscuit/src
$ ./make.bash然后进入 Biscuit 的主目录并启动它:
$ cd ../biscuit
$ make qemu CPUS=2Biscuit 应该能启动,然后你可以输入命令:
# ls你的环境中需要 qemu-system-x86_64 和 python2。如果你的发行版没有这样命名它们,你需要修正名称、路径等。
如果 GOPATH 环境变量不包含 biscuit/,构建会失败,错误信息类似:
src/ahci/ahci.go:8:8: cannot find package "container/list" in any of:
...要么取消设置 GOPATH,要么显式设置它,例如(假设你的工作目录是 GNUMakefile 所在的位置):
$ GOPATH=$(pwd) make qemu CPUS=2欢迎随意修改 Biscuit!我们很乐意接受贡献。
暂无开放 Issues,或尚未同步最近议题。