انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: khajavi در 01 فروردین 1387، 08:13 بظ
-
راستش خیلی برام گیج کنندس و همیشه برام سوال بوده از استادامون هم می پرسم اما به نتیجه ی درستی نرسیدم
وقتی هسته ی لینوکس توی خود لینوکس کامپایل میشه اونوقت اولین هسته ی لینوکس چجوری کامپایل شده؟
بعضی وقتا هم از این سوالا توی ذهنم میاد: زبان سی را با چی نوشتن؟ جواب: با فلان خوب فلان را با چی نوشتن؟جواب: با بهمان سوال: خوب بهمان را با چی نوشتن؟ و ....
-
تا جایی که میدونم برای خیلی از زبانها، از تکنیکی به اسم boot strap استفاده میشه. یعنی اولش یه چیزی با زبانی غیر از زبان اصلی مثلا زبان ماشین یه کد پایه نوشته میشه و بعدش با کمک این کد پایه باقیش نوشته میشه.
اما در مورد لینوکس تا جایی که میدونم یه زبان سی نوشته شد. یه هسته. که قابل بوت شدن رو داره. بعدش که بوت میشه، امکان اجرای کامپایلر سی رو داره و بعدش باقی کار میتونه توی مجیط لینوکس انجام بشه.
-
ببین حتما لازم نیست که ما هسته یک سیستم عامل رو تو خود اون سیستم عامل کامپایل کنیم نمونش ویندوز که ما اون بصورت باینری می خریم و نصب می کنیم و خبری هم از سورس نیست اگه می بینید که هسته لینوکس رو میشه تو خود لینوکس کامپایل کرد این بخاطر راحتی کاربران و توسعه دهندگان این سیستم عامله نه یک ضرورت من خودم برای این که بتونم مباحث سیستم های عامل رو درست متوجه بشم برای خودم یک لودر یک هسته کوچک و همینطور یه کامپایلر کوچک نوشتم و روی کامپیوتر جدیدم کامپایل کردم و بعد روی کامپیوتر قدیمم نصب کردم و البته در این موقع بود که دیگه دستم برای ارتقاء سیستمم باز بود یعنی می تونستم توی خودش اون سیستم رو تکامل بدم اگه تاریخچه لینوکس رو هم بخونید می بینید که تراولتز هم در اولین قدم یک هسته نوشته و بعد Bash و gcc رو به اون پیوند زده و اون موقع تونسته که بگه سیستم عامل ساخته...
برای این که از لذت نوشتن یک سیستم عامل آگاه بشی و ابزار و اطلاعات مورد نیاز رو بدست بیار یه سری به این آدرس بزن:
http://www.osdever.net/
-
راستش خیلی برام گیج کنندس و همیشه برام سوال بوده از استادامون هم می پرسم اما به نتیجه ی درستی نرسیدم
وقتی هسته ی لینوکس توی خود لینوکس کامپایل میشه اونوقت اولین هسته ی لینوکس چجوری کامپایل شده؟
بعضی وقتا هم از این سوالا توی ذهنم میاد: زبان سی را با چی نوشتن؟ جواب: با فلان خوب فلان را با چی نوشتن؟جواب: با بهمان سوال: خوب بهمان را با چی نوشتن؟ و ....
درود
سال نو مبارک - سال خوبی داشته باشید
هر میکرو ( یا پروسسرور) یک سری دستور العمل داره ( که به صورت سخت افزاری دیکد می شه و اجرا میشه)
با اون دستور العمل ها می شه برنامه نوشت => پس با اونا میشه یه کامپایلر نوشت که یه زبان سطح بالا تر رو به دستورات اون میکرو پروسسور یا پروسسور تبدیل کنه (مثل اسمبلی)
با این زبان سطح پایین ( با اینکه از اون اولی سطح بالا تره ) می شه زبان های سطح بالا تری مثل سی ایجاد کرد ( تا این مرحله این کامپایلر و برنامه ها نیازی به os ندارند چون کاربرد محدود و خاصی دارند)
با این زبان ها میشه یک سیستم عامل برای اون معماری سخت افزاری ایجاد کرد
و بعد میشه این زبان ها رو بر اساس این سیستم عامل ها گسترش داد و همین کامپایلر هایی که وابسته به سیستم عامل خاصی هست رو ایجاد کرد
و اون سیستم عامل رو باهاش گسترش داد
ویرایش:
البته همونطور که دوستان گفتن عمل کامپایل حتماُ لازم نیست رو اون سخت افزار یا سیستم عامل باشه
فقط کافیه کدی رو که نوشتید به دستورالعمل های قابل اجرا برای اون میکروپروسسور یا پروسسور تبدیل بشن و اونوقت فقط کافیه این کد وارد حافظه بشه و execute بشه :)
موفق و شاد باشید
-
از راهنماییهاتون ممنون
راستی gcc رامیشه بدون سیستم عامل اجرا کرد؟
دیروز یه چیزایی در مورد boot straping می خوندم حالا یه سوال دارم: بایوس کامپیوتر برنامه ای را که نوشتم را چجوری می تونه بالا بیاره؟ برنامه ای که می نویسم باید فایل اجرایی یا باینری باشه؟
-
تا جایی که می دونم بایوس بعد از انجام چکهای اولیه، یه خانه خاص از دیسک رو لود می کنه. جایی که بوت لودر هست. کارش اجرای دستوراته. برای این براش مهم نیتس که چی داره اجرا میشه: چه سیستم عامل باشه یا یه برنامه دیگه.
ما برای این از سیستم عامل استفاده می کنیم که کار با سخت افزار رو ساده کنه. اگه شما یه برنامه عادی هم بذارید، حتما اجرا میشه.
-
از راهنماییهاتون ممنون
راستی gcc رامیشه بدون سیستم عامل اجرا کرد؟
دیروز یه چیزایی در مورد boot straping می خوندم حالا یه سوال دارم: بایوس کامپیوتر برنامه ای را که نوشتم را چجوری می تونه بالا بیاره؟ برنامه ای که می نویسم باید فایل اجرایی یا باینری باشه؟
fاید فایل باینری باشه که شامل دستورالعمل های اون پردازنده هست
و همونطور که دوستمون گفتند می تونید بدون سیستم عامل هم این کار رو بکنید
بایوس خودش یه برنامه هست برای یک مماری خاص ( پروسسور و چیپست و........) که آدرس شروع حافظه اش از صفر شروع می شه و مزیتی که نسبت به رم داره اینه که با قطع برق و خاموش شدن حافظه اش رو از دست نمی ده و همچنین با راه اندازی سیستم اول برنامه ی موجود در اون اجرامیشه
این بایوس شامل دستورالعمل های خاص و توابعی هست که میشه ازش استفاده کرد
و وظیفه اصلیش آماده کردن سیستم برای راه اندازی سیستم هست و همونطور که دوستمون گفتند به خانه ای از حافظه رفته و اون رو لود می کنه ( که حالا ممکنه در رم باشه یا در دیسک سخت یا در لوازمجانبی مثل cd یا fdd)
و در اون آدرس می تونیم برنامه خودمون رو قرار بدیم یا روند لود یک سیستم عامل رو قرار بدیم و.....
برای اطلاعات بیشتر باید ریزپردازنده ( که خودش نیازمند معماری کامپیوتر هست) و سیستم عامل رو بخونی :)
-
سلام،
فکر کنم اون اوایل لینوکس رو روی یونیکس (Unix) کامپایل میکردن.