طراحی هسته یک سیستم عامل ساده با C++
سلام
من یه سیستم عامل با اسمبلی نوشتم، ینی یه کرنل و یک لودر. که لودر میاد کرنل رو لود می کنه اگه بخوام ریزتر بگم اینجوریه که یک لودر نوشتم با ساختار فایل کام یعنی از همون خط اولش اجرایی هست تا cpu برای اجراش مشکلی نداشته باشه البته خود لودر یک فایل باینری ولی ساختار کام رو داره. و کرنلم هم یک فایل باینری هست که ساختار کام رو داره. این سیستم عامل سادم الان مشکلی نداره.
ولی اگه بخوام کرنل رو با C++ بنویسم باید چیکار کنم؟ من تا حالا فقط از وقفه های Bios استفاده می کردم و اگه بخوام از C++ استفاده کنم باید از تابع های داس استفاده کنم ولی الان که داسی وجود نداره و فقط می تونم از وقفه های Bios استفاده کنم.
تا اونجایی که می دونم باید توابع داس رو لود کنم تو رم و ازشون استفاده کنم. حالا سوالی که هست اینه که چجوری توابع داس رو لود کنم با وفقه های Bios ؟ کجای رم لود کنم؟
حالا بعداز اینکه لود کردم چجوری اون فایل exe که با C++ ساختم رو اجرا کنم؟
اگه کسی راهنماییم کنه ممنون می شم
نقل قول: طراحی هسته یک سیستم عامل ساده با C++
سلام
قبل از هر چیز پیشنهاد می کنم سوئیچ کن روی لینوکس. چون اینکار اونجا هم استاندارد تر و هم راحتر هست.
برای استفاده از C++ باید به کامپایلر بگی که از کتابخونه های C run time استفاده نکنه. این شکلی حق نداری از هیچ کدوم از هدرهای معروف C مثل stdio.h . یا conio.h استفاده کنی. و باید همه رو خودت بنویسی. و باید فایل اسکریپت لینکر و نقطه ورود برنامه رو هم خودت بنویسی.
مورد بعدی اینه که پیشنهاد می کنم بجای C++ از C استفاده کنی. چون راه انداری C خیلی راحتر از C++ هست و با جزئیات کمتری درگیر میشی.
نقل قول: طراحی هسته یک سیستم عامل ساده با C++
سلام دوست عزیز ممنونم که جواب دادید.
یعنی هیچ راهی وجود نداره که از کتابخونه ها استفاده کنم؟ یعنی نمی شه این کتابخونه ها رو لود کرد تو رم و ازشون استفاده کرد؟
می خواستم اینجوری سرعت کارم بالا بره ولی اینجوری که شما گفتید از اسمبلی کندتر می شه که!
اگه بخوام اینا رو خودم بنویسم کارم خیلی سخت می شه. راهی به ذهنتون نمی رسه که بشه از کتابخونه های C استفاده کنم؟
راستی یه سوال دیگه با c که هسته رو طراحی کردم باید به exe تبدیل کنم یا مثل اسمبلی به bin ؟ یا اصلا میشه به com تبدیلش کرد؟
چون فایل exe هدر داره که چون cpu از خط اول شروع میکنه به اجرا کردن وقتی به هدر برسه براش مشکل پیش میاد.
نقل قول: طراحی هسته یک سیستم عامل ساده با C++
نقل قول:
می خواستم اینجوری سرعت کارم بالا بره ولی اینجوری که شما گفتید از اسمبلی کندتر می شه که!
سرعت کارت بعد از نوشتن کتابخونه ها تندتر میشه. اما تا یه نتیجه خالی بگیری یه مدت زیاد طول می کشه. من حدود یک سال طول کشید تا بتونم اولین نتایج رو بگیرم.
نقل قول:
اگه بخوام اینا رو خودم بنویسم کارم خیلی سخت می شه. راهی به ذهنتون نمی رسه که بشه از کتابخونه های C استفاده کنم؟
متاسفانه هیچ راهی وجود نداره به جزء اینکه از سورس بقیه کسایی که سیستم عامل می نویسن استفاده کنی و تازه اونم دردسرهای خودش رو داره که توی بیشتر موارد نمیشه.
نقل قول:
راستی یه سوال دیگه با c که هسته رو طراحی کردم باید به exe تبدیل کنم یا مثل اسمبلی به bin ؟ یا اصلا میشه به com تبدیلش کرد؟
مهم نیست که از چه فرمتی استفاده می کنید. این بوت لودر هست که باید بتونه اون فرمت رو پشتیبانی کنه.
نقل قول:
چون فایل exe هدر داره که چون cpu از خط اول شروع میکنه به اجرا کردن وقتی به هدر برسه براش مشکل پیش میاد.
این بوت لودر هست که باید هدر رو ترجمه کنه و بتونه فایل exe رو توی نقطه مشخص شده لود کنه که فایل اجرا شه. من خودم قبلا از فرمت exe استفاده می کردم. اما الان از قالب فایل elf استفاده می کنم که با بوت لودرم (grub) سازگار هست.
اگر میخوای سیستم عامل بنویسی یکی از اولین چیزهایی که باید بیخیالش بشی بوت لودر هست. بهتره از یه بوت لودر آماده استفاده کنی. وگرنه توی همون اول کار بایوس و الحاقی ها و استثناءها کارت رو یکسره می کنن.
نقل قول: طراحی هسته یک سیستم عامل ساده با C++
اقا من با سی بطور خیلی ساده کار های چاپ یک متن رو انجام دادم ؛ اما برای بقیه اش موندم !!!!!! از درست کردن لینکر که هیچ نمیدانم !! با بوت لودر هم call main می کنم و لی تو ld ارور می ده .
کسی یه نسخه اوپن سورس و کاملا ساده و استاندارد نداره بزاره ؟
ممنوش میشم.
نقل قول: طراحی هسته یک سیستم عامل ساده با C++
میتونی از سورس کد
MikeOS
استفاده کنی
ولی کامل نیستش و نمیتونی اونجور که باید رو سیستم عاملت کار کنی.
در ضمن همش با اسمبلی نوشته شده و یه خط با c ننوشتن
حتی همون libmikeos که 99%ش از اسمبلی استفاده کرده.
نقل قول: طراحی هسته یک سیستم عامل ساده با C++
ممنون دوست من ؛ ولی این اون چیزی نبود که من می خواستم ، من توی اسمبلی زیاد تخصصی ندارم .
از دوستان هیچکس پروژه سالم و سی نمیشناسه؟
نقل قول: طراحی هسته یک سیستم عامل ساده با C++
نقل قول: طراحی هسته یک سیستم عامل ساده با C++
سلام
میتونی از این استفاده کنی
http://kolibrios.org/en/
نقل قول: طراحی هسته یک سیستم عامل ساده با C++
نقل قول:
نوشته شده توسط
sadegh33
این هم کاملا اسمبلی هست.
نقل قول: طراحی هسته یک سیستم عامل ساده با C++
میتونی بری
osdev.org بعدش یه سری مطلب راجع بهش نوشته: یه منبع توپ
میتونی بخونی و طراحی کنی