تالار گفتمان مانشت
الگوریتم جایگزینی صفحه (Clock) - نسخه‌ی قابل چاپ

الگوریتم جایگزینی صفحه (Clock) - joyebright - 14 اسفند ۱۳۹۴ ۰۸:۴۷ ب.ظ

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

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

ممنون میشم ، راهنمایی کنید( فقط لطفاً همین مثال مشخص !)

[تصویر:  398072_photo_2016_03_04_19_29_20.jpg]

RE: الگوریتم جایگزینی صفحه (Clock) - MiladCr7 - 15 اسفند ۱۳۹۴ ۰۴:۲۹ ب.ظ

سلام خسته نباشید .راستش من دقیقا این الگوریتم یادم نمونده ولی تا جایی که یادمه هر صفحه ای که بیت R براش ۱ بود یک شانس مجدد بهش میدادیم و بعدش بیت R رو براش صفر میکردیم الان وقتی صفحه ۵ رو اولین بار وارد میکنیم بیت R صفحه ۲ یک هستش پس یه شانس مجدد بهش میدیم و بیتش رو هم ۰ میکنیم و اشاره گر رو جلو میبریم که توی روش شما اومدید صفحه ۵ رو جایگزین صفحه ۳ کردید ولی فک کنم اینجا اینجوریه که بیت R برای صفحه ۳ هم ۱ هستش پس یه فرصت هم به این صفحه میدیم و بیتش رو ۰ میکنیم و برای صفحه سوم هم همینطور و الان اشاره گر ی دور کامل زده و مجددا ب خونه اول برگشته که صفحه شماره ۲ اونجا هستش و بیت R هم براش ۰ هستش پس صفحه ۵ جایگزین این صفحه میشه و اشاره گر ب خونه بعدی اشاره میکنه که بیت اون خونه هم ۰ هستش صفحه سماره ۲ اینبار جایگزین صفحه شماره ۳ میشه و به همین ترتیب

RE: الگوریتم جایگزینی صفحه (Clock) - joyebright - 15 اسفند ۱۳۹۴ ۰۶:۴۰ ب.ظ

(۱۵ اسفند ۱۳۹۴ ۰۴:۲۹ ب.ظ)MiladCr7 نوشته شده توسط:  سلام خسته نباشید .راستش من دقیقا این الگوریتم یادم نمونده ولی تا جایی که یادمه هر صفحه ای که بیت R براش ۱ بود یک شانس مجدد بهش میدادیم و بعدش بیت R رو براش صفر میکردیم الان وقتی صفحه ۵ رو اولین بار وارد میکنیم بیت R صفحه ۲ یک هستش پس یه شانس مجدد بهش میدیم و بیتش رو هم ۰ میکنیم و اشاره گر رو جلو میبریم که توی روش شما اومدید صفحه ۵ رو جایگزین صفحه ۳ کردید ولی فک کنم اینجا اینجوریه که بیت R برای صفحه ۳ هم ۱ هستش پس یه فرصت هم به این صفحه میدیم و بیتش رو ۰ میکنیم و برای صفحه سوم هم همینطور و الان اشاره گر ی دور کامل زده و مجددا ب خونه اول برگشته که صفحه شماره ۲ اونجا هستش و بیت R هم براش ۰ هستش پس صفحه ۵ جایگزین این صفحه میشه و اشاره گر ب خونه بعدی اشاره میکنه که بیت اون خونه هم ۰ هستش صفحه سماره ۲ اینبار جایگزین صفحه شماره ۳ میشه و به همین ترتیب

ممنونم ازت وقت گذاشتی جواب دادی ، اصول الگوریتم همونی که شما میگی بله درسته ، اما میشه توضیح بدی رو چه حسابی( دلیلش برام مهمه) بیت R صفحه ۲ ، ۳ ، ۱ همشون یک شده ، مگه زمانی که صفحات در قاب ها لود میشن بیت R شون ۰ نیست و تا زمانی که که مجددا درخواست اون صفحه بشه یا به عبارتی بهش ارجاع بشه بیت R تغییر می کنه و یک میشه و بین این ۳ تا صفحه درون قاب فقط بیت R صفحه ۲ یک است . البته این چیزیه که من فکر می کنم حتی اگه جستجو کنی خیلی ها تو همین فروم طوری جواب می دن

RE: الگوریتم جایگزینی صفحه (Clock) - Saman - 15 اسفند ۱۳۹۴ ۰۸:۵۲ ب.ظ

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

RE: الگوریتم جایگزینی صفحه (Clock) - joyebright - 15 اسفند ۱۳۹۴ ۰۹:۰۶ ب.ظ

(۱۵ اسفند ۱۳۹۴ ۰۸:۵۲ ب.ظ)samanbeigmiri نوشته شده توسط:  سلام.
زمانی که صفحات در قاب ها لود میشوند بیت R آن ها برابر یک است.
دقت کنید که این صفحات صفحاتی در حافظه هستند و بیت R که بیت مراجعه یا ارجاع هست برای آنها به این دلیل برابر یک هست که ما به این صفحات مراجعه کرده ایم.(به سبب مراجعه آن ها در حالت فعلی در دسترس ما هستند)
هنگام ورود صفحه ی ۵ اشاره گر ما روی صفحه ی ۲ قرار دارد و بیت R(مراجعه) برابر یک است.پس باید از آن عبور کرده و بیت R آن را صفر کنیم و به همین ترتیب از دیگر صفحات به خاطر یک بودن بیت R آنها باید عبور کنیم تا مجددا به خود ۲ میرسیم، با این تفاوت که این بار بیت R صفر است.اما چرا و چگونه؟؟
در حقیقت الگوریتم ساعت یک پیاده سازی از الگوریتم دومین شانس است،در واقع یک روش پیاده سازی الگوریتم دومین شانس این است که از الگوریتم ساعت استفاده کنیم.و قانون دومین شانس در صورت یک بودن بیت R آن این است که ، یک فرصت دوباره با آن صفحه بدهیم و بیت R آن را صفر کنیم.
فک کنم واضح باشه دیگه.

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

RE: الگوریتم جایگزینی صفحه (Clock) - MiladCr7 - 15 اسفند ۱۳۹۴ ۱۱:۵۴ ب.ظ

(۱۵ اسفند ۱۳۹۴ ۰۶:۴۰ ب.ظ)joyebright نوشته شده توسط:  اما میشه توضیح بدی رو چه حسابی( دلیلش برام مهمه) بیت R صفحه ۲ ، ۳ ، ۱ همشون یک شده ، مگه زمانی که صفحات در قاب ها لود میشن بیت R شون ۰ نیست
وقتی صفحات توی قاب ها لود شن بیتشون ۱ هستش احتمالا این رو در نظر نگرفتید