فضای swap چیست؟

اگر تاکنون در لینوکس لیست پارتیشن ها را دیده باشید، حتما پارتیشن swap نظر شما را جلب کرده است. swap چیست؟ چه نیازی به وجود swap هست؟ مقدار swap چقدر باید باشد؟ در این مطلب به بررسی فضای swap می پردازیم.

سیستم عامل برای اینکه بتواند برنامه ای را اجرا کند، باید آن برنامه را به داخل حافظه اصلی (RAM) منتقل کند. درسیستم عامل های مدرن امروزی در هر لحظه تعداد زیادی برنامه در حال اجرا هستند همچنین تعداد زیادی سرویس نیز در پس زمینه در حال اجرا می باشند. با توجه به این که مقدار حافظه اصلی کامپیوتر محدود است، وقتی تعداد برنامه هایی که قرار است همزمان اجرا شوند زیاد شود، مقدار حافظه لازم جهت اجرای همزمان برنامه ها از کل حافظه اصلی کامپیوتر بیشتر می شود. در این حالت سیستم دچار کمبود حافظه اصلی شده و در نهایت crash می کند.

برای حل این مشکل دو راه وجود دارد:

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

سیستم عامل چگونه از فضای swap استفاده می کند؟

سیستم عامل حافظه اصلی را به بخش هایی تقسیم می کند، که page نامیده می شوند. هر برنامه در حال اجرا یک یا چندین page را در حافظه اصلی اشغال می کند. تصور کنید که تمام حافظه اصلی استفاده شده باشد و برنامه دیگری بخواهد اجرا شود، در این وضعیت سیستم عامل page هایی که کمتر استفاده می شوند را از داخل حافظه اصلی به فضای swap انتقال می دهد تا برای اجرا برنامه  یا برنامه های جدید فضای خالی ایجاد کند. به این کار در اصطلاح swapping یا paging گفته می شد.

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

اندازه فضای swap چقدر باید باشد؟

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

سوال اصلی این است که چه مقدار برای فضای swap اختصاص دهیم؟ سیستم عامل های مبتنی بر یونیکس قدیمی تر(مثل Sun OS یا Ultrix) فضای swap دو یا سه برابر حافظه اصلی نیاز داشتند. اما سیستم عامل های جدیدتر (مثل لینوکس) به این مقدار فضای swap نیاز ندارند، هرچند اگر شما برای سیستم تنظیم کنید، سیستم می تواند از این مقدار نیز استفاده کنند. برای تعیین مقدار دقیق فضای swap سه اصل وجود دارد:

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

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

برای مطالعه بیشتر به منابع انتهای مطلب مراجعه نمایید.

برچسب‌ها:

منابع

لینک دائمی به این مطلب:


نظرات کاربران

ناشناس در چهارشنبه ۲۶ فروردین ۱۳۹۴ :   ارسال پاسخ
مطالبتان خیلی خوبه، ممنونم

رضا در پنجشنبه ۱۲ تیر ۱۳۹۳ :   ارسال پاسخ
خیلی مطلب مفید و جالبی بود. ممنونم

شما میتوانید نظر خود را در مورد این مطلب بیان کنید.

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