Boss (نظام التشغيل القائم على الشعاع مع الأمان) هو نظام تشغيل إثبات مفهوم مكتوب في إرلانج مع الصدأ. تشمل ميزاتها المميزة:

يسعى هذا المشروع إلى تحقيق ما يلي ، من أجل انخفاض الأهمية:
نعم. Erlang هو وظيفي رائع للغاية (على مستوى منخفض) / موجهة نحو الكائن (على مستوى عال) لغة متزامنة. يجعل Erlang من السهل كتابة التعليمات البرمجية التي تتجه دون عناء تقريبًا عبر العديد من النوى أو المعالجات أو حتى الآلات. تعد التطبيقات الحالية لـ Erlang (وأبرزها الجهاز الظاهري لشعاع Beam الرسمي) أداءً للغاية في العمليات ذات النواة الواحدة والمتعددة النواة. هذا التنفيذ ليس كذلك. مثل ، ليس على الإطلاق. لكنها تعمل وهي نقطة انطلاق!
أساس هذا المشروع هو المحاكي ، Erlang VM المعدلة المتعددة المعالجة التي تعمل على أجهزة عارية. إنه ينفذ فقط الحد الأدنى الذي يجب أن ينفذه من أجل الوصول إلى هذا الهدف ؛ على سبيل المثال ، يتم تحليل بعض جداول ACPI (نظرًا لأن ذلك مطلوب من أجل المعالجة المتعددة) (أو ، على الأقل ، سيتم تنفيذ هذه الميزة فعليًا) ، لكنها لا تعمل على تشغيل AML Bytecode - يتم ترك هذه المهمة حتى رمز Beam bytecode الذي تديره. يدعم المحاكي فقط X86_64 ISA و UEFI و ACPI 2.0+ ، أي أنه سيتم تشغيله على الآلات من عام 2010 تقريبًا. يمكن القول أن المحاكي عبارة عن microkernel لأنه ينفذ الأشياء التي ستقوم بها المملكة المتحدة (الجدولة و IPC) ، لكنها مشروعي وأفضل عدم تسمية ذلك.
على الرغم من أن المحاكي عبارة عن شعاع ، إلا أنه ليس الشعاع . إنه متوافق مع تنسيق الوحدة الثنائية القياسية لإرلانج وتعليماته بود ، ولكن هذا هو المكان الذي تنتهي فيه أوجه التشابه. هذا عدم التوافق هو قرار تصميم واعي تم اتخاذه لإدخال الأمن القائم على القدرات في الحزمة. إليك قائمة غير مكتملة من الاختلافات:
% 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 ( BOSBAIMA.TAR ) التي تحتوي على تكوين محاكي أولي ووحدات شعاع كافية فقط لتمهيد نظام تشغيل وظيفي. إنه أقرب إلى تطبيق kernel من OTP.
كما قيل سابقًا ، لا يوجد فضاء واضحة للفضاء. بدلاً من ذلك ، يذهب Boss إلى نموذج شجرة الإشراف الذي يشكل أساس Erlang/OTP.
منافس:
الصورة الأساسية:
"userland":
حاليًا ، لا يعرض نظام التشغيل أي شيء على الشاشة. بدلاً من ذلك ، راجع الإخراج من المنفذ التسلسلي. Nix و Scripts فقط توجيه 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شكرا لك: