امروزه با گسترده تر شدن کاربرد میکرو کنترلر ها وسنگین تر شدن محاسبات نیاز به پردازش های موازی بیشتر و بیشتر میشه.سیستم عامل ها قابلیت های مختلفی رو برای کاربر ایجاد میکنند که یکی از پر کاربرد ترین اون ها چند پردازشی بودن اوناست.درک این موضوع که پردازنده ما در لحظه قادر به انجام یک دستور است ولی سیستم عامل ها چند پردازش رو هم زمان انجام میدن در نگاه اول سخت به نظر میاد.یه توضیح مختصری در باره این موضوع برای دوستانی که اطلاعاتشون در این مورد کم هست میدم:
در مالتی تسکینگ در اصل ما چند کار رو با هم انجام نمیدیم . در هر لحظه بخشی از هر کار رو انجام میدیم که اگه در کل نگاه کنیم به نظر میرسه همه ی کار ها با هم انجام شده.از نظر اینکه هسته ی سیستم عامل زمان پردازنده رو چطور بین تسک های مختلف تقسیم کنه و چطور با اولویت ها برخورد کنه,سیستم عامل ها عملکرد مختلفی پیدا میکنند و هر کدوم برای یه جا مناسبه. ساده ترین حالت اینه که زمان رو بین همه ی تسک ها تقسیم کنیم و اگه اولویت تسکی بالا تر بود زمان بیشتری به اون بدیم. به این عکس نگاه کنید. ما 2 تسک تعریف کردیم که در هر کدوم وضعیت دو پایه مختلف رو تغییر میدیم.همین طور که تو شکل مشخصه هسته سیستم زمان انجام رو به طور مساوی بین این دو تسک تقسیم کرده.

حالا اگه بیایم اولویت ها رو تغییر بدیم.میبینیم که زمان داده شده به هر تسک(تسک های ما تغییر وضعیت 2پین بود) تغییر میکنه و تسک با اولویت بالا تر زمان بیشتری میگیره.2 عکس زیر از یه برنامه گرفته شده تنها فرق بین اون ها تغییر اولویت هست که تو عکس معلومه:


تسک ما تغییر وضعیت یه پین میکرو بود. پس در هر لحظه وضعیت اون میتونه بالا یا پایین باشه(صفر و یک). همین طور که تو عکس زیر میبینید در زمان تعویض تسک این پین میتونه هر وضعیتی داشته باشه چون تعویض تسک کاری به برنامه در حال اجرا نداره و دستور تعویض تسک رو از وقفه ی تایمر میگیره!

تو برنامه ای که در پایین گزاشتم دقیقا کار های بالا صورت میگیره.
تو کتابخونه ی برنامه از تایمر صفر برای ایجاد وقفه تعویض تسک استفاده شده. این کتابخونه بیشتر جنبه آموزشی داره و اگر برای پروژه ای دنبال هسته ی سیستم عامل میگردید از هسته هایی مثل FREE RTOS و RTX (keil) و... استفاده کنید.چون یه سیستم عامل کامل نیاز به یه سری امکانات دیگه هم داره که تو اینجا نیومده و از طرفی نوشتن اون ها هم زیاد عقلانی نیست چون زمان و انرژی زیادی نیاز داره!
توضیح کامل در مورد سیستم عامل ها رو در کتاب real time operation system بخونید.این کتاب رو قبلا تو همن سایت گزاشته بودند. دوستان مطالب زیادی در مورد آموزش سیستم عامل ها قرار دادند و توضیحات جامعی هم گزاشتند که من دیگه به دلیل تکراری بودن اون ها رو نیاوردم. پیشنهاد میکنم اون تاپیک ها رو حتما بخونید تا دید بهتری نسبت به سیستم عامل ها داشته باشید.....
http://www.4shared.com/rar/ws9aYx0S/MULTITASKING_ON_AVR_3.html
در مالتی تسکینگ در اصل ما چند کار رو با هم انجام نمیدیم . در هر لحظه بخشی از هر کار رو انجام میدیم که اگه در کل نگاه کنیم به نظر میرسه همه ی کار ها با هم انجام شده.از نظر اینکه هسته ی سیستم عامل زمان پردازنده رو چطور بین تسک های مختلف تقسیم کنه و چطور با اولویت ها برخورد کنه,سیستم عامل ها عملکرد مختلفی پیدا میکنند و هر کدوم برای یه جا مناسبه. ساده ترین حالت اینه که زمان رو بین همه ی تسک ها تقسیم کنیم و اگه اولویت تسکی بالا تر بود زمان بیشتری به اون بدیم. به این عکس نگاه کنید. ما 2 تسک تعریف کردیم که در هر کدوم وضعیت دو پایه مختلف رو تغییر میدیم.همین طور که تو شکل مشخصه هسته سیستم زمان انجام رو به طور مساوی بین این دو تسک تقسیم کرده.

حالا اگه بیایم اولویت ها رو تغییر بدیم.میبینیم که زمان داده شده به هر تسک(تسک های ما تغییر وضعیت 2پین بود) تغییر میکنه و تسک با اولویت بالا تر زمان بیشتری میگیره.2 عکس زیر از یه برنامه گرفته شده تنها فرق بین اون ها تغییر اولویت هست که تو عکس معلومه:


تسک ما تغییر وضعیت یه پین میکرو بود. پس در هر لحظه وضعیت اون میتونه بالا یا پایین باشه(صفر و یک). همین طور که تو عکس زیر میبینید در زمان تعویض تسک این پین میتونه هر وضعیتی داشته باشه چون تعویض تسک کاری به برنامه در حال اجرا نداره و دستور تعویض تسک رو از وقفه ی تایمر میگیره!

تو برنامه ای که در پایین گزاشتم دقیقا کار های بالا صورت میگیره.
تو کتابخونه ی برنامه از تایمر صفر برای ایجاد وقفه تعویض تسک استفاده شده. این کتابخونه بیشتر جنبه آموزشی داره و اگر برای پروژه ای دنبال هسته ی سیستم عامل میگردید از هسته هایی مثل FREE RTOS و RTX (keil) و... استفاده کنید.چون یه سیستم عامل کامل نیاز به یه سری امکانات دیگه هم داره که تو اینجا نیومده و از طرفی نوشتن اون ها هم زیاد عقلانی نیست چون زمان و انرژی زیادی نیاز داره!
توضیح کامل در مورد سیستم عامل ها رو در کتاب real time operation system بخونید.این کتاب رو قبلا تو همن سایت گزاشته بودند. دوستان مطالب زیادی در مورد آموزش سیستم عامل ها قرار دادند و توضیحات جامعی هم گزاشتند که من دیگه به دلیل تکراری بودن اون ها رو نیاوردم. پیشنهاد میکنم اون تاپیک ها رو حتما بخونید تا دید بهتری نسبت به سیستم عامل ها داشته باشید.....
http://www.4shared.com/rar/ws9aYx0S/MULTITASKING_ON_AVR_3.html
دیدگاه