Bosh sahifa > Ko'rgazma > Kontent

Real-time operatsion tizimi Intertask aloqa va resurs almashish

Mar 08, 2019

Unix kabi ko'p ishlaydigan operatsion tizim real vaqt rejimida ishlaydi. Vaqt rejalashtiruvchisi kompyuterda eng kam talabga ega bo'lgan ishlarga eng yuqori ustuvor vazifalarni bajaradi, shuning uchun vaqtli ishni etarli mablag' bilan ta'minlashni ta'minlashning hech qanday usuli yo'q. Multitasking tizimlari bir nechta vazifalar orasida almashish ma'lumotlarini va apparat resurslarini boshqarishi kerak. Ikkala vazifa bir vaqtning o'zida bir xil ma'lumot yoki apparat manbaiga kirish uchun odatda xavfli emas. [6] Ushbu muammoni hal qilish uchun uchta yondashuv mavjud:


Vaqtinchalik maskeleme / o'chirish to'xtatish

Umumiy maqsadlarda foydalaniladigan operatsion tizimlar, odatda, foydalanuvchi dasturlarini to'xtatishga (o'chirishga) xalaqit bermaydi, chunki foydalanuvchi dasturi CPU ni xohlagancha boshqarishi mumkin. Ba'zi zamonaviy CPUlar foydalanuvchining tartib-kodini interruptlarni o'chirishga ruxsat bermaydi, chunki bunday boshqaruv asosiy operatsion tizim resursi hisoblanadi. Ko'pgina ko'milgan tizimlar va RTOS-lar, ilovaning o'zi yadro rejimida tizimning chaqiruv samaradorligini oshirish uchun va shuningdek, ilovaga OS aralashuvisiz operatsion muhitni ko'proq nazorat qilishiga ruxsat berish uchun ruxsat beradi.


Yagona protsessor tizimlarida yadro rejimida ishlaydigan dastur va maskalanuvchi interruptlar umumiy resursga bir vaqtning o'zida kirishni oldini olish uchun eng pastki usul hisoblanadi. O'chirishlar maskalanadi va joriy vazifa blokirovka OS qo'ng'iroqini qilmasa ham, joriy vazifa CPU-dan alohida foydalanishga ega, chunki hech qanday vazifa yoki interrupt nazoratni ololmaydi, shuning uchun muhim qism himoyalangan. Vazifa o'z tanqidiy bo'limidan chiqqandan so'ng, bu uzilishlarni bartaraf etish kerak; kutish to'xtatilgan bo'lsa, keyin bajariladi. Vaqtincha maskalanuvchi intervallarni faqat tanqidiy bo'lim orqali eng uzun yo'l kerakli maksimal uzilish kechikishidan kamroq bo'lsa bajarilishi kerak. Odatda bu himoya usuli faqat kritik bo'lim faqatgina bir nechta ko'rsatmalar bo'lsa va hech qanday loop bo'lmasa ishlatiladi. Ushbu usul bitlar turli xil vazifalar bilan boshqariladigan bo'lsa, bit-mapped registrlarini saqlash uchun ideal.


Mutexes

Birgalikda foydalaniladigan resurs barcha boshqa vazifalarni (Flash xotirani yozishni kutish kabi) blokirovka qilmasdan ajratilgan bo'lishi kerak bo'lsa, mutex va OS nazorati ostida bo'lgan interpolyatsializatsiya xabarlari kabi umumiy maqsadli operatsion tizimlarda mavjud bo'lgan mexanizmlardan foydalanganda yaxshiroqdir. Bunday mexanizmlar tizim chaqiruvlarini o'z ichiga oladi va odatda operatsion tizimning dispetcherlik kodini chaqiradi, shuning uchun ular odatda yuzlab CPU ko'rsatmalarini bajarishadi, maskelashni to'xtatish esa ba'zi protsessorlarda bitta ko'rsatma bo'lishi mumkin.


A (rekursiv bo'lmagan) mutex yoki qulflangan yoki qulfdan chiqarilgan. Agar vazifa mutexni qulflagan bo'lsa, barcha boshqa vazifalar mutexning egasi tomonidan qulfdan chiqarilishini kutishi kerak - asl nusxa. Vazifa mutex uchun kutish vaqtini belgilashi mumkin. Mutex asosli dizaynlar bilan bir qatorda ma'lum muammolar mavjud.


Yuqori ustunlikka yo'naltirilgan vazifada yuqori ustuvor vazifa kutilmoqda, chunki past darajadagi ustuvor vazifa mutexga ega, biroq past darajadagi ustuvor vazifa o'z ishini tugatish uchun CPU vaqti berilmaydi. Odatiy yechim - bu mutexga egalik qiluvchi yoki "meros qilib olish" vazifasini bajarish, eng katta kutish vazifasining ustuvorligi. Ammo kutishning bir nechta sathi mavjud bo'lsa, bu oddiy yondashuv yanada murakkablashadi: vazifa V vazifasi bilan qulflangan mutexni kutib turgan B funktsiyasi tomonidan qulflangan mutex uchun kutadi. Ko'p darajadagi merosni boshqarish yuqori darajadagi kontekstda boshqa kodlarning ishlashiga sabab bo'ladi va shuning uchun o'rta boshlang'ich iplarning ochilishiga olib kelishi mumkin.


Berkitmadan keyin ikki yoki undan ortiq vazifalar muteksni takrorlashni bekor qiladi va keyinchalik boshqa vazifa mutexasi uchun abadiy kutib turadi, bu jarayonning uslubiy qo'shilishi. Eng oddiy qulflashga senariysi ikkita vazifa ikki mutexni muqobil ravishda qulflanganda, aksincha tartibda amalga oshiriladi. Diqqatli dizayni bilan qulflashga yo'l qo'yilmaydi.


Xabarni yuborish

Resurslarni taqsimlashga bo'lgan boshqa yondashuv, xabarlarni uyushgan xabar yuborish sxemasida yuborish uchun topshiriladi. Ushbu paradigmada manba to'g'ridan-to'g'ri bir vazifa bilan boshqariladi. Agar boshqa vazifa resursni so'roq qilish yoki manipulyatsiya qilmoqchi bo'lsa, u boshqaruv vazifasiga xabar yuboradi. Haqiqiy xulq-atvorlari semafor tizimlardan ko'ra kamroq bo'lsa-da, oddiy xabarlar asoslangan tizimlar ko'pchilik protokoli halokatli xavflardan qochishadi va odatda semafor tizimlarga qaraganda yaxshiroq ishlaydi. Biroq, semaforlar kabi muammolar mavjud. Biror vazifa past ustuvor xabarda ishlayotgan va birinchi navbatda xabarni (yoki yuqori ustuvor vazifadan bilvosita kelib chiqqan xabarni) kiruvchi xabarlar navbatida e'tibordan chetda qoldirganda ustunlikning o'zgarishi mumkin. Ikki yoki undan ko'p vazifa javob xabarlarini jo'natish uchun bir-birlari uchun kutib turganda protokol halokati paydo bo'lishi mumkin.