BOSS (sistem operasi berbasis balok dengan keamanan) adalah sistem operasi bukti konsep yang ditulis di Erlang bersama dengan karat. Fitur khasnya meliputi:

Proyek ini berusaha untuk mencapai yang berikut, dalam urutan mengurangi kepentingan:
Ya. Erlang adalah fungsional yang sangat keren (pada tingkat rendah) / berorientasi objek (pada tingkat tinggi) bahasa bersamaan. Erlang memudahkan untuk menulis kode yang berskala hampir dengan mudah di berbagai core, prosesor atau bahkan mesin. Implementasi Erlang yang ada (terutama, mesin virtual balok resmi) sangat berkinerja baik dalam operasi inti tunggal dan multi-core. Implementasi ini tidak. Seperti, tidak sama sekali. Tapi itu berhasil dan itu adalah titik awal!
Dasar dari proyek ini adalah emulator , Erlang VM yang sadar-multiprosessing yang berjalan pada perangkat keras telanjang. Ini hanya mengimplementasikan minimum yang harus diterapkan untuk mencapai tujuan ini; Sebagai contoh, itu mem -parsing beberapa tabel ACPI (karena itu diperlukan untuk multiprosessing untuk bekerja) (atau, setidaknya, itu akan setelah fitur ini sebenarnya diimplementasikan), tetapi tidak menjalankan AML bytecode - tugas itu diserahkan ke bytecode balok yang dijalankan. Emulator hanya mendukung X86_64 ISA, UEFI dan ACPI 2.0+, yaitu akan berjalan pada mesin dari sekitar 2010 dan seterusnya. Dapat dikatakan bahwa emulator adalah microkernel karena mengimplementasikan hal -hal yang akan dimiliki Inggris (penjadwalan dan IPC), tetapi ini adalah proyek saya dan saya lebih suka untuk tidak menyebutkannya.
Meskipun emulatornya adalah balok , itu bukan balok . Ini kompatibel dengan format modul biner standar Erlang dan instruksi bytecode -nya, tetapi di situlah kesamaannya berakhir. Ketidakcocokan ini adalah keputusan desain sadar yang dibuat untuk memperkenalkan isolasi dan keamanan berbasis kemampuan ke dalam balok. Berikut daftar perbedaan yang tidak lengkap:
% 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 .Implementasi saat ini bukan yang tercepat, tetapi ini adalah titik awal untuk membuat semuanya berfungsi.
Pada startup, emulator memuat gambar dasar bos ( BOSBAIMA.TAR ) yang berisi konfigurasi emulator awal dan hanya modul balok yang cukup untuk bootstrap OS fungsional. Ini mirip dengan aplikasi kernel OTP.
Seperti yang dikatakan sebelumnya, tidak ada kesenjangan Kernel-Pengguna Kernel yang jelas; Sebaliknya, Boss menggunakan model pohon pengawasan yang membentuk dasar Erlang/OTP.
Emulator:
Gambar dasar:
"Userland":
Saat ini, OS tidak menampilkan apa pun di layar. Sebaliknya, lihat output dari port serial. NIX dan Just Scripts menginstruksikan QEMU untuk mengarahkan output port serial ke terminal.
Anda dapat mengunduh ISO yang dibangun dari komit terbaru di halaman rilis. Namun, saya menyarankan agar Anda membangun OS dari awal.
Klon proyek dengan:
$ git clone https://github.com/portasynthinca3/boss.git
$ cd bossBangun ISO dengan:
$ nix --extra-experimental-features flakes build . # isoDiluncurkan di QEMU dengan:
$ nix --extra-experimental-features flakes --extra-experimental-features nix-command runKlon proyek dengan:
$ git clone https://github.com/portasynthinca3/boss.git
$ cd bossUntuk membangun ISO, Anda akan membutuhkan:
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 dan di bawah ini tidak akan berhasil)Bangun ISO dengan:
$ just isoUntuk menjalankan ISO di QEMU, Anda akan membutuhkan:
Luncurkan QEMU dengan:
$ just qemuTerima kasih untuk: