BOSS (ระบบปฏิบัติการที่ใช้คานพร้อมความปลอดภัย) เป็นระบบปฏิบัติการพิสูจน์แนวคิดที่เขียนใน Erlang พร้อมกับสนิม คุณสมบัติที่โดดเด่นของมัน ได้แก่ :

โครงการนี้มุ่งมั่นที่จะบรรลุเป้าหมายต่อไปนี้เพื่อลดความสำคัญ:
ใช่. Erlang เป็นฟังก์ชันที่ยอดเยี่ยมมาก (ในระดับต่ำ) / มุ่งเน้นวัตถุ (ในระดับสูง) ภาษาพร้อมกัน Erlang ทำให้ง่ายต่อการเขียนโค้ดที่เกือบจะง่ายในหลายคอร์โปรเซสเซอร์หรือแม้แต่เครื่องจักร การใช้งานที่มีอยู่ของ ERLANG (โดยเฉพาะอย่างยิ่งเครื่องเสมือนจริงอย่างเป็นทางการ) มีประสิทธิภาพมากในการดำเนินงานทั้งแบบเดี่ยวและหลายคอร์ การใช้งานนี้ไม่ได้ ไม่ชอบเลย แต่มันใช้งานได้และเป็นจุดเริ่มต้น!
พื้นฐานของโครงการนี้คือ Emulator ซึ่งเป็น Erlang VM ที่รับรู้หลายครั้งที่ทำงานบนฮาร์ดแวร์เปลือย มันใช้เพียงขั้นต่ำที่เปลือยเปล่าที่จะนำไปใช้เพื่อให้บรรลุวัตถุประสงค์นี้ ตัวอย่างเช่นมันแยกวิเคราะห์ตาราง ACPI บางอย่าง (เนื่องจากจำเป็นสำหรับการประมวลผลมัลติโปรเซสเซอร์ในการทำงาน) (หรืออย่างน้อยก็เมื่อคุณลักษณะนี้ถูกนำไปใช้จริง) แต่มันไม่ได้เรียกใช้ AML bytecode - งานนั้นจะถูกทิ้งไว้กับคาน Emulator รองรับ X86_64 ISA, UEFI และ ACPI 2.0+ เท่านั้นเช่นมันจะทำงานบนเครื่องตั้งแต่ประมาณปี 2010 เป็นต้นไป อาจเป็นที่ถกเถียงกันอยู่ว่า Emulator เป็น microkernel เนื่องจากใช้สิ่งที่สหราชอาณาจักรจะ (กำหนดเวลาและ 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 .การใช้งานปัจจุบันไม่เร็วที่สุด แต่เป็นจุดเริ่มต้นที่จะทำให้สิ่งต่าง ๆ ทำงานได้
เมื่อเริ่มต้นเครื่องจำลองจะโหลด อิมเมจฐานบอส ( BOSBAIMA.TAR ) ที่มีการกำหนดค่าอีมูเลเตอร์เริ่มต้นและโมดูลลำแสงเพียงพอที่จะบูตระบบปฏิบัติการที่ใช้งานได้ มันคล้ายกับแอพ kernel ของ OTP
ดังที่ได้กล่าวไปแล้วก่อนหน้านี้ไม่มีการแบ่งเคอร์เนล-ผู้ใช้พื้นที่; แต่บอสไปสำหรับแบบจำลองต้นไม้การกำกับดูแลซึ่งเป็นพื้นฐานของ ERLANG/OTP
Emulator:
รูปภาพพื้นฐาน:
"Userland":
ปัจจุบันระบบปฏิบัติการไม่แสดงอะไรบนหน้าจอ โปรดดูผลลัพธ์จากพอร์ตอนุกรมแทน Nix และเพียงแค่สคริปต์สั่งให้ QEMU เปลี่ยนเส้นทางเอาต์พุตอนุกรมไปยังเทอร์มินัล
คุณสามารถดาวน์โหลด ISO ที่สร้างขึ้นจากการกระทำล่าสุดในหน้ารีลีส อย่างไรก็ตามฉันขอแนะนำให้คุณสร้างระบบปฏิบัติการแทน
โคลนโครงการด้วย:
$ git clone https://github.com/portasynthinca3/boss.git
$ cd bossสร้าง ISO ด้วย:
$ 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 และต่ำกว่าจะ ไม่ ทำงาน)สร้าง ISO ด้วย:
$ just isoในการเรียกใช้ ISO ใน QEMU คุณจะต้อง:
เปิดตัว QEMU ด้วย:
$ just qemuขอบคุณ: