# برنامه نویسی سطح پایین > توسعه‌ی هسته‌ی سیستم عامل > خبر: سیستم عامل فارسی کوثر(معرفی)

## emadrezvani

سلام. بنده به کمک چند تن از دوستان وبلاگی برای انتشار مقالات سیستم عامل و توسعه هسته آزمایشی سیستم عامل کوثر کرده ایم. لطفا نظرات خود را در مورد شروع این نوع پروژه ها بیان کنید.(حدالامکان در وبلاگ). در کل تصاویر نمونه ای هم در زیر برای دوستان قرار داده شده است.KernelLoaded.png

وبلاگ اطلاع رسانی: http://kosaros.blog.ir
 با تشکر. رضوانی

----------


## pswin.pooya

سلام

 تبریک میگم و امیدوارم موفق باشید. در ثانی از پستتون در مورد آراکس در وبلاگتون تشکر میکنم.

فقط کاش یه مقدار اطلاعات فنی هم بدین

----------


## m.j_banitaba

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

----------


## emadrezvani

> سلام
> 
>  تبریک میگم و امیدوارم موفق باشید. در ثانی از پستتون در مورد آراکس در وبلاگتون تشکر میکنم.
> 
> فقط کاش یه مقدار اطلاعات فنی هم بدین


سلام. فعلا بصورت پیلود راه اندازی کردیم . انشاا... ساختار سیستم عامل شما و دوستان و همچنین همین سیستم آزمایشی/آموزشی رو بصورت بصری و ویژوال(با نرم افزارهایی مثل mind manager ) تحلیل خواهیم کرد.(البته با دانشی هرچند پایین). 
ممنون از بازخوردتون.

----------


## emadrezvani

با سلام. نسخه ۰.۱.۰ شروع به توسعه شد. تقریبا اکثر کد ها بصورت کامنت گذاری شده در آمده هست. انشاا.. بزودی اولین انشار رو در سایت قرار میدیم تا دوستان همکاری کنند.
new_0.1.0.jpg

----------


## emadrezvani

ادامه روند فارسی سازی  
در حال حاضر امکان انتقال فارسی ساز به سیستم عامل هایی مانند Arax وجود دارد.
farsi6.jpg

----------


## terminator68

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

کارتون سخت نشد؟؟
بعدش محیطش commandi هستش فقط یا GUI هم می کنید در آینده؟ :قلب:

----------


## pswin.pooya

> در حال حاضر امکان انتقال فارسی ساز به سیستم عامل هایی مانند Arax وجود دارد.


سلام
خیلی خوبه. من یادم میاد درباره این مورد اولهای کار یه تحقیق کردم منتها به نتیجه نرسیدم

----------


## emadrezvani

> سلام
> خیلی خوبه. من یادم میاد درباره این مورد اولهای کار یه تحقیق کردم منتها به نتیجه نرسیدم


سلام. انشاا.. بعد امتحانات انجام میدم.

----------


## emadrezvani

> سلام.
> شما برای فارسی سازی کراکترهای اسکی به کار بردید یا یونیکد؟؟
> 
> کارتون سخت نشد؟؟
> بعدش محیطش commandi هستش فقط یا GUI هم می کنید در آینده؟


سلام. ما جدول اسکی مربوط به خودمون را داریم. در مد بوت لودر فارسی ساز بر اساس همون اسکی کار میکنه. اما در مد ۳۲ بیتی ساختار تغییر میکنه و فعلا Windows1256 رو ساپورت می کنیم. فکر نکنم مشکل خاصی با UTF8 و 16 باشه. فعلا مشکل اولیه نمایش پیغام ها در مد ۳۲بیتی بصورت فارسی بود که خداروشکر تا حدودی حل شد. 
کار هم سخت نشد !! فعلا تمام کارهای سیستم عامل آزمایشی/آموزشی می باشد. برنامه های آینده بسیار جذابتر می باشد. بنده توصیه می کنم دوستان ولو داشتن دانش پایه در اسمبلی و یا زبان C شروع به توسعه سیستم عامل های دیگر دوستان مانند Arax کنند. هم کمک به این سیستم عامل ها کرده اند و هم دانش خودشون افزایش پیدا می کند. 
فعلا سکوی کار x86 هست. بله انشاا.. یکی از اهداف آینده GUI می باشد(حداقل ۵-۶ ماه آینده).
خودشحال میشم دوستان در وبلاگ و یا همین انجمن راهنمایی و یا پیشنهاد کار بدن.

نیمه شعبان بر شما مبارک.

----------


## emadrezvani

انتشار نسخه0.1.0
با سلام. نسخه جدید انتشار داده شد. توضیحات بیشتر در لینک بالا. 
تصویر زیر اجرا شده روی هارد دیسک 10G بصورت طبیعی(بدون مجازی سازی) می باشد.
IMG_20140323_155255.jpg

----------


## emadrezvani

سلام. نسخه 0.1.1 شروع به توسعه شد. لینک خبر
در این نسخه قصد راه اندازی صفحه کلید, موس, تایمر, تکمیل صفحه بندی و مدیریت حافظه پویا بصورت مقدماتی و نهایتا و احتمالا مقدمات فایل سیستم !!

----------


## emadrezvani

*آزمایش صحت صفحه کلید/موس/ساعت*http://www.aparat.com/v/b0LU6

----------


## emadrezvani

با سلام. مقدمات فایل سیستم انجام شد.
hdd5.jpg

----------


## pswin.pooya

خیلی خوبه با سرعت زیادی داری پیش میری. موفق باشی.

راستی قصد انتشار سورس رو ندراری؟

----------


## emadrezvani

> خیلی خوبه با سرعت زیادی داری پیش میری. موفق باشی.
> 
> راستی قصد انتشار سورس رو ندراری؟


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

----------


## pswin.pooya

> در چند روز آینده نسخه فارسی سیستم عامل آراکس و چند امکانات جدید به این سیستم عامل رو  رونمایی می کنیم


خیلی خوبه. فقط امکان داره در طی یکی دو هفته آینده VFS به آراکس اضافه بشه. همینطور طی همین دو سه روز یکسری تغییرات کوچیک در اسکریپت ها داشتم و موتکس رو هم اضافه کردم. 




> سیستم فعلا بصورت تست و آزمایشی هست. فعلا در حال امکان سنجی نوشتن یک سیستم عامل هستیم.


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

----------


## emadrezvani

> خیلی خوبه. فقط امکان داره در طی یکی دو هفته آینده VFS به آراکس اضافه  بشه. همینطور طی همین دو سه روز یکسری تغییرات کوچیک در اسکریپت ها داشتم و  موتکس رو هم اضافه کردم.


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




> مخصوصا اگر از روند توسعه یک ورژن کنترل روی نت باشه خیلی خوبه.


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

----------


## emadrezvani

لینک خبر
بعد از اتمام تقریبی توسعه فایل سیستم   تصمیم بر این شد  که تا اینجای کار به عنوان یک نسخه قابل قابل راه اندازی در مجازی ساز  VMWare ارائه شود. شما بعد از دانلود فایل فشرده شده این نسخه می توانید با  استفاده از مجازی ساز دلخواه تان آن را تست و آزمایش کنید. دقت کنید که فارسی ساز با مشکلاتی همراه است که جناب تقی نژاد در حال بازنویسی آن می باشد. 

انتشار بعدی به همراه SDK برای توسعه دهندگان ویندوز و لینوکس می باشد.(که برنامه های نوشته شده شما را این سیستم عامل اجرا کند).
انشاا.. برای نسخه بعد فعالیت هایی مانند ویرایش جدید فارسی ساز کوثر -  Multitasking - VFS بررسی خواهد شد.
از اینکه نظرات سازنده خود را برای ما ارسال می کنید بسیار سپاسگذاریم. در مورد درخواست برخی از دوستان در مورد همکاری در توسعه باید عرض کنم که تا انتشار SDK توسعه بصورت راه دور ممکن نمی باشد. پس تا انتشار SDK صبر کنید. باز هم ممنون از نظرات سازنده شما. 
لازم هست که از دوستانی که در این نسخه بصورت مستقیم یا غیر مستقیم ایده پردازی و یا کدنویسی کرده اند تشکر کنم:
آقای سانیان - آقای بنی طبا - آقای تقی نژاد - آقای تقی زاده و آقای رحمتی.

 برگرفته شده از kosaros.blog.ir

----------


## emadrezvani

> مخصوصا اگر از روند توسعه یک ورژن کنترل روی نت باشه خیلی خوبه.



سلام. از اینجا به بعد پروژه با Git پیش میریم.  (مجموعه تصاویر)
روی ساختار فایل هم مقداری کار کردیم که خروجی تقدیم دوستان میشه:
readFile.jpg

----------


## m.j_banitaba

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

----------


## emadrezvani

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

----------


## joker

1- آفرین
2- باریکلا  :تشویق: 
3- دمتون گرم
4- برای بحث مولتی تسک شاید این مطالبی که در مورد سیستم مولتی تسک میکروکنترلرها نوشتم کمکتون بکنه ( شاید )
5- فایل پیوست شاید کمکتون بکنه در مورد مشکل فارسی ساز(البته مربوط به استاندارد ایران سیستم هست این هدر فایل)

----------


## emadrezvani

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

در مورد فارسی ساز باید بگم مشکل اصلی پشتبیانی Windows-1256 هست که سیستم ما پشتبیانی کنه. الگوریتم کار موجود هست و حتی پشتیبانی UTF هم دراورده شده هست. یکی از دوستان همکار در حال بازنویسی اون هست. فارسی ساز بزودی مشکلش حل میشه. ( در واقع تابع تبدیل از windows1256 به فارسی ساز ما مشکل داره)

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

----------


## Delphi Coder

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

حالا از این بحث درایورها که خارج  بشیم پشتیبانی برنامه نویسها و شرکتها چی؟ آیا تمامی نرم افزارها برای  سیستم عامل تون رو خودتون میخواید طراحی کنید؟ یا قرار هست یک clone از  ویندوز یا لینوکس بسازید که برنامه های اونها در سیستم عامل شما قابل اجرا  باشه؟ اگر اینطور نیست اصولا چه دلایلی یا مزایایی در نظر دارید برای مثلا  منِ برنامه نویس بیارید تا من حاضر بشم قید سیستم عاملهای فعلی و قَدَر در  بازار رو بزنم و بیام در سیستم عاملی که شما مینویسید نرم افزار بسازم؟

پشتیبانی  مالی پروژه هم البته یک مساله هست که باید قبل از شروع پاسخ داده بشه. آدم  ممکنه کوتاه مدت برای عشق و حال و لذت از کاری که انجام میده کد نویسی کنه  ولی در دراز مدت این کار عملا غیر ممکنه چون یک جایی این پروژه یا ارضا  میکنه شما رو از نظر روحی و یا خسته. بنابراین بدون انگیزه مالی یکم دور از  ذهن هست که بیشتر از چند ماه دوام بیاره و بعد از یک مدتی پروژه  Abandoned

اینها واقعا سوالاتی هستند که باید قبل از شروع کار پاسخ قانع کننده ای براش پیدا بشه.

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

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

----------


## joker

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

فرض بگیرید سیستم عاملی برای کرک پسورد به بروش بروتی فورس ، مطمنا وقتی شما از تمام منابع پردازی سیستم فقط برای یک کار خاص استفاده کنید خیلی تفاوت هست با یک سیستم یونیورسال.
سیستم های ریل تایم امروزه در صنعت حرف اول را میزنند ، حالا شما فرض بگیر یک سیستم عامل پایه برای کنترل I/O سیستم طراحی بشه. با یکبار کد نویسی برای فلان کارت i/o میتونه نیازهای صنعتی یک کشور را به راحتی پاسخگو باشه
میشه یکی مثل زیمنس که در کنترلرهای صنعتیش از سخت افزار و سیستم عامل و نرم افزارهای خاص خودش استفاده کرد و توی کل دنیا مشتری های خاص خودش را داره با ارزش مالی میلیاردها دلار ..

----------


## emadrezvani

سلام. خیلی خوشحالم که میبینم دوستان در مورد کاری که انجام میدیم اظهار نظر می کنند. مطمئنا اگه تا به اینجای کار نبود حتی بوت لودر هم ننوشته بودیم. مستندات حرفام هم برخی از دوستان نزدیک و مشاوره دهنده به پروژه می باشند.
دوست خوبم:* Delphi Coder* 



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


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



> وقتی بحث نوشتن سیستم عامل  پیش کشیده میشه (دقیقا با اسم سیستم عامل) یعنی  درایور و پشتیبانی از شونصد  هزار تا سخت افزاری که معلوم نیست چجوری  میخوایم به این سخت افزارها  دسترسی داشته باشیم. از روزهای DOS و بعدها  Windows این سازندگان سخت افزار  بودند که به ناچار برای فروش سخت  افزارهاشون باید درایور اون سخت افزار رو  هم برای DOS و یا  Windows  مینوشتند. لینوکس با اون پشتیبانی و حمایت  جهانی که ازش شد و تا حدودی  شناخته شد هنوز که هنوزه یکی از ایرادهای  اساسیش همون درایورها هست که  برای اکثر سخت افزارها نداره و نمیتونه از  تمامی امکاناتشون استفاده کنه.


برای اهداف خاص نیازی به شناسایی تمامی درایور ها نیست. خجالم میکشم وقتی به پروژه _KolibriOS_ و یا امسال اون نگاه می کنم. برای من نوشتن تا همین حد هم کافی هست.اینها که تمام درایور ها رو شناسایی نکردن‌! پس لزوم به یک دانش بومی.



> حالا از این بحث درایورها که خارج  بشیم پشتیبانی برنامه نویسها و شرکتها  چی؟ آیا تمامی نرم افزارها برای  سیستم عامل تون رو خودتون میخواید طراحی  کنید؟ یا قرار هست یک clone از  ویندوز یا لینوکس بسازید که برنامه های  اونها در سیستم عامل شما قابل اجرا  باشه؟ اگر اینطور نیست اصولا چه دلایلی  یا مزایایی در نظر دارید برای مثلا  منِ برنامه نویس بیارید تا من حاضر  بشم قید سیستم عاملهای فعلی و قَدَر در  بازار رو بزنم و بیام در سیستم  عاملی که شما مینویسید نرم افزار بسازم؟


به اونجای کار زودتر از خود کار فکر کردیم و بحث هایی هم در بالا انجام شده. در حال نوشتن یک SDK هستیم. ما توابع رو بر اساس posix برای شروع در نظر گرفتیم و نیازی به دوباره کاری و نوشتن از نو نیست. پس نیاز به بستر بومی.



> پشتیبانی  مالی پروژه هم البته یک مساله هست که باید قبل از شروع پاسخ داده  بشه. آدم  ممکنه کوتاه مدت برای عشق و حال و لذت از کاری که انجام میده کد  نویسی کنه  ولی در دراز مدت این کار عملا غیر ممکنه چون یک جایی این پروژه  یا ارضا  میکنه شما رو از نظر روحی و یا خسته. بنابراین بدون انگیزه مالی  یکم دور از  ذهن هست که بیشتر از چند ماه دوام بیاره و بعد از یک مدتی  پروژه  Abandoned


هدف در ابتدا پروژه دانشی در نظر گرفته شده است. وقتی به هیجا متصل نباشی و یا منتظر نظر یه مسئول که حتی با درک وجود یک سیستم عامل بومی مشکل داره نداشته باشم اونوقت هرجور که صلاح باشه جهادی وار پیش میریم !!! البته من و دوستانم که این پروژه رو شروع کردیم  هر کدوم به نحوی مشغول به کار هستیم وگرنه این پروژه خیلی بیشتر از این در این ۱ ماه و نیم پیشرفت می کرد. پس نیاز به مدیریت جهادی ...



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


اینطورهام نیست. نیاز باشه قسمتی از سورس های ویندوز ۲۰۰۰ و یا nt رو بزارم مطمئن بشید که یک نرم افزار بعد از کلی ورژن جدید فقط قسمتیش تغییر کرده و همین بروز چند نقص امنیتی میشه.  ولی گذشته از اون قبول دارم نوشتن داس هم نیاز به دانش دارد. اونها وقت گذاشتن که تا بدین جا رسیدن و هیچ کس منکر کار خوب اونها نیست. جای بحث بازه ما من مطمئنم ۵-۶ ساله میشه xp بیرون داد !! واقعا مطمئنم.(البته بجز سرویس ها و نرم افزارهای کاربردی خاص). پس نیاز به همت جهادی ...



> یک  استفاده اما مطمئن هستم که داره اون هم اینکه کار لذت بخشی هست و  نوشتنش  احساس خیلی خوبی به آدم میده. خود من هم یه زمانی این کار رو انجام  دادم اما به  نوشتن یک Boot Manager ساده با فونتهای فارسی اکتفا کردم و  بیشتر از اون  دیگه جلو نرفتم.
> البته یه توضیح اضافی هم آخر سر در مورد همین پستم بدم  اینکه هدف دلسرد  کردن شما از پروژه نیست صرفا زدن یک تلنگر ذهنی هست و یا  اگر احیانا  پاسخهای منطقی و قانع کننده ای به مسائل مطرح شده باشه علاقه  دارم که  بشنوم.


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

اما در مورد دوست قدیمی* joker*  	 :
کاملا موافقم.

----------


## m.j_banitaba

> _ه زمانی این کار رو انجام دادم اما به نوشتن یک Boot Manager ساده با فونتهای فارسی اکتفا کردم و بیشتر از اون دیگه جلو نرفتم._


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

----------


## pswin.pooya

> اینها واقعا سوالاتی هستند که باید قبل از شروع کار پاسخ قانع کننده ای براش پیدا بشه.


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

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

----------


## emadrezvani

دو موضوع که دوستان همیشه از زبان من هم شنیدن:



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


و



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

----------


## Delphi Coder

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

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

اینکه  ما یه کد بتونیم روی بوت سکتور بزاریم که یک یا چند قطعه کد رو مستقل از OS  حالا با استفاده از BIOS یا پورتهای I/O اجرا کنه نمیشه بگیم یک سیستم  عامل داریم. اینکه برخی از دوستان از سهل الوصول  بودن رسیدن به MS-DOS صحبت میکنند یکم عجیب هست در حالی که بدون در نظر گرفتن device  driver ها یه طراحی درست و نوشتن فقط چند تابع از توابع 21h حالا مثلا در نظر بگیرید چند تا  تابع محدودی که با file system درگیر هستند از قبیل باز و بسته کردن و  خواندن و نوشتن فایل و FindFirst , FindnNext وقت و انرژی  قابل توجهی رو میطلبه. 

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

اگر بخواهیم مفصل بحث  کنیم در مورد تک تک جملات یا استدلالهایی که شد شاید از حوصله خارج باشه  اما اجازه بدید خیلی کلی نظر خودم رو بگم، به اون شکلی که از صحبتها میشه  حس کرد این پروژه به احتمال زیاد Abandoned خواهد شد در آینده. تفکراتی هم  که پشت این پستها هست مثل رسیدن 5 یا 6 ساله به ویندوز XP نشان از بی  تجربگی و عدم شناخت درست کار رو داره. دقیقا پیدا کردن این شناخت و به طبع  اون تنظیم کردن اهداف هست که میتونه جلوی سرخوردگی و احساس یاس در آینده رو  بگیره.

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

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

----------


## emadrezvani

> مسیر رو تکرار کنیم و خودمون رو در  معرض ریسک این قرار بدیم که بعد سالها به همون نتیجه برسیم.


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



> اما وقتی  صحبت از یک کاربرد خاص بشه کلمه Stand Alone به نظر من  مناسبتره. اینکه یک  برنامه Stand Alone برای یک منظور خاص بدون نیاز به  سیستم عامل طراحی و  نوشته بشه با اینکه یک سیستم عامل نوشته بشه از نظر من  فرق داره.


اینو من نمیگم و ویکی گفته(شما هم ویرایشش کن به مفهوم خودتون):
*سیستم‌عامل* یا *سامانهٔ عامل*[۱] (به انگلیسی: Operating System) نرم‌افزاری است که مدیریّت منابع رایانه را به عهده گرفته و بستری را فراهم می‌سازد که نرم‌افزار کاربردی  اجرا شده و از خدمات آن استفاده کنند. سیستم‌عامل خدماتی به برنامه‌های  کاربردی و کاربر ارائه می‌دهد. برنامه‌های کاربردی یا از طریق واسط‌های  برنامه نویسی کاربردی (Application User Interface-APIs) و یا از طرق  فراخوانی‌های سیستم (system call) به این خدمات دسترسی دارند.



> اینکه  ما یه کد بتونیم روی بوت سکتور بزاریم که یک یا چند قطعه کد رو  مستقل از OS  حالا با استفاده از BIOS یا پورتهای I/O اجرا کنه نمیشه بگیم  یک سیستم  عامل داریم. اینکه برخی از دوستان از سهل الوصول  بودن رسیدن به  MS-DOS صحبت میکنند یکم عجیب هست در حالی که بدون در نظر گرفتن device   driver ها یه طراحی درست و نوشتن فقط چند تابع از توابع 21h حالا مثلا در  نظر بگیرید چند تا  تابع محدودی که با file system درگیر هستند از قبیل باز  و بسته کردن و  خواندن و نوشتن فایل و FindFirst , FindnNext وقت و انرژی   قابل توجهی رو میطلبه.


نوشتن DOS همچین کار سختی نیست. همین  آراکس خودمون رو یه مقدار بشینیم روش کار کنیم دقیقا ۱۰ برابر کاراییش از  DOS بیشتر هست. برید یه مقدار در مورد ساختارش تحقیق کنید. بابا سیستم عامل  بروی شروع یعنی ارتباط بین کاربر و سخت افزار و روشی که کاربر بهترین بهره برداری رو از سخت افزار ببره. 



> اگر بخواهیم مفصل بحث  کنیم در مورد تک تک جملات یا استدلالهایی که شد شاید  از حوصله خارج باشه  اما اجازه بدید خیلی کلی نظر خودم رو بگم، به اون  شکلی که از صحبتها میشه  حس کرد این پروژه به احتمال زیاد Abandoned خواهد  شد در آینده. تفکراتی هم  که پشت این پستها هست مثل رسیدن 5 یا 6 ساله به  ویندوز XP نشان از بی  تجربگی و عدم شناخت درست کار رو داره.


اینکه بگیم Abandoned خواهد شد یا نه که کاملا مشخصه. بنده این پروژه رو بیشتر آموزشی شروع کردم تا پایه گذاری یک سیستم عامل قدرتمند.
رسیدن 5 یا 6 ساله به ویندوز XP نشان از بی تجربگی بنده و عدم شناخت درست این سیستم عامل و طراحی سیستم عامل نیست.(.... ) XP نتیجه چند سال تلاش و خروجی چند سیستم عامل معروف مایکروسافت بوده. مسلما دانش بالایی برای طراحی اون میخواد. XP و کلا سیستم عامل با نرم افزارهای شخص سوم مثل آفیس و ... کاملا متفاوت هست و روند متفاوتی داره.  شما یه نگاه به ساختار Heap ویندوز XP بنداز. از sp0 تا sp3 چه تغییراتی کرده. یا توی نسخه های قبلیش چطور بوده. مدیریت منابع چطور بوده. مدیریت خطاها چطور بوده. من نمی دونم انداختن چنین بحثی درست هست یا نه اما یکی از دوستان یه exception مسخره توی این نوع ساختار سیستم عامل پیدا کرده بود که کلی جای بحث و دفاع داره و حتی میشه این ایراد رو هم به C گرفت.(نه زبان C)( بحث بازم اینجا سربسه باشه بهتره)(موضوعات تحلیل ساختار و امنیت این نوع سیستم عامل ها خیلی وقته بیرون افتاده). اما اینکه بگین تنهایی توی ۵ یا ۶ سال بتونین در حد XP بنویسید  کاملا درسته و نمیشه. یه نگاهی به سیستم عامل های ساخته شده در OSDev بکنید متوجه مشید که اونجا افراد توی ۳-۴ سال چه سیستم عامل هایی نوشتن و جای افرین گفتن داره. 




> در مورد بحث امنیت من معتقد نیستم نوشتن یک سیستم عامل از صفر راه حل خوبی  برای ارتقا اون باشه. اونهم زمانی که بحث معماری 8086 وسط هست و غولهایی بی  حرف و حدیث مثل لینوکس در بازار رقابتش حضور دارند.


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



> در مورد یادگیری C#‎‎‎‎‎ و نوشتن سیستم عامل هم من با اون استاد هم  عقیده  هستم. تجربیات و اطلاعاتی که در حین نوشتن سیستم عامل میتونه بدست  بیاد  بسیار کمیاب هست اما بیشتر از کمیاب بودنش بلااستفاده useless هست  (برای  اینکه استفاده تجاری نداره) شما اگر C#‎‎‎‎‎ خصوصا شاخه وِبِش رو کار کنید   خیلی راحت میتونه استفاده تجاری براتون داشته باشه اما مسیر نوشتن یک   سیستم عامل هر چند هم تحسین برانگیز هست و از نظر بار علمی قابل مقایسه با  یادگیری C#‎‎‎‎‎ نیست اما حداقل در کشور ما نتیجه ای در پی نداره.


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

----------


## emadrezvani

دعوت از دوستان برای تبادل اطلاعات در زمینه ساختار سیستم عامل در بخشهای ویژه:(تا حالا بحث های زیادی شده)
بخش مدیریت و توسعه پروژه
بخش سیستم فایل

بخش مدیر حافظه
بخش SDK و کامپایلر
بخش فرآیند ها

----------


## pswin.pooya

> در مورد یادگیری C#‎‎‎‎‎ و نوشتن سیستم عامل هم من با اون استاد هم  عقیده  هستم. تجربیات و اطلاعاتی که در حین نوشتن سیستم عامل میتونه بدست  بیاد  بسیار کمیاب هست اما بیشتر از کمیاب بودنش بلااستفاده useless هست  (برای  اینکه استفاده تجاری نداره) شما اگر C#‎‎‎‎‎ خصوصا شاخه وِبِش رو کار کنید   خیلی راحت میتونه استفاده تجاری براتون داشته باشه اما مسیر نوشتن یک   سیستم عامل هر چند هم تحسین برانگیز هست و از نظر بار علمی قابل مقایسه با  یادگیری C#‎‎‎‎‎ نیست اما حداقل در کشور ما نتیجه ای در پی نداره.


مطمئن باش مغازه خواربار هم بزنی از برنامه نویسی درآمدش بیشتره. اگر طرز فکرتون محدود به درآمد هست به نظر من برنامه نویسی رو کنار بذار. 

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





> تجربیات و اطلاعاتی که در حین نوشتن سیستم عامل میتونه بدست  بیاد بسیار کمیاب هست اما بیشتر از کمیاب بودنش بلااستفاده useless هست


تجربه کردی، که داری اینو میگی؟! شما هنوز دیدتون از OS ویندوز و ... و یا بوت کردن و سکتور صفر هست و دید من درک ساختارها. یه مثال خیلی ساده اش اینه که کسایی که OS می نویسن ساختار زبانهایی مثل C و نحوه کار کامپایلر اونها رو متوجه میشن. در نتیجه فردا مثلا در برنامه نویسی های دیگه می تونن مواردی رو لحاظ کنن که بقیه حتی روحشون هم خبر نداره. یه نمونه فوقالعاده ساده قردادهای فراخوانی هست که خود من بعدا از اونها در زبان اسکریپتم (DScript) استفاده کردم و کارایی رو به زبان C نزدیک کردم.

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


اما اگر برنامه نویس C#‎ بودم میومدم XNA یاد میگرفتم که نه تنها کارایی نداره. فردا هم ساپورت نمیشد چون فقط MS نمی خواست و من می موندم تو گل ... یا برای برنامه دنبال کامپوننت بودم و سعی میکردم به دوستم نشون ندم که امتیاز مثبت نسبت بهش دستم باشه. یا دنبال برنامه بودم که کدم توی 5 دقیقه لو نره.

اینجاست که میگی خلایق را هرچه لایق. این همه خفت و خواری مخصوص اینجور آدمهاست. خدایش نصف مشکلات برنامه نویسهای C#‎ رو برنامه نویسهای C و C++‎ هم ندارن. قبول برنامه نویسیش طول میکشه و سختره اما کارایی که بیرون میاد برنامه نویسهای سی شارپ توی خوابشون هم نمی بینن.

وقتی برنامه نویس C/C++‎ هم شدی. هرچه بیشتر بدونی حرفه ای تر هستی و کار تمیزتر. از یه نمونه ماشین توی نظریه زبان تا یه ماکرو داخل مثلا minix یا لینوکس میتونه کلی روی کارت تاثیر داشته. از چند برنامه گی گرفته تا ساختاری پردازنده مثل SIMD میتونه همه چی رو عوض کنه. مثلا توی انجین من dge ماتریس ها با SSE کار ضرب میشن که کارایی حداقل از دو تا 5 برابر بیشتر از حالت عادی هست و شاید 50 برابر بیشتر از سی شارپ.

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

----------


## pswin.pooya

> شما منتظر stuxnet و امسال اون باش.  منتظر یه خونریزی قلبی اینترنت دیگه  باش...( همین حد هم فکر کنم کافی باشه که NSA گفته بود من بیش از ۱ ساله از  این آسیبپذیری اطلاع دارم)....
> معماری دخیل هست اما مهم نیست. علم سیستم عامل مهم هست. پورت کردن و یا  ساخت یه پردازنده داخلی برای مصارف خاص همچین کار بی عقلانه ای نیست.  مخصوصا اگر هدف طراحی سیستم عامل برای مصارفی بجز کاربرد خانگی داشته باشه.


حرفتون رو کاملا قبول دارم.



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

----------


## joker

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

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

خلاصه اینکه عزیزم به جای این مدل بحثها برس به کارت تا همینجاش از حداقل 100 هزار نفر برنامه نویس و it کار جلوتر هستی  :قلب:   :تشویق:  

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

----------


## emadrezvani

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

----------


## pishvaei

> اگه پدارن وقتی به مکتب میرفتن و .... میخوندن و حفظ میکردند ، کتاب علمی ترجمه کرده بودند الان واقعا حال و روزمون بهتر بود/ پس ی کاری بکنیم که بچه هامون این بدبختی و فلاکت علمی را نداشته باشند.
> 
> چندتا تجربه هم بهت بگم :
> *یه چیزی که پدر تحقیق  و توسعه را توی ایران در میاره بحثهای حاشیه ای هست :) ...*.


جناب آقایا خانم جوکر ، اولا خودت چرا وارد بحثهای حاشیه ای شدی ؟ 
ثانیا افتخار میکنیم که پدران ما در مکتبخانه ق... میخواندند ، اما پدران شما را نمیدانم . ثالثا ، آیا علم اینهاست ؟ آیا فرق علم و سواد و صنایع را واقعا میدانی ؟ والسلام

----------


## Delphi Coder

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


استفاده از تجربیات دیگران؟  مهندسی معکوس؟




> اینو من نمیگم و ویکی گفته(شما هم ویرایشش کن به مفهوم خودتون):
> *سیستم‌عامل* یا *سامانهٔ عامل*[۱] (به انگلیسی: Operating System) نرم‌افزاری است که مدیریّت منابع رایانه را به عهده گرفته و بستری را فراهم می‌سازد که نرم‌افزار کاربردی   اجرا شده و از خدمات آن استفاده کنند. سیستم‌عامل خدماتی به برنامه‌های   کاربردی و کاربر ارائه می‌دهد. برنامه‌های کاربردی یا از طریق واسط‌های   برنامه نویسی کاربردی (Application User Interface-APIs) و یا از طرق   فراخوانی‌های سیستم (system call) به این خدمات دسترسی  دارند.


انتقادهای من از اهداف سیستم عامل هم دقیقا برای همین تعریف  بود بعضی از دوستان که از نقطه نظر مقابل صحبت از  مقاصد یا کاربرد خاص کردند که من گفتم برای یک کار خاص شبیه یک برنامه  Standalone هم میتونه نوشته بشه. این هم تعریف برنامه Standalone از همون  wikipedia هست: http://en.wikipedia.org/wiki/Standalone_program




> نوشتن DOS همچین کار سختی نیست. همین  آراکس خودمون رو یه مقدار بشینیم روش  کار کنیم دقیقا ۱۰ برابر کاراییش از  DOS بیشتر هست. برید یه مقدار در  مورد ساختارش تحقیق کنید. بابا سیستم عامل  بروی شروع یعنی ارتباط  بین کاربر و سخت افزار و روشی که کاربر بهترین بهره برداری رو از سخت افزار  ببره.


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




> اینکه بگیم Abandoned خواهد شد یا نه که کاملا  مشخصه. بنده این پروژه رو بیشتر آموزشی شروع کردم تا پایه گذاری یک سیستم  عامل قدرتمند.


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




> رسیدن  5 یا 6 ساله به ویندوز XP نشان از بی تجربگی بنده و عدم شناخت درست این  سیستم عامل و طراحی سیستم عامل نیست.(.... ) XP نتیجه چند سال تلاش و خروجی  چند سیستم عامل معروف مایکروسافت بوده. مسلما دانش بالایی برای طراحی اون  میخواد. XP و کلا سیستم عامل با نرم افزارهای شخص سوم مثل آفیس و ... کاملا  متفاوت هست و روند متفاوتی داره.  شما یه نگاه به ساختار Heap ویندوز XP  بنداز. از sp0 تا sp3 چه تغییراتی کرده. یا توی نسخه های قبلیش چطور بوده.  مدیریت منابع چطور بوده. مدیریت خطاها چطور بوده. من نمی دونم انداختن چنین  بحثی درست هست یا نه اما یکی از دوستان یه exception مسخره توی این نوع  ساختار سیستم عامل پیدا کرده بود که کلی جای بحث و دفاع داره و حتی میشه  این ایراد رو هم به C گرفت.(نه زبان C)( بحث بازم اینجا سربسه باشه  بهتره)(موضوعات تحلیل ساختار و امنیت این نوع سیستم عامل ها خیلی وقته  بیرون افتاده). اما اینکه بگین تنهایی توی ۵ یا ۶ سال بتونین در حد XP  بنویسید  کاملا درسته و نمیشه. یه نگاهی به سیستم عامل های ساخته شده در  OSDev بکنید متوجه مشید که اونجا افراد توی ۳-۴ سال چه سیستم عامل هایی  نوشتن و جای افرین گفتن داره.


توجه داشته باشید که اینجا ما خیلی کلی داریم صحبت میکنیم صحبتی از آمار و  ارقام و تجزیه و تحلیل های دقیق نیست اما چرا، حرف شما دقیقا حکایت از عدم  شناخت درست از بزرگی و پیچیدگیهایی داره که در ویندوز XP وجود داره. تنهایی  که نمیگم تیم شما 3 4 نفر بیشتر نیست 10 برابر این تیم هم  نمیتونند این  کار رو 5 6 ساله انجام بدند. خود میکروسافت با هزاران هزار برنامه نویس و  طراح و تستر و کد نویس بالای 5 6 سال طول کشید تا از ویندوز 95 به XP برسه.  تازه اونها تجربیات ویندوز 95 رو داشتند و وسطهای راه تجربیات 98 و ME و   NTو 2000 هم به اونها اضافه شد. همه اینها در سطح جهانی استفاده میشد و ایراداتش درمیومد و برطرف میشد.




> شما  منتظر stuxnet و امسال اون باش.  منتظر یه خونریزی قلبی اینترنت دیگه  باش...( همین حد هم فکر کنم کافی باشه که NSA گفته بود من بیش از ۱ ساله از  این آسیبپذیری اطلاع دارم)....
> معماری دخیل هست اما مهم نیست. علم سیستم عامل مهم هست. پورت کردن و یا  ساخت یه پردازنده داخلی برای مصارف خاص همچین کار بی عقلانه ای نیست.  مخصوصا اگر هدف طراحی سیستم عامل برای مصارفی بجز کاربرد خانگی داشته  باشه.


در مورد خونریزی قلبی اینترنت نفهمیدم منظورتون دقیقا چی هست و شما  چطور میخواید با نوشتن سیستم عامل جدید جلوی این مشکل رو بگیرید. در مورد stuxnet هم اطلاعات زیادی ندارم اصلا نمیدونم ویروس بوده یا  تروجان در هر حال بدافزاری بوده برای ایجاد اختلال در تاسیسات هسته ای. اگر  سیستم عامل رو به شکل یک PlatForm یا یک لایه سرویس روی سخت افزار در نظر  بگیریم به فرض اینکه بد افزار اومده و روی سیستم عامل ویندوز نشسته تغییر  این platform یا لایه زیری به نظر نمیاد کار مثبت یا عاقلانه ای در جهت امن  کردن محیط باشه. البته منطق حرف به ظاهر درست هست ولی مقرون به صرفه نیست.  اینکه یک سیستم عامل کد  بسته (closed source) و Private ای باشه که کسی از داخلش سر در نیاره که  تازه بخواد malware هم براش طراحی کنه.

----------


## Delphi Coder

> مطمئن باش مغازه خواربار هم بزنی از برنامه نویسی درآمدش بیشتره. اگر طرز فکرتون محدود به درآمد هست به نظر من برنامه نویسی رو کنار بذار. 
> 
> من خودم از برنامه نویسی لذت می برم و به فکر میلیونر شدن و اینها نیسنم. اگر به این فکر بودم میرفتم بساز به فروش میشدم.


خوب پس گفته های من در مورد شما صدق نمیکنه جون من فرض رو بر این گذاشتم مخاطب برنامه نویسان حرفه ای (یعنی شخصی که حرفه یا کار و درآمدش از برنامه نویسی باشه) هستند. در صورتی که شما یک محقق non profit individual باشید از نظر خود من بهترین انتخاب رو انجام دادید.







> تجربه کردی، که داری اینو میگی؟! شما هنوز دیدتون از OS ویندوز و ... و یا بوت کردن و سکتور صفر هست و دید من درک ساختارها. یه مثال خیلی ساده اش اینه که کسایی که OS می نویسن ساختار زبانهایی مثل C و نحوه کار کامپایلر اونها رو متوجه میشن. در نتیجه فردا مثلا در برنامه نویسی های دیگه می تونن مواردی رو لحاظ کنن که بقیه حتی روحشون هم خبر نداره. یه نمونه فوقالعاده ساده قردادهای فراخوانی هست که خود من بعدا از اونها در زبان اسکریپتم (DScript) استفاده کردم و کارایی رو به زبان C نزدیک کردم.
> 
> یا مثلا ساختار VFS رو در گیم انجینم پیاده سازی کردم قبلا و حالا میام اونو با جزئیات بیشتر وارد سیستم عامل میکنم.


مسلما بدون دلیل حرف نمیزنم در زمینه Reverse Engineering هم میشه تجربیات مشابه رو داشت و در صورت لزوم استفاده کرد اما بحث مقایسه کلاس کاری بین زبانهای سطح بالا و پایین نیست. اینجا بحث من بیشتر به مسائل کاربردی و حرفه ای معطوف هست تا علمی.




> اینجاست که میگی خلایق را هرچه لایق. این همه خفت و خواری مخصوص اینجور آدمهاست. خدایش نصف مشکلات برنامه نویسهای C#‎‎‎‎‎ رو برنامه نویسهای C و C++‎‎‎‎‎ هم ندارن. قبول برنامه نویسیش طول میکشه و سختره اما کارایی که بیرون میاد برنامه نویسهای سی شارپ توی خوابشون هم نمی بینن.
> 
> وقتی برنامه نویس C/C++‎‎‎‎‎ هم شدی. هرچه بیشتر بدونی حرفه ای تر هستی و کار تمیزتر. از یه نمونه ماشین توی نظریه زبان تا یه ماکرو داخل مثلا minix یا لینوکس میتونه کلی روی کارت تاثیر داشته. از چند برنامه گی گرفته تا ساختاری پردازنده مثل SIMD میتونه همه چی رو عوض کنه. مثلا توی انجین من dge ماتریس ها با SSE کار ضرب میشن که کارایی حداقل از دو تا 5 برابر بیشتر از حالت عادی هست و شاید 50 برابر بیشتر از سی شارپ.
> 
> اگر استادها، برنامه نویسها تجربه کافی داشتن و بعد این حرف رو میزدن قبول میکردیم. اما وقتی نه دیده و نه انجام داده ...


 دانش فنی استادان در کل چیزی نیست که من بخوام در موردش نظر بدم اما هر ابزاری با یک هدفی طراحی شده و هر کدوم در یک شرایطی برای استفاده ایده آل هستند. ما SQLLite رو هم برای Database داریم Oracel رو هم داریم اما مثلا برای نگهداری یا استفاده از دیتابیس کوچک توی یک برنامه کاربردی کوچک که حجمش به چند مگ نمیرسه معمولا کسی از اوراکل استفاده نمیکنه. در همین بحث شما مقایسه کنید مثلا برای ساختن یک وبسایت که با C#‎‎‎‎ ASP.NET ساخته شده چقدر وقت و انرژی لازم هست تا در زبان C نوشته بشه.

----------


## emadrezvani

> در مورد خونریزی قلبی اینترنت نفهمیدم منظورتون دقیقا چی هست و شما  چطور  میخواید با نوشتن سیستم عامل جدید جلوی این مشکل رو بگیرید. در مورد  stuxnet هم اطلاعات زیادی ندارم اصلا نمیدونم ویروس بوده یا  تروجان در هر  حال بدافزاری بوده برای ایجاد اختلال در تاسیسات هسته ای. اگر  سیستم عامل  رو به شکل یک PlatForm یا یک لایه سرویس روی سخت افزار در نظر  بگیریم به  فرض اینکه بد افزار اومده و روی سیستم عامل ویندوز نشسته تغییر  این  platform یا لایه زیری به نظر نمیاد کار مثبت یا عاقلانه ای در جهت امن   کردن محیط باشه. البته منطق حرف به ظاهر درست هست ولی مقرون به صرفه نیست.   اینکه یک سیستم عامل کد  بسته (closed source) و Private ای باشه که کسی  از داخلش سر در نیاره که  تازه بخواد malware هم براش طراحی کنه.


من از همه دوستان بابت نظرهاشون تشکر می کنم. بنده با دانش کمی که دارم پا یه این حوزه از کامپیوتر گذاشتم و خدا رو شکر که تا اینجای کار هم کلی تجربه کسب کردم. از نقطه نظر امنیت هم نیازی به بحث و جدل که نداریم. من سالهاست با این موضوع درگیرم و بیشتر از اون افرادی که نشستن پشت و میزو میگن اینجا ما ایمن سازی کردیم و اونجا بهترین کاری کردیم و ... حرف واسه گفتن دارم.(مهم نیست ...). ( خیلی دوست دارین از خاطرات قدیم بدونین از اینجا و اینجا و .... خیلی چیزا که رو نشده و نخواهد شد رو میشه حرف زد. ) اینکه بنده میگم میشه ویندوز XP رو با یه تیم حرفه ای توی ۵ یا ۶ سال(اسمی و رسما بالاتره) داد بیرون حرف غیر منطقی نیست. (خیلی دوست دارین کد های ویندوز NT و 2000 رو واستون بزارم و تغییرات رو ببینید و بعد نظر بدید). اینکه مدت بین ۹۵ تا XP هم 6 سال بوده حرفی نیست! به نظر من ادامه دادن موضوع حاشیه ای میشه و من رسما تمام حرفایی رو که زدم تکذیب می کنم و همشون رو غیر علمی و غیر منطقی تلقی می کنم. 
بحث بسیار به حاشیه کشیده شده. من که راهم رو ادامه میدم و امیدوارم این تاپیک توسط مدیران انجمن بسته نشه. دلیل باز کردن این تاپیک هم اطلاع رسانی بوده و نهایتا بعد از ارائه اولین کد نتیجه این بحث ها رو خواهیم دید.

----------


## Delphi Coder

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

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

----------


## بابک.م.

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

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

----------


## emadrezvani

ساخت دیالوگ باکس برای نمایش داده و پیام ها. dialog1.png
توضیحات: 
http://kosaros.blog.ir/post/%D8%AF%D...A7%DA%A9%D8%B3
فیلم:
http://www.aparat.com/v/GIUo6

----------


## m.j_banitaba

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

----------


## emadrezvani

> من دوست ندارم وقتی دارم با دوشمن می جنگم گلوله از طرف سنگر خودی بهم بخوره..............................


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

----------


## pswin.pooya

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


در مورد بقیه هم مثل من میتونید بیخیال باشید. من یکی دوبار میگم طرف گوشش بدهکار نباشه. بیخیالش میشم. حالا تا دلش میخواد ...


پست های حاشیه ای بعد از این حذف خواهند شد و نویسنده اخطار میگیره

----------


## emadrezvani

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


سلام. 
گفته شد که سیستم مد آموزشی داره.قرار نیست که هسته stableی ازش بیرون بیاد و تمام قوائد یک هسته رو رعایت کنه. شاید اصلا قرا نباشه همه چیز رو  آزمایش کنیم. چند روزی هست که امتحان دارم(قبلا هم گفته شد). حافظه مجازی/مولتی تسک و فایل سیستم ها نیاز به زمان کافی برای مطالعه و  پیاده سازی داره. انشاا.. هفته دیگه حافظه مجازی رو ادامه میدم.قبلا مقداری روش کار کردم و تصاویر گویای روند کار هست.




> در مورد بقیه هم مثل من میتونید بیخیال باشید. من یکی دوبار میگم طرف گوشش بدهکار نباشه. بیخیالش میشم. حالا تا دلش میخواد ...


گوش ما هم کیپ شد و فرمایشات شما آویزه گوشمون میشه.



> پست های حاشیه ای بعد از این حذف خواهند شد و نویسنده اخطار میگیره


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

----------


## pswin.pooya

> گفته شد که سیستم مد آموزشی داره.قرار نیست که هسته stableی ازش بیرون بیاد  و تمام قوائد یک هسته رو رعایت کنه. شاید اصلا قرا نباشه همه چیز رو   آزمایش کنیم. چند روزی هست که امتحان دارم(قبلا هم گفته شد). حافظه  مجازی/مولتی تسک و فایل سیستم ها نیاز به زمان کافی برای مطالعه و  پیاده  سازی داره. انشاا.. هفته دیگه حافظه مجازی رو ادامه میدم.قبلا مقداری روش  کار کردم و تصاویر گویای روند کار هست.


نه منم نمی گم هسته stable بدید بیرون. ذاتا من هم هنوز نتونستم.

منتها خیلی از مواردی رو که الان می نویسید در آینده براشون به تداخل می خورید. مثلا ساعت باید درایور باشه یا ماوس و کی بورد. دیالوگ ها و ... بهتره که سرویس باشن.




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


این ملت براشون  دلیل علمی هم بیارید قانع نمیشن. بعد خیلی چیزها رو بی دلیل تو مغذشون فسیل کردن. مثلا میگن x86 بد هست. یکیشون نمیتونه دلیل بیاره. یا مثلا توی دانشگاه یکی از استادهام گفت C/C++‎ از رده خارج شده (جالبتر اینه که جزء به روزترین ها هست.) و بعد نتیجه فقط درگیری هست. (من شاید یکی دو نمره معدلم سر این قضایا از دست رفته باشه.) اما بعدش یاد گرفتم بجای اینکار محصول بذارم جلشون.‌(تو این حالت چیزی نمی تونن بگن. به جزء اینکه دهنشون باز باشه و عقب موندگی خودشون رو تجریه کنن) البته بازهم از رو نمی رن. بعد میگین فلانی برنامه نویس هست ما توسعه دهنده ما کارمون تحلیل و تحقیق هست (نمی دونم چه جوری برنامه نویس نشده میشن طراح). بعد طرح میذاری جلشون قفل می کنن. میگین هزینه اجرای طرح بالاست یا اینکه پیچیده هست کسی (برنامه نویس های دیگه ) درک نمی کنه. (یکی نیست بگه بابا تو نمیکشی، وگرنه پیچیده نیست. اصولیه). خلاصه کلام کم نمیارن. (ادعا دونستن مخصوص آدمهایی که نمی دونن)

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

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

----------


## emadrezvani

جواب برخی از دوستان که ایمیل زده بودند و از مدل توسعه این پروژه سوال داشتند.
http://kosaros.blog.ir/post/%D9%85%D...9%D9%87-Dialog
و البته ادامه روند dialog هم اضافه شده و حتما توصیه میکنم مشاهده کنید. بزودی طرح مسابقه برنامه نویسی در این سیستم عامل ها رو با جایزه برای شرکت کنندگان مطرح می کنیم.(فعلا در حال بررسی هستیم)

----------


## Delphi Coder

پس از محیط لینوکس شروع کردید به این کار، خوبه. Dialog Box ها رو هم خیلی خوب کار کردین. درست مثل Tubo Vision زمان DOS میمونه. اتفاقا روند درست پیش بردن پروژه هم همه چی بهتره functional باشه.
کد مربوط به Dialog Box ها و کنترل ماوس رو خودتون نوشتید؟

----------


## emadrezvani

> پس از محیط لینوکس شروع کردید به این کار، خوبه. Dialog Box ها رو هم خیلی خوب کار کردین. درست مثل Tubo Vision زمان DOS میمونه. اتفاقا روند درست پیش بردن پروژه هم همه چی بهتره functional باشه.
> کد مربوط به Dialog Box ها و کنترل ماوس رو خودتون نوشتید؟


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

----------


## emadrezvani

سلام.
در کنار توسعه هسته سیستم عامل کوثر  اعضای تیم شروع به نوشتن آموزش هایی در رابطه با توسعه سیستم عامل هستند.(۶ بخش مجزا )
همچنین یک پست در مورد عملکرد ۲ ماهه تیم ارائه دادیم: http://kosaros.blog.ir/post/%D9%85%D...AA%DB%8C%D9%85
پست های تخصصی‌ در کنار صفحه وبلاگ در بخش طبقه بندی موضوعی موجود هست.

----------


## pswin.pooya

سلام
قضیه کامپایلر  کوثر چیه؟

----------


## emadrezvani

> سلام
> قضیه کامپایلر  کوثر چیه؟


سلام.
کامپایلر به معنی نوشتن یک کامپایلر مجزا نیست. ما یک رابط گرافیکی برای ویرایش کد ها و ارتباط اون با فایل های سیستم عامل و کامپایل اون از طریق کامپایلر فعلی gcc هست. در واقع ما در حال طراحی یک SDK هستیم که کاربران درگیر نصب نرم افزارهای اضافی نباشند. 
حالا بعد از پیشرفت هم به دنبال شناسایی توابع و Syntax ها و راهنمایی online اونها خواهیم رفت.
مسلما این ایده خالی از اشکال نیست. اما این روشی هست که برای توسعه آینده در نظر گرفتیم.

----------


## MRmoon

درود.

ببخشید سورسش رو منتشر نکردید؟؟؟؟

*محمد.*

----------


## emadrezvani

> درود.
> 
> ببخشید سورسش رو منتشر نکردید؟؟؟؟
> 
> *محمد.*


سلام. مشکلی با انتشار بخش خاصی از سورس کد رو نداریم. چون مسیر فعلی آموزشی هست. سورس فعلی مشکلاتی از نظیر توضیحات و پیچیدگی بیجا داره که با بازنویسی مجدد رفع خواهد شد. ما تا نسخه 1.0.0 بصورت آزمایشی پیش خواهیم رفت. نسخه فعلی در حال توسعه 0.1.2 هست.
ممون از پیگیریتون.

----------


## pswin.pooya

> حالا بعد از پیشرفت هم به دنبال شناسایی توابع و Syntax ها و راهنمایی online اونها خواهیم رفت.


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




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


ویرایشگر c/C++‎‎‎‎ که با gcc سازگار باشه که خیلی زیاد وجود داره. به نظر من کار درستی نیست برای اینکار وقت بذارید. ویرایشگر عملا روی پروژه تاثیر خاصی نمی ذاره شما حتی با notepad هم می تونید کارها رو پیش ببرید

----------


## emadrezvani

سلام. مشکل جایی دیگست ! 



> . پیشنهاد می کنم اول با یه زبان اسکریپت شروع کنید و تحت یک سیستم عامل  حاضر مثل لینوکس و ویندوز تست بگیرید و بعد برید سراغ اینکه کامپایلر برای  نوشتن سیستم عامل طراحی کنید.


فعلا قرار به نوشتن کامپایلری مجزا نیست. کامپایلر gcc مد نظر هست. اما تا جایی که ما بررسی کردیم کمتر کسی میاد تمام ابزارهای مورد نیاز در لینوکس و ویندوز رو نصب کنه و شروع به توسعه کنه. من پیشنهادم این بود که یه IDE/SDK طراحی کنیم که به gcc متصل هست. توسعه دهنده فقط با نصب این sdk هم کامپایلر مورد نیاز رو نصب کرده و هم bochs و ... . و با اینکار فقط با کلید روی کلید run نرم افزار نوشته شده اون کامپایل شده و توسط مجازی ساز اجرا میشه.




> ویرایشگر c/C++‎‎‎‎‎ که با gcc سازگار باشه که خیلی زیاد وجود داره. به نظر  من کار درستی نیست برای اینکار وقت بذارید. ویرایشگر عملا روی پروژه تاثیر  خاصی نمی ذاره شما حتی با notepad هم می تونید کارها رو پیش ببرید


در حال حاضر تمام کدها تویط gedit لینوکس نوشته شده !! اما وجود یک sdk کاملا ضروری هست.(به دلیل اینکه اینجا ایرانه ...! )

----------


## emadrezvani

سلام. با توجه به مشغله فراوان اما بخش اولیه( همون رفع نیاز اولیه) مربوط به Dialog حل شد.
در حال حاضر امکان استفاده از چندین دیالوگ و مدیریت آنها به همراه ارسال کلید(مدیریت کلید ها که بطور مثال یک ویرایشگر هم نوشتم که در فیلم مشخص هست) تکمیل شده هست. مرحله بعد توسعه مدیر حافظه هست که خیلی وقفه برای نوشتن اون بوجود اومد. مسلما مدیر حافظه رو بصورت پایه می نویسیم و مهم دانش اون هست و فعلا درگیر الگوریتم های پیچیده و امنیت کار نمیشیم.لینک دانلود دیسک و فیلم 
kosarOS_0-1-2_Dialog_1.jpg

----------


## emadrezvani

با سلام. مدیر حافظه بصورت پایه نوشته شد. البته در مورد زمان الگوریتم ها بهینه خواهد شد اما برای شروع کافی هست.
لینک خبر: http://kosaros.blog.ir/post/%D8%A7%D...81%D8%B8%D9%87dialogManager.png
mm_kmalloc.png

----------


## emadrezvani

شروع دنیای Multitasking :
http://kosaros.blog.ir/post/%D9%87%D...1-Multitasking
newKernel_multitask.png

----------


## pswin.pooya

سلام
مطمئنی مقدایر EIP درسته؟! فکر کنم توی محاسبه اشتباه کردی.


یه مورد دیگه اینه که برای برنامه ها فقط نقطه ورودی داشته باشی کافیه لازم نیست بدونی تا کجا ادامه دارن (to)


و چرا رشد حافظه بعضی جاها منفی و بعضی جاها مثبته؟

----------


## emadrezvani

> سلام
> مطمئنی مقدایر EIP درسته؟! فکر کنم توی محاسبه اشتباه کردی.
> 
> یه مورد دیگه اینه که برای برنامه ها فقط نقطه ورودی داشته باشی کافیه لازم نیست بدونی تا کجا ادامه دارن (to)
> 
> و چرا رشد حافظه بعضی جاها منفی و بعضی جاها مثبته؟


سلام. تازه شروع به نوشتنش کردم. ایراد زیاد داره. این مقادیر آدرس های توابع هست(همون اشاره گر به آدرس تابع). دارم باهاش دست و پنجه نرم می کنم.

----------


## prpe26

gcc عالیه، و این که قرار هست در سیستم عاملتون اجراش کنید عالی تر! 
البته من شخصا LLVM رو ترجیح میدم (در FreeBSD ازش استفاده میشه و میدونید چرا ترجیحش میدم دیگه :D ) ولی gcc بسیار خوبه. 
اما یک نکته، چرا زبانهای جدید نه؟ مثلا زبان Go خیلی به C شبیه هست و شما که ماشالله انقدر واردید، فکر کنم یک صبح تا غروب وقت بزارید یادش میگیرید (http://gobyexample.com منبعی که خودم یاد گرفتم). 
کامپایلر gccgo هم هست (البته مطمئن نیستم gogcc بود یا gccgo  :لبخند گشاده!:  ) که اگر هدفتون اینه کلا gcc بیس کار کنید میتونه کمکتون کنه.

----------


## emadrezvani

جوابی واسه انتخاب چرایی gcc ندارم. شاید به دلیل اینکه ویندوز کار(صحبت دسکتاپ هست) نیستم و از اول برای کامپایل کدهام از gcc استفاده کردم. اما به مرور متوجه قدرت gcc شدم و الان شده کامپایلر پیشفرض C من!
یادم نیست واسه چی بود ولی یادمه درگیر go هم شده بودم(فکر کنم واسه یه برنامه پایگاه داده location بود!‌) اما باز gcc رو ترجیح میدم(چون فعلا مقداری مسلط هستم).



> و چرا رشد حافظه بعضی جاها منفی و بعضی جاها مثبته؟


من آدرس های توابع ام رو چاپ میکنم به منفی رشد می کنه ! چرا !؟

----------


## prpe26

دوست من، من هم ویندوزی نیستم و خیلی کم از ویندوز استفاده میکنم (دیگه از بازی نمیشه گذشت  :لبخند گشاده!:  )، ولی روی لینوکس هم سعی میکنم از gcc دوری کنم تا حد امکان (فقط برای اینکه بتونم بیشتر با BSD ارتباط برقرار کنم) ولی گفتم، gcc بسیار عالیه و کلی تجربه پشتشه، و استفاده ازش در یک سیستم عامل جدید میتونه باعث بشه سیستم عاملتون هم کلی مشتری (منظورم تجاری نیست، کلا طرفداری و استفاده منظورمه  :لبخند گشاده!: ) جمع میکنه :)

----------


## pswin.pooya

> جوابی واسه انتخاب چرایی gcc ندارم


من برای این موارد gcc رو ترجیح میدم:

۱. به روزترین کامپایلر دنیاست ( مثلا در مورد C++‎11)
۲. کراس کامپایلره 
۳. تقریبا تمام استانداردها رو پشتیبانی میکنه.
۴. الحاقی های خوب. همه کامپایلرها یکسری الحاقی دارن. منتها gcc الحاقی های واقعا خوبی از جمله دسترسی بیتی درون struct ها رو داره.
۵. میشه به کمک اون و ld از ترکیبهای زبونهای مختلف مثل java استفاده کرد.
۶. میشه خیلی راحت مراحل کامپایل رو جدا کرد. و خروجی های هر کدوم رو دید.
۷. ...

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

----------


## emadrezvani

> و چرا رشد حافظه بعضی جاها منفی و بعضی جاها مثبته؟
> 			
> 		
> 
> من آدرس های توابع ام رو چاپ میکنم به منفی رشد می کنه ! چرا !؟


حل شد. مشکل در تابع چاپ بود که itoa بصورت علامت دار به عدد نگاه می کرد.

در مورد کامپایلر هم گفتم:



> اما به مرور متوجه قدرت gcc شدم و الان شده کامپایلر پیشفرض C من!

----------


## emadrezvani

پیشرفت در Multitasking :
http://kosaros.blog.ir/post/%D9%BE%D...1-MultiTasking
pm2_win.png

----------


## abbas.oveissi

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

----------


## h264@gmx.com

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

اگر شما سیستم عامل  را بصورت متن باز می نویسید (یا قصد متن باز کردن آن را دارید) لازم است از  روشهای مرسوم در این وادی بهره بگیرید. تنها استفاده از ورژن کنترل مانند  SVN کفایت نمی کند. شما باید یک ساختار منظم منسجم جهت کنترل و ردیابی  موردها و باگها و انتصاب آنها به خطوط برنامه هایتان داشته باشد. باید از  اصول اولیه مهندسی و مدیریت پروژه استفاده کنید. وجود بخش طراحی و دیاگرام  های استاندارد UML الزامی است. در غیر این صورت رفته رفته شیرازه کار از  دست شما خارج خواهد شد و امکان بهره برداری از توانایی های بالقوه سایر  برنامه نویسان در جهان را از دست می دهید. حال که تا اینجای کار آمده اید  اکیدا توصیه می کنم از یکی از نرم افزارها یا سامانه های مدیریت و ردیابی  باگ متن باز مانند Redmine استفاده کنید. شما می توانید پروژه خود را در سایتی مانند HostedRedmine.com  و یا معادل ایرانی آن https://peygir.org ثبت و مورد پیگیری قرار دهید.

پیروز باشید


وب لاگ من:

http://delphiandroid.blog.ir


**** چرخی که برای ما نچرخد باید دوباره اختراع شود ****


برگرفته شده از delphiandroid.blog.ir

----------


## 1485159

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

----------


## emadrezvani

> خسته نباشین.
> یه سوال داشتم  
> روی سیستم واقعی هم تستش کردین؟
> اگه تست کردین از چه طریقی؟ usb؟ چطوری این کار رو انجام دادین؟ روی چتا سیستم امتحانش کردین؟


بله تست کردیم. یک image روی هارد کپی کردیم و اجرا شد(با همان خروجی مد نظر).

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

----------


## emadrezvani

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

----------


## mohammadmowlavi

کارتون عالیه

----------


## Reza Safa

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

----------


## emadrezvani

سلام. خیلی ممنون(در نظر خودم سیستم عامل بیشتر از این Firmware ما هست اما فعلا بنامیمش سیستم عامل). اهداف زیاده. آدم پای کار کم هست و متاسفانه وقتی پروژه شخصی تعریف میشه, خیلی سخت میشه به اون اهداف رسید ( مثلا موضوعات مالی و پشتیبانی کشور).
کارهای خوب دیگری مثل سیستم عامل آراکس هم قبل از این سیستم بوده و  به دوستان دیگرم هم گفتم به کدهای آزاد این سیستم عامل هم سر بزنید که از نظر تجربی خیلی میتونه مفید باشه.

----------


## aradqorbani

سورسش رو منتشر نکردی؟
خریدساعت هوشمند

----------


## Dark-Knight

اگر به مبحث توسعه سیستم عامل جدید از پایه علاقه مند هستید و در عین حال می خواهید کاربرد توسعه چنین سیستمی را هم ببینید به لینک زیر مراجعه نموده و برنامه ستاپ نسخه دمو HDDC1 را دانلود نمایید. با استفاده از این برنامه می توانید یک فلش دیسک معمولی را به یک سیستم حفاظت هارد دیسک تبدیل نمایید که دارای سیستم عامل داخلی خود به همراه نرم افزار حفاظت هارد دیسک بصورت مجتمع شده می باشد. توضیحات در فایل فشرده ستاپ موجود است. پس از قرار گیری این سیستم عامل بر روی فلش دیسک همچنان آن فلش دیسک خالی به نظر می رسد و حتی می توانید آن را فرمت کنید و بر روی آن فایل های معمولی بریزید و استفاده نمایید. فقط در هنگام بوت با آن فلش دیسک است که نرم افزار امنیتی با سیستم عامل خود کامپیوتر را بوت نموده و قابلیت فعال سازی هارد دیسک ها به نمایش در می آید.
http://www.secureware.org/persian/in...page=downloads

----------

