Skip to content
HEROBAN-SEL4 MICROKERNEL ROUTER
🚦System Message Broker
🔀

حاوية bus

العصب المركزي لتوجيه الرسائل (IPC Router) في النظام. تحمي حاوية FS_Vault من الوصول المباشر وتقوم بتبسيط وتجميع الأوامر المعقدة (Macro-Ops) لتسهيل حياة التطبيقات.

🚦BrokerRouter
📎256 BClipboard
⚙️MacrosComp. Ops
🧩No AllocZero Heap
🕸️

معمارية توجيه الرسائل (IPC Routing Flow)

🧠
تخفيف العبء (Decoupling & Abstraction): من مبادئ Microkernel الجيدة عدم ربط كل تطبيق بالخدمات المنخفضة المستوى. Bus_Vault تأخذ عبء تحويل أمر "Move" إلى (Copy ثم Delete)، وتحتفظ بالـ Clipboard لتخفيف الضغط على نظام الملفات. كما أنها نقطة التفتيش المثالية لإضافة Auth_Vault مستقبلاً، بحيث لا يمر طلب للقرص دون ختم أمني.
📱User AppOnly Knows Bus
1MoveFile (req)
Ok (resp)4
🔀Bus VaultRouter & Macros
📎 Clipboard Buffer
2CopyFile -> FS
3DeleteFile -> FS
📁FS VaultExecutes Primitive
💻

مخرجات الحاوية الحية

root@heroban:~/bus_vault_tty
bash
[Bus_Vault] =============================================
[Bus_Vault] seL4-Vault System Bus v0.1
[Bus_Vault] =============================================
[Bus_Vault] Slots: 0=Self | 1=FS_Vault | 2=Auth_Vault
[Bus_Vault] Ready. Entering IPC event loop...
----------------------------------------------------------
> [Bus_Vault] ClipboardCopy: storing content.
> [Bus_Vault] → MoveFile → FS_Vault (Copy + Delete)
> [Bus_Vault] → CopyFile → FS_Vault
> [Bus_Vault] → DeleteFile → FS_Vault
> [Bus_Vault] MoveFile complete. Returning Ok.
_
⚙️

كيف تعمل العمليات المركبة (Macros)

نظرة على كيفية تجميع أمر "نقل الملف" وتحويله لطلبين متتابعين (نسخ ثم حذف) لتبسيط مهام نظام الملفات الأساسي.

🦀 Rustcontainers/bus/src/main.rs
// ─────────────────────────────────────────────────────────────────────
//  Forward a request to FS_Vault and return its response
// ─────────────────────────────────────────────────────────────────────
fn forward_to_fs(req: &IpcMessage, ipc_buf: *mut usize) -> IpcMessage {
    let sender = unsafe { Sender::new(FS_EP_CAP, ipc_buf) };
    sender.send_recv(req).unwrap_or(IpcMessage::new(MessageTag::Err))
}

// مثال: كيف تتعامل Bus_Vault مع أمر "نقل الملف" (MoveFile)
MessageTag::MoveFile => {
    print("[Bus_Vault] → MoveFile → FS_Vault (Copy + Delete)\n");
    // 1- CopyFile
    let mut copy_req = IpcMessage::new(MessageTag::CopyFile);
    copy_req.payload = req.payload;
    copy_req.payload_len = req.payload_len;
    copy_req.mr[1] = req.mr[1]; // Source
    copy_req.mr[2] = req.mr[2]; // Dest
    let copy_resp = forward_to_fs(&copy_req, ipc_buf);
    
    // 2- DeleteFile (If Copy Succeeds)
    if copy_resp.tag == MessageTag::Ok {
        let mut del_req = IpcMessage::new(MessageTag::DeleteFile);
        del_req.mr[1] = req.mr[1];
        forward_to_fs(&del_req, ipc_buf);
    }
    resp = copy_resp;
}
📡

أوامر التوجيه (Routing Tags)

Create/Read/Write/Delete
تمرير الطلب (Forward) مباشرة إلى حاوية FS_Vault.
CopyFile / MoveFile
عمليات مركبة (Macro Operations). النسخ = قراءة ثم كتابة. النقل = قراءة ثم كتابة ثم حذف.
ClipboardCopy/Paste/Clear
إدارة ذاكرة الحافظة (Clipboard) المؤقتة داخل مساحة الحاوية بحد أقصى 256 بايت.
CreateShortcut / RegisterApp
واجهات تجريدية لمجلدات سطح المكتب (/home/user/Desktop) ومجلد التطبيقات (/home/user/apps/).
NetConnect / NetRequest
محجوزة مستقبلاً للتخاطب مع حاوية Tor_Vault.
⚙️

الوظائف والمهام الأساسية

# 01
🚦

مُوجّه المهام (IPC Router/Broker)

تعمل كـ System Bus مركزي في مساحة المستخدم. بدلاً من منح كل تطبيق صلاحية اتصال (Capability) بـ FS_Vault، تتصل التطبيقات بـ Bus_Vault وهي من يُمرر الطلبات.

# 02
📎

إدارة الحافظة المدمجة (In-Process Clipboard)

تحتوي على مصفوفة ثابتة (256 بايت) في الـ User Space لإدارة النسخ واللصق بين تطبيقات النظام، دون الحاجة للوصول إلى نظام الملفات.

# 03
🛠️

العمليات المركبة (Macro IPC Ops)

نواة FS_Vault لا تفهم ما هو "نسخ" أو "نقل". تقوم Bus_Vault بتركيب هذه العمليات عن طريق دمج (Read + Write) للنسخ، و (Copy + Delete) للنقل.

# 04
🌐

التجريد عالي المستوى (High-Level Abstraction)

تُبسّط العمليات المعقدة للتطبيقات مثل "RegisterApp" الذي يُترجم تلقائياً إلى أمر كتابة ملف تنفيذي في مسار التطبيقات المُعتمد (/home/user/apps/).

# 05
🔐

مركز التفويض المستقبلي

تمتلك Capability Slot خاص بـ Auth_Vault (Slot 2) لتتحول مستقبلاً إلى بوابة تفتيش (Checkpoint) أمني قبل تمرير أي طلب إلى FS_Vault.

# 06
🧩

كفاءة الـ No Alloc

لا تستخدم أي ديناميكية لتخصيص الذاكرة (No Heap). تعمل كحلقة وصل خفيفة جداً، حيث تستخدم IPC Buffer كمسار لتمرير الرسائل بدون نسخ الـ Payload.

📁

توثيق الملفات البرمجية

🦀

src/main.rs

System Router
containers/bus/src/main.rs
~200 سطر

الملف الرئيسي الذي يحتوي على حلقة الخدمة (Event Loop) لجميع خدمات النظام الأساسية. يوزع المهام على الحاويات الأخرى ويحتفظ بحالة الحافظة (Clipboard).

🔍 أهم العناصر
CapabilitiesSlot 1 = FS_Vault | Slot 2 = Auth_Vault
Clipboardstatic mut CLIPBOARD: [u8; 256]
Forwardingدالة forward_to_fs() لتمرير IpcMessage.
📦

Cargo.toml

Package Config
containers/bus/Cargo.toml
~17 سطر

ملف الاعتماديات. بسيط جداً ولا يعتمد سوى على sel4-sys ومكتبة التواصل الداخلية (ipc-sync).

🔍 أهم العناصر
Dependenciessel4-sys, ipc-sync
no_stdغياب كامل لمكتبة Rust القياسية أو أي Allocator.
📚

المكتبات والاعتمادات (Dependencies)

حاوية bus هي الأخف وزناً من حيث الاعتماديات — مكتبتان فقط وكلاهما من تطويرنا.

# 01
مكتبتنا

sel4-sys

libs/sel4-sys

التخاطب المباشر مع النواة لطباعة الرسائل (print_str) وأي Syscall أساسي.

# 02
مكتبتنا

ipc-sync

libs/ipc-sync

توفير الكيانات (Sender و Receiver) لتسهيل استقبال الرسائل من التطبيقات، ثم إعادة إرسالها إلى FS_Vault عبر forward_to_fs().

جميع الحقوق محفوظة © 2026 Qtoom