تالار گفتمان مانشت
پرسش از حافظه مجازی - نسخه‌ی قابل چاپ

پرسش از حافظه مجازی - H-Arshad - 18 اردیبهشت ۱۳۹۳ ۱۰:۱۲ ب.ظ

سلام

دنباله مراجعات زیر را با آدرس های حافظه از یک برنامه ۴۹۰ کلمه ای در نظر بگیرید. از چپ به راست
۱۰,۱۰۴,۲۱۵,۳۸۶,۱۱,۱۸۵,۴۱۱,۸۶,۱۷۳,۲۳۰,۳۱۵,۴۸۰
با فرض اینکه اندزاه هر صفحه برابر ۱۰۰ کلمه و گنجایش حافظه اصلی ۳۰۰ کلمه باشد،تعداد نقص صفحه برای این دنباله با جایگزینی LRU چقدر است؟
بحث سر این هست که کل حافظه ۳۰۰ کلمه هست و هر صفحه ۱۰۰ کلمه یعنی ۳ قاب آزاد. چطوری مثلا ۴۱۱ که ۵ قاب آزاد نیاز داره رو جا میده؟یعنی عدد ۴ رو میزاره در یک سر جدول،و دو سطر بعد دو عدد دیگر هم میزارد! Huh[/align]

RE: پرسش از حافظه مجازی - Morris - 19 اردیبهشت ۱۳۹۳ ۰۳:۰۲ ق.ظ

(۱۸ اردیبهشت ۱۳۹۳ ۱۰:۱۲ ب.ظ)H-Arshad نوشته شده توسط:  سلام

دنباله مراجعات زیر را با آدرس های حافظه از یک برنامه ۴۹۰ کلمه ای در نظر بگیرید. از چپ به راست
۱۰,۱۰۴,۲۱۵,۳۸۶,۱۱,۱۸۵,۴۱۱,۸۶,۱۷۳,۲۳۰,۳۱۵,۴۸۰
با فرض اینکه اندزاه هر صفحه برابر ۱۰۰ کلمه و گنجایش حافظه اصلی ۳۰۰ کلمه باشد،تعداد نقص صفحه برای این دنباله با جایگزینی LRU چقدر است؟
بحث سر این هست که کل حافظه ۳۰۰ کلمه هست و هر صفحه ۱۰۰ کلمه یعنی ۳ قاب آزاد. چطوری مثلا ۴۱۱ که ۵ قاب آزاد نیاز داره رو جا میده؟یعنی عدد ۴ رو میزاره در یک سر جدول،و دو سطر بعد دو عدد دیگر هم میزارد! Huh[/align]


وقتی در بحث حافظه با کلمه مجازی مواجه می شویم به این معنی است که احتیاج نیست که کل برنامه در حافظه فیزیکی قرار بگیرد. در مدل مدیریت حافظه مجازی، در دیسک، فضایی به نام حافظه مجازی وجود دارد که برنامه، به طور کامل در آن قرار می گیرید و هر زمان قسمتی از برنامه (صفحه) مورد نیاز بود و در حافظه فیزیکی (قاب) قرار نداشت، یک کپی از صفحه مربوط به آن قسمت از برنامه، در حافظه فیزیکی نیز قرار می گیرد.
مثلا در کامپیوتر های رایج امروزی، ممکن است سیستم شما ۲ گیگابایت حافظه فیزیکی داشته باشد ولی هر برنامه، یک حافظه خطی به اندازه ۴ گیگابایت برای خود متصور است. حال مثلا فرض کنید (جدای از ویندوز) سرویس ها و مثلا چند برنامه که شما مشغول به اجرای آن هستید، سر جمع ۲۰ برنامه در حال اجرا باشد. در این صورت برنامه های شما، همگی با هم احساس می کنند که ۲۰ * ۴ یعنی ۸۰ گیگابایت حافظه در اختیار دارند. خافظه فیزیکی شما تنها ۲ گیگابایت است بنابراین برنامه ها گول خورده اند و تنها به صورت مجازی (الکی) انقدر فضا در اختیار دارند.
در این شرایط، این وظیفه سخت افزار و سیستم عامل است که توما شرایط را مدیریت کنند و در زمان های لازم، صفحاتی از این ۸۰ گیگابایت را وارد این ۲ گیگابایت قاب فیزیکی کنند و اینکه صفحه جدید جایگزین کدام صفحه قدیمی شود (چون همه که با هم جا نمی شود!)، بستگی به الگوریتم های جایگزینی صفحه دارد.
LRU یکی از الگوریتم های جایگزینی صفحه است که البته یکی از پرهیزینه ترین ها نیز می باشد و احتمالا در سیستم عامل ویندوز از آن استفاده نمی شود.
البته الگوریتم را توضیح ندادم چون احساس کردم سوال شما در مفهوم حافظه مجازی است ولی اگر احساس می کنید لازم است، آن را نیز توضیح می دهم.

RE: پرسش از حافظه مجازی - H-Arshad - 19 اردیبهشت ۱۳۹۳ ۰۲:۱۹ ب.ظ

(۱۹ اردیبهشت ۱۳۹۳ ۰۳:۰۲ ق.ظ)Morris نوشته شده توسط:  
(18 اردیبهشت ۱۳۹۳ ۱۰:۱۲ ب.ظ)H-Arshad نوشته شده توسط:  سلام

دنباله مراجعات زیر را با آدرس های حافظه از یک برنامه ۴۹۰ کلمه ای در نظر بگیرید. از چپ به راست
۱۰,۱۰۴,۲۱۵,۳۸۶,۱۱,۱۸۵,۴۱۱,۸۶,۱۷۳,۲۳۰,۳۱۵,۴۸۰
با فرض اینکه اندزاه هر صفحه برابر ۱۰۰ کلمه و گنجایش حافظه اصلی ۳۰۰ کلمه باشد،تعداد نقص صفحه برای این دنباله با جایگزینی LRU چقدر است؟
بحث سر این هست که کل حافظه ۳۰۰ کلمه هست و هر صفحه ۱۰۰ کلمه یعنی ۳ قاب آزاد. چطوری مثلا ۴۱۱ که ۵ قاب آزاد نیاز داره رو جا میده؟یعنی عدد ۴ رو میزاره در یک سر جدول،و دو سطر بعد دو عدد دیگر هم میزارد! Huh[/align]


وقتی در بحث حافظه با کلمه مجازی مواجه می شویم به این معنی است که احتیاج نیست که کل برنامه در حافظه فیزیکی قرار بگیرد. در مدل مدیریت حافظه مجازی، در دیسک، فضایی به نام حافظه مجازی وجود دارد که برنامه، به طور کامل در آن قرار می گیرید و هر زمان قسمتی از برنامه (صفحه) مورد نیاز بود و در حافظه فیزیکی (قاب) قرار نداشت، یک کپی از صفحه مربوط به آن قسمت از برنامه، در حافظه فیزیکی نیز قرار می گیرد.
مثلا در کامپیوتر های رایج امروزی، ممکن است سیستم شما ۲ گیگابایت حافظه فیزیکی داشته باشد ولی هر برنامه، یک حافظه خطی به اندازه ۴ گیگابایت برای خود متصور است. حال مثلا فرض کنید (جدای از ویندوز) سرویس ها و مثلا چند برنامه که شما مشغول به اجرای آن هستید، سر جمع ۲۰ برنامه در حال اجرا باشد. در این صورت برنامه های شما، همگی با هم احساس می کنند که ۲۰ * ۴ یعنی ۸۰ گیگابایت حافظه در اختیار دارند. خافظه فیزیکی شما تنها ۲ گیگابایت است بنابراین برنامه ها گول خورده اند و تنها به صورت مجازی (الکی) انقدر فضا در اختیار دارند.
در این شرایط، این وظیفه سخت افزار و سیستم عامل است که توما شرایط را مدیریت کنند و در زمان های لازم، صفحاتی از این ۸۰ گیگابایت را وارد این ۲ گیگابایت قاب فیزیکی کنند و اینکه صفحه جدید جایگزین کدام صفحه قدیمی شود (چون همه که با هم جا نمی شود!)، بستگی به الگوریتم های جایگزینی صفحه دارد.
LRU یکی از الگوریتم های جایگزینی صفحه است که البته یکی از پرهیزینه ترین ها نیز می باشد و احتمالا در سیستم عامل ویندوز از آن استفاده نمی شود.
البته الگوریتم را توضیح ندادم چون احساس کردم سوال شما در مفهوم حافظه مجازی است ولی اگر احساس می کنید لازم است، آن را نیز توضیح می دهم.

ممنون از توضیحات خوب شما
بله درست می فرمائید و صحبت شما صحیح هست
اما ماداریم میگیم ۳ قاب آزاد داریم و هر قاب ۱۰۰ کلمه جا میگیره.
حالا توی پاسخ سوال اواسط کار اومده قاب اول رو عدد ۴ مثلا داخلش گذاشته.(عدد ۴ برای عدد ۳۸۶)
حالا قاب سوم و چهارم هم تازه فضا گرفته براشون.
بلاخره این میگه حافظه اصلی گنجایش آن ۳۰۰ هست. چطوری ۴ صفحه ۱۰۰ کیلو میره داخلش؟ تازه قاب دوم و سوم هم حساب نکردذیم!
بله الگوریتم LRU مشکلی ندارم باهاش

RE: پرسش از حافظه مجازی - Morris - 19 اردیبهشت ۱۳۹۳ ۰۴:۱۳ ب.ظ

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