SUPERVISOR
محمدعلی منتظری (استاد راهنما) علی بهلولی (استاد مشاور)
STUDENT
Mohammad hosein Kiani ghalle
محمدحسین کیانی قلعه
FACULTY - DEPARTMENT
دانشکده مهندسی برق و کامپیوتر
DEGREE
Master of Science (MSc)
YEAR
1391
Embedded Operating Systems are considered as the main software in an Embedded System. In general, process management and memory management functions are some tasks of the embedded operating system. For example, the memory management unit of ?C/OS (an open-source embedded operating system) uses fixed-size memory blocks instead of usual memory functions. On the other hand, Scratch-Pad Memory (SPM) is a small and fast memory that embedded processors use to store data temporarily. Actually, SPM is an alternative to the cache memory in embedded systems. In order to exploit all the advantages of SPM, an efficient allocation mechanism must be in place in compiler and operating system. In the past few years, several SPM management mechanisms have been proposed. These methods try to allocate code or data on the SPM that are frequently accessed at run time to improve the performance or energy consumption. However, in the methods that have been proposed so far, the memory allocation mechanisms by the operating system and the allocation of dynamic data (data that is created at run time) on the SPM have received less attention. Moreover, deprivation of tasks for SPM allocation in a multi-task environment has not sufficiently investigated. The purpose of this research is SPM management at operating system level in such a way so that the frequently accessed data are allocated on the SPM. It leads to a lower cost of accessing this data and thereby increases the system performance. Privation of tasks in a multi-task environment for SPM allocation is not addressed. To solve this problem, a run-time memory management approach is proposed that uses annotations of programmer, memory management mechanism of ?C/OS, and simple paging of general operating systems. In summary, to avoid excessive overhead on the operating system at runtime to determine which data should allocated on the SPM, this approach uses annotations of programmer. Moreover, due to segmentation of SPM, the portion of this memory is provided. On the other hand, since this mechanism uses memory management policy of ?C/OS, dynamic memory requests are broken and thereby big memory size demands on the SPM can be answered. To evaluate the proposed method, C and Java programming languages were used and also several embedded tasks were selected and modified to adapt this method. Experimental results show that all tasks use their slices to improve performance and none of them have been ignored. By comparing this method with other methods, it was found that the proposed method has less error rate than the similar approaches in allocating data to the SPM. It is because of breaking the memory requests. On the other hand, the proposed method is fully dedicated to the SPM of each task, thus smaller amount of data has to be transferred to the main memory from SPM at run time. Key words: Dynamic memory management, SPM, ?C/OS, Embedded Systems
سیستم عاملهای تعبیهشده به عنوان اصلیترین نرمافزار در سیستمهای تعبیهشده مطرح هستند. بهطورکلی، مدیریت فرآیندها و مدیریت حافظه اصلی ازجمله وظایف این نوع از سیستم عاملها است. به عنوان نمونه سیستم عامل میکروسی، یک سیستم عامل تعبیه شده متن باز به زبان C است، که واحد مدیریت حافظه آن به صورتی است که به جای استفاده از توابع موجود در سیستمهای عمومی، از بلاکهای حافظه با اندازه ثابت استفاده میکند. ازطرف دیگر، حافظه SPM حافظهای کوچک و سریع بوده که پردازنده از آن برای ذخیره موقت دادهها استفاده میکند. این حافظه به عنوان جایگزینی برای حافظه نهان در سیستمهای تعبیهشده مطرح شده است. سیستم عامل و کامپایلر از وجود چنین حافظهای اطلاع دارند (بر خلاف حافظه نهان)، بنابراین جهت استخراج مزیتهای این حافظه، ارائه مکانیزمهای موثر تخصیص حافظه توسط هرکدام از مولفههای کامپایلر و سیستم عامل ضروری است. درسالهای اخیر چندین روش جهت مدیریت حافظه SPM بیان شده است که این روشها سعی میکنند دادهها ویا کدهایی که به طور مکرر در زمان اجرا مورد دسترسی قرار میگیرند را درون این حافظه پیشواکشی کرده و از این طریق کارایی ویا مصرف انرژی را بهبود دهند. ولی در روشهایی که تاکنون پیشنهاد شده است، مکانیزمهای تخصیص حافظه توسط سیستم عامل و نیز دادههای پویا (دادههایی که در زمان اجرا ایجاد میشوند) و تخصیص این نوع از دادهها بر روی حافظه SPM کمتر مورد توجه قرار گرفته است. از طرف دیگر در محیطهای چندوظیفهای محرومیت برنامهها از این حافظه مورد توجه قرار نگرفته درحالیکه به دلیل محدود بودن حجم حافظه SPM امکان محرومیت برنامهها از این حافظه وجود دارد. هدف این پژوهش این است که بتوان حافظه SPM را در سطح سیستم عامل مدیریت کرد به صورتیکه دادههای پویایی که بسیار مورد ارجاع قرار میگیرند را در این حافظه قرار داد، به طوری که استفاده مجدد از آنها با هزینه کمتر انجام گیرد و از این طریق کارایی سیستم افزایش یابد. ازطرف دیگر در یک محیط چند برنامهای، از محرومیت برنامهها جهت بهرهمندی از این حافظه جلوگیری شود. برای حل این مسئله، الگوریتمی پیشنهاد شد که در آن از تفسیر برنامهنویس در زمان طراحی برنامههای تعبیهشده، مدیریت حافظه پویای سیستم عامل میکروسی و سیاست صفحهبندی سادهی سیستم عامل استفاده شده است. به طور خلاصه، برای جلوگیری از بالاسری زیاد بر روی سیستم عامل جهت مشخص کردن دادههایی که در زمان اجرا به حافظه SPM منتقل میشوند، از تفسیر برنامهنویس استفاده شده است. از طرف دیگر با اعمال سیاست صفحهبندی سیستم عامل و بخشبندی حافظه SPM، امکان سهمبندی برنامهها از این حافظه فراهم شده است؛ بنابراین به دلیل سهیم شدن هرکدام از برنامهها از این حافظه، از محرومیت آنها در زمان اجرا جلوگیری شده است. از طرف دیگر با بهکارگیری سیاست مدیریت حافظه پویای سیستم عامل میکروسی که موجب شکستن درخواستهای حافظه پویا میشود، میتوان به درخواستهای با اندازه بالا بر روی این حافظه پاسخ داد. جهت ارزیابی و تجزیه و تحلیل نتایج روش پیشنهادی از زبانهای برنامهنویسی C و Java در محیطهای شبیهسازی Microsoft Visual Studio و etBeans استفاده شده است. چندین برنامهی تعبیهشده انتخاب شدند و کدهای آنها مورد اصلاح قرار گرفت تا آنها به صورت پویا حافظههای مورد نیاز خود را درخواست کنند. نتایج آزمایشی الگوریتم پیشنهادی نشان میدهد که هر کدام از برنامهها به خوبی از سهم خود جهت بهرهمندی از حافظه SPM استفاده کرده و هیچکدام از آنها دچار محرومیت نشدهاند؛ و نیز با مقایسه این روش با روشهای مشابه مشخص شده است که 1) روش ارائه شده به علت شکستن درخواست برنامهها، میزان اشتباه کمتری در تخصیص دادهها به این حافظه نسبت به روش مشابه داشته است. 2) در روش پیشنهاد شده به علت اختصاص کامل قسمتی از این حافظه به هرکدام از برنامهها، میزان کمتری از دادهها در زمان اجرا از حافظه SPM به حافظه اصلی منتقل میشوند. بنابراین، روش پیشنهادی هزینهی کمتری جهت مدیریت برنامههای تعبیهشده درزمان اجرا پرداخت میکند. واژههای کلیدی: 1- مدیریت حافظه پویا، 2- حافظه SPM، 3- سیستم عامل میکروسی، 4- سیستمهای تعبیهشده