سلام سوالی که دارم اینه که حافظه swap دقیقا چه وظیفه ای داره ؟ بهتره چه مقداری داشته باشه ؟ کلا در صورت امکان یه توضیحی در مورد حافظه swap بدین ممنونم
سلام زمانی که رم سیستم شما پر بشه و سیستم نیاز به رم بیشتری داشته باشه سیستم عامل پردازش های غیر فعال رو که در رم قرار دارن به سوآپ انتقال میده تا رم شما خالی بشه البته اینرو هم توجه کنید که نباید سوآپ رو به عنوان افزایش رم در نظر بگیرید چون این حافظه در واقع هیچ پردازشی رو هندل نمیکنه و تنها وظیفش اینه که اطلاعاتی که تولحظه توسط رم استفاده نمیشن رو در خودش نگه میداره که رم رو خالی کنه میشه گفت کش رم رو تو خودش میگیره نه پردازش رو این درکیه که من از سوآپ داشتم باز هم خوشحال میشه نظر دیگر دوستان رو هم ببینیم
سلام ممنونم یعنی در واقع حداکثر حالتی که ممکنه از حافظه swap استفاده بشه به اندازه ی خود رم هست درسته ؟ (که البته فکر نمی کنم هیچوقت به اندازه ی خود رم پر بشه)
بنده با این تعریف موافق هستم تعریف دقیقی هم که در خود سایت centos است که در اینجا مشخص است تقریبا همین رو میگه در مورد اینکه حافظه swap به اندازه رم است بنده موافق نیستم در همین لینک هم گفته برای رم زیر 2 گیگ دوبرابر رم swap در نظر بگیرید و برای بیشتر فرمول دیگری ارائه کرده دلیلش هم این است که سیستم عامل های امروز برنامه ها را بصورت page در رم لود و اجرا می کنند به این روش صفحه بندی گفته می شود به این ترتیب می توانند برنامه ای با بیش از ظرفیت رم فیزکی را اجرا کنند به این روش حافظه مجازی یا virtual memory گفته می شود حال وقتی حافظه فیزیکی کامل پر شد page های غیر فعال ( فرض کنید هر page یک block مشخص از حافظه است ) به swap منتقل می کند تا جا برای صفحه هایی که باید فعال شوند باز شود با توجه با اینکه حافظه مجازی تا حداکثر ممکن فرض میشه این page های می توانند خیلی بیشتر شوند لذا لزومی نداره swap حداکثر اندازه رم فیزیکی باشد و می تواند بیش از آن باشد.
ممنونم از پاسخ کاملتون طبق قسمتی که نقل و قول کردم ، اگر برنامه ای در رم به صورت page اجرا بشه و ظرفیتش از رم فیزیکی بالاتر باشه ، اون page به چه شکل داخل رم جا میگیره ؟ منظورتون اینه که اون page شکسته میشه و قسمت هایی که مورد نیاز نیست به swap منتقل میشه ؟
هر page بلاکی از حافظه است مثلا 4 KiB در نتیجه در رم با توجه به ظرفیت چنیدن و چند page جا میشه مطابق تعریف page های غیر فعال یعنی Page هایی که فعلا بهشون نیاز نیست به swap منتقل میشه اون هم در شرایطی که رم فیزیکی پر شده باشد page غیر فعال به swap میره page دیگر وارد حافظه میشه که نیاز به پردازش دارد page ای که به swap رفته هر گاه نیاز به پردازش داشته باشد دوباره به حافظه برمیگرده حال ممکنه یک page غیر فعال دیگه به swap بیاد و جایگزین آن بشه یا اینکه در آن لحظه برنامه ای اتمام یافته و page هاش از حافظه پاک شده باشند و جای کافی برای برگشت این page باشد بنده الان حضور ذهن کافی رو مبحث ندارم شاید برخی از جاها کمی ضعف علمی در توضیحات داشته باشه اما کلیت همین است به لینک های wiki مراجعه کنید یا کتاب سیستم عامل از تننبام یا سیبلر شات در مبحث مدیریت حافظه این موارد مفصل توضیح داده شده است جالب است بدونید که سیستم عامل های امروزی تقریبا همگی از virtual memory استفاده می کنند بدون چنین ابتکار جالبی هیچ وقت نمیشد برنامه ای با بیش از ظرفیت حافظه فیزیکی را اجرا کنند
به عنون سوال آخر : page های غیر فعال که در swap هستند و فعلا نیازی به پردازش ندارند تا چه زمانی در swap باقی می مانند ؟ بعضا میبینم که swap کاملا پر شده اما رم فضای خالی زیادی داره .. یعنی اگر قرار بود page ای که در swap قرار داره اجرا بشه ، با توجه به فضای خالی ای که رم داره باید هر زمان که لازم است به رم منتقل و اجرا بشه اما این اتفاق نمی افته و swap کاملا پر میشه غیر از ریست ، کار دیگه ای میشه برای خالی کردن swap انجام داد ؟ اینکار مشکلی در روند سیستم ایجاد نمی کنه ؟
تا زمانی که نیاز به پردازش نداشته باشند باقی می مانند در واقع زمانی که page fault رخ میده و در رم نیستند دوباره به رم بازمی گردند طوری هم نیست خودتون دستی خارجشون کنید چون سیستم عامل بهشون نیاز داشته وگر نه حذفشون می کرد باید بذارید خود سیستم عامل حذفشون کنه