سوال در مورد حافظه swap

شروع موضوع توسط AHMAD ‏Mar 8, 2016 در انجمن لینوکس Linux

  1. AHMAD

    AHMAD ایران وب ادمین عضو کادر مدیریت ناظر انجمن

    سلام

    سوالی که دارم اینه که حافظه swap دقیقا چه وظیفه ای داره ؟

    بهتره چه مقداری داشته باشه ؟

    کلا در صورت امکان یه توضیحی در مورد حافظه swap بدین



    ممنونم
     
  2. msm

    msm عضو حرفه ای عضو کادر مدیریت ناظر انجمن

    سلام
    زمانی که رم سیستم شما پر بشه و سیستم نیاز به رم بیشتری داشته باشه سیستم عامل پردازش های غیر فعال رو که در رم قرار دارن به سوآپ انتقال میده تا رم شما خالی بشه البته اینرو هم توجه کنید که نباید سوآپ رو به عنوان افزایش رم در نظر بگیرید چون این حافظه در واقع هیچ پردازشی رو هندل نمیکنه و تنها وظیفش اینه که اطلاعاتی که تولحظه توسط رم استفاده نمیشن رو در خودش نگه میداره که رم رو خالی کنه میشه گفت کش رم رو تو خودش میگیره نه پردازش رو
    این درکیه که من از سوآپ داشتم باز هم خوشحال میشه نظر دیگر دوستان رو هم ببینیم
     
    AHMAD و farid از این پست تشکر کرده اند.
  3. AHMAD

    AHMAD ایران وب ادمین عضو کادر مدیریت ناظر انجمن

    سلام
    ممنونم

    یعنی در واقع حداکثر حالتی که ممکنه از حافظه swap استفاده بشه به اندازه ی خود رم هست درسته ؟ (که البته فکر نمی کنم هیچوقت به اندازه ی خود رم پر بشه)
     
  4. farid

    farid مدیر کل انجمن عضو کادر مدیریت مدیر کل انجمن

    بنده با این تعریف موافق هستم تعریف دقیقی هم که در خود سایت centos است که در اینجا مشخص است تقریبا همین رو میگه در مورد اینکه حافظه swap به اندازه رم است بنده موافق نیستم در همین لینک هم گفته برای رم زیر 2 گیگ دوبرابر رم swap در نظر بگیرید و برای بیشتر فرمول دیگری ارائه کرده دلیلش هم این است که سیستم عامل های امروز برنامه ها را بصورت page در رم لود و اجرا می کنند به این روش صفحه بندی گفته می شود به این ترتیب می توانند برنامه ای با بیش از ظرفیت رم فیزکی را اجرا کنند به این روش حافظه مجازی یا virtual memory گفته می شود حال وقتی حافظه فیزیکی کامل پر شد page های غیر فعال ( فرض کنید هر page یک block مشخص از حافظه است ) به swap منتقل می کند تا جا برای صفحه هایی که باید فعال شوند باز شود با توجه با اینکه حافظه مجازی تا حداکثر ممکن فرض میشه این page های می توانند خیلی بیشتر شوند لذا لزومی نداره swap حداکثر اندازه رم فیزیکی باشد و می تواند بیش از آن باشد.
     
    msm و AHMAD از این پست تشکر کرده اند.
  5. AHMAD

    AHMAD ایران وب ادمین عضو کادر مدیریت ناظر انجمن

    ممنونم از پاسخ کاملتون

    طبق قسمتی که نقل و قول کردم ، اگر برنامه ای در رم به صورت page اجرا بشه و ظرفیتش از رم فیزیکی بالاتر باشه ، اون page به چه شکل داخل رم جا میگیره ؟

    منظورتون اینه که اون page شکسته میشه و قسمت هایی که مورد نیاز نیست به swap منتقل میشه ؟
     
  6. farid

    farid مدیر کل انجمن عضو کادر مدیریت مدیر کل انجمن

    هر page بلاکی از حافظه است مثلا 4 KiB در نتیجه در رم با توجه به ظرفیت چنیدن و چند page جا میشه
    مطابق تعریف page های غیر فعال یعنی Page هایی که فعلا بهشون نیاز نیست به swap منتقل میشه اون هم در شرایطی که رم فیزیکی پر شده باشد
    page غیر فعال به swap میره page دیگر وارد حافظه میشه که نیاز به پردازش دارد page ای که به swap رفته هر گاه نیاز به پردازش داشته باشد دوباره به حافظه برمیگرده
    حال ممکنه یک page غیر فعال دیگه به swap بیاد و جایگزین آن بشه یا اینکه در آن لحظه برنامه ای اتمام یافته و page هاش از حافظه پاک شده باشند و جای کافی برای برگشت
    این page باشد
    بنده الان حضور ذهن کافی رو مبحث ندارم شاید برخی از جاها کمی ضعف علمی در توضیحات داشته باشه اما کلیت همین است به لینک های wiki مراجعه کنید یا کتاب سیستم عامل از تننبام یا سیبلر شات در مبحث مدیریت حافظه این موارد مفصل توضیح داده شده است
    جالب است بدونید که سیستم عامل های امروزی تقریبا همگی از virtual memory استفاده می کنند بدون چنین ابتکار جالبی هیچ وقت نمیشد برنامه ای با بیش از ظرفیت حافظه فیزیکی را اجرا کنند
     
    msm و AHMAD از این پست تشکر کرده اند.
  7. AHMAD

    AHMAD ایران وب ادمین عضو کادر مدیریت ناظر انجمن

    به عنون سوال آخر :

    page های غیر فعال که در swap هستند و فعلا نیازی به پردازش ندارند تا چه زمانی در swap باقی می مانند ؟

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

    غیر از ریست ، کار دیگه ای میشه برای خالی کردن swap انجام داد ؟ اینکار مشکلی در روند سیستم ایجاد نمی کنه ؟
     
  8. farid

    farid مدیر کل انجمن عضو کادر مدیریت مدیر کل انجمن

    تا زمانی که نیاز به پردازش نداشته باشند باقی می مانند در واقع زمانی که page fault رخ میده و در رم نیستند دوباره به رم بازمی گردند
    طوری هم نیست خودتون دستی خارجشون کنید چون سیستم عامل بهشون نیاز داشته وگر نه حذفشون می کرد باید بذارید خود سیستم عامل حذفشون کنه
     
    msm و AHMAD از این پست تشکر کرده اند.

به اشتراک بگذارید

س