قبل از این که آموزش RTOS را شروع کنیم لازمه یکم در مورد RTOS توضیح بدیم ، چون هیچ بعید نیست که خیلی ها حتی اسم RTOS را تا حالا نشنیده باشید (البته بعید میدونم اونم توی قرن 21 !) خواهی نخواهی دیگه باید از سبک و شیوه های قدیمی فاصله گرفت و با تکنولوژی های جدید آشتی کرد. البته این به این معنی نیست که RTOS موجود جدیدی است ؛ به این معنیه که خیلی از ما داریم از شیوه های قدیمی توی کدنویسی استفاده میکنیم که اگر از شیوه های جدید استفاده کنیم ، قادر خواهیم بود که بهره وری رو افزایش بدیم. برای آموزش های بیشتر با سیسوگ همراه باشید.
چرا آموزش RTOS
ممکن است با خودتون فکر کنید که الان من بدون سیستم عامل هم دارم به خوبی کار خودم رو پیش می برم و چه نیازی هست که خودم رو درگیر پیچیدگی های سیستم عامل کنم ؛ یا این که RTOS چه کاری میتونه برای من بکنه که خودم قادر نیستم انجامش بدم ؟ ؛ اینها دقیقا تصورات خود من بوده ! البته مربوط به 7 سال پیش وقتی که هنوز کار با سیستم عامل رو شروع نکرده بودم ! اون موقع برنامه نویسی رو به شکل سنتی Super Loop انجام میدادم و تقریبا هر کاری رو میخواستم قادر بودم انجام بدم ! تا این که یک روز کنجکاو شدم که این سیستم عامل چی هست و به چه دردی میخوره !
تاثیر استفاده از سیستم عامل برای من اینقدر زیاد بود که دوست دارم همه دوستان رو با سیستم عامل و قابلیت های اون آشنا کنم ولی متاسفانه مثل همیشه منبع خوب فارسی در این خصوص پیدا نکردم :/ واقعا جای تاسف داره ؛ برای همین تصمیم گرفتم این آموزش رو تهیه کنم تا همه دوستان و همراهان سیسوگ بتونن از اون استفاده کنند.
قبل از شروع آموزش ها توی کانال تلگرام سیسوگ نظر سنجی گذاشتیم تا بتونیم مسیر حرکت رو مشخص کنیم ؛ 60 درصد شرکت کننده ها توی نظر سنجی نظرشون این بود که یک سیستم عامل رو از اول باز نویسی کنیم ! خوب جای خوشحالی داره که دوستان و همراهان سیسوگ اینقدر علاقه به یادگیری از پایه و بیس دارند (بین خودمون باشه نظر خودمم همین گزینه بود).
RTOS چیست ؟
فکر میکنم اولین سوالی که لازمه جواب داده بشه این سوال باشه که اصلا RTOS چیست و به چه دردی میخوره ؛ همونطور که حدس میزنید و از اسمش هم پیداست OS مخفف operating system و معادل فارسی اون هم سیستم عامل است. امروزه بالغ بر 90 درصد جمعیت زمین با یکی از انواع سیستم عامل کار کرده اند؛ سیستم عامل در واقع یک نرم افزار است که منابع سخت افزاری رو مدیریت می کند.
یونیکس ؛ لینوکس ؛ بی اس دی ؛ مک ؛ ویندوز همگی سیستم عامل هایی هستند که امروزه برای سرورها و کامپیوتر های شخصی استفاده می شوند ؛ اندروید ؛ ios ، سیمبین ؛ بلک بری ؛ میگو و .. هم سیستم عامل هایی هستند که بر روی گوشی های همراه و دستگاه های قابل حمل نصب و راه اندازی می شوند. اما دنیای سیستم عامل ها به همین جا ختم نمیشود ؛ سیستم عامل در دستگاه هایی وجود دارد که حتی فکرش را هم نمیشود کرد. مثلا ممکن است مسواک برقی شما از یک سیستم عامل خاص استفاده کند!
عموما سیستم عامل ها در دو دسته سیستم عامل های بلادرنگ یا همان RTOS که مخفف Real Time operating system است و سیستم عامل های با درنگ که Non RTOS خوانده میشوند. تمام سیستم عامل هایی که قبلا معرفی کردیم ؛ سیستم عامل های بادرنگ هستند. در ادامه بیشتر در خصوص RTOS توضیح میدهیم و بررسی میکنیم چرا وجود چنین سیستم عاملی لازم و حیاتی است. پس آموزش RTOS سیسوگ را از دست ندهید.
چرا RTOS تافته جدا بافته است ؟
فرض کنید آپلو 11 از سیستم عامل ویندوز استفاده می کرد ؛ قطعا پای بشر به ماه نمی رسید ؛ یا قبل از خروج از جو زمین موتور ها خاموش میشد و سقوط می کرد یا از مدار ماه خارج می شد و در کهکشان سرگردان می گشت. اما آیا فکر کرده اید که چرا این اتفاقات ناگوار نیفتاد ؟ و بشر موفق شد که به کره ماه برود ! خیلی ساده است چون آپلو 11 از ویندوز استفاده نمیکرد 🙂
حالا که حرف آپلو 11 شد بد نیست بدونید که کامپیوتر آپلو 11 تنها 2 کیلو بایت Ram داشته و حدود 30 کیلوبایت Rom یعنی چیزی در حدود میکروکنترلر Atmega32 نه بیشتر !
اما چرا سیستم عامل ویندوز باعث شکست پروژه میشد؟ دقیقا به این دلیل که ویندوز یک سیستم عامل بلادرنگ نیست ! RTOS با مدیریت زمان باعث میشود که پردازنده قادر باشد ورودی های سیستم را بدون کوچکترین تاخیری پردازش کند و عکس العمل مناسب رو در زمان مناسب از خود نشان دهد. دقیقا تنها برتری مهم RTOS نسبت به دیگر سیستم عامل ها همین قابلیت Real Time بودن است.
و همین مهم ترین خصیصه یک سیستم عامل بلادرنگ است. در مقابل، سیستم عامل های بادرنگ چنین تضمینی را ارائه نمی دهند !
چرا باید از RTOS استفاده کنیم ؟
معمولا در پروژه های الکترونیکی و کنترلی لازم است که سیستم عملکرد مناسبی را نسبت به ورودی ها داشته باشد ؛ یعنی کمترین تاخیر ممکن از لحظه اعمال یک ورودی تا گرفتن خروجی مناسب ! مدیریت صحیح منابع یکی دیگر از دلایلی است که باید از سیستم عامل استفاده کنید ، فکر کنید چطور میشود یک گوشی هوشمند بدون سیستم عامل باشد ؟ یا در مثال صنعتی باید گفت چطور میشود که یک PLC از سیستم عامل استفاده نکند ؟ ؛ تقریبا چنین چیزی غیر ممکن است.
سیستم عامل همچنین کمک میکند برنامه با ساختار بهتری نوشته شود ؛ این خود به تنهایی فرایند خطا یابی را ساده تر می کند و به توسعه سریع برنامه کمک زیادی میکند همچنین قابلیت حمل کد را بالا میبرد و برای اجرای یک برنامه بر روی سخت افزار جدید تنها نیاز خواهید داشت که سیستم عامل را روی آن اجرا کنید (البته این در صورتی است که برنامه را با ساختار مناسب نوشته باشید) .
در پست بعد آموزش RTOS قسمت دوم ؛ قابلیت های یک سیستم عامل بلادرنگ رو بررسی میکنیم و بررسی میکنیم که چه سیستم عامل های بلادرنگی وجود دارند. پس با سیسوگ همراه باشد.
سلام و احترام برادر. خداقوت.
واقعاً ممنون بابت زحماتی که میکشید همگی و صبر و حوصله و متانتی که دارید. خداوند پشت و پناهتون
سلام و درود بر شما دوست عزیز
خواهش میکنم، متشکرم برای همراهی و همدلی شما
سلام
خسته نباشید ، مقاله خوبی بود و به زبان ساده و روان توضیح دادید
موفق و پیروز باشید
با سلام
من سوالی داشتم.
ایا می شود روی میکروکنترلرها یا میکروپروسسورها سیستم عامل نصب کرد.
اگر می شود از چه خانواده های هستند.
و چه نوع سیستم عاملی می شود نصب کرد.
اندروید- لینوکس- ویندوز10 سپاس گذارم.
با این که سوالتون کلی هست ولی باید بگم بله میشه !
اغلب میکروکنترلرهای مدرن این قابلیت رو دارن که بتونید روی اونها سیستم عامل نصب کرد و چند کار رو با هم انجام بدهند ولی اشتباه نکنید – سیستم عاملی که میشه نصب کرد اندروید لینوکس و…. نیست بلکه rtos هست.
اگه میخواید روی یه آیسی چیزی مثل لینوکس یا اندروید نصب کنید باید سراغ soc ها برید، برای جزببات بیشتر سری مقالات eLinux رو دنبال کنید.
با سلام و تشکر از به اشتراک گذاری دانشتون
زبان ساده و روونی دارین و این برای آموزش فوق العاده ست
خیلی خوبه که از مفاهیم شروع کردین
امیدوارم زمانتون بهتون اجازه بده این مبحث رو به انتها برسونین
بسیار مشتاقیم
تشکر از سایت خوب Sisoog
سلام دوست عزیز
خواهش میکنم ممنونم 🙂
انشالله قسمت بعدی در حال آماده سازی است 🙂
متشکر از همراهی شما
سلام.
دمت گرم
سلام
خواهش میکنیم دوست عزیز
سلام.خدا قوت
ممنون که به این موضوع پرداختید.
سلام
خواهش میکنیم دوست عزیز
سلام
تا اونجا که فهمیدم با این سیستم عامل شما کاری به رجیسترها و سخت افزار ندارین و باید یه سری دستورات تعریف شده جدید رو به کار ببرین و این دستورات در هر سیستم عامل فرق داره. این سیستم عامل ها حجم فلش و رم میبره و برای کارهای کوچک مناسب نیستن. مثلا برای AVR هم موجوده ولی با توجه به ظرفیت سخت افزاری AVR به نظر می رسه باعث عملکرد به شدت ضعیف اون بشه. بیشتر در حکم زبان بیسیک هست برای میکرو نسبت به سی. با این حال من که با این روش حال نمیکنم و بهتر میدونم که در طراحی سخت افزار رو حس کنم. این کار شاید زمان بر باشه ولی برنامه نویسی دقیقتر و کم حجم تر و قابل اطمینان تری داره. با این حال جهت اینکه در دفعات بعد زمان کمتری برای برنامه نویسی بذاریم میشه برای هر واحد سخت افزاری زیر برنامه های مشخص رو نوشت و در کارهای بعد اونها رو کپی زد و به عنوان یک سیستم دارای ورودی و خروجی اطلاعات در نظر گرفت
سلام دوست عزیز ؛ اصلا اینطور که فکر میکنید نیست ؛ سیستم عامل هیچ کاری به سخت افزار میکرو نداره و سخت افزار میکرو به صورت کامل در اختیار شماست ؛ در واقع سیستم عامل کار مدیریت زمان رو انجام میده در مواردی که لازم داشته باشید مدیریت منابع سخت افزاری رو انجام میده ؛ پیشنهاد میکنم این سری مقالات رو دنبال کنید ؛ قضیه روشن خواهد شد و خواهید دید که سیستم عامل چقدر میتونه به شما کمک کنه !
البته حق با شماست شاید روی میکروکنترلر های AVR که منابع سخت افزاری کمی داشته باشند زیاد کاربردی نباشه ولی خوب خالی از لطف هم نیست.
مطلب خوبیه اما ادامه دار باشه بهتره
متشکرم ؛ حتما ادامه دار هست ، ولی احتمالا مقداری کند پیش بره
سیستم های بی درنگ، به بیان ساده، بخش کامل مشخص نمیکنن. شما به یه کارگر، میگید سر ساعت 1 تو اتاق اول میری فلان کارو میکنی، سر ساعت 2 تو اتاق بعدی میری کار مربوط به اونو انجام میدی و … . این چیزیه که توی نوشته بهش اشاره شده. اما نقطه ی ضعفشون گفته نشد. و اون اینکه نمیتونن به اندازه ی سیستم های بادرنگ انعطاف پذیر باشن. یه سیستم بادرنگ، ممکنه 3 دقیقه بیشتر توی اتاق اول بمونه در عوض کارشو تو اون اتاق تموم کنه. اما سیستم بی درنگ انتهای کار هم که باشه ولش میکنه میره بعدی. ممکنه تو این زمان، داده های اتاق اول منقضی بشن، یا اصن بیخودی معطل یه پردازش نهایی ساده بمونن. چرا؟ چون سیستم های بی درنگ برای تعریف “کار” محدودیت دارن.
خوب کسی منکر توانایی های سیستم عامل های بادرنگ نیست ؛ به هر حال قابلیت هایی دارند این سیستم عامل ها که مورد استفاده خیلی ها قرار میگره ولی خوب در نقاطی هم ضعف هایی دارند که نمیشه برای مقاصد خاصی ازشون استفاده کرد. منظور شما رو از انعطاف متوجه نشدم ؛ ولی این توضیحی که در مورد کارکرد سیستم عامل و کارگر دادید چندان درست نیست و واقعا به این شکل اتفاق نمی افته !
توی سیستم های بلادرنگ این تضمین وجود داره که هیچ داده ای منقضی نشده و توی زمان مشخص شده پردازش بشه البته به این شرط که سیستم درست طراحی و برنامه نویسی شده باشه و اصلا فلسفه وجودی این سیستم ها همین تضمینی هست که عرض کردم خدمتتون !
در ضمن چرا فکر میکنید در سیستم های بلادرنگ محدودیت تعریف تسک وجود داره ؟ بسته به مقدار رمی که دراختیار دارید میتونید تسک ایجاد کنید.
درود
بحث سیستم عامل بلادرنگ موقعی بیشترین کاربرد رو داره که پردازنده هم real time باشه . مثل پردازنده imxrt1052 که real time هستش یا پردازنده های cortex R . وگرنه فکر نکنم روی پردازنده های معمولی بشه خاصیت real time بودن رو بدرستی اجرا کرد و ازش جواب گرفت. مخصوصا برای سیستم هایی که نیاز به دقت بالا در پردازش دارن.
سلام و ممنون برای کامنتتون ؛ ببینید بدون این پردازنده ها هم سیستم عامل های بلادرنگ به خوبی بلادرنگ هستند و اصلا جای نگرانی نیست ؛ تنها تفاوت این پردازنده ها با باقی پردازنده ها اینه که به شکل سخت افزاری بلادرنگ رو پشتیبانی می کنند البته خودم مطالعه دقیقی نداشتم که بتونم اظهار نظر دقیقی انجام بدم ولی فکر میکنم مثل قابلیت MPU باشه که توی سری Cortexm بشکل سخت افزاری پشتیبانی میشه ولی متد نرم افزاریش به خوبی در انواع دیگر هم کار میکنه
احتمالا باعث کاهش تاخیر بشه این قابلیت ها
منم خسته نباشید میگم و پیگیرم که همه ی قسمت های بعدی رو با شما جلو بیام تا بتونم یاد بگیرم این مبحث رو.
چند باری رفتم سمتش ولی نشد که خوب یادش بگیرم اما این دفعه خیلی امیدوارترم، به لطف آموزش های خوبتون.
سلام و درود ؛ خواهش میکنم دوست گرامی
واقعا یادگیری سیستم عامل ؛ سخت نیست تنها منبع میخواد که انشالله بتونیم به خوبی ایجادش بکنیم.
سلام
خیلی ممنونم از شما به خاطر تلاشی که برای بالابردن سطح جامعه الکترونیک میکنید.
مبحثی که قراره بهش بپردازید فوق العاده است و جای خالیش بسیار در منابع فارسی حس میشه. بی صبرانه منتظر قسمتهای بعدی شما هستیم.
خواهش میکنم دوست عزیز ؛ این حداقل کاری هست که میتونیم انجام بدیم ؛ امیدوارم که تونسته باشم حداقل کمکی کرده باشم
متشکرم از لطف شما دوست عزیز 🙂
با تشکر از زحمات شما وسایت خوبتون و وقتی که برای انتشار مطالب می گذارید.منتظر بقیه مطالب هستیم
خواهش میکنم دوست عزیز
انشالله به زودی منتشر خواهد شد.
خسته نباشید زئوس جان عالی بود
عجب چیزیه این?? RTOS
منتظر قسمت بعدی آموزش هستیم
خواهش میکنم دوست عزیز
انشالله به زودی قسمت جدید هم منتشر میشه 🙂
مثل همیشه عالی
برای قسمت های بعدی لحظه شماری میکنم.
خواهش میکنم – باعث خوشحالیه که خوشتون اومده از این مقاله 🙂