تالار گفتمان مانشت
چالش بزرگ -سوال ۷۱ سیستم عامل -دکتر حقیقت - نسخه‌ی قابل چاپ

صفحه‌ها: ۱ ۲
چالش بزرگ -سوال ۷۱ سیستم عامل -دکتر حقیقت - lonelyforever - 10 اسفند ۱۳۹۰ ۱۲:۱۰ ق.ظ

دوستان عزیز بعضی ها شما ممکن بر اساس چیزی که حفظ کردید و واقعا خودتون هرگز به اثباتش نرسیدید گزینه های بوجود آمدن بن بست رو زده باشید
همه اشاره به حل این سوال توسط جناب دکتر حقیقت در کتاب پارسه آن هم چز سوالهای IT پارسال است.
[attachment=3083]
ایشون حتی به این فکر نکرده اند که پیاده سازی مصرف کننده و تولید کننده بودن پروسس شماره ۲ به چه نحوی بوده .اگه حتی بوسیله یه نخ پیاده سازی شده باشد باز در صورت سوال مطرح نشده که آیا اول کد مصرف کننده وجود داره یا تولید کننده.
همه دوستان کورکورانه به این حل ایشون اشاره می کنن. از صاحب نظران سیستم عامل خواهش می کنم وارد شوید تو این مسله
شما بفرمایید پروسس شماره ۲ بر چه اساسی کار می کنه ؟ آیا بوسیله دوتا نخ پیاده سازی شده ؟
شما بفرمایید وقتی سوال هیچ اشاره ای به نوع نخ بندی نکرده است چه باید کرد؟
اینجا هم مثل درخت که نیست بگم پیش فرض نخ بندی سطح هسته یا سطح کاربر یا بوسیله پروسس های سبک وزن هستش. باید در صورت سوال مطرح می کرد. بعدش هم شما فرض کنید سطح هسته یا بوسیله پروسس های سبک وزن ( که سیستم عامل های کنونی از آن استفاده می کنند) فرض کنید فرایند اول کل بافر را پر می کند. و سپس فرایند دوم اجرا میشود ( فرایند دوم از دو نخ ، یک نخ تولید کننده و یه نخ مصرف کننده تشکلیل شده است) در صورتی که نخ تولید کنند بخواد شروع کنه وقتی کل بافر پر شده نمی تواند کار کند ( استدلال دوستان این است که اینجا به بن بست می خورد ) اما چرا در نظر نمی گیرید که با بلوکه شدن نخ تولید کننده می توان به نخ مصرف کننده سویچ کرد و این نخ هم از بافر استفاده می کنه . در بدترین حالت دچار گرسنگی برای پروسس شماره ۳ می شود.

معرفت - سوال ۷۱ سیستم عامل - askary_amir69 - 10 اسفند ۱۳۹۰ ۰۳:۰۲ ق.ظ

بر اساس تست پارسال که جواب مشخصه و بن بست داره و گرسنگی نداره ! ولی نظر شخصی من این هست که هم گرسنگی داره هم بن بست ! چون اصولا سیستمی که تو بن بست گیر کنه خب براش گرسنگی پیش میاد دیگه !

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

خیلی ممنون

معرفت - سوال ۷۱ سیستم عامل - lonelyforever - 10 اسفند ۱۳۹۰ ۱۰:۲۹ ق.ظ

باز که شما هم حفظ کردید.
خوب شما میگید پروسس ۲ میخواد استفاده کنه !!!! وقتی میخواد استفاده کنه از چی استفاده می کنه !!! از داده های توی بافر ۱۲ . و جا خالی میشه که برای بافر ۲۳/ دقت کنید لطفا

RE: معرفت - سوال ۷۱ سیستم عامل - samira - 10 اسفند ۱۳۹۰ ۱۱:۱۴ ق.ظ

(۱۰ اسفند ۱۳۹۰ ۱۰:۲۹ ق.ظ)lonelyforever نوشته شده توسط:  باز که شما هم حفظ کردید.
خوب شما میگید پروسس ۲ میخواد استفاده کنه !!!! وقتی میخواد استفاده کنه از چی استفاده می کنه !!! از داده های توی بافر ۱۲ . و جا خالی میشه که برای بافر ۲۳/ دقت کنید لطفا

سلام
متاسفانه من هم مثل شما اشتباه زدمSad
ولی به گفته دوست قبلی ،توجه کنید.
اگه قبل از اینکه پروسس ۲ بخواد از بافر ۱۲ استفاده کنه ،دستوری وجود داشته باشه که نیاز به بافر ۲۳ داشته باشه ،پس بن بست رخ میده

معرفت - سوال ۷۱ سیستم عامل - lonelyforever - 10 اسفند ۱۳۹۰ ۰۲:۴۶ ب.ظ

ببینید من باز روی این فکر کردم
شما میگید پروسس ۲ از دو قسمت تولید کننده ومصرف کننده تشکلیل شده میشه بفرمایید ترتیب کد انها چه جوری؟
ایا فقط یه نخ هست؟
فرض کنیم بوسیله دو نخ پیاده سازی شده باشد یه نخ برای تولید۳۲ و یه نخ برای مصرف بافر ۱۲/
طبق فرض شما فرایند شماره ۱ بافر رو کامل پر میکنه
نوبت به فرایند ۲ میرسه اون هم نخ تولید کننده و وقتی می بینه جای وجود نداره بلوک میشه . خوب اگه نخ اول بلوک بشه و در حالتی باشه ( نخ بندی سطح کاربر نباشد ، یا سطح هسته یا همون حالت سوم "فرایند سبک وزن") ایا امکان نداره که سویچ بشه به نخ مصرف کننده فرایند شماره ۲ ؟

واقعا این یه چالش هستش. لطفا جواب بدید.

RE: معرفت - سوال ۷۱ سیستم عامل - samira - 10 اسفند ۱۳۹۰ ۰۳:۴۶ ب.ظ

(۱۰ اسفند ۱۳۹۰ ۰۲:۴۶ ب.ظ)lonelyforever نوشته شده توسط:  ببینید من باز روی این فکر کردم
شما میگید پروسس ۲ از دو قسمت تولید کننده ومصرف کننده تشکلیل شده میشه بفرمایید ترتیب کد انها چه جوری؟
ایا فقط یه نخ هست؟
فرض کنیم بوسیله دو نخ پیاده سازی شده باشد یه نخ برای تولید۳۲ و یه نخ برای مصرف بافر ۱۲/
طبق فرض شما فرایند شماره ۱ بافر رو کامل پر میکنه
نوبت به فرایند ۲ میرسه اون هم نخ تولید کننده و وقتی می بینه جای وجود نداره بلوک میشه . خوب اگه نخ اول بلوک بشه و در حالتی باشه ( نخ بندی سطح کاربر نباشد ، یا سطح هسته یا همون حالت سوم "فرایند سبک وزن") ایا امکان نداره که سویچ بشه به نخ مصرف کننده فرایند شماره ۲ ؟

واقعا این یه چالش هستش. لطفا جواب بدید.

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

معرفت - سوال ۷۱ سیستم عامل - pos - 11 اسفند ۱۳۹۰ ۱۲:۳۸ ق.ظ

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

معرفت - سوال ۷۱ سیستم عامل - lonelyforever - 11 اسفند ۱۳۹۰ ۰۱:۰۹ ق.ظ

(۱۱ اسفند ۱۳۹۰ ۱۲:۳۸ ق.ظ)pos نوشته شده توسط:  من هم همان گزینه ای را زدم که شما زدین. ولی فکر می کنم سنجش گزینه درست را اعلام کرده. اگر جوابی که تو کتاب آقای حقیقت آمده بخوانین فکر کنم مشکل حل بشه
خوندم اما نوشته های ایشون که وحی منزل که نیست.
لطفا شما تحلیل من رو بخوانید و یه جواب بدید . جواب حفظی نه . جوابی بر اساس استدلال و منطق

معرفت - سوال ۷۱ سیستم عامل - pos - 11 اسفند ۱۳۹۰ ۰۲:۱۳ ق.ظ

یعنی جواب ایشان منطقی نبود؟

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

RE: معرفت - سوال ۷۱ سیستم عامل - lonelyforever - 11 اسفند ۱۳۹۰ ۱۱:۴۰ ق.ظ

(۱۱ اسفند ۱۳۹۰ ۰۲:۱۳ ق.ظ)pos نوشته شده توسط:  یعنی جواب ایشان منطقی نبود؟

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

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

چالش بزرگ -سوال ۷۱ سیستم عامل -دکتر حقیقت - sadjad_t - 11 اسفند ۱۳۹۰ ۰۱:۱۴ ب.ظ

منم تا همین چند لحظه پیش فکر می کردم که این سوال غلطه. ولی الان کاملا توجیه شدم!
ببین این حالتی که توی کتاب توضیح داده یه همچین چرخه ی انتظاری رو ایجاد می کنه:
P2->P3->P2
نکته کلیدی حل اینه که ممکنه P2 یه محصول P1 رو از روی بافر برداره اما بلافاصله محصول خودش رو در بافر نذاره! یعنی دوباره کنترل اجرا به P1 برگرده و اون یه جای خالیه که P2 برای خودش ایجاد کرده رو پر کنه! بدین صورت P2 منتظره که P3 بافرو خالی کنه در حالی که چیزی براش تولید نکرده!
نکته دیگه هم اینه که این مسئله با مسئله تولیدکننده مصرف کننده کلا متفاوته! در اون مسئله ما پردازه‏های مختلف از نوع تولیدکننده و مصرف کننده داریم! اینجا ما کلا ۳ تا پردازه داریم که همه تک نسخه این! بنابراین گرسنگی و این‏ها معنی نداره اصلا توش!
امیدوارم متوجه شده‏باشی دوست عزیز!

RE: چالش بزرگ -سوال ۷۱ سیستم عامل -دکتر حقیقت - lonelyforever - 11 اسفند ۱۳۹۰ ۰۱:۲۱ ب.ظ

(۱۱ اسفند ۱۳۹۰ ۰۱:۱۴ ب.ظ)sadjad_t نوشته شده توسط:  منم تا همین چند لحظه پیش فکر می کردم که این سوال غلطه. ولی الان کاملا توجیه شدم!
ببین این حالتی که توی کتاب توضیح داده یه همچین چرخه ی انتظاری رو ایجاد می کنه:
P2->P3->P2
نکته کلیدی حل اینه که ممکنه P2 یه محصول P1 رو از روی بافر برداره اما بلافاصله محصول خودش رو در بافر نذاره! یعنی دوباره کنترل اجرا به P1 برگرده و اون یه جای خالیه که P2 برای خودش ایجاد کرده رو پر کنه! بدین صورت P2 منتظره که P3 بافرو خالی کنه در حالی که چیزی براش تولید نکرده!
نکته دیگه هم اینه که این مسئله با مسئله تولیدکننده مصرف کننده کلا متفاوته! در اون مسئله ما پردازه‏های مختلف از نوع تولیدکننده و مصرف کننده داریم! اینجا ما کلا ۳ تا پردازه داریم که همه تک نسخه این! بنابراین گرسنگی و این‏ها معنی نداره اصلا توش!
امیدوارم متوجه شده‏باشی دوست عزیز!

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

RE: چالش بزرگ -سوال ۷۱ سیستم عامل -دکتر حقیقت - sadjad_t - 11 اسفند ۱۳۹۰ ۰۱:۵۱ ب.ظ

(۱۱ اسفند ۱۳۹۰ ۰۱:۲۱ ب.ظ)lonelyforever نوشته شده توسط:  
(11 اسفند ۱۳۹۰ ۰۱:۱۴ ب.ظ)sadjad_t نوشته شده توسط:  منم تا همین چند لحظه پیش فکر می کردم که این سوال غلطه. ولی الان کاملا توجیه شدم!
ببین این حالتی که توی کتاب توضیح داده یه همچین چرخه ی انتظاری رو ایجاد می کنه:
P2->P3->P2
نکته کلیدی حل اینه که ممکنه P2 یه محصول P1 رو از روی بافر برداره اما بلافاصله محصول خودش رو در بافر نذاره! یعنی دوباره کنترل اجرا به P1 برگرده و اون یه جای خالیه که P2 برای خودش ایجاد کرده رو پر کنه! بدین صورت P2 منتظره که P3 بافرو خالی کنه در حالی که چیزی براش تولید نکرده!
نکته دیگه هم اینه که این مسئله با مسئله تولیدکننده مصرف کننده کلا متفاوته! در اون مسئله ما پردازه‏های مختلف از نوع تولیدکننده و مصرف کننده داریم! اینجا ما کلا ۳ تا پردازه داریم که همه تک نسخه این! بنابراین گرسنگی و این‏ها معنی نداره اصلا توش!
امیدوارم متوجه شده‏باشی دوست عزیز!

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

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

چالش بزرگ -سوال ۷۱ سیستم عامل -دکتر حقیقت - lonelyforever - 11 اسفند ۱۳۹۰ ۰۲:۵۰ ب.ظ

مرسی و ممنون که با دقت نوشته ها و این چالش ذهنی که پیش امده بود رو خوندید و دقت کردین جناب sadjad_t
واقعا سپاسگذارام. من قبول دارم با این فرضیات که من درذهن داشتم سیستم دچار بن بست نمی شود و به نوشته ها و فرضیات شما که نزدیکتر به صورت سوال هستش احترام میگذارم.به هر حال ما باید از خودمون شروع کنیم و تو ساختاری که بزرگ شدیم با مفاهیم دمکراسی و بحث مثبت زیاد آشنامون نکردن اما من اینجا صادقانه میگم هرچند این بر خلاف خواسته ذهنی من هستش اما صاقانه میگم که فرضیاتی که شما ارائه دادید به صورت سوال نزدیکتره از فرضیات ذهن من. البته هنوز هم تا حدودی اعتقاد دارم که این سوال یه مقدار ناقص طرح شده نمونه اش همون ترتیب "اینجای چیزی مطرح نشده که حتما فرایند ۲ برای تولید داده برای فرایند ۳ باید حتما از داده های تولید شده توسط فرایند ۱ استفاده کنه" و یا همون صحبت شما " اگه فرایند ۲ شروع کننده باشه و ... چند تا اشکال از این حدود "

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

چالش بزرگ -سوال ۷۱ سیستم عامل -دکتر حقیقت - lonelyforever - 11 اسفند ۱۳۹۰ ۰۵:۳۹ ب.ظ

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