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

AHMAD

ایران وب ادمین
عضو کادر مدیریت
ناظر انجمن
عضویت
28/1/15
ارسال ها
145
امتیاز
6
محل سکونت
Matt Cutts Office
وب سایت
www.rastana.com
سلام

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

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

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



ممنونم
 

msm

عضو حرفه ای
ناظر انجمن
عضویت
13/5/15
ارسال ها
185
امتیاز
6
سلام
زمانی که رم سیستم شما پر بشه و سیستم نیاز به رم بیشتری داشته باشه سیستم عامل پردازش های غیر فعال رو که در رم قرار دارن به سوآپ انتقال میده تا رم شما خالی بشه البته اینرو هم توجه کنید که نباید سوآپ رو به عنوان افزایش رم در نظر بگیرید چون این حافظه در واقع هیچ پردازشی رو هندل نمیکنه و تنها وظیفش اینه که اطلاعاتی که تولحظه توسط رم استفاده نمیشن رو در خودش نگه میداره که رم رو خالی کنه میشه گفت کش رم رو تو خودش میگیره نه پردازش رو
این درکیه که من از سوآپ داشتم باز هم خوشحال میشه نظر دیگر دوستان رو هم ببینیم
 

AHMAD

ایران وب ادمین
عضو کادر مدیریت
ناظر انجمن
عضویت
28/1/15
ارسال ها
145
امتیاز
6
محل سکونت
Matt Cutts Office
وب سایت
www.rastana.com
سلام
زمانی که رم سیستم شما پر بشه و سیستم نیاز به رم بیشتری داشته باشه سیستم عامل پردازش های غیر فعال رو که در رم قرار دارن به سوآپ انتقال میده تا رم شما خالی بشه البته اینرو هم توجه کنید که نباید سوآپ رو به عنوان افزایش رم در نظر بگیرید چون این حافظه در واقع هیچ پردازشی رو هندل نمیکنه و تنها وظیفش اینه که اطلاعاتی که تولحظه توسط رم استفاده نمیشن رو در خودش نگه میداره که رم رو خالی کنه میشه گفت کش رم رو تو خودش میگیره نه پردازش رو
این درکیه که من از سوآپ داشتم باز هم خوشحال میشه نظر دیگر دوستان رو هم ببینیم

سلام
ممنونم

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

farid

مدیر کل انجمن
عضو کادر مدیریت
مدیر کل انجمن
عضویت
20/5/15
ارسال ها
452
امتیاز
10
وب سایت
faraso.org
سلام
زمانی که رم سیستم شما پر بشه و سیستم نیاز به رم بیشتری داشته باشه سیستم عامل پردازش های غیر فعال رو که در رم قرار دارن به سوآپ انتقال میده تا رم شما خالی بشه البته اینرو هم توجه کنید که نباید سوآپ رو به عنوان افزایش رم در نظر بگیرید چون این حافظه در واقع هیچ پردازشی رو هندل نمیکنه و تنها وظیفش اینه که اطلاعاتی که تولحظه توسط رم استفاده نمیشن رو در خودش نگه میداره که رم رو خالی کنه میشه گفت کش رم رو تو خودش میگیره نه پردازش رو
این درکیه که من از سوآپ داشتم باز هم خوشحال میشه نظر دیگر دوستان رو هم ببینیم
بنده با این تعریف موافق هستم تعریف دقیقی هم که در خود سایت centos است که در اینجا مشخص است تقریبا همین رو میگه در مورد اینکه حافظه swap به اندازه رم است بنده موافق نیستم در همین لینک هم گفته برای رم زیر 2 گیگ دوبرابر رم swap در نظر بگیرید و برای بیشتر فرمول دیگری ارائه کرده دلیلش هم این است که سیستم عامل های امروز برنامه ها را بصورت page در رم لود و اجرا می کنند به این روش صفحه بندی گفته می شود به این ترتیب می توانند برنامه ای با بیش از ظرفیت رم فیزکی را اجرا کنند به این روش حافظه مجازی یا virtual memory گفته می شود حال وقتی حافظه فیزیکی کامل پر شد page های غیر فعال ( فرض کنید هر page یک block مشخص از حافظه است ) به swap منتقل می کند تا جا برای صفحه هایی که باید فعال شوند باز شود با توجه با اینکه حافظه مجازی تا حداکثر ممکن فرض میشه این page های می توانند خیلی بیشتر شوند لذا لزومی نداره swap حداکثر اندازه رم فیزیکی باشد و می تواند بیش از آن باشد.
 

AHMAD

ایران وب ادمین
عضو کادر مدیریت
ناظر انجمن
عضویت
28/1/15
ارسال ها
145
امتیاز
6
محل سکونت
Matt Cutts Office
وب سایت
www.rastana.com
سیستم عامل های امروز برنامه ها را بصورت page در رم لود و اجرا می کنند به این روش صفحه بندی گفته می شود به این ترتیب می توانند برنامه ای با بیش از ظرفیت رم فیزکی را اجرا کنند به این روش حافظه مجازی یا virtual memory گفته می شود

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

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

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

farid

مدیر کل انجمن
عضو کادر مدیریت
مدیر کل انجمن
عضویت
20/5/15
ارسال ها
452
امتیاز
10
وب سایت
faraso.org
هر page بلاکی از حافظه است مثلا 4 KiB در نتیجه در رم با توجه به ظرفیت چنیدن و چند page جا میشه
مطابق تعریف page های غیر فعال یعنی Page هایی که فعلا بهشون نیاز نیست به swap منتقل میشه اون هم در شرایطی که رم فیزیکی پر شده باشد
page غیر فعال به swap میره page دیگر وارد حافظه میشه که نیاز به پردازش دارد page ای که به swap رفته هر گاه نیاز به پردازش داشته باشد دوباره به حافظه برمیگرده
حال ممکنه یک page غیر فعال دیگه به swap بیاد و جایگزین آن بشه یا اینکه در آن لحظه برنامه ای اتمام یافته و page هاش از حافظه پاک شده باشند و جای کافی برای برگشت
این page باشد
بنده الان حضور ذهن کافی رو مبحث ندارم شاید برخی از جاها کمی ضعف علمی در توضیحات داشته باشه اما کلیت همین است به لینک های wiki مراجعه کنید یا کتاب سیستم عامل از تننبام یا سیبلر شات در مبحث مدیریت حافظه این موارد مفصل توضیح داده شده است
جالب است بدونید که سیستم عامل های امروزی تقریبا همگی از virtual memory استفاده می کنند بدون چنین ابتکار جالبی هیچ وقت نمیشد برنامه ای با بیش از ظرفیت حافظه فیزیکی را اجرا کنند
 

AHMAD

ایران وب ادمین
عضو کادر مدیریت
ناظر انجمن
عضویت
28/1/15
ارسال ها
145
امتیاز
6
محل سکونت
Matt Cutts Office
وب سایت
www.rastana.com
هر 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 انجام داد ؟ اینکار مشکلی در روند سیستم ایجاد نمی کنه ؟
 

farid

مدیر کل انجمن
عضو کادر مدیریت
مدیر کل انجمن
عضویت
20/5/15
ارسال ها
452
امتیاز
10
وب سایت
faraso.org
به عنون سوال آخر :

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

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

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