# برنامه نویسی سطح پایین > توسعه‌ی هسته‌ی سیستم عامل >  طراحی هسته یک سیستم عامل ساده با C++‎

## Mehdi Zarepour

سلام 
من یه سیستم عامل با اسمبلی نوشتم، ینی یه کرنل و یک لودر. که لودر میاد کرنل رو لود می کنه اگه بخوام ریزتر بگم اینجوریه که یک لودر نوشتم با ساختار فایل کام یعنی از همون خط اولش اجرایی هست تا cpu برای اجراش مشکلی نداشته باشه البته خود لودر یک فایل باینری ولی ساختار کام رو داره. و کرنلم هم یک فایل باینری هست که ساختار کام رو داره. این سیستم عامل سادم الان مشکلی نداره.
ولی اگه بخوام کرنل رو با C++‎ بنویسم باید چیکار کنم؟ من تا حالا فقط از وقفه های Bios استفاده می کردم و اگه بخوام از C++‎ استفاده کنم باید از تابع های داس استفاده کنم ولی الان که داسی وجود نداره و فقط می تونم از وقفه های Bios استفاده کنم.
تا اونجایی که می دونم باید توابع داس رو لود کنم تو رم و ازشون استفاده کنم. حالا سوالی که هست اینه که چجوری توابع داس رو لود کنم با وفقه های Bios ؟ کجای رم لود کنم؟
حالا بعداز اینکه لود کردم چجوری اون فایل exe که با C++‎  ساختم رو اجرا کنم؟
اگه کسی راهنماییم کنه ممنون می شم

----------


## pswin.pooya

سلام

قبل از هر چیز پیشنهاد می کنم سوئیچ کن روی لینوکس. چون اینکار اونجا هم استاندارد تر و هم راحتر هست.

برای استفاده از C++‎ باید به کامپایلر بگی که از کتابخونه های C run time استفاده نکنه. این شکلی حق نداری از هیچ کدوم از هدرهای معروف C مثل stdio.h . یا conio.h استفاده کنی.  و باید همه رو خودت بنویسی. و باید فایل اسکریپت لینکر و نقطه ورود برنامه رو هم خودت بنویسی.

مورد بعدی اینه که پیشنهاد می کنم بجای C++‎ از C استفاده کنی. چون راه انداری C خیلی راحتر از C++‎ هست و با جزئیات کمتری درگیر میشی.

----------


## Mehdi Zarepour

سلام دوست عزیز ممنونم که جواب دادید.
یعنی هیچ راهی وجود نداره که از کتابخونه ها استفاده کنم؟ یعنی نمی شه این کتابخونه ها رو لود کرد تو رم و ازشون استفاده کرد؟
می خواستم اینجوری سرعت کارم بالا بره ولی اینجوری که شما گفتید از اسمبلی کندتر می شه که!
اگه بخوام اینا رو خودم بنویسم کارم خیلی سخت می شه. راهی به ذهنتون نمی رسه که بشه از کتابخونه های C استفاده کنم؟
راستی یه سوال دیگه با c  که هسته رو طراحی کردم باید به exe تبدیل کنم یا مثل اسمبلی به bin ؟ یا اصلا میشه به com تبدیلش کرد؟
چون فایل exe هدر داره که چون cpu از خط اول شروع میکنه به اجرا کردن وقتی به هدر برسه براش مشکل پیش میاد.

----------


## pswin.pooya

> می خواستم اینجوری سرعت کارم بالا بره ولی اینجوری که شما گفتید از اسمبلی کندتر می شه که!


سرعت کارت بعد از نوشتن کتابخونه ها تندتر میشه. اما تا یه نتیجه خالی بگیری یه مدت زیاد طول می کشه. من حدود یک سال طول کشید تا بتونم اولین نتایج رو بگیرم.




> اگه بخوام اینا رو خودم بنویسم کارم خیلی سخت می شه. راهی به ذهنتون نمی رسه که بشه از کتابخونه های C استفاده کنم؟


متاسفانه هیچ راهی وجود نداره به جزء اینکه از سورس بقیه کسایی که سیستم عامل می نویسن استفاده کنی و تازه اونم دردسرهای خودش رو داره که توی بیشتر موارد نمیشه.




> راستی یه سوال دیگه با c  که هسته رو طراحی کردم باید به exe تبدیل کنم یا مثل اسمبلی به bin ؟ یا اصلا میشه به com تبدیلش کرد؟


مهم نیست که از چه فرمتی استفاده می کنید. این بوت لودر هست که باید بتونه اون فرمت رو پشتیبانی کنه. 



> چون فایل exe هدر داره که چون cpu از خط اول شروع میکنه به اجرا کردن وقتی به هدر برسه براش مشکل پیش میاد.


این بوت لودر هست که باید هدر رو ترجمه کنه و بتونه فایل exe رو توی نقطه مشخص شده لود کنه که فایل اجرا شه. من خودم قبلا از فرمت exe استفاده می کردم. اما الان از قالب فایل elf استفاده می کنم که با بوت لودرم (grub) سازگار هست.

اگر میخوای سیستم عامل بنویسی یکی از اولین چیزهایی که باید بیخیالش بشی بوت لودر هست. بهتره از یه بوت لودر آماده استفاده کنی. وگرنه توی همون اول کار بایوس و الحاقی ها و استثناءها کارت رو یکسره می کنن.

----------


## ehsan7007

اقا من با سی بطور خیلی ساده کار های چاپ یک متن رو انجام دادم ؛ اما برای بقیه اش موندم !!!!!!  از درست کردن لینکر که هیچ نمیدانم !!  با بوت لودر هم call main می کنم و لی  تو ld ارور می ده .

کسی یه نسخه اوپن سورس و کاملا ساده و استاندارد نداره  بزاره ؟

ممنوش میشم.

----------


## brightening-eyes

میتونی از سورس کد
MikeOS
استفاده کنی
ولی کامل نیستش و نمیتونی اونجور که باید رو سیستم عاملت کار کنی.
در ضمن همش با اسمبلی نوشته شده و یه خط با c ننوشتن
حتی همون libmikeos که 99%ش از اسمبلی استفاده کرده.

----------


## ehsan7007

ممنون دوست من ؛ ولی این اون چیزی نبود که من می خواستم ، من توی اسمبلی زیاد تخصصی ندارم .
از دوستان هیچکس پروژه سالم و سی نمیشناسه؟

----------


## m.j_banitaba

http://www.brokenthorn.com/Resources/OSDevIndex.html

----------


## sadegh33

سلام 
میتونی  از این استفاده کنی 
http://kolibrios.org/en/

----------


## prpe26

> سلام 
> میتونی  از این استفاده کنی 
> http://kolibrios.org/en/


این هم کاملا اسمبلی هست.

----------


## brightening-eyes

میتونی بری
osdev.org بعدش یه سری مطلب راجع بهش نوشته: یه منبع توپ
میتونی بخونی و طراحی کنی

----------

