Boss(具有安全性的基于光束的操作系统)是概念验证操作系统,与Rust一起编写。其独特的特征包括:

该项目努力以减少重要性的顺序来实现以下内容:
是的。 Erlang是一种非常酷的功能(低级别) /面向对象(高级)并发语言。 Erlang使编写代码很容易在多个内核,处理器甚至机器上毫不费力地缩放。 Erlang的现有实现(最值得注意的是,官方Beam Virtual Machine)在单核和多核操作中都非常具有性能。此实现不是。喜欢,一点也不。但是它有效,这是一个起点!
该项目的基础是仿真器,这是一种在裸机上运行的多处理的ERLANG VM。它只能实现其必须实现的最低限度才能实现这一目标。例如,它确实解析了一些ACPI表(因为多处理才能工作所需的)(或者,至少将一旦实际实现了此功能),但是它不运行AML字节码 - 该任务保留到它运行的Beam ByteCode。模拟器仅支持X86_64 ISA,UEFI和ACPI 2.0+,即从2010年开始,它将在机器上运行。可以说,仿真器是一个微动物,因为它实现了英国(日程安排和IPC)的实现,但这是我的项目,我不愿意为此命名。
即使模拟器是光束,也不是光束。它与Erlang的标准二进制模块格式及其字节码指令兼容,但这是相似之处结束的位置。这种不兼容是一个有意识的设计决策,以将基于隔离和基于能力的安全性引入光束。这是差异的不完整列表:
% this calls the function `baz' from the module `bar' in the application `foo'
% this will only be allowed if `foo' "exports" the module `bar'
'foo:bar' : baz (). % far call
% this calls the function `baz' from the module `bar' in the current app
bar : baz (). % external call
% this calls the function `baz' from the current module in the current app
baz (). % local call Self = self (),
Self ! hello ,
receive
{ Self , hello } -> yay ,
hello -> nay
end .当前的实现不是最快的,但它是使事情正常工作的起点。
在启动时,模拟器加载包含初始仿真器配置的Boss Base Image ( BOSBAIMA.TAR ),并且仅足够的光束模块来引导功能性OS。它类似于OTP的kernel应用程序。
如前所述,没有明确的内核 - 用户空间鸿沟。取而代之的是,Boss乘坐构成Erlang/OTP的基础的监督树模型。
模拟器:
基本图像:
“ userland”:
当前,OS在屏幕上没有显示任何内容。相反,请参阅串行端口的输出。 NIX和Just Scripts指示QEMU将串行端口输出重定向到终端。
您可以下载从发布页面上的最新提交中构建的ISO。但是,我建议您从头开始构建操作系统。
克隆该项目:
$ git clone https://github.com/portasynthinca3/boss.git
$ cd boss与:
$ nix --extra-experimental-features flakes build . # iso在Qemu发射:
$ nix --extra-experimental-features flakes --extra-experimental-features nix-command run克隆该项目:
$ git clone https://github.com/portasynthinca3/boss.git
$ cd boss要构建ISO,您将需要:
1.33.0测试)4.0.44测试)2.42.0测试)1.82.0-nightly (7120fdac7 2024-07-25) )Erlang/OTP 27 [erts-15.0.1] ,26及以下测试将无效)与:
$ just iso要在QEMU运行ISO,您将需要:
启动Qemu:
$ just qemu谢谢: