صفحه بندی در سیستم عامل چیست؟ – توضیح Paging به زبان ساده
صفحه بندی روشی برای مدیریت حافظه در در سیستم عامل است. این تکنیک به پردازشها کمک میکند که نسبت به حافظه فیزیکی موجود به میزان حافظه بیشتری دسترسی داشته باشند. این روش، کیفیت عملکرد و استفاده از منابع را ارتقاء میدهد و باعث کاهش احتمال از دست رفتن صفحات میشود. در سامانههای شبیه به یونیکس به این روش «مبادله» (Swapping) میگویند. تمام سیستم عاملهای مدرن از تکنیک صفحه بندی در سیستم عامل برای مدیریت حافظه و جلوگیری از مشکلات مربوط به کمبود حافظه استفاده میکنند. برای توسعهدهندگان هم بهتر است که با انواع روشهای مدیریت حافظه در سیستم عامل آشنا شوند.
در این مطلب از مجله فرادرس توضیح میدهیم که صفحه بندی در سیستم عامل چیست و چگونه کار میکند. بعد از تعریف صفحه بندی، لغات و اصطلاحات تخصصی مربوط به این تکنیک را بیان کردهایم. سپس خطاهای رایج صفحه بندی را توضیح داده و در نهایت هم مطالبی را درباره مزایا و معایب استفاده از صفحه بندی نوشتهایم.
صفحه بندی در سیستم عامل چیست؟
«صفحه بندی در سیستم عامل» (Paging In Operating System) روشی است که برای مدیریت حافظه به کار میرود. با این روش فرایندها میتوانند از فضای «ذخیرهسازی مجازی» (Virtual Storage) استفاده کنند. با کمک روش صفحه بندی، هر فرایند به صفحاتی که نیاز دارد دسترسی پیدا میکند، بدون اینکه منتظر بارگذاری آن صفحه به «حافظه فیزیکی» (Physical Memory) کامپیوتر باشد. این روش دادهها را بین حافظه اصلی کامپیوتر «RAM» و حافظه ذخیرهسازی ثانویه آن - مانند هارد دیسک یا SSD - تبادل میکند.
وقتی فرایندی تلاش میکند که به صفحهای - بخشی از حافظه - دسترسی پیدا کند که در RAM قرار ندارد، سیستم عامل آن صفحه را از حافظه مجازی به RAM وارد میکند.
تکنیک صفحه بندی باعث ارتقا کیفیت مدیریت حافظه میشود. با تقسیم کردن حافظه به صفحات مختلف، سیستم عامل، با توجه به نیاز خود و سایر برنامهها صفحات را از حافظه خارج کرده یا به آن وارد میکند. نگهداشتن صفحاتی که به صورت تکراری استفاده میشوند، به سیستم عامل در کاهش استفاده از منبع زمان، کمک میکند. بخصوص در اوقاتی که صفحهای پیدا نمیشود. به این اتفاق «خطای صفحه» (Page Fault) گفته میشود. عملیات صفحه بندی در نهایت باعث میشود که کل سامانه با سرعت و سلامت بیشتری به درخواستها پاسخ دهد.
بهترین مجموعه فیلم های آموزشی سیستم عامل
از تمام افرادی که در حوزه طراحی، تولید و انتشار نرمافزارهای کامپیوتر کار میکنند گرفته تا مصرف کنندگان این نرمافزارها لازم است که کار با سیستم عاملهای محیط فعالیت خود را بیاموزند. سیستم عامل را میتوان به نوعی اولین و مهمترین نرمافزاری دانست که هر کاربر کامیپوتری باید با آن آشنا شود. از آنجا که سیستم عامل واسط میان سختافزار و بقیه نرمافزارهاست، تمام کارهای مربوط به مدیریت سامانه سخت افزاری را بر عهده دارد، البته به غیر از بعضی نرمافزارهای خاص که به صورت مستقیم به سختافزار متصل میشوند.
وبسایت فرادرس، سالهاست که مشغول طراحی، تولید و انتشار فیلمهای آموزشی برای دانشجویان و فعالان حوزه کامپیوتر است. به همین دلیل، در این زمینه تجربه کافی را کسب کرده است و با نیاز مخاطبان آشنایی دارد. آشنایی با سیستم عامل علاوه بر نیاز فعالان این عرصه به شدت برای دانشجویان و دانشآموزان هم لازم است. به همین دلیل فرادرس فیلمهای خوب و متنوعی را در این زمینه تولید کرده است. در پایین چند مورد از این فیلمها را معرفی کردهایم.
- فیلم آموزش آشنایی با سیستم عامل ربات ها، ROS در فرادرس
- فیلم آموزش سیستم عامل Linux، دوره مقدماتی با فرادرس
- فیلم آموزش سیستم عامل همراه با مرور و تست کنکور ارشد در فرادرس
- فیلم آموزش رایگان نصب و راه اندازی سیستم عامل لینوکس Linux با فرادرس
- فیلم آموزش رایگان Ubuntu (اوبونتو) و ۱۰ گام مهم پس از نصب با فرادرس
صفحه بندی در سیستم عامل چگونه کار میکند؟
صفحه بندی به «سیستم عامل» (Operating System |OS) کمک میکند تا دادها را بین دو نوع حافظه اصلی - مانند RAM - و ثانویه - مانند هارد دیسک - جابهجا کند. هر دو نوع حافظه نامبرده شده، به بخشهایی با اندازه ثابت تقسیم شدهاند. بخشهای با اندازه ثابتی که RAM قرار دارند به نام فریم شناخته میشوند و بخشهایی که در حافظه ثانویه قرار دارند به نام صفحه شناخته میشوند.
هر زمان، برنامهای اجرا میشود، آن برنامه به صفحات مختلف تقسیم شده و سیستم عامل هر تکه از آن را در حافظه ثانویه ذخیره میکند. وقتی که فرایند درخواستی را برای استفاده از حافظه ارسال میکند، سیستم عامل صفحاتی را از حافظه اصلی به آن فرایند اختصاص میدهد. بعد از آن سیستم عامل شروع به حرکت دادن صفحات مربوط به آن برنامه از حافظه ثانویه به فریمهای حافظه اصلی میکند.
صفحه بندی یکی از بخشهای مهم مدیریت حافظه در سیستم عامل است. درس سیستم عامل هم یکی از دروس مشترک و مهم در آزمون کارشناسی ارشد است. برای تسلط هرچه بهتر بر روی این درس پیشنهاد میکنیم که فیلم آموزشی رایگان مدیریت دیسک در سیستم عامل به همراه مرور اجمالی و تست کنکور را از فرادرس مشاهده کرده و بر مطالب بیان شده در آن مسلط شوید. برای دسترسی بهتر، لینک مربوط به این فیلم را در ادامه نیز قرار دادهایم.
توجه: صفحات برنامه فقط وقتی به حافظه اصلی منتقل میشوند که نیاز باشد. در غیر این صورت در همان حافظه ثانویه باقی میمانند.
صفحات منطقی و فریم فیزیکی صفحه حافظه، رابطه بین خود را با کمک ساختاری به نام «جدول صفحه» (Page Table) نگهداری میکنند. «واحد مدیریت حافظه» (Memory Management Unit |MMU) از جدول صفحه برای ترجمه آدرسهای منطقی - در حافظه مجازی - به آدرسهای فیزیکی - در حافظه فیزیکی - استفاده میکند.
با استفاده از دستور زیر در ترمینال یا خط فرمان لینوکس، میتوانیم جدول صفحه مربوط به سیستم عامل را تماشا کنیم.
pmap [PID]
برای نمایش جدول حافظ هر فرایند، در ابتدا لازم است که «شماره شناسایی فرایند» (Process ID |PID) را پیدا کنیم. به منظور پیدا کردن شماره شناسایی فرایند هم میتوانیم از دستورهایی مانند ps و top و pgrep یا atop استفاده کنیم. بعد از اینکه شماره شناسایی فرایندی را پیدا کردیم - برای نمونه 17422 - با استفاده از دستور زیر میتوانیم جدول حافظه را چاپ کنیم.
pmap 17422
بعد از اجرای کد بالا در ترمینال لینوکس، خروجی شبیه به تصویر پایین به کاربر نمایش داده میشود.
خروجی بدست آمده از فرمان pmap، اطلاعات دقیقی را درباره استفاده فرایند خاصی از حافظه ارائه میدهد. در فهرست زیر دادههایی که از هر ستون بدست میآید را توضیح دادهایم.
- PID: شماره شناسایی فرایند در حال اجرا
- Kbytes: اندازه صفحات حافظه که در مقیاس کیلوبایت نمایش داده میشود.
- Mode: مجوزهایی که به هر صفحه اختصاص داده شدهاند. برای مثال میتوان از مجوزهای مخصوص خواندن، نوشتن، اجرا و غیره نام برد.
- Mapping: فایل یا شیء که صفحه مربوطه به آن تعلق دارد یا بر روی آن نگاشت شده است.
خط اول خروجی شامل PID و نام فرایند است. در حالی که بقیه خطها جزئیات مربوط به هر ناحیه نگاشت شده بر روی حافظه مربوط به فرایند را نمایش میدهند. در واقع هر خط، آدرسهای صفحات مجازی نگاشت شده برای آن فرایند خاص را نشان میدهد.
- نکته: سیستم عاملهای مختلف از رویکردهای متفاوتی برای پیادهسازی صفحه بندی استفاده میکنند. لینوکس، ویندوز و macOS از روشی بر مبنای هارد دیسک استفاده کرده و سختافزار صفحه بندی را در CPU پیادهسازی میکنند. اما صفحه بندی بر اساس نرمافزار در سیستم عاملهایی مانند یونیکس، Android و iOS نشان میدهند که سامانه صفحهبندی این سیستم عاملها بر مبنای نرمافزار پیادهسازی شده است.
لغات تخصصی مربوط به صفحه بندی در سیستم عامل
دانستن اصطلاحات مرتبط با فرایند صفحه بندی برای درک توضیحات و اجرای این عملیات بسیار ضروری است. در فهرست زیر مجموعهای از رایجترین اصطلاحات مربوط به این عملیات را جمعآوری کرده و توضیح دادهایم.
- «صفحات» (Pages): به بلوکهایی گفته میشود که دارای اندازه ثابت هستند. این بلوکها بر روی حافظه ثانویه یا منطقی قرار دارند. این صفحات، انتقال واحد اطلاعات را بین حافظه اصلی و حافظه ثانویه نمایش میدهند. «مجموعه کاری» (Working Set) به دستهای از صفحهها اشاره میکند که فرایند به صورت فعال از آنها استفاده میکند.
- «جدول صفحه» (Page Table): ساختار دادهای که به واحد مدیریت حافظه یا MMU کمک میکند تا آدرسهای منطقی را به آدرس فیزیکی ترجمه کند. MMU این کار را با نگاشتن صفحات مجازی بر روی فریمهای فیزیکی انجام میدهد.
- «حافظه فیزیکی» (Physical Memory): اندازه RAM واقعی و قابل دسترسی در سیستم است. حافظه فیزیکی به دو قسمت بلوکهای صفحه و فریم با اندازه ثابت تقسیم میشود. فریمها نیز مانند صفحات از اندازه یکسانی بهرهمند هستند و بخشهای فعال برنامه را در خود ذخیره میکنند.
- «حافظه مجازی» (Virtual Memory): به این حافظه، «حافظه ثانویه» (Secondary Memory) یا «حافظه منطقی» (Logical Memory) هم گفته میشود. فضایی بر روی هارد دیسک یا حافظه SSD است که مانند بخش افزوده شدهای به حافظه اصلی فیزیکی - یا RAM - کار میکند. وقتی که RAM پر شود، صفحات غیر فعال به این فضا ارسال میشوند. با این حال، تمام صفحات موجود بر روی حافظه مجازی در زمان نیاز به آنها دوباره و با سرعت زیاد، قابل انتقال به RAM هستند.
- «واحد مدیریت حافظه» (Memory Management Unit |MMU): قطعه سختافزاری که آدرسهای منطقی - مورد استفاده برای برنامهها - را به آدرسهای فیزیکی - در حافظه RAM - تبدیل میکند و فرایند تخصیص حافظه را مدیریت میکند.
- «آدرس منطقی» (Logical Address): به آدرس منطقی، آدرس مجازی هم گفته میشود. آدرسی که توسط CPU در طول اجرای برنامه تولید شده است. این آدرس را MMU به آدرس فیزیکی ترجمه میکند.
- فضای آدرس منطقی: برای این عبارت از اصلاح فضای آدرس مجازی هم استفاده میشود. به محدودهای از آدرسهای منطقی گفته میشود که در دسترس فرایند خاصی قرار میگیرند.
- «آدرس فیزیکی» (Physical Address): این آدرس، موقعیت واقعی دادهها را در RAM نشان میدهد. هر فریم در رم دارای آدرس یکتایی است.
- فضای آدرس فیزیکی: محدوده کلی همه آدرسهای فیزیکی ممکن در سیستم را نشان میدهد. به این معنا که فضای رم به چه میزان توان آدرسدهی دارد.
روال کاری صفحه بندی
صفحه بندی، فرایندی است که واکشی و نمایش اطلاعات را در بخشهای کوچک انجام میدهد. روال کاری صفحه بندی یا به بازدید صفحه منتهی میشود یا به خطای صفحه. خطای صفحه مربوط به موقعیتی است که دادههای مورد نیاز به صورت فوری، قابل دسترسی نیستند.
روند کاری صفحه بندی، شامل دنبال کردن مراحل زیر به صورت منظم است.
- مرحله اول: در ابتدا فرایندی اجرا میشود.
- مرحله دوم: سیستم عامل، بخشهای فرایند را به صفحاتی با اندازه یکسان در حافظه مجازی اختصاص میدهد. همچنین فریمهای مربوط به این صفحات را در حافظه فیزیکی نیز ایجاد میکند.
- مرحله سوم: سیستم عامل جدول صفحه را ایجاد میکند. در جدول صفحه، تمام صفحات منطقی فرایند را بر روی فریمهای فیزیکی نگاشت میکند. در واقع در جدول صفحه، آدرسهایی را نگهداری میکند که با کمک آنها از صفحات منطقی میتوان به فریمهای فیزیکی دسترسی داشت و بر عکس.
- مرحله چهارم: فرایند دیگری برای دسترسی به فریم یا صفحه این فرایند، درخواست ارسال میکند.
- بخش اول از مرحله پنجم (5a): صفحه درخواست شده از قبل در حافظه اصلی قرار دارد و فرایند به اجرای خود ادامه میدهد. با این کار Page Hit ایجاد میشود. Page Hit به معنای اعلان دسترسی سالم به صفحه است.
-
- بخش دوم از مرحله پنجم (5b): اگر صفحه درخواست شده در حافظه اصلی موجود نباشد، سیستم با خطای Page Fault یا Page Miss - به معنای از دست دادن صفحه حاوی اطلاعات - رو به رو میشود.
- مرحله ششم: واحد مدیریت حافظه یا MMU از «جدول صفحه» استفاده کرده و مکان صحیح فرایند را در حافظه فیزیکی شناسایی میکند. با این کار فریم صفحه اصلاح میشود.
- مرحله هفتم: جدول صفحه با آدرس فیزیکی صحیح بهروزرسانی میشود.
- مرحله هشتم: سیستم عامل، صفحه را به فریمهای مربوط به صفحه در درون حافظه اصلی میآورد.
- مرحله نهم: فرایند از نقطهای که دچار مشکل شده بود کار خود را دوباره از سر میگیرد. در نتیجه اکنون موفق به دسترسی به صفحه خواهد شد. در این حالت خطای صفحه برطرف شده است.
تکنیک های صفحه بندی
فرایند پیادهسازی صفحه بندی روشهای مختلفی را ارائه میدهد. بنابراین برای انتخاب روش باید به فاکتورهای متنوع موجود توجه کرد. از جمله این فاکتورها میتوان به نوع سیستم عامل، میزان حافظه در دسترس و نیازمندیهای فرایند در زمان اجرا اشاره کرد.
برای مثال، «صفحه بندی بر اساس تقاضا» (Demand Paging) انتخاب بسیار خوبی است، مخصوصا برای سیستم عاملهایی که نیاز به کارآمدی زیادی دارند. از سوی دیگر، «صفحه بندی پیشبینانه» (Anticipatory Paging) برای سیستم عاملهای نیازمند به پاسخگویی سریع، انتخاب بهتری است.
برای درک مطلب صفحه بندی در سیستم عامل لازم است که نسبت به مدیریت رَم نیز اطلاعات کافی داشته باشید. در صورت نیاز به راهنمایی میتوانید مطلب مدیریت رم (RAM) و حافظه، هر آنچه باید در این مورد بدانید را از مجله فرادرس مطالعه کنید. با کمک این مطلب، تسلط بیشتری بر مبحث حافظه در رَم خواهید داشت.
در فهرست زیر، انواع روشهای صفحه بندی را توضیح دادهایم.
- «صفحه بندی بر اساس تقاضا» (Demand Paging): صفحه بندی بر اساس تقاضا، رایجترین روش مدیریت حافظه در میان سیستم عاملهای مدرنی مانند ویندوز، لینوکس و macOS است. این تکینک صفحه بندی، از طریق نگهداری صفحههایی که اخیرا استفاده شدهاند در حافظه، میزان استفاده از حافظه را بهینهسازی میکند.
- «صفحه بندی پیشبینانه» (Anticipatory Paging): این روش، نوع جسورانهتر همان روش صفحه بندی بر اساس تقاضا است. در این روش، به سرعت و تا جای ممکن، صفحات نزدیک به صفحهای که درخواست شده را نیز در حافظه بارگذاری میکنیم. هدف این است با پیشبینی اینکه کدام صفحات ناموجود در حافظه رَم به زودی مورد نیاز خواهند شد و بارگذاری سریعتر آنها، از بروی خطای صفحه جلوگیری کنیم و تاخیر در عملکرد را کاهش دهیم.
- «پیشصفحه بندی» (Prepaging): روش پیشصفحه بندی نسبت به روش صفحه بندی پیشبینانه از شدت تهاجمی کمتری برخوردار است. در این روش هم سیستم هر صفحهای را که احتمال درخواست آن در آینده نزدیک وجود دارد، در حافظه بارگذاری میکند. اما این کار به صورت فوری انجام نمیگیرد.
- صف، دزدی کردن و استرداد صفحه آزاد: این روش از طریق ردیابی فریمهای آزاد و تخصیص دوباره فریمها در زمان نیاز، حافظه را مدیریت میکند. اساس کلی این روش به سه بخش استوار است.
- «صف صفحه آزاد» (The free page queue): منظور از صف، لیستی از فریمهای صفحهای است که برای تخصیص دادن به صورت آزادانه در دسترس هستند. این فرایند برای به حداقل رساندن امکان بروز خطای صفحه، تلاش میکند تا این صف هرگز خالی نشود.
- «دزدیدن صفحه» (Page stealing): فرایندی که باعث آزاد شدن فریمهای صفحه میشود. این کار به این صورت انجام میشود: صفحاتی که اخیرا مورد مراجعه قرار نگرفتهاند از حافظه پاک میشوند و بعد از آن فریمهای آزاد شده مربوط به این صفحات به صف صفحه آزاد افزوده میشوند.
- «استرداد» (Reclaiming): عملیات استرداد به صورت متصل با دزدی کردن انجام میشود. این عملیات، فریمهایی را آزاد میکند که دیگر استفاده نمیشوند. اگرچه استرداد به صورت تهاجمیتری روی میدهد. سیستم عامل حتی میتواند صفحاتی را استرداد کند که به احتمال زیاد به زودی بازخوانی خواهند شد.
- «پیش پاکسازی» (Pre-cleaning): این فرایند، محتوای صفحاتی را که تغییر کردهاند دوباره بر روی دیسک ذخیره میکند. حتی اگر احتمال تغییر دوباره آن صفحات در زمان کوتاه وجود داشته باشد. در نتیجه وقتی که برنامه جدیدی شروع به کار میکند، سیستم مجبور نیست که منتظر خواندن صفحات از روی دیسک باشد. این مسئله باعث کاهش زمان مورد نیاز برای شروع به اجرای کار است.
- صفحه بندی به صورت Copy-On-Write: وقتی فرایندی تلاش دارد که بر روی صفحه در حال استفاده، اطلاعاتی را بنویسد، سیستم عامل نسخه کپی از آن را صفحه ایجاد میکند. سپس به صورت اختصاصی دسترسی اعمال تغییرات بر روی این نسخه کپی شده را به فرایند مورد اشاره میدهد. با این روش، دو فرایند مجزا نمیتوانند بر روی دادههای یکدیگر اطلاعات نامرتبط بنویسند.
- «صفحه بندی بخش بندی شده» (Segmented Paging): این تکنیک با تقسیم کردن حافظه اصلی به بخشهایی به اندازه متغیرها، صفحه بندی و بخش بندی را با یکدیگر ترکیب میکند. هر متغیر در این روش به اندازه جدول صفحه است. سپس این بخشها را هم به صفحاتی با اندازه کوچکتر و ثابت تقسیم میکنند. بر عکس حافظه مجازی، که حافظه را به شکل مستقیم بر صفحاتی تقسیم میکند، بخش بندی عملیات نگاشت آدرسهای حافظه مجازی را بر روی آدرسهای حافظه فیزیکی مدیریت میکند. یعنی در بخش بندی با آدرسها کار میکنیم و نه دادههای ذخیره شده در حافظه.
- «صفحه بندی معکوس» (Inverted Paging): این تکنیک زمانی استفاده میشود که جدول صفحه بر روی حافظه قرار دارد و حافظه فیزیکی به فریمهای با اندازه ثابت تقسیم شده است. وقتی فرایندی نیاز دارد که به صفحه دسترسی پیدا کند، تکنیک صفحه بندی معکوس، جدول صفحه را برای پیدا کردن فریم فیزیکی مرتبط با آن بررسی میکند.
خطای صفحه
خطای صفحه زمانی روی میدهد که فرایندی برای دسترسی به صفحهای تلاش میکند که در حافظه فیزیکی وجود ندارد. صفحه مورد نظر یا به دلیل اینکه اخیرا مورد مراجعه قرار نگرفته در دسترس نیست یا به دلیل اینکه فضای حافظه برای بارگذاری آن کافی نبود.
اما دلایل دیگری هم برای رویدادن خطاهای صفحه یا Page Faults وجود دارند. در فهرست زیر مهمترین آنها را جمعآوری کردهایم.
- این صفحه قبلا در حافظه بارگذاری نشده است.
- این صفحه به دلیل ایجاد فضای بارگذاری برای صفحات دیگر از حافظه حذف شده است.
- صفحه مورد نظر، در حافظه تغییر کرده و لازم است که دوباره بر روی دیسک نوشته شود.
انتخاب بهترین رویکرد برای روبهرو شدن و برطرف کردن خطاهای صفحه بسته به چند عامل مختلف است. این عوامل شامل نوع سیستم عامل، میزان حافظه در دسترس و خود فرایندها میشود. سیستم عامل معمولا خطاهای صفحه را با کمک یکی از روشهای صفحه بندی یا با مختومه کردن کل فرایند، مدیریت میکند.
راه حلهای ممکن در مقابل خطای صفحه یکی از موارد فهرست شده در پایین است. تمام سیستم عاملها هم باید یکی از همین موارد را انتخاب کنند.
- روش اول مختومه کردن یا خاموش کردن برنامه است. به شرطی که صفحه مورد جستوجو مهم نباشد یا برنامه در بخشهای بسیار مهمی قرار نداشته باشد، میتوان از این روش استفاده کرد. الگوریتمهای متنوع جایگزینی صفحه تعیین میکنند که در زمان رویدادن Page Fault کدام یک از صفحات به بیرون فرستاده شوند. رایجترین «الگوریتمهای جایگزینی» (Replacement Algorithms) شامل مورادی مانند «کمترین استفاده شده اخیر» ( Least Recently Used | LRU)، «اولین ورودی، اولین خروجی» (First In, First Out| FIFO) یا «اولین ورودی، اولین خدمت رسانی شده» (First Come, First Served | FCFS) و «بهترین» (Optimal) هستند.
- راه حل بعدی این است که صفحه استفاده نشدهای به حافظه ثانویه انتقال داده شود و صفحهای که باعث رویدادن خطای Page Fault شده به حافظه اصلی منتقل شود. هدف این است که به برنامه برای ادامه اجرا کمک کنیم.
- روش آخر حل این مشکل هم به این صورت است، صفحاتی را که سیستم عامل پیشبینی کرده به زودی مورد نیاز خواهند شد از پیش بارگذاری کنید. به این روش صفحه بندی پیشبینانه یا پیشصفحه بندی گفته میشود. این روش به کاهش خطای صفحه کمک میکند. اما اگر صفحات از پیش بارگذاری شده مورد استفاده قرار نگیرند، باعث هدر رفت فضای حافظه میشود.
Thrashing
حادثه Thrashing در حافظه مجازی روی میدهد. وقتی که خطای صفحه به میزانی افزایش پیدا میکند که زمان صرف شده برای مدیریت صفحات از دسترفته توسط سیستم بیش از زمان در دسترس برای اجرای برنامهها شود به اصطلاح Thrashing اتفاق افتاده است.
«حلقه بازخوردی» (The Feedback Loop) باعث رویدادن حادثه Thrashing است. این حلقه از جایی شروع میشود که فرایندی با خطای صفحه روبهرو شود. بعد از آن سیستم عامل باید صفحه درخواست شده را از دیسک حافظه به حافظه اصلی بارگذاری کند. خود این عمل زمانبر است.
اگر سیستم عامل در زمان کوتاهی چندین خطای صفحه دریافت کند، مجبور خواهد بود که تمام زمان خود را برای برطرف کردن خطاهای صفحه صرف کند. در نتیجه اجرای کدهای کاربر به تعویق میافتد.
دلایل بروز Thrashing
در صورت رویدادن Thrashing، سیستم به صورت ادامه دار شروع به کند شدن میکند. این روند تا جایی ادامه دارد که سیستم به طور کامل غیر قابل استفاده شود. تنها راه موجود برای بر طرف کردن حادثه Thrashing، این است که دلایل پشت پرده این اتفاق را برطرف کنیم. در فهرست زیر بعضی از مهمترین دلایل رویدادن Thrashing را بیان کردهایم.
- تعداد بسیار زیاد فرایندها: وقتی که سیستم عامل در حال اجرای تعداد بسیار زیادی فرایند است دیگر نمیتواند همراه با درخواستهای ارسال شده به کار خود ادامه دهد. زیرا تعداد درخواستها برای دسترسی به حافظه هم به میزان بسیار زیادی هستند. این مسئله نرخ خطای صفحه را به میزان خیلی زیادی افزایش میدهد. بنابراین سیستم عامل به شکل دائم و تکراری باید مشغول ارسال صفحات به دیسک و فراخوانی آنها از دیسک باشد.
- استفاده بسیار زیاد از حافظه: فرایندهایی با میزان استفاده خیلی زیاد از حافظه، جلو سیستم عامل را برای نگهداری همه صفحات مربوط به فرایندهای جاری به صورت همزمان میگیرند. این مسئله هم، منجر به افزایش نرخ خطای صفحه یا Page Fault میشود.
- الگوریتم جایگزینی صفحات ضعیف: در زمان روی دادن Page Fault، این الگوریتم جایگزینی صفحات است که صفحه مورد نظر برای خارج شدن از حافظه مجازی را انتخاب میکند. اگر «الگوریتم جابهجایی» (Replacement Algorithm) صفحات خوب نباشد، ممکن است صفحاتی را از حافظه خارج کند که بارها مورد استفاده قرار گرفتهاند. خروج صفحات با استفاده تکراری و دائمی از حافظه منجر به افزایش نرخ خطای صفحه میشود.
- درجه بالایی از «چند برنامهای» (Multiprogramming): وقتی که تعداد برنامه خیلی زیادی به صورت همزمان در حال اجرا شدن هستند، در واقع میتوان گفت که درجه چندبرنامهای بالا رفته است. این مسئله بر روی سیستم عامل فشار وارد کرده و میتواند باعث بروز Thrashing شود.
- کمبود فریمها: اگر به اندازه کافی در حافظه، فریم در دسترس نباشد، وقتی که صفحات جدید از راه میرسند، سیستم عامل مجبور به تخلیه صفحات موجود در حافظه میشود.
دلایل شمرده شده در بالا، مهمترین علتهای بروز Thrashing هستند. برای مدیریت این علتها و کم کردن خطر بروز Thrashing روشهای مختلفی پیشنهاد شدهاند که در فهرست زیر این روشها را به صورت خلاصه بیان کردهایم.
- تعداد فرایندهای در حال اجرا را محدود کنیم.
- حافظه کمتری را به فرایندهای در حال اجرا اختصاص بدهیم.
- سعی کنیم مناسبترین الگوریتم مربوط به جابهجایی صفحات را پیدا کرده و استفاده کنیم.
- اندازه حافظه RAM را افزایش بدهیم.
- برنامههای بی استفاده را ببندیم.
- برنامههای با مصرف حافظه بالا را جایگزین کنیم.
- اندازه فایل مربوط به جابهجایی صفحات را افزایش بدهیم.
مزایا و معایب صفحه بندی در سیستم عامل
این تکنیک مدیریت حافظه برای کمک به RAM و افزایش بهرهوری سیستم ایجاد شده است. بنابراین دارای مزایای زیادی است که در سیستم عاملهای شناخته شده مورد استفاده قرار میگیرد. اما هر تکنیکی نقاط ضعف مخصوص به خود را نیز دارد.
در این بخش از مطلب با مزایا و معایب استفاده از صفحه بندی آشنا شدهایم.
مزایای استفاده از صفحه بندی
صفحه بندی به سیستم عاملها کمک میکند که از حافظه فیزیکی به روش بسیار کارآمدتری استفاده کنند و باعث افزایش بهرهوری سیستم میشود. مزایای کلیدی صفحه بندی در سیستم عامل را میتوان به صورت موارد فهرست زیر بیان کرد.
- «کاهش تکههای خارجی» (Reducing External Fragmentation): صفحه بندی به سیستم عامل کمک میکند که بیش از مقدار ممکن از حافظه استفاده کند. حتی با اینکه همه صفحات به صورت همزمان در حافظه سیستم حاضر قرار میگیرند. سیستم عامل صفحاتی که اخیرا مورد استفاده قرار نگرفتهاند را به دیسک حافظه منتقل میکند و در صورت نیاز آنها را دوباره با صفحات بیاستفاده دیگری جایگزین میکند.
- ارتقا کیفیت استفاده از حافظه: صفحه بندی از طریق کاهش دادن زمان انتظار CPU برای بارگذاری صفحات حاوی داده از دیسک، باعث ارتقا عملکرد کلی سیستم میشود. سیستم عامل صفحاتی که بیشتر از همه به صورت تکراری استفاده میشوند را در حافظه نگهداری میکند و فقط کم استفادهترین صفحات را با صفحات جدید و مورد نیاز جابهجا میکند.
- سادهسازی فرایند مدیریت حافظه: صفحه بندی، فرایند مدیریت حافظه را برای برای سیستم عامل به کاری بسیار آسانتر تبدیل میکند. بنابراین سیستم عاملها فقط باید رد صفحاتی را دنبال کنند که اخیرا مورد استفاده قرار گرفتهاند. در غیر این صورت مجبور بودند که تمام فضای آدرس مربوط به هر فرایند را در اختیار و زیر نظر داشته باشند.
- مبادله موثر: با کمک صفحه بندی، سیستم عامل در زمان جابهجایی صفحهها نیازی به در نظر گرفتن بخشبندی - فضاهای خالی درون حافظه - ندارد. علاوه بر این، سیستم عامل صفحاتی را انتخاب میکند که کمترین احتمال استفاده در آینده نزدیک را دارند.
- پشتیبانی از حافظه مجازی: «پشتیبانی از حافظه مجازی» (Virtual Memory Support) به این معنا است که هر فرایندی فضای آدرس مخصوص به خود را دارد. حتی اگر حافظه فیزیکی برای برطرف کردن نیاز همه فرایندها به اندازه کافی بزرگ نباشد.
معایب استفاده از صفحه بندی
صفحه بندی روشی بسیار موثر برای استفاده هرچه بهتر از حافظه فیزیکی است. اما این روش، خود باعث افزوده شدن پیچیدگی بیشتر به سیستم عامل و بروز خطایی به نام Page Fault میشود. در حالی که مزایای استفاده از این تکنیک بر معایب آن ارجحیت دارد، ولی باز هم لازم است که نسبت به معایب آن شناخت کافی داشته باشیم. به همین دلیل در فهرست زیر، مشکلات کلیدی استفاده از صفحه بندی در سیستم عامل را بیان کردهایم.
- افزایش هزینههای کلی سیستم: صفحه بندی باعث افزایش هزینه منابع در سیستم میشود. زیرا سیستم عامل مجبور است که دائما رد صفحات موجود در حافظه و دیسک را گرفته و از این مسائل مطلع باشد. بنابراین این افزایش هزینهها در مصرف منابع باعث کاهش عملکرد سیستم میشود. بخصوص در سیستمهایی که دیسکی با سرعت پایین دارند.
- خطاهای صفحه: صفحه بندی میتواند منجر به بروز خطاهای صفحه شود. این خطاها در زمانهایی رخ میدهند که سیستم عامل نیاز به بارگذاری صفحهای از دیسک به حافظه دارد. وقتی که این نوع از خطاها به صورت تکراری رخ بدهند، باعث کاهش سرعت کلی سیستم میشوند.
- پیچیدگی: پیادهسازی و دیباگ کردن صفحه بندی، سیستمی پیچیده و چالش برانگیز دارد.
- «تکههای داخلی» (Internal Fragmentation): صفحه بندی باعث افزایش تکههای داخلی میشود. از آنجا که آخرین صفحه هر فرایند به صورت کامل پردازش نمیشود، این کار منجر به هدر رفت حافظه میشود.
- سرریز جدول صفحه: صفحه بندی نیاز به جدول صفحه دارد. که این خودش باعث مصرف چشمگیر حافظه میشود. برای کاهش اثرات منفی این مشکل از جدولهای چند سطحی و اندازه صفحات متغیر - اَبَر صفحهها - استفاده میشود.
آموزش نرم افزارهای تخصصی با کمک فرادرس
دنیای کامپیوتر دنیای بسیار وسیعی است. در این دنیای گسترده رشتههای و حوزههای تخصصی فراوانی وجود دارند. هرکسی با توجه به علاقه، نیاز یا گرایش شغلی که دارد یکی از مسیرها را انتخاب کرده و تلاش میکند که مهارهای خود را ارتقا دهد. آموزش نرمافزارهای تخصصی گاهی از اوقات میتواند بسیار پیچیده و چالشآمیز باشد. اما فرادرس تلاش کرده که برای مجموعه کاملی از این نرمافزارها، فیلمهای آموزشی تهیه کرده و در اختیار مخاطبان خود قرار دهد. استفاده از فیلمهای آموزشی کیفیت یادگیری را به میزان بسیار زیادی افزایش میدهد. به همین دلیل در پایین چند مورد از این آموزشها را به عنوان نمونه، معرفی کردهایم.
- فیلم آموزش رایگان +Network به صورت سریع و آسان در ۹۰ دقیقه با فرادرس
- فیلم رایگان راهنمای جامع شغلی مهندسی نرم افزار درباره وظایف، فرصت ها و بازار کار با فرادرس
- فیلم آموزش برنامه نویسی پایتون مقدماتی با فرادرس
- فیلم آموزش کوئری نویسی پیشرفته در SQL Server با فرادرس
- فیلم آموزش پروژه محور وردپرس بدون کدنویسی درباره طراحی سایت فروشگاهی با فرادرس
با کلیک بر روی تصویر زیر به صفحه اصلی این مجموعه آموزش منتقل شده و از فیلمهای آموزشی بیشتری دیدن کنید.
جمعبندی
سیستمهای عامل با کمک صفحه بندی به مدیریت حافظه کامپیوتر میپردازند. پردازشها با کمک این تکنیک به حافظه بیشتری نسبت به حافظه فیزیکی موجود دسترسی پیدا میکنند. صفحه بندی کیفیت عملکرد و استفاده از منابع را ارتقاء داده و باعث کاهش احتمال از دست رفتن صفحات میشود. سیستم عاملها روزبهروز در حال پیشرفتهتر شدن هستند و فرایندها هم روزبهروز در حال پیچیدهتر شدن. به همین دلیل توسعهدهندگان تلاش میکنند که برای مدیریت فرایندهای جدید از روشهای متنوعی استفاده کنند.
در این مطلب از مجله فرادرس درباره صفحه بندی در سیستم عامل صحبت کردهایم. در ابتدا روش صفحه بندی را تعریف کرده و سپس به بیان رویکردهای مورد استفاده برای پیادهسازی صفحهبندی رفتهایم. در نهایت هم مزایا و معایب استفاده از این تکنیک را در مدیریت حافظه سیستم عامل به صورت مختصر و مفید بیان کردیم.