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

## cpuram

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

----------


## اوبالیت به بو

هیچ وقت سیستم عامل توزیع شده ساخته نشد و در حد یک ایده باقی ماند مثل برخی الگوریتم های زمانبندی مثل SJF و SRT و ....

در عوض بحث سیستم های توزیع شده استفاده گردید.

----------


## cpuram

چرا تولید نمیشه؟

----------


## pswin.pooya

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


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

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

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

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

----------


## cpuram

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

----------


## pswin.pooya

> شما الان میتونید یه سیستم عامل معرفی کنید که از دو یا چند کامپیوتر با هم استفاده کنه؟


پرسيدن سوال عيب نيست اما وقتي بشه با يه سرچ كوجولو حلش كرد نيازي به اين كار نيست:


Windows AzureLinux...
اينم يه ليست از پروژه هاي توزيع شده:
http://en.wikipedia.org/wiki/List_of...uting_projects

----------


## cpuram

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

----------


## pswin.pooya

> شما اولی رو نصب کردین؟ روی هر دو تاسیستم نصب بشه بعد شبکه کنم؟


نه متاسفانه. نه نصب و نه استفاده كردم. اما با دومي كار كردم

----------


## cpuram

ممنون .خوب لینوکس هم خوبه. یعنی عالیه. ولی نمیدونم چطوری استفاده کنم؟
باید از نسخه ابونتو استفاده کرد یا نسخه خاصی داره؟

----------


## AGTURK

اوبونتو از نسخه های معروفه لینوکس هست اما می تونید از Red Hat یا از Fedora هم استفاده کنید ، طرفدار زیاد دارن تو ایران

----------


## اوبالیت به بو

[QUOTE=pswin.pooya;1571558]
با چه اطمینانی هم میگی. درسته که ایده های توزیع شده زیادی وجود داشتن که پیاده سازی نشدن و یا امکان نداره پیاده سازی بشن اما این در مورد سیستم عاملهای توزیع شده درست نیست. ما روزانه با سیستم عاملهایی توزیع شده بسیاری از جمله لینوکس سر و کار داریم
[QUOTE]
به هیچ وجه سیستم عامل توزیع شده ای در سطح جهان پردازش های ما رو انجام نمی ده. سیستم عامل توزیع شده ای وجود نداره که نقش ماشین مجازی رو برای ما پیاده کنه. محیط توزیع شده زیاد هست اما سیستم عاملی نیست که بتونه مدیریت کنه. اصلا سخت افزارش وجود نداره چه برسه به نرم افزار.



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


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



> امروزه بحث سیستم های توزیع شده خیلی داغتر از پیش هست و این موضوع داخل کشورهایی مثل ایران و ترکیه و ... که به تکنولوژی ابر کامپیوترها دسترسی ندارن داغتر هم شده. و تلاشهای زیادی در موردش صورت گرفته. از طرف دیگه سیستم عاملهای مدرن هم دارن به این سمت حرکت می کنن. مثلا ماشین مجازی Xen داخل هسته ویرایش 3 لینوکس اومده که از جمله ویژگیهای اون پشتیبانی از محاجرت فرایند هست.


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




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


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

----------


## pswin.pooya

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


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




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


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




> به هیچ وجه سیستم عامل توزیع شده ای ساخته نشد چون یک مبحث غیر ممکن هست  با اطمینان کامل. می توان محیط (بستر شبکه) رو به محیط توزیع شده تغییر  داد.


نمی دونم شما رو چه حسابی می گید غیر ممکن. اما اگر غیر ممکن بود ما نباید حتی کتابهای این مبحث رو میدیدیم چه برسه به اینکه تدریس بشن و تحقیقات براشون انجام بشه

----------


## اوبالیت به بو

> اما واقعیت اینه که سیتسم عاملهایی از جمله لینوکس هستن که اینکار رو انجام میدن


درسته. من هم با شما هم نظرم اما این سیستم عاملی که این کار رو انجام می ده یک سیستم عامل توزیع شده نیست. یک لینوکس معمولی یا نسخه سروری هست.




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


آخه فرمودید سیستم فایل مجازی لینوکس بستری رو فراهم می کنه که کاربر (نرم افزار یا انسان) به شکل یکسان به موجودیتی به نام فایل نگاه کنه. یکم من بد توضیح دادم شاید. تننبام خودش می گه:
the file is an imaging concept.
یک چیز غیر واقعی هست. اصلا مفهومی که ما فکر می کنم وجود نداره مثلا فایل را باز کنید یا ببندید ... اصلا وجود نداره یک همچین چیزی. سیستم عامل به عنوان یک ماشین مجازی اینجا وارد میشه و یک لباسی بر تن سخت افزار به تن می کنه. اگر قرار بود که به عنوان موجودیت های جداگانه بهشون نگاه بشه عملکرد های مربوط به بایت های دیجیتالی (تصویر، فیلم، موزیک - با تمام فرمت های موجود تصور کنید) کنترلشون غیر ممکن بود.لذا مفهوم فایل رو میاره وسط و می گه کاربر (برنامه نویس، انسان، نرم افزار یا ...) تو فقط فایل را می شناسی. باز کن بنویس ببند و ... در حالیکه همه اینها خودتون می دونید وجود نداره. مفهوم ماشین مجازی مفهوم مدیر منابع. اینها در یک پردازنده بود.
سیستم فایل مجازی لینوکس نیز در محیط شبکه شامل چندین پردازنده رو تصور کنید. چندین ماشین. ما متوجه نمی شیم که همه بالانس هستند فکر می کنیم سیستم عامل توزیع شده ای وجود داره و اون داره برای ما این کار رو انجام می ده در حالیکه اصلا اینطور نیست. چرا وقتی کلمه توزیع شده مطرح می شه باید کلمه "شفاف" رو حتما بعدش به کار برد؟ تننبام خودش می گه a transparency environment



> نمی دونم شما رو چه حسابی می گید غیر ممکن. اما اگر غیر ممکن بود ما نباید  حتی کتابهای این مبحث رو میدیدیم چه برسه به اینکه تدریس بشن و تحقیقات  براشون انجام بشه


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

----------


## اوبالیت به بو

معذرت می خوام این نقل قول رو فراموش کردم:




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


پس اصلا مساله حل نشده. مساله یا حل میشه یا نمیشه. شما نمی تونید بگید یه ذره حل شده. این طرز فکر شما من رو یاد یک مساله ای انداخت که نمی دونم بهش دقت کردید یا نه. در بحث مربوط به Mutual exclusion جناب سیلبرشاتس با اون راه حلی که ارائه می ده باعث خنده خیلی ها میشه. بزرگ الگوریتم و نرم افزار جهان دکسترا باز میاد یه کمکی می کنه و یک مقاله ای می ده. با استفاده از اون مقاله تننبام میاد مساله قفل برای دو پردازش رو مطرح می کنه. بعد در کتابش می گه : The problem is solved.
دقیقا همین حالی که الان شما دارید یعنی همین صحبتی که می فرمایید. بله همینطوره اما تو اون لحظه جناب تننبام راه حلی رو می ده برای فقط و فقط 2 پردازش. این سوال رو از خودش نمی پرسه که کدام کامپیوتری در جهان وجود دارد که فقط 2 پردازش را مدیریت کند؟ کامپیوتر شامل هزاران پردازش است. آیا باز میشه گفت مساله حل شده است؟

----------


## pswin.pooya

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




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


خب دوست من مثلا اگر شما سیستمی قابل پیش بینی داشته باشید ( به عنوان مثال یه سیستم با تسک های کاملا ثابت ) میشه برای الگوریتمهای نظیر sjf هم پیاده سازی داشت. این قضیه کاملا بسته به شرایط هست. بیند شاید شما وقتی به PCتون نگاه می کنید این قضیه خنده دار باشه اما زمانی که بحث یک سیستم دقیق هست تا کلاکهای برنامه ها هم محاسبه میشه و در این شرایط میشه در مورد خیلی چیزها پیش بینی کرد. دیدتون رو باید به کامپیوترها وسیعتر از این بکنید که یه سیستم وینوز و یا مک و ... هست. 

در مورد سیستم عاملهای توزیع شده و ماشین مجازی هم باید بگم که فعلا سیستم عاملهای زیادی بصورت لایه ماشین مجازی ارائه شدن که میشه به مدلهای اولیه IBM تا سیستم عاملهای مدرنی مثل لینوکس با هسته 3 اشاره کرد که ماشین مجازی xen رو داخل خودش داره. امروزه به شکل کاملا واضح ما شاهد سیستم های توزیع شده نظیر کلاسترها، ابرها و ... هستیم که نیازمندی کار با اونها سیستم عاملهای توزیع شده هست و یا حداقل پلتفرمهایی که از اونها پشتیبانی کنند. از نمونه های بارز میشه به Azure و لینوکس اشاره کرد و به غیر از اونها میان ابزارهای بسیاری هم وجود داره. 

اما بحث سیستم فایل مجازی. در مورد سیستم فایل مجازی باید بگم هدف اصلی ارائه یک ساختار یک نواخت از کل سیستم هست. مثلا سعی میشه که نحوه کار شما با خود درایور cd-rom و یا فایل درون درایور کاملا یک ریخت باشه. به عنوان مثال شما هم می تونید یک فایل بر روی پارتیشن اولتون باز کنید. هم خود پارتیشن اول رو باز کنید (مثلا sda1) و یا اینکه خود محتویات هارد رو از بیت اول  رو باز کنید و بخونید. برای تمامی اینها یک سیستم کاملا یک ریخت ارائه شده. که نتیجه اون راحتر کردن کار برنامه نویس و افزایش قابلیت حمل برنامه است. خب زمانی که یونیکس و به تبع آن لینوکس و ... روی کار آمدند هنوز ایده سیستم عاملهای توزیع شده تا این حد داغ و کامل نیوده اما همونطوری که دیده میشه همون برنامه نویسها بعدا در پروژه ای به اسم Plan9 سعی در تکمیل ایده های خود کردند. مثلا مواردی رو مثل union directory معرفی کردند و یا اینکه کل سیستم شبکه رو هم به صورت فایل در آوردند. خب نتیجه این امر باعث شد که حالا برای برنامه فرق نکنه که فایل روی کدوم سیستم و یا کجا قرار داره و فایل تنها با آدرس دهی بتونه به فایلش هر جای دنیا که باشه دسترسی پیدا کنه.

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




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


اینجا به یه نکته دقت نکردی. اولا هیچ کس به کس دیگه نمی خنده. ثانیا هیچ پردازنده ای در دنیا نیست که همزمان 10 تا تسک سوئیچ کنه. همه از یه تسک به یکی دیگه میرن. یعنی دو تا تسک سوئیچ میشه. البته من نمی دونم کدوم مورد رو دارید بهش اشاره می کنید. اما مطمئن باشید اگر تتباوم گفته باشه که مساله حل شده بدونید که ok هست. لااقل ایشون تجربه نوشتن OS رو داشته و روی هوا چیزی رو با خوندن تئوری نگفته. سعی کنید مسائل رو پیاده سازی کنید و بعدش با آزمایش دقیق اگر تونستید برای اونها مثال نقض بیارید در این حالت شما هم می تونید یه ایده و در نتیجه یه مقاله hot paper بدید که من نظریه فلانی رو زیر سوال بردم وگرنه کاری کنید حرفتون خریدار نخواهد داشت.





> the file is an imaging concept.


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




> یک چیز غیر واقعی هست. اصلا مفهومی که ما فکر می کنم وجود نداره مثلا فایل را باز کنید یا ببندید ... اصلا وجود نداره یک همچین چیزی


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




> سیستم فایل مجازی لینوکس نیز در محیط شبکه شامل چندین پردازنده رو تصور  کنید. چندین ماشین. ما متوجه نمی شیم که همه بالانس هستند فکر می کنیم  سیستم عامل توزیع شده ای وجود داره و اون داره برای ما این کار رو انجام می  ده در حالیکه اصلا اینطور نیست. چرا وقتی کلمه توزیع شده مطرح می شه باید  کلمه "شفاف" رو حتما بعدش به کار برد؟ تننبام خودش می گه a transparency  environment


بازهم اشتباه میکنی. جالبه بدونی که چیزی رو که داری بهش ایراد میگیری سالیان سال هست که توسط یک میلیون سرور گوگل و یا 60 هزار سرور یاهو و ... استفاده میشه و کسی هم مشکلی باهاش نداره. 


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

میدونی چند تا موضوع وجود داره. 
1. الگوریتمی بیخودی تولید نمیشه و اگر هم تولید شه حداقل در کتابها و یا نشریات مطرح به چاپ نمی رسه.
2. نتیجه بسیاری از الگوریتم برای شرایط خاصی صدق میکنه که بهش میگن فرضیات مساله مثلا sjf میگه فرض من اینه که زمان اجرا رو میدونم.
3. علم بیخودی به وجود نمیاد که کاربرد نداشته باشه ( حداقل در زمینه فنی مهندسی )
4. خواهشا و بازهم خواهشا با فرضیات مساله ای رو مطرح نکنید سعی کنید پیاده سازی کنید، جواب بگیرید و اگر اشتباهی بود خیلی راحت می تونید به اولیت ژورنال معتبر بفرستید و کلی اعتبار عملی و ... کسب کنید. و دیگه نیازی به بحث در این مورد نیست.
5. سعی کنید با چهرهای علمی برخورد مناسبی داشته باشید. مثلا دیجسترای که میگید بنیان گزار الگوریتمهای بسیار مهمی از جمله الگوریتم تخصیص حافظه ای است که الان در سیستم عاملهای مثل یونکس و لینوکس و ... استفاده میشه و یا آقای تتباوم یکی از مفاخر بزرگ کشورش (هلند) هست که خدمتی بزرگی رو در حق برخی ها از جمله من و شما کرده. 

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

----------


## اوبالیت به بو

درود بر شما




> خب دوست من مثلا اگر شما سیستمی قابل پیش بینی داشته باشید ( به عنوان مثال  یه سیستم با تسک های کاملا ثابت ) میشه برای الگوریتمهای نظیر sjf هم  پیاده سازی داشت. این قضیه کاملا بسته به شرایط هست. بیند شاید شما وقتی به  PCتون نگاه می کنید این قضیه خنده دار باشه اما زمانی که بحث یک سیستم  دقیق هست تا کلاکهای برنامه ها هم محاسبه میشه و در این شرایط میشه در مورد  خیلی چیزها پیش بینی کرد. دیدتون رو باید به کامپیوترها وسیعتر از این  بکنید که یه سیستم وینوز و یا مک و ... هست.


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




> در مورد سیستم عاملهای توزیع شده و ماشین مجازی هم باید بگم که فعلا سیستم  عاملهای زیادی بصورت لایه ماشین مجازی ارائه شدن که میشه به مدلهای اولیه  IBM تا سیستم عاملهای مدرنی مثل لینوکس با هسته 3 اشاره کرد که ماشین مجازی  xen رو داخل خودش داره. امروزه به شکل کاملا واضح ما شاهد سیستم های توزیع  شده نظیر کلاسترها، ابرها و ... هستیم که نیازمندی کار با اونها سیستم  عاملهای توزیع شده هست و یا حداقل پلتفرمهایی که از اونها پشتیبانی کنند.  از نمونه های بارز میشه به Azure و لینوکس اشاره کرد و به غیر از اونها  میان ابزارهای بسیاری هم وجود داره.


این ابزار ها در محیط های توزیع شده پخش شده اند اما سیستم عامل توزیع شده ای اینها رو مدیریت نمی کنه. ابر ها به صورت توزیع شده پردازش *می کنند* اما به صورت توزیع شده مدیریت نمی کنند. اون سیستم مادری که در نهایت یک خروجی از پردازش به ما نشون می ده یک سیستم عامل ساده روش نصبه. مطمئن باشید.




> اما بحث سیستم فایل مجازی. در مورد سیستم فایل مجازی باید بگم هدف اصلی  ارائه یک ساختار یک نواخت از کل سیستم هست. مثلا سعی میشه که نحوه کار شما  با خود درایور cd-rom و یا فایل درون درایور کاملا یک ریخت باشه. به عنوان  مثال شما هم می تونید یک فایل بر روی پارتیشن اولتون باز کنید. هم خود  پارتیشن اول رو باز کنید (مثلا sda1) و یا اینکه خود محتویات هارد رو از  بیت اول  رو باز کنید و بخونید. برای تمامی اینها یک سیستم کاملا یک ریخت  ارائه شده. که نتیجه اون راحتر کردن کار برنامه نویس و افزایش قابلیت حمل  برنامه است. خب زمانی که یونیکس و به تبع آن لینوکس و ... روی کار آمدند  هنوز ایده سیستم عاملهای توزیع شده تا این حد داغ و کامل نیوده اما  همونطوری که دیده میشه همون برنامه نویسها بعدا در پروژه ای به اسم Plan9  سعی در تکمیل ایده های خود کردند. مثلا مواردی رو مثل union directory  معرفی کردند و یا اینکه کل سیستم شبکه رو هم به صورت فایل در آوردند. خب  نتیجه این امر باعث شد که حالا برای برنامه فرق نکنه که فایل روی کدوم  سیستم و یا کجا قرار داره و فایل تنها با آدرس دهی بتونه به فایلش هر جای  دنیا که باشه دسترسی پیدا کنه.


بله درسته.




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


نمی تونم منظورم رو منتقل کنم یا شما رو قانع کنم. حتما همین موردی هست که شما می فرمایید.




> اینجا به یه نکته دقت نکردی. اولا هیچ کس به کس دیگه نمی خنده. ثانیا هیچ  پردازنده ای در دنیا نیست که همزمان 10 تا تسک سوئیچ کنه. همه از یه تسک به  یکی دیگه میرن. یعنی دو تا تسک سوئیچ میشه. البته من نمی دونم کدوم مورد  رو دارید بهش اشاره می کنید. اما مطمئن باشید اگر تتباوم گفته باشه که  مساله حل شده بدونید که ok هست. لااقل ایشون تجربه نوشتن OS رو داشته و روی  هوا چیزی رو با خوندن تئوری نگفته. سعی کنید مسائل رو پیاده سازی کنید و  بعدش با آزمایش دقیق اگر تونستید برای اونها مثال نقض بیارید در این حالت  شما هم می تونید یه ایده و در نتیجه یه مقاله hot paper بدید که من نظریه  فلانی رو زیر سوال بردم وگرنه کاری کنید حرفتون خریدار نخواهد داشت.


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




> شما منظورش رو بد متوجه شدید. فایل یک مفهوم انتزاعی از موجودینی است که  یک جا قرار داره. خب من واقعا نمی دونم کجای این مفهوم با سیستم یک ریخت و  اینا مشکل داره؟!


هیچ مشکلی. من هم نقد نکردم. گفتم یک مفهوم هست.




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


بهتر از من توضیح دادید قانع شدم.




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


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

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




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


دکسترا، تننبام و نیومن پیامبران این دنیا هستند. خدماتی که دکسترا به دنیای کامپیوتر کرد هیچ انسان دیگه ای نکرد. تاریخ رو بخونید. هر وقت، هر وقت و هر وقت در دنیای الگوریتم به مشکل خوردیم دکسترا اون رو حل کرده. مردی که بیش از 8 الگوریتم بنیادی عرضه کرد. هر حوزه ای بگید این بشر خدمت کرد. الگوریتم کوتاه ترین مسیر در شبکه، اختراع روش برنامه نویسی ساخت یافته، مبحث نخ ها، در همین سیستم عامل یکی از کسانی بود که در دهه 1960 مبحث صفحه بندی حافظه (Paging) رو مطرح کرد چیزی که ویندوز از نسخه 95 یا 98 به بعد ازش استفاده کرد. در همین سیستم عامل سمافور رو مطرح کرد. ما مبحثی داریم به اسم بن بست که هیچ وقت حل نشد و نخواهد شد اما همین دکسترا روشی رو برای مدیریت منابع در حدود 40 سال پیش ارائه کرد به نام الگوریتم بانکدار که هر سیستم عاملی ازش استفاده کنه هیچ وقت به بن بست نمی خوره. خیلی الگوریتم های دیگه.
 جناب تننبام بزرگ سیستم عامل جهان، استاد سازنده لینوکس و خیلی های دیگه. پل نیومن بزرگ معماری کامپیوتر با خدمات فوق العاده ای که ارائه کرد. من فوق العاده برای این اشخاص احترام قائل هستم. شما اشتباه برداشت کردید.

----------


## pswin.pooya

> این ابزار ها در محیط های توزیع شده پخش شده اند اما سیستم عامل توزیع شده  ای اینها رو مدیریت نمی کنه. ابر ها به صورت توزیع شده پردازش *می کنند*  اما به صورت توزیع شده مدیریت نمی کنند. اون سیستم مادری که در نهایت یک  خروجی از پردازش به ما نشون می ده یک سیستم عامل ساده روش نصبه. مطمئن  باشید.


خب میشه گفت تقریبا متوجع شدم که مشکل از کجاست. اگر اشتباه نکنم شما می گید که یک سیستم وجود نداره که چندین کامپیوتر رو همزمان مدیریت کنه در حقیقت به همچین سیستم هایی centlized گفته میشن که فقط برای منابع خاصی عرضه میشن و بشدت کارایی کمی دارن. منتهای کار اینجاست که اکثر سیستم های توزیع شده در سطح یک سیستم حداقل یک سیستم عامل دارن که یکی از وظایف اون سیستم عامل و یا سرویسهای اون همزمان سازی و یا انجام کارهایی مثل محاجرت فرایند ها است. به عنوان مثال لینوکس برای همگام سازی از سرویس ntp استفاده میکنه. و یا اینکه داخل plan9 همون ایده union dicrectory برای شفاف سازی فایل سیستم مطرح شده و ... در حقیقت سیستم عاملهایی مثل لینوکس زمانی که به صورت توزیع شده کار میکنند تمام کنترل منابع رو بصورت محلی انجام میدن و با اعمالی مثل مهاجرت و ... ممکنه یک منبع یا پردازش رو در اختیار دیگری برای هر دلیلی مثل load balancing بدن. بارزترین نمونه این سیستم ها گوگل هست که سیستم فایل انحصاری خودش رو داره و در تمام کره خاکی پخش شده در عین حال هر یک از سرورها سیستم عامل خودشون رو دارن که کار همگام سازی و ... رو انجام میده به مثلا گوگل از هر فایل سه نسخه تهیه میکنه و جالبتر اینه که فایلها رو روی حافظه اصلی (رم) نگهداری میکنه.  در حقیقت فقط یک سیستم عامل وجود نداره تعدادی زیادی سیستم عامل هستند که باهم کار میکنند.

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

----------


## اوبالیت به بو

آفرین برادر  :لبخند گشاده!:

----------


## nimak2

تورنت یه سیستم عامل توزیع شدست.. اصلا چرا راه دور بریم . web یه سیستم عامل توزیع شدست

----------


## nimak2

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

----------


## اوبالیت به بو

> تورنت یه سیستم عامل توزیع شدست.. اصلا چرا راه دور بریم . web یه سیستم عامل توزیع شدست


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




> همین که شما نمیدونی واقعا سرور یاهو کجاست. یا کدوم سرورش داره بهت پاسخ میده یا اصلا چند تا سرور داره.. یعنی شفافیت بالا(trancparency )


کاملا درسته



> به این میگن یه سیستم عامل توزیع شده


خیر



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


بله به این می گن سیستم توزیع شده.
بله

----------


## nimak2

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

----------

