قبل از شروع کردن به نوشتن پروژه، نیاز بود تا پیش نیاز هایی رو بلد باشیم، به همین دلیل به دنبال آموزش ها و موارد مورد نیاز برای توسعه سیستم عامل رفتیم. از بین همه موارد، وبسایت بسیار خوب OSDev هست که تمامی مطالب مورد نیاز برای نوشتن سیستم عامل به همراه آموزش های اونها رو دربر داره. بخش اعظمی از موارد مورد نیاز برای نوشتن سیستم عامل رو میتونید توی این وبسایت پیدا کنید.
پیشنیازها
موارد مورد نیاز توی وبسایت OSDev ذکر شدن اما من دوباره برخی از اونها رو اینجا میذارمشون:
- مباحث پایهای علم کامپیوتر: سیستم باینری، هگزدسیمال، جبر بولی، ساختان داده ها، الگوریتم های جستوجو و مرتب سازی، مباحث کلی برنامه نویسی و ..
- زبان و کلمات انگلیسی: توانایی خواندن متن تکنیکال انگلیسی و نوشتن اون. به این دلیل که تقریبا تمامی مطالب تخصصی ما به زبان انگلیسی هستند.
- زبان برنامه نویسی: بیشتر نمونه کدهای موجود برای قسمت های خاص سیستم عامل، به زبان C، CPP نوشته شدن، بنابراین نیازه تا این زبان ها رو یاد بگیرید و باهاشون راحت باشید. همچنین زبانی که ما باهاش سیستم عامل رو مینویسیم، Rust هست که در نهایت باید این زبان رو هم یاد بگیرید.
- اسمبلی: باید درباره زبان سطح پایین اسمبلی اطلاع داشته باشید. میتونید یک کتاب بخونید، یا دوره های درسی رو مشاهده کنید.
- تجربه کار با یونیکس: بزودی متوجه میشید که بیشتر ابزار های توسعه سیستم عامل، برای یونیکس تولید شدن ( لینوکس، مک، یا BSD ها و …) و کرنل لینوکس به عنوان یه نمونه مثال برای توسعه سیستم عامل استفاده میشه. بنابراین بهتره با یونیکس اشنا باشید، راحت ترینش لینوکس هست که میتونید به راحتی اموزش ها (مثلا LPIC1) و کتاب های کار با اون رو پیدا کنید.
- شبیه ساز ها و مجازی ساز ها: برای توسعه سیستم عامل، دونستن VirtualBox, QEMU و ابزار های مجازی ساز دیگه اهمیت زیادی دارند. با استفاده از این ابزار ها میتونید سیستم عامل مورد توسعه خودتون رو به راحتی در محیطی ایزوله تست کنید.
- و موارد دیگه که میتونید از سایت OSDev باهاشون اشنا بشید.
درضمن کتاب Operating Systems from 0 to 1 هم یک کتاب بسیار خوب هست که متاسفانه هنوز کامل نشده اما برای شروع کار بسیار خوب هست و اکثر نیازمندی های بالا رو توضیح میده، میتونید برای شروع از این کتاب هم استفاده کنید. (بخونید و کاملا این کتاب رو متوجه بشید.)