نام پژوهشگر: علی یهلولی
محمد حسین کیانی محمد علی منتظری
سیستم عامل های تعبیه شده به عنوان اصلی ترین نرم افزار در سیستم های تعبیه شده مطرح هستند. به طورکلی، مدیریت فرآیند ها و مدیریت حافظه اصلی ازجمله وظایف این نوع از سیستم عامل ها است. به عنوان نمونه سیستم عامل میکروسی، یک سیستم عامل تعبیه شده متن باز به زبان c است، که واحد مدیریت حافظه آن به صورتی است که به جای استفاده از توابع موجود در سیستم های عمومی، از بلاک های حافظه با اندازه ثابت استفاده می کند. ازطرف دیگر، حافظه spm حافظه ای کوچک و سریع بوده که پردازنده از آن برای ذخیره موقت دادهها استفاده میکند. این حافظه به عنوان جایگزینی برای حافظه نهان در سیستمهای تعبیهشده مطرح شده است. سیستم عامل و کامپایلر از وجود چنین حافظه ای اطلاع دارند (بر خلاف حافظه نهان)، بنابراین جهت استخراج مزیت های این حافظه، ارائه مکانیزم های موثر تخصیص حافظه توسط هرکدام از مولفه های کامپایلر و سیستم عامل ضروری است. درسال های اخیر چندین روش جهت مدیریت حافظه spm بیان شده است که این روش ها سعی می کنند داده ها ویا کدهایی که به طور مکرر در زمان اجرا مورد دسترسی قرار می گیرند را درون این حافظه پیش واکشی کرده و از این طریق کارایی ویا مصرف انرژی را بهبود دهند. ولی در روش هایی که تاکنون پیشنهاد شده است، مکانیزم های تخصیص حافظه توسط سیستم عامل و نیز داده های پویا (داده هایی که در زمان اجرا ایجاد می شوند) و تخصیص این نوع از داده ها بر روی حافظه spm کمتر مورد توجه قرار گرفته است. از طرف دیگر در محیط های چندوظیفه ای محرومیت برنامه ها از این حافظه مورد توجه قرار نگرفته درحالی که به دلیل محدود بودن حجم حافظه spm امکان محرومیت برنامه ها از این حافظه وجود دارد. هدف این پژوهش این است که بتوان حافظه spm را در سطح سیستم عامل مدیریت کرد به صورتی که داده های پویایی که بسیار مورد ارجاع قرار می گیرند را در این حافظه قرار داد، به طوری که استفاده مجدد از آن ها با هزینه کمتر انجام گیرد و از این طریق کارایی سیستم افزایش یابد. ازطرف دیگر در یک محیط چند برنامه ای، از محرومیت برنامه ها جهت بهره مندی از این حافظه جلوگیری شود. برای حل این مسئله، الگوریتمی پیشنهاد شد که در آن از تفسیر برنامه نویس در زمان طراحی برنامه های تعبیه شده، مدیریت حافظه پویای سیستم عامل میکروسی و سیاست صفحه بندی ساده ی سیستم عامل استفاده شده است. به طور خلاصه، برای جلوگیری از بالاسری زیاد بر روی سیستم عامل جهت مشخص کردن داده هایی که در زمان اجرا به حافظه spm منتقل می شوند، از تفسیر برنامه نویس استفاده شده است. از طرف دیگر با اعمال سیاست صفحه بندی سیستم عامل و بخش بندی حافظه spm، امکان سهم بندی برنامه ها از این حافظه فراهم شده است؛ بنابراین به دلیل سهیم شدن هرکدام از برنامه ها از این حافظه، از محرومیت آن ها در زمان اجرا جلوگیری شده است. از طرف دیگر با به کارگیری سیاست مدیریت حافظه پویای سیستم عامل میکروسی که موجب شکستن درخواست های حافظه پویا می شود، می توان به درخواست های با اندازه بالا بر روی این حافظه پاسخ داد. جهت ارزیابی و تجزیه و تحلیل نتایج روش پیشنهادی از زبان های برنامه نویسی c و java در محیط های شبیه سازی microsoft visual studio و netbeans استفاده شده است. چندین برنامه ی تعبیه شده انتخاب شدند و کدهای آن ها مورد اصلاح قرار گرفت تا آن ها به صورت پویا حافظه های مورد نیاز خود را درخواست کنند. نتایج آزمایشی الگوریتم پیشنهادی نشان می دهد که هر کدام از برنامه ها به خوبی از سهم خود جهت بهره مندی از حافظه spm استفاده کرده و هیچ کدام از آن ها دچار محرومیت نشده اند؛ و نیز با مقایسه این روش با روش های مشابه مشخص شده است که 1) روش ارائه شده به علت شکستن درخواست برنامه ها، میزان اشتباه کمتری در تخصیص داده ها به این حافظه نسبت به روش مشابه داشته است. 2) در روش پیشنهاد شده به علت اختصاص کامل قسمتی از این حافظه به هرکدام از برنامه ها، میزان کمتری از داده ها در زمان اجرا از حافظه spm به حافظه اصلی منتقل می شوند. بنابراین، روش پیشنهادی هزینه ی کمتری جهت مدیریت برنامه های تعبیه شده درزمان اجرا پرداخت می کند.