پرش به مطلب اصلی

نمای کلی معماری

Sinux به زیرسیستم‌های کاملاً مجزا تقسیم می‌شود. کد وابسته به معماری در arch/ قرار دارد، در حالی که منطق قابل حمل هسته، مدیران حافظه، درایوها و فضای کاربر جداگانه نگهداری می‌شوند.

درخت کد منبع

sinux/
├── arch/x86_64/ کد وابسته به معماری (GDT، IDT، PIC، PIT، فراخوان سیستمی، بوت)
├── kernel/
│ ├── core/ kernel_main، panic، تجزیه‌کننده‌ی multiboot2
│ ├── proc/ مدیریت فرایند، بارگذار ELF، زمان‌بند، حالت کاربر
│ ├── fs/ VFS، ramfs، ext2، procfs
│ ├── ipc/ pipeها و سیگنال‌ها
│ └── syscall/ جدول ارسال فراخوان سیستمی
├── mm/ مدیران حافظه‌ی فیزیکی (PMM) و مجازی (VMM)
├── drivers/ VGA، سریال، کیبورد، TTY، ATA
├── lib/ string، printk، io.h
├── userspace/
│ ├── libc/ کتابخانه‌ی C کمینه
│ └── hello/ برنامه‌ی نمونه‌ی فضای کاربر
├── boot/ grub.cfg، linker.ld
└── scripts/ iso.mk، qemu.mk، mkdisk.sh

خلاصه‌ی زیرسیستم‌ها

زیرسیستممسئولیت
arch/x86_64راه‌اندازی سطح‌پایین CPU: GDT، IDT، PIC، PIT، ورود فراخوان سیستمی، بوت استاب
kernel/coreنقطه‌ی ورود، مدیریت panic، تجزیه‌ی Multiboot2
kernel/procفرایندها، زمان‌بند، بارگذار ELF64، انتقال‌های ring-3
kernel/fsانتزاع VFS روی ramfs، ext2 و procfs
kernel/ipcpipeها و تحویل سیگنال
kernel/syscallجدول ارسال فراخوان سیستمی (ABI لینوکس x86_64)
mmمدیریت حافظه‌ی فیزیکی (PMM) و مجازی (VMM)
driversمتن VGA، سریال COM1، کیبورد PS/2، TTY، ATA PIO
userspacelibc کمینه و برنامه‌های نمونه

برای دیدن نحوه‌ی بالا آمدن هسته به روند بوت مراجعه کنید، یا به چیدمان حافظه بپرید.