حافظه کش در مقابل حافظه مجازی
تفاوت حافظه کش و حافظه مجازی در هدفی که این دو برای آن استفاده می شوند و در وجود فیزیکی وجود دارد. حافظه کش نوعی حافظه است که برای بهبود زمان دسترسی به حافظه اصلی استفاده می شود. بین CPU و حافظه اصلی قرار دارد و می تواند چندین سطح از حافظه پنهان مانند L1، L2 و L3 وجود داشته باشد. نوع سخت افزار مورد استفاده برای حافظه کش بسیار گرانتر از RAM (حافظه دسترسی تصادفی) مورد استفاده برای حافظه اصلی است زیرا حافظه کش بسیار سریعتر است. به همین دلیل ظرفیت حافظه کش بسیار کم است. حافظه مجازی یک تکنیک مدیریت حافظه است که برای استفاده بهینه از رم (حافظه اصلی) استفاده می شود و در عین حال فضای حافظه جداگانه ای برای هر برنامه فراهم می کند که حتی از ظرفیت واقعی رم فیزیکی (حافظه اصلی) بزرگتر است.در اینجا از هارد دیسک برای افزایش حافظه استفاده می شود. موارد موجود در RAM فیزیکی با هارد دیسک به عقب و جلو منتقل می شوند.
حافظه کش چیست؟
حافظه کش نوعی حافظه است که بین CPU (واحد پردازش مرکزی) و RAM (حافظه دسترسی تصادفی) قرار دارد. هدف از حافظه نهان کاهش زمان دسترسی به حافظه CPU از RAM است. حافظه کش بسیار سریعتر از RAM است. بنابراین زمان دسترسی در حافظه نهان بسیار کمتر از زمان دسترسی در RAM است. اما هزینه حافظه مورد استفاده برای حافظه کش بسیار بیشتر از هزینه حافظه مورد استفاده برای RAM است و از این رو ظرفیت حافظه کش بسیار کم است. نوع حافظه مورد استفاده برای حافظه کش SRAM (حافظه دسترسی تصادفی استاتیک) نامیده می شود.
هر زمان که CPU بخواهد به حافظه دسترسی پیدا کند، ابتدا بررسی می کند که آیا آنچه نیاز دارد در حافظه نهان وجود دارد یا خیر. اگر بله، میتواند با کمترین تأخیر به آن دسترسی داشته باشد. اگر در حافظه نهان قرار نگیرد، محتوای درخواستی از حافظه رم به حافظه پنهان کپی می شود و سپس تنها CPU از حافظه نهان به آن دسترسی خواهد داشت.در اینجا، هنگام کپی کردن محتوا از کش، نه تنها محتوای موجود در آدرس حافظه درخواستی، بلکه محتوای مجاور نیز در حافظه پنهان کپی می شود. بنابراین، دفعه بعد احتمال زیادی برای ضربه حافظه پنهان وجود دارد زیرا اکثر برنامههای کامپیوتری به دادههای نزدیک دسترسی پیدا میکنند یا به دادههای آخرین دسترسی در اکثر مواقع دسترسی دارند. بنابراین به دلیل حافظه نهان، متوسط تاخیر حافظه کاهش می یابد.
در CPU، سه نوع کش وجود دارد: کش دستورالعمل برای ذخیره دستورالعمل های برنامه، کش داده برای ذخیره اقلام داده، و بافر نگاه به کنار ترجمه برای ذخیره نگاشت های حافظه. برای کش داده ها، به طور کلی، کش های چند سطحی وجود دارد.یعنی چندین کش به عنوان L1، L2 و L3 وجود دارد. حافظه نهان L1 سریعترین اما کوچکترین حافظه کش است که به CPU نزدیکتر است. حافظه نهان L2 کندتر از L1 است، اما بزرگتر از L1 است و بعد از کش L1 قرار دارد. به دلیل این سلسله مراتب، متوسط زمان دسترسی به حافظه بهتری را می توان با هزینه کمتر به دست آورد.
حافظه مجازی چیست؟
حافظه مجازی یک تکنیک مدیریت حافظه است که در سیستم های کامپیوتری استفاده می شود. هیچ سخت افزاری به نام حافظه مجازی وجود ندارد، اما مفهومی است که از رم و هارد دیسک برای ایجاد فضای آدرس مجازی برای برنامه ها استفاده می کند. ابتدا RAM به تکه هایی به نام صفحات تقسیم می شود و آنها با آدرس های حافظه فیزیکی شناسایی می شوند. در هارد دیسک، بخش خاصی رزرو شده است که در لینوکس به آن swap و در ویندوز به آن صفحه فایل می گویند. هنگامی که یک برنامه شروع می شود، یک فضای آدرس مجازی به آن داده می شود که می تواند حتی بزرگتر از حافظه فیزیکی واقعی باشد. فضای حافظه مجازی نیز به تکه هایی به نام صفحات تقسیم می شود و هر یک از این صفحات حافظه مجازی را می توان به یک صفحه فیزیکی نگاشت.جدولی به نام جدول صفحه این نقشه برداری را پیگیری می کند. وقتی فضای حافظه فیزیکی تمام می شود، کاری که انجام می شود این است که صفحات فیزیکی خاصی به آن بخش ویژه در هارد دیسک فشار داده می شوند. هنگامی که هر صفحه ای که به هارد دیسک فشار داده می شود دوباره مورد نیاز است، با قرار دادن صفحه انتخابی دیگر از حافظه فیزیکی روی هارد دیسک به حافظه فیزیکی آورده می شود.
تفاوت بین حافظه کش و حافظه مجازی چیست؟
• حافظه کش نوعی حافظه است که برای بهبود زمان دسترسی به حافظه اصلی استفاده می شود. این یک نوع حافظه سریعتر است که بین CPU و RAM قرار می گیرد تا متوسط تاخیر دسترسی به حافظه را کاهش دهد.حافظه مجازی یک روش مدیریت حافظه است که در آن مفهومی است که به برنامهها اجازه میدهد فضای حافظه مجازی خود را داشته باشند، که حتی بزرگتر از RAM فیزیکی واقعی موجود است.
• حافظه کش نوعی حافظه سخت افزاری است که در واقع به صورت فیزیکی وجود دارد. از سوی دیگر، هیچ سخت افزاری به نام حافظه مجازی وجود ندارد، زیرا مفهومی است که از RAM، هارد دیسک، واحد مدیریت حافظه و نرم افزار برای ارائه یک نوع حافظه مجازی استفاده می کند.
• مدیریت حافظه کش به طور کامل توسط سخت افزار انجام می شود. حافظه مجازی توسط سیستم عامل (نرم افزار) مدیریت می شود.
• حافظه کش بین RAM و پردازنده قرار دارد. انتقال داده ها شامل رم، حافظه کش و پردازنده است. از سوی دیگر، حافظه مجازی شامل انتقال داده بین RAM و هارد دیسک است.
• حافظه های کش اندازه های کوچکی مانند کیلوبایت و مگابایت دارند. از سوی دیگر، حافظه مجازی شامل اندازه های بزرگی است که گیگابایت می برد.
• حافظه مجازی شامل ساختارهای داده مانند جداول صفحه است که نقشه برداری بین حافظه فیزیکی و حافظه مجازی را ذخیره می کند. اما این نوع ساختار داده برای حافظه کش ضروری نیست.
خلاصه:
حافظه کش در مقابل حافظه مجازی
حافظه کش برای بهبود زمان دسترسی به حافظه اصلی استفاده می شود در حالی که حافظه مجازی یک روش مدیریت حافظه است. حافظه کش یک سخت افزار واقعی است، اما سخت افزاری به نام حافظه مجازی وجود ندارد. رم، هارد دیسک و سخت افزارهای مختلف دیگر به همراه سیستم عامل مفهومی به نام حافظه مجازی را تولید می کنند تا فضاهای حافظه مجازی بزرگ و ایزوله را برای هر برنامه فراهم کند. محتوای موجود در حافظه نهان توسط سخت افزار مدیریت می شود در حالی که محتوای موجود در حافظه مجازی توسط سیستم عامل مدیریت می شود.