نکات مهم در توسعه سیستم عاملهای مستقل

بسیاری از توسعه دهندگان سیستم عاملهای مستقل کوچک (مثل MikeOS و …) از اصولی پیروی میکنند که دانستن آنها برای امثال ما ضرری که ندارد هیچ ، مفید نیز هست.

مثلا در مورد بوت لودر ، محیط توسعه و … نظریات مختلفی وجود دارد. در این پست قصد دارم تعدادی از این نظریات را که در طی مطالعاتم جمع آوری کرده ام را مطرح کنم و در آخر نتیجه مطلوبی از این مطالعات و تجربیات بگیرم ….

۱- محیط توسعه :

ممکن است زمانی که این پست را میخوانید روی سیستم عاملهای ویندوز یا مک باشید. همین اول کار بدانید که ویندوز با شدت بسیار و مک با شدت کمتر محیط های مناسبی -علی الخصوص برای توسعه سیستم عامل UNIX Like – نیستند. اگرچه ممکن است در مکینتاش به علت وجود ساختار POSIX به سادگی امکانات اولیه را فراهم کنید ولی ممکن است هنگام رسیدن به نقاط پیشرفته ، کارتان به کل مختل شود!

بنابراین بهترین محیط توسعه (Development Environment ) یک سیستم عامل شبه یونیکس متن باز است. از آنجا که لینوکس سهم خوب و بالایی در بازار دسکتاپ دارد و از آنجایی که متون فارسی خوبی در مورد توزیع های مختلف لینوکس موجود است ، مهاجرت به لینوکس کمی منطقی تر از سایر nix* های متن باز مثل BSD ها است. اگرچه سیستم عاملهای Amiga-Like  مثل AROS و BeOS-Like مثل Haiku میتوانند محیطهای خوبی باشند ولی اگر قصد دارید سیستم عاملتان استانداردهای پوزیکس را داشته باشد ، بهترین محیط محیط خود یونیکس (لینوکس ، BSD ، Plan 9  و …) است.

۲- بوت لودر :

اکثر افرادی که قصد توسعه سیستم عامل دارند ابتدا دوست دارند همه چیز را در زبان مورد علاقه شان بنویسند. تقریبا تمام اجزای اصلی سیستم عامل بسیار پیچیده و نیازمند درک بسیار بالایی از کامپیوتینگ هستند و به سادگی نمیتوان آنها را شبیه سازی کرد یا دوباره نوشت. مخصوصا بوت لودر که ممکن است با یک بار بوت شدن کل سیستم را دگرگون کند! از همین رو توصیه میشود که بوت لودر نیز یکی از انواع کامل موجود استفاده شود. معروف ترین بوت لودر در حال حاضر GRUB است که در اکثر توزیع های لینوکس و در برخی از BSD ها مشاهده میشود. همچنین بوت لودر LiLO نیز توصیه میشود . اگرچه کانفیگ کرده لیلو نسبت  به گراب بسیار سخت تر است و چیزی به نام «شناسایی خودکار» در لیلو معنایی ندارد.

۳- کرنل :

نوشتن کرنل کاری دشوار است. البته کرنلی که در مرحله اول بتواند یک پیغام Hello World چاپ کند خیر ، ولی کرنلی که بتواند همه قطعات را به درستی بشناسد و کم و کاستی نداشته باشد (مثل کرنل های داروین ، NT ، لینوکس ، BSD و …) بسیار پیچیده تر از ده-دوازده خط کد اسمبلی است. اما بازهم راه حل وجود دارد. میتوان از کرنلهای متن باز دیگر ایده گرفت یا همان ها را مستقیما دستخوش تغییر کرد! مثلا کدهای لینوکس یا مینیکس را به طور مستقیم در هسته سیستم عامل خود (البته با ذکر منبع) به کار ببریم تا بتوانیم سیستم عاملی بهینه و کارامد بسازیم.

۴- مستندات :

به مهم ترین بخش کار رسیدیم! مستندات بر چند نوع تقسیم میشوند که ما معمولا این دو نوع رو در اختیار داریم:

۱- مستندات چاپی

۲- مستندات تحت وب

هر دوی مستندات بسیار خوب هستند ولی اگر به تنها رونویسی کد از روی مستندات اکتفا کنیم در این کار موفق نخواهیم شد! باید درک درستی از این مستندات داشته باشیم تا بتوانیم آموزه های آن ها را به درستی و خوب پیاده سازی کنیم. فرض کنیم شما کل کد های MikeOS رو خوانده و حال سیستم عاملی مبتنی بر آن دست و پا کرده اید ، ولی به محض اینکه مستندات را از دست بدهید ، دیگر قادر به طراحی سیستم عامل نخواهید بود! در صورتی که شما باید ابتدا مستندات را به درستی بفهمید و آنقدر آموزه های مستندات مختلف رو با هم ترکیب کنید تا اگر روزی مستندات را در احتیار نداشتید ، بتوانید از روی ذهن خود الگو ها را در سیستم پیاده سازی کنید.

موفق باشید.

Share

منتشرشده توسط

محمدرضا حقیری

نیازی نمی بینم تا اینجا رو پر کنم، ترجیح میدم یه صفحه داشته باشم و کامل توضیح بدم داستان خودم رو :)

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *