دهکده بزرگ برنامه نویسی

فصل اول - معرفی

می توان مبحث سیستم عامل ها را ، مبحث بسیار پیچیده ای دانست. و همچنین یادگیری کار سیستم عامل ها می تواند یک تجربه بسیار عالی باشد.

هدف این کتاب ، آموزش سحر توسعه سیستم عامل (OS) از ابتدا می باشد. اگر شما بخواهید سیستم عامل خودتان را بسازید یا به طور ساده بفهمید که آن ها چگونه کار می کنند ، می توانید این مقاله ها را دنبال کنید. پس با ما همراه باشید. (این سری مقاله های توسعه سیستم عامل ها در واقع ترجمه وبسایت http://www.brokenthorn.com می باشد.)

سیستم عامل چیست؟

فصل اول - معرفی

یک سیستم عامل (Operating System) عملکرد های دیدن و لمس کردن را برای یک کامپیوتر به ارمغان می آورد. هدف اولیه ، ساخت یک محیط عملکردی برای کاربر رایانه است. و حتما نمونه هایی از انواع سیستم عامل را می دانید. مانند : ویندوز ، لینوکس و مکینتاش.

اگر قبلا هرگز برنامه نویسی نکرده ای...

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

یک سیستم عامل ، تنها یک برنامه نیست بلکه مجموعه ای از نرم افزار هایی است که برای کار کردن باید با هم ارتباط داشته باشند. و به دلیل اینکه سیستم عامل ها ، مجموعه ای از نرم افزار ها هستند ، پس باید طراح آن بداند که چگونه یک نرم افزار طراحی و ساخته می شود. و این به معنی آن است که فرد یا گروه باید همگی برنامه نویس باشند!

الزامات (چیزهایی که باید بدانید)

دانش برنامه نویسی به زبان سی (C) :

استفاده از زبان های برنامه نویسی پیشرفته تر ( از اسمبلی) مانند سی ، می تواند توسعه سیستم عامل را خیلی آسان تر و ساده تر کند. متداول ترین زبان های برنامه نویسی که در توسعه سیستم عامل کاربرد دارند ، عبارتند از سی ، سی پلاس پلاس و پرل (perl) . اما ممکن است زبان های دیگری نیز در توسعه سیستم عامل به کار روند که می توان به زبان برنامه نویسی FreeBASIC اشاره کرد. اما باید بدانید که استفاده از زبان های سطح بالا ، می تواند در طولانی مدت ، باعث سخت تر شدن کار شود.

فصل اول - معرفی

اما در بین دو زبان متداول و قدرتمند c و c++ ، در طراحی سیستم عامل و کار با سخت افزار ، استفاده از زبان C متداول تر است. زبان C ، یک زبان سطح میانی است و از این جهت برای کار با سخت افزار کامپیوتر بسیار مناسب است و همچنین استفاده از این زبان در توسعه سیستم عامل ، بسیار آسان است. و می توان یکی دلایل استفاده متداول از این زبان در توسعه سیستم عامل را این دانست که زبان برنامه نویسی سی در اصل برای سطح سیستمی (ارتباط مستقیم با سخت افزار ها) طراحی شده است. و به همین علت ، ما نیز از همین زبان برای توسعه سیستم عامل استفاده خواهیم کرد.

پیشنهاد ما این است که اگر درباره زبان برنامه نویسی C و حتی زبان های اقتباس شده از آن مانند C++ , C#, Java چیزی نمی دانید ، حتما به سراغ یکی از این زبان ها بروید و ابتدا برنامه نویسی به زبان C را یاد بگیرید. اما اگر با گرامر این زبان آشنا هستید یا تجربه برنامه نویسی با زبان های خانواده C را دارید ، بهتر است به خواندن ادامه دهید.

دانش زبان برنامه نویسی اسمبلی x86:

زبان اسمبلی 80x86 (80x86 Assembly Language) یک زبان سطح پایین است. زبان اسمبلی یک رابطه یک به یک مستقیم با دستورالعمل های پردازنده ماشین ایجاد می کند که این امکان ، اسمبلی را به زبانی مناسب برای برنامه نویسی سخت افزار تبدیل می کند.

فصل اول - معرفی

اسمبلی ، به عنوان یک زبان سطح پایین ، توسعه نرم افزار را نسبت به زبان های سطح بالاتر مانند C ، بیشتر به پیچیدگی و سخت تر شدن گرایش می دهد. بنابراین ما نیز ، تنها در مواقع ضروری و الزامی از این زبان برای توسعه سیستم عامل استفاده می کنیم.(یادتان نرود که استفاده کردن از اسمبلی در توسعه و ساخت یک سیستم عامل ، امری ضروری است.)

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

- برنامه نویسی اسمبلی پردازنده 8086/88 / نویسنده: جواد راسطی

- کتاب هنر زبان اسمبلی 80x86 / نویسنده: راندال هاید

- آشنایی با زبان اسمبلی و معماری پردازنده 80X86 (اصول اساسی برنامه‌نویسی به زبان اسمبلی) / نویسنده: ریچارد دتمر

ابزار های کار (نرم افزار هایی که نیاز دارید)

NASM (نوعی اسمبلر):

Nasm (Netwide Assembler) یکی از معروف ترین اسمبلر ها است که به صورت رایگان نیز عرضه می شود. این اسمبلر می تواند برنامه های 16 بیتی باینری خالص تولید کند ، در حالی که بیشتر اسمبلر ها مانند توربو اسمبلر (TASM) و مایکروسافت ماکرو اسمبلر (MASM) نمی توانند.

در طول توسعه سیستم عامل ، بسیاری از برنامه ها باید فایل های باینری خالص باشند. به همین دلیل نیز nasm یک گزینه عالی برای این کار است.

شما می توانید این اسمبلر را از سایت رسمی آن به نشانی http://nasm.sourceforge.net/ دریافت کنید.

مایکروسافت ویژوال C++ 2005 یا 2008 یا حتی 2010 :

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

ما از مایکروسافت ویژوال C++ برای توسعه سیستم استفاده خواهیم کرد. اما می توان از دیگر کامپایلر ها نیز برای توسعه سیستم عامل نظیر DJGPP یا GCC استفاده کرد.

شما می توانید ویژوال C++ را از آدرس http://www.microsoft.com/express/download/ به صورت رایگان دریافت کنید.

کپی کردن بوت لودر (Boot Loader) :

بوت لودر یک برنامه باینری خالص است که در یک بخش 512 بایتی ذخیره شده است. این برنامه آنقدر مهم است که بدون آن ، ساختن یک سیستم عامل امکان پذیر نیست. در واقع این ، اولین برنامه ی سیستم عامل ما است که مستقیما توسط بایوس (BIOS) بارگذاری و نیز توسط پردازشگر اجرا می شود.

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

اما چرا نیاز به انجام همچین کاری داریم؟ چون بایوس سیستم پس از شناسایی یک دیسک یا فلش قابل بوت ، تنها به بخش مخصوص بوت سی دی یا فلش (bootsector) نگاه می کند ؛ بنابراین ما می توانیم تنها بر روی آن بازنویسی انجام دهیم.

راه های زیادی برای انجام دادن این بازنویسی وجود دارند که در اینجا تنها دو راه آن را می گوییم.

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

1-PartCopy (یک رونویس کننده یا کپی کننده دیسک سیستمی)

Partcopy ، کپی کردن بخش ها از یک درایو به دیگری را برای شما امکان پذیر می کند. نام این نرم افزار ، کوتاه شده عبارت Partial copy به معنای کپی جزئی یا ناقص است. عملکرد آن به این گونه است که از تعداد معینی از بخش ها (Sectors) در یک محل کپی می گیرد و در محل دیگری کپی آن ها را قرار می دهد. شما می توانید این نرم افزار را از آدرس اینجا به صورت رایگان دانلود کنید.

2-BooTICE

متاسفانه برنامه partcopy روی ویندوز های جدید قابل اجرا نیست! برنامه ای که می تواند همچین کاری را بکند ، BOOTICE هست که در قسمت Sector Edit میتوانید فلاپی تون رو بوت ایبل کنید و بوت لودر خودتان رو در بوت سکتور فلاپی بریزید! (ما از این نرم افزار در مراحل بعدی استفاده خواهیم کرد.)

برای دریافت این نرم افزار ، می توانید از این لینک استفاده کنید:

3-فرمان دیباگ ویندوز

ویندوز ، یک خط فرمان کوچک برای اشکال زدایی (DEBUG) فراهم کرده است که می توان از طریق خط فرمان ویندوز (command line) به آن دسترسی داشت. کارهای بسیار کمی می توان با این نرم افزار دیباگر انجام داد. اما همه آنچه که برای کپی کردن فایل بوت لودرمان به 512 بایت ابتدای دیسکمان نیاز داریم ، در آن موجود است. پس مطابق دستور العمل زیر عمل کنید:

نرم افزار خط فرمان ویندوز را اجرا کنید (می توانید در کادر جستجوی منو start بنویسید cmd و سپس نرم افزاری با نام command promptرا اجرا کنید.) و سپس تایپ کنید debug . و می توانید خودتان آن را ادامه دهید. البته ممکن است این روش نیاز به برخی تنظیمات داشته باشد که در این مجال نمی گنجد.

دیسک مجازی :

خوب همانطور که میدانید! برای شبیه سازی سیستم عامل و بوت کردن دیسک ، از فلاپی استفاده میشود! بنابراین ما هم باید از فلاپی استفاده کنیم ولی چون ویندوز های جدید از نرم افزار های قدیمی مثل VFD پشتیبانی نمی کنند ؛ نرم افزاری که توی ویندوز های جدید از جمله ویندوز 10 کار کند را پیدا کردیم. اسم این نرم افزار ، Imdisk Virtual Disk Driver هست! خیلی راحت می توانید از آن استفاده کنید!

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

شبیه ساز رایانه و دیباگر:

فصل اول - معرفی

هنگامی که شما سیستم عامل خود را ساختید و آن را بر روی یک سی دی یا فلش ریختید. آنگاه باید کامپیوتر خود را خاموش کنید و سپس سی دی یا فلش خود را به کامپیوتر متصل کنید و بعد کامپیوتیم. البته شبیه ساز های دیگری نیز هستند که می توان به Oracle VM VirtualBox اشاره کرد که نرم افزاری رایگان است.(ولی این نرم افزار ، بیشتر برای اجرا کردن سیستم عامل های آماده بکار می رود و برای آزمایش سیستم عامل توصیه نمی شود.)

شما می توانید نرم افزار Bochs را از طریق آدرس http://bochs.sourceforge.net دانلود کنید.

و همچنین برای دانلود نرم افزار QEMU manager می توانید از آدرس http://fa.softoware.net/apps/get-qemu-manager-for-windows.html استفاده کنید.

در آخر

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

اگر واقعا قصد ساخت یک سیستم عامل را دارید باید به چند نکته خوب توجه کنید:

1- انگیزه خودتان را از ساخت سیستم عامل مشخص کنید. (تا بعدا وقتی درگیر مسائل پیچیده می شود ، همه چیز را رها نکنید.)

2- حتما حتما یک گروه متخصص تشکیل دهید. (تک نفری هیچ کاری نمی توانید بکنید و فقط انرژی خودتان را هدر می دهید.)

3- تمام منابع برای ساخت و توسعه سیستم عامل انگلیسی است. (پس باید بتوانید مقاله های انگلیسی را به خوبی ترجمه و تحلیل کنید.)

4- ساخت یک سیستم عامل مانند ویندوز 10 برای خود مایکروسافت حدود 30 سال زمان برد. حتی اگر هم بخواهیم خیلی خوب و دست بالا حساب کنیم ؛ شما با داشتن یک گروه مجرب و متخصص حداقل باید 10 سالی را زمان صرف کنید.

قصد نا امیدی تان را نداشتم فقط می خواستم بفهمید از همین اول با ساخت یک وبلاگ روبرو نیستید. باساخت یک سیستم عامل روبرو هستید!

کلید واژه ها :osdev
نوشته شده توسط : amindelavar  |  ارسال شده در تاریخ : 2017/03/27-15:24   |  تعداد بازدید کنندگان :21814
ارسال نظر شما  (شما ابتدا باید در سایت ثبت نام کنید تا بتوانید نظر دهید.)

آیا این مقاله برای شما مفید بود؟    بله    خیر

اگر وقت بیشتری داری ، می تونی نظرت رو به طور کامل تری در زیر توضیح دهی :

جعبه جستجو
مقاله های اخیر
مقاله های پر بیننده
آمار سایت

 تعداد تمامی مقالات موجود : 16

 تعداد اعضای سایت : 3

 آخرین بروز رسانی سایت : 6 ماه پیش

 بازدید کنندگان امروز (آی پی یکتا) : 8

 بازدید کنندگان دیروز (آی پی یکتا) : 7

 بازدید کنندگان کل (آی پی یکتا) : 3686