# برنامه نویسی سطح پایین > توسعه‌ی هسته‌ی سیستم عامل > سوال: چگونگي ساخت يك سيستم عامل

## sinashahab

سلام
شايد احمقانه باشه :
من مي خواهم بدونم چگونه ميشه يك سيستم عامل مانند لينوكس ساخت ؟
بايد چه چيز هايي رو ياد بگيريم ؟
اگه چند تا pdf در مورد اموزش ساخت سيستم عامل بزاريد ممنون ميشم .

----------


## araelectronic@ymail.com

با سلام
دوست عزيز يه سري به كتابهاي سيستم عامل بزنيد تا اطلاعات كلي در مورد نحوه كار سيستم عاملها بدست بياريد

----------


## sinashahab

ميشه چند تا از بهتررينش رو بزاريد ؟
ممنون ميشم.

----------


## thelastphoenix

سلام دوست عزیز

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

 درباره نرم افزار های مستقل از سیستم عامل که برای اجرا به سیستم عامل سرپا نیاز ندارن

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

اگه بازم چیزی برات گنگ بود حتما بپرس..

موفق باشید

----------


## araelectronic@ymail.com

سيستم عامل : استالينگ
سيستم عامل : دكتر حقيقت
سيستم عامل : تننباوم

----------


## sinashahab

سلام
ميشه چند تا pdf از اطلاعات سيستم عامل و اموزش برنامه نويسي سطح پايين رو بزاره ؟

----------


## sinashahab

راستي من تونستم سيستم عامل رو به سه بخش تقيم كنم كه اگه حل بشه به پول مي رسيم .
1.ارتباط با سخت افزار
2.ساخت برنامه اي مانند وي بي
3.هسته ي اصلي سيستم برنامه ها را اجرا كنه

----------


## saeed410

دوست عزیز اگه میخای یه سیستم عامل بنویسی باید چیزای زیادی یاد داشته باشی ، در ضمن شما به تنهایی با نوشتن یه سیستم عامل نمی تونی به پول برسی، چون سیستم عاملهای زیادی وجود دارند که اولاً رایگانند و دوماً ساخته دست گروههایی هستند که بیشتر از 1000 نفر یا بیشتر با هم همکاری می کنن ، حالا شما چجوری میخایی با اینا رقابت کنی . 
اگه میخایی واقعاً کار کنی و میخای بدونی که لینوکس چجوری کار میکنه اول از همه کتاب تاننباوم رو بخون ، توی این کتاب نسخه ای از سیستم عامل مینیکس آموزش داده میشه. در واقع اگه بخاییم دقیق بررسی کنمی تاریخچه لینوکس به مینیکس میرسه ، اونجایی که لینوس ترووالدز دانشجوی 21 ساله علوم کامپیوتر هلسینکی فنلاند داشت رو مینیکس کار می کرد. البته اینم بگم که لینوس همه کارا رو خوش به تنهایی انجام نداد . مثلاً از gcc استفاده کرد منظورم general compiler c هست که توسط ریچارد استالمن یکی از دانشمندان MIT که بعدا از اونجا دکترای افتخاری گرفت.
شمام به تنهایی نمی تونی این کارو بکنی . ولی می تونی کدهای لینوکس، مینیکس و سیستم عامل های دیگه رو بگیری و مطالعه کنی و اونا رو تغییر بدی.

----------


## pswin.pooya

بیخیال این چیزا شو. کتاب تتباوم رو بخون بعد برو سراغ سایتهای زیر:

osdever.org
osdev.org

یادت باشه که اولین قدم نوشتن بوت سکتور هستش. پس اول از همه دنبال تاپیکهای مربوط به اون بگردش. و  بعد در مورد pmode و دست آخر برو سراغ مسائل زمانبندی و ...

اگر دانشجوی آزاد تبریز باشی و یا توی تبریز دانشجو باشی میتونی با تیم طراحی os  دانشگاه آزاد تبریز همکاری کنه. حداقل اونها یه قسمتهایی از راه رو رفتن و یه چیزهای بلندن ( از گروه کامپیوتر سراغشون رو بگیر)

----------


## Sundown

> اگه چند تا pdf در مورد اموزش ساخت سيستم عامل بزاريد ممنون ميشم .


بخشید ولی ...
ولی باید بگم با چند تا PDF امکان نداره بتونی سیستم عامل حتی Single Task یا حتی یه سیستم عامل که فقط خودت کاربرش باشی درست کنی
راستش نمیخوام نا امیدت کنم ولی واقعا  کار دشواری هست
ابزار هایی که برای ساخت یک سیستم عامل لازمه :

دانش بسیار بسیار بسیار زیاد در مورد ساختار ماشین
دانش بسیار گسترده و وسیع در مورد سخت افزار ها و پردازنده ها
دانش بسیار غنی و تسلط بسیار زیاد بر روی زبان های سطح میانی ( مانند C ) و زبان های سطح پایین ( Assembly )
داشتن وقت بسیار زیاد ( حداقل چند سال )
داشتن یک تیم تمام فوق حرفه ای
داشتن پول کافی برای حمایت مالی از تیم ( اصلا به نظر من بدون حمایت دولت این کار محاله )
ارتباط با کسانی که در این زمینه تجربه دارند


در ضمن این کار نیازمند دوراندیشی بسیار  قوی هست ( مثلا خود من وقتی نحوه کار سیستم عامل لینوکس را خوندم واقعا به شک افتادم که این سیستم عامل رو بشر نوشته باشه !!! جدی میگم خیلی عجیب هست مخصوصا نحوه مدیریت پردازنده توی لینوکس که از یک الگوریتم بسیار بسیار پیچیده استفاده شده که امکان نداره بشر بتونه چنین چیزی رو طرح کنه )
نگاه به اشخاصی مثل لینوس توروالدز یا ریچی نکن که توی سنین پایین سیستم عامل نوشتند. اونا نابغه هایی بودند که هر هزار سال یک بار ظهور میکنن

اما پیشنهاد من به شما دوست عزیز : 
کد سیستم عامل لینوکس یا Unix  رو گیر بیار و هرجا که ایده جدیدی داری تغییر بده

در ضمن اگر همچنان مصمم به ساخت یک سیستم عامل از صفر هستید و البته طرح جالبی در ذهن دارید که میتوانید در اختیار بقیه بگذارید یا قصد تشکیل یک تیم دارید بنده میتوانم به شما کمک کنم ( آخه من سرم درد میکنه برای این پروژه های سنگین )
در ضمن اگر بتونید یک سیستم عامل جدید از صفر درست کنید حتی اگر کسی ازش استفاده نکنه افتخاری بزرگ برای همه ی ما ایرانیان هست
موفق باشید

----------


## pswin.pooya

سلام
خیلی راحت میتونی یه سیستم عامل 16 بیتی تک برنامه ای مثل MS-DOS بنویسی برای اینکار فقط باید دانش ساخت سیستم بوت که pdfهاش پره . و نحوه کنترل دیسک که با وقفه های بایوس خیلی راحت انجام میشه و اطلاعاتی در مورد نحوه اجرای برنامه ها، نحوه ساخت وقفه ها و سیستم فایلها داشته باشی (من برای شروع کار fat 16 رو پیشنهاد می کنم). اما اگر بخوای یه سیستم عامل 32 و یا 64 بیتی بنویسی کار خیلی خیلی پچیده میشه. 
من کتاب راهنمای PC پیتر نورتون و کتاب اسمبلی سالخورده رو پیشنهاد میکنم. همینطور میتونی روی نت اطاعاتی در مورد نحوه کامپایل برنامه های سی و سی++ برای نوشتن سیستم عامل پیدا کنی که خیلی به دردت میخوره. عملا توی دانشگاه ما یه os 16 بیتی طراحی شده بود که به خاطر اینکه بیشتر شبیه یه برنامه بود تا os واقعی و چیز خاصی رو از نظر مفاهیم طراحی حمل نمی کرده خیلی سریع دور انداخته شد. یعنی حتی الان کدش هم نیست. به اون سایتهایی که گفتم هم سر بزن به دردت می خوره. قدیما یه سایت فارسی هم بودش که واقعا کارش خوب بود. حداقل تا این سطحی که شما میخوایین راهنمایی می کردش.

----------


## fazlnet

باسلام 
pswin جان حال شما؟
ببین دوست عزیز اگه واقعا میخوای سیستم عامل بنویسی به دو چیز نیاز داری:
1.شهامت
2.دانش
در مورد اولی باید خودت با خودت کنار بیای و متوجه بش که کی باید شروع به کد نویسی کنی و همه ما برای بار اول از این موضوع ترس داریم.
در مورد دومی یکدفه 200 pdf دانلود نکن که همه رو با هم بخونی و بعدش علی یارت.نه داداش اینتوری نیست. اولین قدم در این زمینه صبر و استقامته.برای شروع هر چی مقاله و به طور کلی مطلب در مورد ساختار سیستم(نه سیستم عامل) هست بخون.دلیلش اینه که من باید بدونم که آدرس چیه تا آدرس بدم.
مثل اینه که تو ماشین نشته باشی و میخوای رانندگی کن اما نمیدونی دنده کجاست و اصلا واسه چیه.
از حرفم ناراحت نشی.منم اینو میدونم که حداقل آشنایی با کامپیوتر رو داریم اما مرور باید کرد.
بعد از پایان این مرحله به صورت موازی برنامه نویسی اسمبلی و سی رو یاد بگیر و در کنار اینها روی بوت سکتور و اینتراپها کار کن.
اینم بگم یه شبه نمی تونیos 64 بیت درست کنی.
صبور و جسور باش.
راستی pswin شمارم رو برات میفرستم اگه تونستی یه زنگی بزن بینم چی کار میکنی ازت خبری نیست.

----------


## puacmparand

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

----------


## linux

> دوست عزیز اگه میخای یه سیستم عامل بنویسی باید چیزای زیادی یاد داشته باشی ، در ضمن شما به تنهایی با نوشتن یه سیستم عامل نمی تونی به پول برسی، چون سیستم عاملهای زیادی وجود دارند که اولاً رایگانند و دوماً ساخته دست گروههایی هستند که بیشتر از 1000 نفر یا بیشتر با هم همکاری می کنن ، حالا شما چجوری میخایی با اینا رقابت کنی . 
> اگه میخایی واقعاً کار کنی و میخای بدونی که لینوکس چجوری کار میکنه اول از همه کتاب تاننباوم رو بخون ، توی این کتاب نسخه ای از سیستم عامل مینیکس آموزش داده میشه. در واقع اگه بخاییم دقیق بررسی کنمی تاریخچه لینوکس به مینیکس میرسه ، اونجایی که لینوس ترووالدز دانشجوی 21 ساله علوم کامپیوتر هلسینکی فنلاند داشت رو مینیکس کار می کرد. البته اینم بگم که لینوس همه کارا رو خوش به تنهایی انجام نداد . مثلاً از gcc استفاده کرد منظورم general compiler c هست که توسط ریچارد استالمن یکی از دانشمندان MIT که بعدا از اونجا دکترای افتخاری گرفت.
> شمام به تنهایی نمی تونی این کارو بکنی . ولی می تونی کدهای لینوکس، مینیکس و سیستم عامل های دیگه رو بگیری و مطالعه کنی و اونا رو تغییر بدی.


gcc مخفف gnu c compiler هست.

----------


## مهدی حاجی

سلام 
خسته شدم 
کی می تونه الگوریتم  های مدیریت حافظه lru.optimalرو شبیه سازی کنه 
هر کی میتونه راهنماییم کنه ممنون میشم 
M_hajaghaei@yahoo.com

----------


## dannydolph

سلام دوستان.
من هم یه این بحث علاقه مند شدم.می خواستم بدونم جاوا هم در این زمینه میتونه با c رقابت کنه یا نه.
بهتر بگم: آیا جاوا هم برای نوشتن سیستم عمل میتونه کارایی داشته باشه؟

----------


## omid_safari

من متوجه نشدم چطور با نوشتن سييستم عامل ميخواي به پول برسي!
برفرض كه شما كلي وقت گذاشتي و هزينه كردي و سيستم عامل نوشتي. 
اونوقت تازه شروع كاره و برنامه نويسان بايد شروع كنند و براي سيستم عامل شما نرم افزار بسازند.و
اونهم نه يكي دوتا- روي كامپيوتر خودشما فقط الان حداقل 100 تا نرم افزار هست!
جالب اينجاست كه اين برنامه نويسان براي نوشتن نرم افزارهاشون به كمپايلر سيستم عامل شما نياز دارند كه اونهم يه كار بسيار عظيمي هست!
پس ... :چشمک:   :خیلی عصبانی:

----------


## omid_safari

اگه ميخواي به پول برسي بهتره يه بازي آنلاين بسازي(مثل من) 
اتفاقا من دست تنها هم هستم. :لبخند:

----------


## m..r..h

سلام بچه ها . شرمنده با فرقون وارد بحث می شم ، می خواستم بدونم میشه یه سیستم عامل یا چیزی شبیه به ان برای یک سیستم 8 بیتی طراحی نمود که حداقل بتونه با کارت های حافظه و ... ارتباط برقرار کنه ؟
ممنون .

----------


## pswin.pooya

چرا نشه؟ خیلی راحت میشه ساختش. یکسرس سیستم های عامل هستن که برای میکروهای خاص نوشته شده اند.

----------


## m..r..h

> چرا نشه؟ خیلی راحت میشه ساختش. یکسرس سیستم های عامل هستن که برای میکروهای خاص نوشته شده اند.


میشه چند تا از ان ها را معرفی کنید و یک توضیح مختصر هم در موردشون بدید ؟
خیلی ممنون

----------


## asm.coder

سیستم برنامه نویسی برای اینا یه مقدار ساده تره . البته بستگی داره که دستگاهی که قراره براش برنامه نویسی بشه چی باشه. یا نوع این پروسسورتون (chip8/schip8/z8 ???)
اکثر دستگاه های بازی قدیمی (gameboy,comodore,atari) هم از پروسسورهای ۸بیتی استفاده می کنند . معروفترین سیستم عامل هم برای comodore هست به نام geos

----------


## nsco_nsco

سلام به همه دوستان 
من کم پیام می زارم و بیشتر شاگردی می کنم اما می خوام امروز در مورد برنامه نویسی صحبت کنم مایک شعار داریم می گیمم مسائل را آسان بگیر تا اسان حل شود
خوب من چندین ساله که دارم روی زمینه های برنامه نویسی میکروه ها و کلا هوشمند سازی وسایل و برنامه نویسی کامپیوتر فعالیت می کنم و باید بگم که شما می توانید به راحتی با سیستم های ورود و خروج سیستم ارتباط بر قرار کنید در اصل می توانید زمانی که با ورودی و خروجی کامپیوتر ارتباط بر قرار کنید آن زمان می توانید تازه به سر شروع کردن برای سیستم عامل رفت البته نظر من اینه که باید به جای ساخت یک سیستم عامل قدر مثل ویندوز و لینوکس باید یک هسته ساخت و یک برنامه ای که با بوت بالا بیاد و بعد از خواندن اون برنامه شروع به فعالیت کنه این طور خیلی ساده تر میشه که با کامپیوتر ارتباط بر قرار کرد در ضمن برای اون دوستمون که 8 بیت می خواست باید بگم که می تونه با مطالعه خوروجی و ورودی ها شروع کنه العان سیستم های عاملی که ساخته شده بیشتر از اینکه بخواد راحتی بیاره اومده یک مشت مسائل را پیچیده کرده و مثلا برای برنامه نویسی باید حتما برنامه نویسی بلد باشید حال اگر سیستمی بشه درست کرد که بیاد و راحت روی خود یک سیستم برنامه نویسی داشته باشه به راحتی بتوان یک برنامه نویس مبتدی اقدام به برنامه نویسی کنه و البته شکل و ظاهر رو بتوان عوض بکنه اینده خوبی در انتظار این سیستم هست البته شاید بگید لینوکس به نظر خیلی ها سیستم عامل خوبی نیست البته باید یک راحی هم ساخت برای درایورهای سیستم که بشه ازشون استفاده کرد ببخشید اگر پر حرفی کردم. :لبخند گشاده!:

----------


## ehsan_1990

این هم یه لینک درباره ساخت سیستم عامل
http://www.codeproject.com/KB/cs/CosmosMS5.aspx
امیدوارم مفید باشه

----------


## m.j_banitaba

سلام .
من یک سری کد در مورد سیستم عامل نوشتم.
یه سری به وبلاگ من بزنید نظر بدید!
http://oscreator.blogfa.com/

----------

