PDA

View Full Version : سوال: OS Creator



m.j_banitaba
دوشنبه 26 فروردین 1392, 09:51 صبح
با سلام به همه دوستام .
در مورد سیستم عامل چیزی که وجود داره اینکه نسخه های زیادی وجود داره مثل زبانهای برنامه نویسی .
اما چیزی که من ندیدم وجود یک framework برای ایجاد سیستم عامله درست مثل کامپایلر کامپایلر که کامپایلرهایی برای پیاده سازی یک زبان هستند در اینجا نیز وجود یک مجموعه (چیزی شبیه به borlan,.net) که با اون بشه همه چیز را در یک نگاه دید و کامپایل کرد به چشم می خوره . در واقع مجموعه ای برای دانشجویان مبتدی و علاقمند که با فراغت از پیچیدگی های موجود در فایل فرمت ها، درایور ها و بقیه مباحث نهایی سیستم عامل تنها به تغییر و تجربه خود هسته سیستم عامل بپردازند.
آیا دوستان در این مورد نظر یا تجربه ای دارن؟
آیا امکان طرح این موضوع به صورت opensource وجود دارد؟:متفکر:
آیا ما می توانیم؟
و در نهایت به نظر شما چا استاندارهایی مورد نیاز است؟

pykello
سه شنبه 27 فروردین 1392, 18:18 عصر
به سیستم عامل آموزشی xv6 (http://pdos.csail.mit.edu/6.828/2012/xv6.html) نگاه بیاندازید. در لینوکس به راحتی قابل کامپایل است و می‌توانید به صورت ماشین مجازی اجرایش کنید. یک کتابچه (http://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf) هم داره که اکثر بخش‌هاش رو توضیح داده و می‌توانید بخش‌های مختلفش را پیاده‌سازی یا تغییر دهید.

m.j_banitaba
چهارشنبه 28 فروردین 1392, 08:28 صبح
بسیار عالی بود :تشویق:. :متفکر: اما محیط های بدون ide برام یکم گنگه آیا میشه برای این آزمایشات یک محیط گرافیکی هم ایجاد کرد؟

m.j_banitaba
چهارشنبه 04 اردیبهشت 1392, 09:20 صبح
لازم دیدم یک سری توضیح اضافه کنم.
الان شما کلی دنگ و فنگ می کشید که یه چیزی که حتی شبیه سیستم عامل هم نیست بیارید بالا و بعد برسید به مباحثی مثل مدیریت حافظه مدیریت وظیفه و بعد از انجام کل اینکارا تازه یه چیزی میشه مثل هسته لینوکس که برای کامپایلش باید یه چیز دیگه به اسم makefile نویسی رو بلد باشی که هیچ مرجع درست حسابی براش نیست و بعد از همه این سختی ها تازه هنوز نفهمیدین واقعا سیستم عامل چی هست ؟؟؟؟؟؟؟؟ آنچکه لازم داریم چیزی هست که مایکروسافت در دات نت در اختیار برنامه نویس می ذاره همه چی در یک نگاه هر جایی با یک کلیک . و یک framework که فاز درگیر شدن با سخت افزار و درایور نویسی را از نوشتن خود هسته سیستم عامل جدا کنه.

linux
چهارشنبه 04 اردیبهشت 1392, 09:34 صبح
لازم دیدم یک سری توضیح اضافه کنم.
الان شما کلی دنگ و فنگ می کشید که یه چیزی که حتی شبیه سیستم عامل هم نیست بیارید بالا و بعد برسید به مباحثی مثل مدیریت حافظه مدیریت وظیفه و بعد از انجام کل اینکارا تازه یه چیزی میشه مثل هسته لینوکس که برای کامپایلش باید یه چیز دیگه به اسم makefile نویسی رو بلد باشی که هیچ مرجع درست حسابی براش نیست و بعد از همه این سختی ها تازه هنوز نفهمیدین واقعا سیستم عامل چی هست ؟؟؟؟؟؟؟؟ آنچکه لازم داریم چیزی هست که مایکروسافت در دات نت در اختیار برنامه نویس می ذاره همه چی در یک نگاه هر جایی با یک کلیک . و یک framework که فاز درگیر شدن با سخت افزار و درایور نویسی را از نوشتن خود هسته سیستم عامل جدا کنه.

اگر ویندوز جوابگوی کار شما هست دلیل اینکه دنبال چیز دیگری می‌گردید چیست؟ شما یک gui می‌خواهید رو دکمه‌هاش کلید کنید ویندوز هست.
سیستم عامل تعریف مشخصی داره و چیزی نیست که هر روز عوض شود.
یک قسمت اصلی و مرکزی به نام کرنل دارد که وظیفه برقراری ارتباط با سخت افزار و تخصیص منابع به بقیه نرم‌افزارها. از این قسمت که رد شدید بقیه‌اش انواع و اقسام نرم‌افزارهای مختلف برای کارهای مختلف هست. محیط GUI هم یک نرم‌افزار کاربردی هست که فرقی با بقیه نرم‌افزارها نداره.

m.j_banitaba
چهارشنبه 04 اردیبهشت 1392, 18:24 عصر
جناب linux

اگر ویندوز جوابگوی کار شما هست دلیل اینکه دنبال چیز دیگری می‌گردید چیست؟
من دنبال خود سیستم عامل نیستم . جناب pykello منظور من را درست متوجه شدن هدف من دقیقا یک آزمایشگاه سیستم عامله با قابلیت کد نویسی در یک محیط گرافیکی نه اینکه یه سیستم عامل با قابلیت گرافیک.

prpe26
چهارشنبه 04 اردیبهشت 1392, 20:09 عصر
یادمه قبلا چیزی بود به اسم CosmOS که روی ویژوال استودیو سوار میشد و با ویژوال استودیو میتونستید به توسعه سیستم عامل بپردازید.

البته اصل قضیه به کل متفاوته. برای توسعه سیستم عامل (حتی در حد عوض کردن اسم اوبونتو - چیزی مثل قاصدک) باید دید کلی تری نسبت به این قضیه داشته باشید. آزمایشگاه سیستم عامل چیزی نیست که به این سادگی ها بدست بیاد. نیاز دارید تا حداقل چندین مدل پردازنده روتین (مثل i386 , amd64, sparc , ppc , ....) رو شبیه سازی کنید یا دستگاههایی تهیه کنید که مبتنی بر اینها باشند. همچنین نیاز دارید تا پرکاربرد ترین سیستم عاملها روی این سکوها رو بررسی کنید. جایی که ممکن هست Reverse Engineering انجام بدید و ... .

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

m.j_banitaba
پنج شنبه 05 اردیبهشت 1392, 07:58 صبح
ابدا پارادایم شیء گرایی درونش نباشه
به خاطر پیچیدگی یا به خاطر وابستگی کدهای شی گرا به سیستم عامل؟
اگر به خاطر وابستگی به سیستم عامل است آیا شی گرایی را نمی توان به صورت مستقل از سیستم عامل پیاده سازی کرد؟

prpe26
پنج شنبه 05 اردیبهشت 1392, 22:25 عصر
به خاطر پیچیدگی یا به خاطر وابستگی کدهای شی گرا به سیستم عامل؟
اگر به خاطر وابستگی به سیستم عامل است آیا شی گرایی را نمی توان به صورت مستقل از سیستم عامل پیاده سازی کرد؟

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

شی گرایی یک «مفهوم» هست و نه یک «قابلیت». متاسفانه فرمورک های مسخره ای مثل .NET بشدت مغز توسعه دهنده رو درگیر حاشیه میکنند :لبخند: .

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

m.j_banitaba
سه شنبه 17 اردیبهشت 1392, 19:58 عصر
در مرحله اول اگه در مورد این بحث بشه که آیا با زبان c میشه به تنهایی (بدون اسمبلی یا دیگر کامپایلرها) سیستم عاملو نوشت؟ اگر خیر چه کامپایلرهای دیگری مورد نیاز است؟اگر بله آیا ide مناسبی سراغ دارید ؟(مثلا code_block) آیا زبان دیگری برای برنامه نویسی سیستمی سراغ دارید؟ و در نهایت آیا مفسری مثل python را میشه تو کرنل قرار داد تا درایور ها با زبان اسکرپتی نوشته بشه(سرعت مهم نیست.)؟

pswin.pooya
سه شنبه 17 اردیبهشت 1392, 23:00 عصر
نه متاسفانه. شما حتما نیاز به اسمبلی و البته کامپایلر دارید. در مورد درایور هم باید بگم این بستگی به طراحی شما داره

m.j_banitaba
دوشنبه 30 اردیبهشت 1392, 20:48 عصر
می خوام یک تقسیم بندی در مورد سیستم عامل ارئه بدم : من سیستم عامل را به دو گروه داخلی و خارجی تقسیم بندی می کنم (البته منظورم ایرانی و غیر ایرانی نیست :لبخند::چشمک::لبخند:)یعنی سیستم عامل به دو نوع داخل فضای پردازشی و خارج فضای پردازشی برنامه ها تقسیم می شود.
-سیستمهای عاملهای داخلی وظایف خود را با تغییر نخ انجام می دهند و سرعت اجرایشان بالاتر است و مدیریت حافظه مدیریت نخها مدیریت سمافورها و هر چیزیی که بدون تغییر وظیفه بتوان اجرا کرد را به عهد دارند. -سیستمهای عاملهای خارجی وظایف تغییر وظیفه مدیریت درایورها و... به عهده دارد.

prpe26
دوشنبه 30 اردیبهشت 1392, 21:11 عصر
بهترین کار اینه که بر اساس هسته ها (یکپارچه - پیوندی - ریزهسته) مرتب کنیم. بعد از اون بر اساس ایده های ساختاری (یونیکس لایک ، NT-Like و ...) . و در نهایت هم بر اساس کاربرد. اینطور میتونیم یه دیتابیس بزرگ از انواع سیستم عامل داشته باشیم :) .

youngold
دوشنبه 30 اردیبهشت 1392, 21:12 عصر
شی گرایی یک «مفهوم» هست و نه یک «قابلیت». متاسفانه فرمورک های مسخره ای مثل .NET بشدت مغز توسعه دهنده رو درگیر حاشیه میکنند :لبخند: .

به به چشممون روشن در تالار توسعه سیستم عامل پشت دات نت حرف میزنید برادران low level :لبخند:

حواشی در درک شی گرایی هیچ ارتباطی به زیر سوال بردن دات نت نداره ، برنامه نویسانی که اسرار به درک نا به جای اون دارند و توضیح نا مناسب منابع سبب شده

m.j_banitaba
دوشنبه 30 اردیبهشت 1392, 22:03 عصر
به به چشممون روشن در تالار توسعه سیستم عامل پشت دات نت حرف میزنید برادران low level

عزیز انگشت رو نبین اونجایی که اشاره میکنه رو نگاه کن.

m.j_banitaba
دوشنبه 30 اردیبهشت 1392, 22:06 عصر
بهترین کار اینه که بر اساس هسته ها (یکپارچه - پیوندی - ریزهسته) مرتب کنیم. بعد از اون بر اساس ایده های ساختاری (یونیکس لایک ، NT-Like و ...) . و در نهایت هم بر اساس کاربرد. اینطور میتونیم یه دیتابیس بزرگ از انواع سیستم عامل داشته باشیم :) .
تقسیم بندی که انجام دادم از منظر دیگری است . من از منظر پیاده سازی و ارتباط با کامپایلر و پروسس به قضیه نگاه می کنم.

prpe26
سه شنبه 31 اردیبهشت 1392, 01:37 صبح
به به چشممون روشن در تالار توسعه سیستم عامل پشت دات نت حرف میزنید برادران low level :لبخند:

حواشی در درک شی گرایی هیچ ارتباطی به زیر سوال بردن دات نت نداره ، برنامه نویسانی که اسرار به درک نا به جای اون دارند و توضیح نا مناسب منابع سبب شده

دات نت فرمورک مزخرفی هست و به اندازه کافی در موردش حرف زدم تو تالار PHP . پیاده سازی اوپن سورسش یعنی Mono هم چیز مزخرف تریه :لبخند:

نمیدونم با وجود Qt کی میره دات نت؟ :قهقهه:


تقسیم بندی که انجام دادم از منظر دیگری است . من از منظر پیاده سازی و ارتباط با کامپایلر و پروسس به قضیه نگاه می کنم.

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