توضیحات
آموزش ساخت سیستم عامل از صفر
نام دوره : Developing a Multithreaded Kernel From Scratch!
پیشنیازها
تسلط بر زبان برنامهنویسی C: تسلط کامل بر کار با اشارهگرها (Pointers)، ساختارها (Structs)، مدیریت دستی حافظه و عملیات بیتی (Bitwise Operations).
آشنایی اولیه با زبان اسمبلی (x86 Assembly): درک مفاهیم ثباتها (Registers)، پشته (Stack)، وقفهها (Interrupts) و دستورات پایهای اسمبلی اینتل (دوره شامل یک بخش تکمیلی بازآموزی اسمبلی نیز میباشد).
سیستمعامل لینوکس (توزیع اوبونتو – Ubuntu): دسترسی به یک سیستم لینوکسی یا ماشین مجازی لینوکس جهت نصب ابزارهای بیلد نظیر GCC، NASM، ابزارهای کامپایل متقاطع (Cross-Compiler) و شبیهساز QEMU/Bochs.
اشتیاق عمیق به مهندسی سطح پایین (Low-Level Systems Engineering): صبر و دقت بالا برای دیباگ کردن کرنل در سطح بایتها، ثباتهای پردازنده و کدهای ماشین بدون دسترسی به کتابخانههای استاندارد (No stdlib).
توضیحات:
چرا ساخت سیستمعامل از صفر، درک برنامهنویسان را از دنیای کامپیوتر برای همیشه دگرگون میکند؟
اکثر مهندسان نرمافزار سیستمعامل را یک جعبه سیاه جادویی میدانند؛ سیستمی که به شکلی نامعلوم کدهای کاربر را ایزوله میکند، حافظه رم را میان برنامهها تقسیم مینماید، فایلها را از دیسک میخواند و همزمان دهها برنامه را اجرا میکند. اما هنگامی که خودتان کدهای بوتلودر را درون سکتور ۵۱۲ بایتی MBR مینویسید و به پردازنده دستور میدهید به Protected Mode سوییچ کند، این جعبه سیاه کنار میرود و کنترل کامل سختافزار در دستان شما قرار میگیرد.
این دوره استثنایی و بینظیر توسط یک مهندس ارشد نرمافزار با بیش از ۱۵ سال سابقه و توسعهدهنده رسمی ماژولهای کرنل لینوکس طراحی شده است. رویکرد دوره از سطح کامپیوتر خام (Bare Metal) آغاز میشود؛ جایی که هیچ بایوس پیشرفته، هیچ سیستم فایلی و حتی هیچ تابع پایهای چاپی وجود ندارد. شما ابتدا در Real Mode معماری تاریخی پردازندههای ۸۰۸۶ اینتل، سیستم وقفهها و سکتورهای هارددیسک را فرا میگیرید و بوتلودر اختصاصی خود را در زبان اسمبلی مینویسید. سپس با فعالسازی جدول سراسری توصیفگرها (GDT) وارد دنیای ۳۲ بیتی Protected Mode میشوید. در این بخش، سیستم مدیریت حافظه مجازی دو لایهای (Page Directory و Page Tables) را برای ایجاد ایزولاسیون کامل آدرسهای پردازهها طراحی میکنید، درایور کیبورد و کنترلر وقفه برنامهپذیر (PIC) را مینویسید، یک سیستم فایل اختصاصی FAT16 را از صفر پیادهسازی مینمایید و با توسعه پارسر و لودر فایلهای اجرایی ELF و یک Shell تعاملی، سیستمعامل چندوظیفگی (Multitasking) خود را به نمایش میگذارید.
سرفصلهای تخصصی و مهارتهای کسبشده در آموزش ساخت سیستم عامل از صفر
توسعه در حالت واقعی (Real Mode) و خلق بوتلودر اختصاصی:
درک چرخه حیات بوت سیستم از فشردن دکمه پاور، اجرای کد بایوس (BIOS POST) تا خواندن سکتور اول دیسک در آدرس
0x7C00.نگارش بوتلودر ۵۱۲ بایتی با زبان اسمبلی محض و تست آن روی ماشینهای واقعی و شبیهساز QEMU.
خواندن سکتورها از هارددیسک با استفاده از وقفه
INT 13hبایوس و چاپ کاراکترها روی نمایشگر متنی با وقفهINT 10h.مدیریت وقفهها در حالت Real Mode و جدول بردار وقفه (IVT).
مهاجرت به حالت حفاظتشده (Protected Mode) و معماری امنیت x86:
تنظیم و فعالسازی خط آدرس A20 برای دسترسی به حافظه فراتر از ۱ مگابایت.
ساختاردهی جدول توصیفگر سراسری (Global Descriptor Table – GDT) برای تفکیک سگمنتهای کد و داده هسته و کاربر.
سوئیچ موفق به Protected Mode و بارگذاری کدهای ۳۲ بیتی کرنل در حافظه به زبان C.
پیکربندی جدول توصیفگر وقفه (Interrupt Descriptor Table – IDT) و بازنگاشت کنترلر وقفه ۸۲۵۹ PIC.
حافظه مجازی، پیجینگ و مدیریت پویای هیپ (Paging & Heap Management):
فعالسازی سیستم صفحهبندی سختافزاری پردازنده اینتل و نگاشت آدرسهای مجازی به آدرسهای فیزیکی.
ایجاد توهم فضای حافظه یکپارچه برای پردازهها (Memory Virtualization) مشابه سازوکار Swap و Fork در لینوکس.
پیادهسازی هسته مدیریت حافظه پویا و کدنویسی توابع استاندارد
mallocوfreeاز صفر جهت ردیابی بلوکهای مصرفی رم.
طراحی لایه انتزاعی سیستم فایل مجازی (VFS) و درایور FAT16:
معماری لایه انتزاعی سیستمعامل (مشابه معماری ماژولار کرنل لینوکس) جهت جداسازی درایورهای سختافزاری از توابع سیستمی.
درک ساختار دیسک در سیستم فایل FAT16: سکتور بوت، جداول تخصیص فایل (FAT Tables)، دایرکتوری ریشه و کلاسترها.
کدنویسی کامل درایور فایل سیستم FAT16 برای ایجاد، خواندن، نوشتن و پیمایش فایلها و پوشهها روی دیسک سخت.
چندوظیفگی (Multitasking)، بارگذار فایلهای ELF و پوسته سیستمعامل (Shell):
ذخیره و بازیابی وضعیت ثباتهای پردازنده (Context Switching) برای چرخش تسکها در بازههای زمانی تایمر PIT.
تفکیک تسکهای کرنل و فرآیندهای فضای کاربر (User Mode و محافظت Ring 3).
کدنویسی درایور ورودی کیبورد (PS/2 Keyboard Driver) و خواندن اسکنکدها.
ساخت پارسر و بارگذار کامل فایلهای باینری ELF (Executable and Linkable Format) جهت اجرای برنامههای مستقل کامپایلشده روی سیستمعامل.
توسعه یک شل متنی تعاملی (Command-Line Shell) برای اجرای دستورات، مدیریت فایلها و اجرای فرآیندها.
چرا باید در این دوره شرکت کنید؟
آموزش توسط توسعهدهنده باسابقه ماژولهای لینوکس: انتقال نکات ظریف و شیوههای معماری استاندارد صنعتی که در هیچ کتاب دانشگاهی تئوریک پیدا نمیشود.
پوشش صفر تا صد بدون استفاده از هیچ فریمورک آماده: تجربه هیجانانگیز ساخت تکتک اجزای سیستمعامل از بایت اول بوتلودر تا پوسته تعاملی نهایی.
درک عمیق از زیرساختهای امنیت، حافظه و سیستمعاملها: تبدیل شدن به مهندسی که معماری کامپیوتر، امنیت سطح پایین، اکسپلویتهای کرنل و باگهای حافظه را مانند کف دست میشناسد.
پروژه پورتفولیوی استثنایی و کمنظیر: دارا بودن یک سیستمعامل ۳۲ بیتی مالتیتسکینگ کامل روی گیتهاب که شما را در هر مصاحبه فنی مهندسی سیستم، امبدد و امنیت متمایز میکند.
دوره آموزش ساخت سیستم عامل از صفر برای چه کسانی مناسب است؟
برنامهنویسان زبان C و توسعهدهندگان سیستم: کسانی که میخواهند از کدهای معمولی لایههای بالا فاصله گرفته و کنترل مستقیم سختافزار را تجربه کنند.
علاقهمندان به مهندسی معکوس، امنیت و تست نفوذ هسته (Kernel Exploitation): متخصصانی که برای کشف آسیبپذیریهای ریشهای نیازمند درک ساختار پیجینگ، GDT، IDT و فایلهای ELF هستند.
دانشجویان مهندسی کامپیوتر و علوم کامپیوتر: داوطلبانی که میخواهند درسهای خشک تئوری سیستمعامل و ریزپردازنده را در یک پروژه واقعی و ملموس پیادهسازی کنند.
مهندسان سیستمهای تعبیهشده (Embedded Systems) و فرمور: کارشناسانی که به دنبال تسلط بر راهاندازی بوردها، نوشتن درایورهای سختافزاری و سیستمهای چندوظیفگی بلادرنگ هستند.








یودمی ایران –
دوره درخواستی خود را از راه های ارتباطی درخواست کنید