PDA

View Full Version : گفتگو: بررسی روش ساخت سیستم عامل



prpe26
یک شنبه 05 شهریور 1391, 00:23 صبح
با سلام.

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

ابتدا چندین روش مطرح میکنم و بعد منتظر نظرات شما هستم :لبخندساده:

1- ساخت توزیع:
یکی از روشهای خوب ، و البته مناسب برای سازندگانی که میخوان نتیجه سریعی از کارشون بگیرن، ساخت توزیعی از لینوکس ، BSD یا سولاریس (و سیستم هایی که بصورت مشابه توزیع میشن) هست. این روش خوبی های بسیاری داره ولی از لحاظ مجوز و مباحث حقوقی میتونه من و شمای سازنده رو محدود کنه. (مثل مجوز GPL که امکان بستن کد رو نمیده).

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

3- استفاده از سیستم عامل از پیش ساخته شده و نوشتن کرنل:
از عنوان مشخصه دیگه :لبخند:
یعنی مثلا گنو رو انتخاب کنید و روی اون ، یک کرنل اختصاصی بنویسید (کاری که لینوس تروالدز 20 سال پیش انجام داد البته روی مینیکس ولی بعدها به گنو منتقل شد :لبخندساده:)

4- نوشتن همه چیز از صفر.

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

pswin.pooya
یک شنبه 05 شهریور 1391, 14:27 عصر
1- ساخت توزیع:
يك توزيه به هيچ عنوان يه سيستم عامل جديد محسوب نميشه. فقط يه پكيج جديد نرم افزاري لينوكس هست.


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


3- استفاده از سیستم عامل از پیش ساخته شده و نوشتن کرنل:
مورد اول اينه كه گنو سيستم عامل نيست و فقط يكسري ابزار بوده. حتي همون طور كه خود تروالدز هم اعتقاد داره اسم GNU Linux اشتباه هست. و اگر تروالدز از گنو استفاده نمي كرد. امروزه گنو هيچ مفهوم خاصي رو تداعي نمي كرد. (شايد در حد لايسنسش مي موند). همنطور كه اصلا داخل اندرويد مفوم خاصي رو تداعي نميكنه.

در مورد لينوكس و MacOS هم بايد بگم اونها به خانواده يونيكس نسبت داده ميشه چون ايده از اونجا نشات گرفته. ولي چون هسته از صفر نوشته شده بهشون سيستم عامل جديد گفته ميشه.


در اصل از نظر تئوريك و علمي سيستم عامل تنها به هسته محدود ميشه و تمام پكيجهاي نرم افزاري مثل شل ( بش و اكسپلورر)‌ و يا نرم افزارهاي كناري ( مثل فرامين cp و mv و يا ... ) جزئي اصلي از اون حساب نميشن. اين مورد در مود كتابخونه ها هم مثل (x11 و ... ) هم سازگار هست.

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

prpe26
یک شنبه 05 شهریور 1391, 21:11 عصر
نه دیگه شما در وبگاه گنو که برید نوشته شده GNU Operating System ، و بعد از اینکه روی اون کلیک کنید ، به لیستی از توزیع های لینوکس مورد تایید گنو میرسید.

حتی در صفحه اصلی وبگاه گنو هم گفته شده :)

pswin.pooya
دوشنبه 06 شهریور 1391, 10:49 صبح
نه دیگه شما در وبگاه گنو که برید نوشته شده GNU Operating System ، و بعد از اینکه روی اون کلیک کنید ، به لیستی از توزیع های لینوکس مورد تایید گنو میرسید.
اين قضيه در حد توهم هاي استالمن هست. از اولش هم به اين مورد گير داده بود. اما داخل سايت رسمي هسته لينوكس اصلا به همچين موردي اشاره نشده. خود تروالدز هم بارها گفته كه از عبارت GNU Linux چندان خوشش نمياد. حتي داخل سايت هم عبارت زير اومده كه بصورت غير مستقيم داره ميگه كه لينوكس به پروژه گنو ربطي نداره:


Linux is a clone of the operating system Unix, written from scratch by Linus Torvalds with assistance from a loosely-knit team of hackers across the Net. It aims towards POSIX and Single UNIX Specification (http://www.unix-systems.org/) compliance.


اينم سايت رسمي هسته لينوكس هست:
kernel.org

prpe26
دوشنبه 06 شهریور 1391, 12:46 عصر
بله سایت رسمی هسته رو دیدم. البته ما که در نهایت از همه اینا استفاده میکنیم و میایم هردوشون رو رد میکنیم :لبخند:

به قولی کی به کیه :لبخند:

prpe26
چهارشنبه 08 شهریور 1391, 03:09 صبح
در مورد گنو ، گنو با هسته های دیگر هم عرضه میشه.

نمونش Debian GNU/Hurd

Debian GNU/kFreeBSD

Debian GNU/OpenBSD

Debian GNU/NetBSD

Gentoo/*BSD

همه گنو هستند. فقط گنو رو به این خاطر عده زیادی سیستم عامل نمیدونند چون طرف کاربر (Userland) هست.

در ضمن در BSD ها چیزی به اسم توزیع وجود نداره (در مستندات دانشگاه کالیفرنیا و همچنین برکلی نوشته شده). هر اسپینی از BSD ها یک سیستم عامل مستقل شناخته میشه. به همین علته که Apple تونسته مک رو تا دلش میخواد ببنده :لبخندساده:

pswin.pooya
چهارشنبه 08 شهریور 1391, 11:37 صبح
در مورد گنو ، گنو با هسته های دیگر هم عرضه میشه.من مشکلی ندارم که گنو با چی عرضه میشه یا نه. مساله اینه که گنو سیستم عامل نیست. همنطور که میبینی همراه اسم گنو اسم سیستم عامل هم اومده. مثلا BSD و یا لینوکس.


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

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

prpe26
چهارشنبه 08 شهریور 1391, 13:12 عصر
من مشکلی ندارم که گنو با چی عرضه میشه یا نه. مساله اینه که گنو سیستم عامل نیست. همنطور که میبینی همراه اسم گنو اسم سیستم عامل هم اومده. مثلا BSD و یا لینوکس.

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

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

محصولات آزاد اپل تحت مجوز Apple Public Source License هستند ، و این مجوز یک مجوز BSD Like هست.

از طرفی ، مفهوم Distribution در خانواده BSD ها معنا نداره ، برخلاف لینوکس که اگر کلی زحمت بکشید و از اول یه چیزی بسازید باز هم به کارتون برچسب توزیع میزنن ، ولی BSD ها اینطور نیست. اپل از هسته OpenDarwin استفاده میکنه که به نوعی از FreeBSD اقتباس شده. حتی خیلی از ویژگی های خط فرمان مک او اس مثل FreeBSD هست و تفاوتی نمیکنه.

prpe26
چهارشنبه 22 شهریور 1391, 16:04 عصر
در ضمن GNU Operating System رو من اشتباه گرفتم. این همون سیستم عامل GNU Hurd هست. اما خب توسعش از ۲۰۰۲ به اینور زیرزمینی بوده (پروژه مرده :لبخند:)