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

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

با سلام خدمت همه دوستان
هر چند من این سوال را اشتباه زدم
اما اگر به صورت سوال نگاه کنیم گفته شده که بافر روی "دیسک" پیاده سازی شده یعنی یک عمل IO بنابراین در هر لحظه
دو فرایند از IO استفاده می کند بنابراین بن بست روی میدهد
اما اگر بافر روی RAM پیاده سازی شده باشد بن بست روی نمی دهد
در مورد گرسنگی هم - گرسنگی زمانی رخ میدهد که پروسس نتواند از پردازنده استفاده کند ، در صورتی در این ساختار هر سه پروسس به راحتی می توانند از پردازنده استفاده کنند

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

(۱۳ اسفند ۱۳۹۰ ۱۲:۱۷ ب.ظ)n_alaie نوشته شده توسط:  با سلام خدمت همه دوستان
هر چند من این سوال را اشتباه زدم
اما اگر به صورت سوال نگاه کنیم گفته شده که بافر روی "دیسک" پیاده سازی شده یعنی یک عمل IO بنابراین در هر لحظه
دو فرایند از IO استفاده می کند بنابراین بن بست روی میدهد
اما اگر بافر روی RAM پیاده سازی شده باشد بن بست روی نمی دهد
در مورد گرسنگی هم - گرسنگی زمانی رخ میدهد که پروسس نتواند از پردازنده استفاده کند ، در صورتی در این ساختار هر سه پروسس به راحتی می توانند از پردازنده استفاده کنند


"گرسنگی زمانی رخ میدهد که پروسس نتواند از پردازنده استفاده کند" واقعا شما این رو از رو چی برداشت کردید؟ گرسنگی تو این سوال به این معنی هستش که فرایند cpu در اختیار داشته باشه اما داده ای برای مصرف وجود نداشته باشد و احتمال اینکه اینکار( گرسنه ماندن اینجا یعنی فراهم نبودن مصرف داده های بافر ( البته تو تولید هم بحث گرسنگی وجود داره) . بحث گرسنگی تو این سوال ربطی به پردازنده نداره و بر اساس استفاده از داده های بافر مطرح هستش.
"اما اگر به صورت سوال نگاه کنیم گفته شده که بافر روی "دیسک" پیاده سازی شده یعنی یک عمل IO بنابراین در هر لحظه
دو فرایند از IO استفاده می کند بنابراین بن بست روی میدهد" واقعا این رو هم از روی چه منبعی درک کردید که اگه دو فرایند از IO استفاده کنند بن بست رخ می دهد؟؟؟؟؟
ببخشید این رو میگم اما باید به مقدار تو بحث سیستم عامل بازبینی بفرماید.
میشه همزمان ۱۰۰۰ تا فرایند از IO همزمان ( البته همپوشان لغت بهتری ) و هیچ وقت هم حتی خطر بن بست به وجود نیاد.
موضوعی که تو این سوال مطرحه شکل پیاده سازی فرایند شماره ۲ هستش و ترتیب کار اون.

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

به نظر من اگر بافر ها روی یک دیسک واحد پیاده سازی شده باشند امکان وقوع بن بست وجود دارد؟
در ضمن حرف شما را هم تائید می کنم
"میشه همزمان ۱۰۰۰ تا فرایند از IO همزمان ( البته همپوشان لغت بهتری ) و هیچ وقت هم حتی خطر بن بست به وجود نیاد"

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

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

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

اما به نظرم سیستم دچار قحطی زدگی هم میشه به این دلیل:
در صورت سوال اینطوری ذکر شده که فرآیند p3 خروجی p2 را مصرف میکند و p2 خروجی p1 را، این به این معنی نیست که فرآیندها لزوما تولیدکننده و مصرف کننده اند و همچنین نباید حتما داده ای از قبلی بگیرند تا بتوانند کارشان را ادامه دهند، تنها ممکن است به داده تولیدی از مرحله قبل نیاز پیدا کنند
اما شرایط قحطی زدگی: فرآیند p2 آنقدر زودتر از p1 فعالیت کند که بافر ۲۳ پر شود و کل دیسک را اشغال کند، حال تا زمانی که فرآیند های P2 و p3 فعالیت میکنند و p2 هم به خروجی p1 نیاز نداشته باشد، p1 فضایی برای قرار دادن داده تولیدی اش نخواهد داشت در حالی که سیستم در بن بست نیست و بدین معنی که p1 دچار قحطی زدگی شده است.
(۱۳ اسفند ۱۳۹۰ ۱۲:۳۸ ب.ظ)lonelyforever نوشته شده توسط:  
(13 اسفند ۱۳۹۰ ۱۲:۱۷ ب.ظ)n_alaie نوشته شده توسط:  با سلام خدمت همه دوستان
هر چند من این سوال را اشتباه زدم
اما اگر به صورت سوال نگاه کنیم گفته شده که بافر روی "دیسک" پیاده سازی شده یعنی یک عمل IO بنابراین در هر لحظه
دو فرایند از IO استفاده می کند بنابراین بن بست روی میدهد
اما اگر بافر روی RAM پیاده سازی شده باشد بن بست روی نمی دهد
در مورد گرسنگی هم - گرسنگی زمانی رخ میدهد که پروسس نتواند از پردازنده استفاده کند ، در صورتی در این ساختار هر سه پروسس به راحتی می توانند از پردازنده استفاده کنند


"گرسنگی زمانی رخ میدهد که پروسس نتواند از پردازنده استفاده کند" واقعا شما این رو از رو چی برداشت کردید؟ گرسنگی تو این سوال به این معنی هستش که فرایند cpu در اختیار داشته باشه اما داده ای برای مصرف وجود نداشته باشد و احتمال اینکه اینکار( گرسنه ماندن اینجا یعنی فراهم نبودن مصرف داده های بافر ( البته تو تولید هم بحث گرسنگی وجود داره) . بحث گرسنگی تو این سوال ربطی به پردازنده نداره و بر اساس استفاده از داده های بافر مطرح هستش.
"اما اگر به صورت سوال نگاه کنیم گفته شده که بافر روی "دیسک" پیاده سازی شده یعنی یک عمل IO بنابراین در هر لحظه
دو فرایند از IO استفاده می کند بنابراین بن بست روی میدهد" واقعا این رو هم از روی چه منبعی درک کردید که اگه دو فرایند از IO استفاده کنند بن بست رخ می دهد؟؟؟؟؟
ببخشید این رو میگم اما باید به مقدار تو بحث سیستم عامل بازبینی بفرماید.
میشه همزمان ۱۰۰۰ تا فرایند از IO همزمان ( البته همپوشان لغت بهتری ) و هیچ وقت هم حتی خطر بن بست به وجود نیاد.
موضوعی که تو این سوال مطرحه شکل پیاده سازی فرایند شماره ۲ هستش و ترتیب کار اون.

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

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

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

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

در گرسنگی تعدادی از فرآیندها می توانند به کار خود ادامه دهند و از منابع استفاده کنند در حالی که سایرین از دسترسی به صورت دائمی منع می شوند بنابراین به نظر می رسد این سوال گرسنگی ندارد
(۱۴ اسفند ۱۳۹۰ ۱۱:۰۳ ق.ظ)abcd1234 نوشته شده توسط:  منم فکر میکردم بخاطر نداشتن شرط انتظار چرخشی تو بن بست گیر نمیکنه و فقط ممکنه دچار قحطی بشه Sad
با جوابای sadjad_t تا حدودی قانع شدم
ولی آخه مگه شرط انتظار چرخشی یکی از شروط لازم برای ایجاد بن بست نیست؟؟

انتظار چرخشی وجود دارد

فرایند اول منتظر دوم یا سوم است ( برای برداشتن داده)

فرآیند دوم منتظر سومی است

فرآیند سوم منتظر فرآیند دوم است