Real vaqtning ko‘p tarmoqli ilovasini shakllantirish
Deyarli har bir real vaqtga taalluqli masala o‘z ichiga bir necha bir-biriga bog‘liq masalalar ketma-ketligini keltirib chiqarish bilan birga, har bir masalani alohida yechish yoki masalalar uzviyligini uzishi yoki masalalarning kamroq soni bilan yechish ham mumkin. Shu bilan birga, masalalar yechimi raqobat orqali amalga oshiriladi (bir jarayonli tizim) yoki parallel ravishda ko‘p jarayonli tizimi orqali. Ayni bir jarayonning o‘zidagina individual oqim ko‘rinishida yuqorida aytib o‘tilgandek, ko‘p masalalar tarmoqli model tizimi mavjud. Shu bilan birga, jarayon ikki qismga bo‘linadi. Birinchi qism o‘zida quyidagi resurslarni jamlaydi: butun dasturni qamrab oluvchi dasturiy kod va global ma’lumotlar. Ikkinchi qism esa quyidagi ma’lumotga ega: bajarish holatiga taalluqli ma’lumot, masalan, dasturga oid hisobchi va tugatgich. Bu qism — oqim (thread) deb ataladi.
Linux operatsion tizimi aniq tillar to‘plamiga moslashtirilgan «S» dasturlash tili bilan ta’minlangan va tarmoqlar ustida ishlovchi operatsiyalarni bajaruvchi vazifalar to‘plami mavjud. Oqimlarning bajarilishini qo‘llab-quvvatlovchi ARM (kutubxona) va sarlavhali fayllar to‘plami ko‘rinishida shakllantirilgan bo‘lib, komponovka jarayonida yuqoridagi yordam dasturi ishga tushadi. Shuni ta’kidlab o‘tish joizki, «Linux» operatsion tizimida oqimlar bajarilishi alohida jarayon deb hisoblanadi, mavjud jarayonning biror-bir qismi emas. Ilovaning ko‘p tarmoqli ishlarini tashkillashtirishda quyidagi oqimlarni boshqara bilish zarur (yaratish, yakunlash, bloklash), sodda jarayonlar yordamida alohida qismlarni sinxronizatsiyalashtirish va bir vaqtning o‘zida umumiy resurslardan foydalanishga o‘zaro to‘siqni ta’minlash. ARM yordamidan foydalanish davomida sodda jarayonlarning quyidagi ko‘rinishlari ishga tushadi, masalan: Myuntekslar, semaforlar, shartli o‘zgaruvchilar.
Masalalarning ustunligi bo‘yicha tasniflash
Markaziy protsessorda jarayonlarning ustunligini hisobga olgan holda vaqt taqsimlanadi (dispetcherizatsiyalash), raqamli jarayon xarakteristikasi uning shu muhimlik darajasini ko‘rsatuvchi hisoblanadi. «Linux»da har bir jarayon 0–99 diapazonidagi statistik ustunlikka ega. Pid identifikatori tomonidan berilgan jarayonning statistik ustunligi mazmunini sched_getparam tizim chaqiruvi yordamida quyidagi prototip bilan bilib olish mumkin:
Pid identifikatori jarayon dispetcherizatsiyasi o‘lchov mohiyati bilan int sched_getparam (pid_t pid, struct sched_param *p); sched_param tipidagi ko‘rsatilgan o‘zgaruvchi tarkibini to‘ldiradi. Informatsion tuzilishi sched_priority dan ustunlik mohiyati o‘qilishi mumkin. Operatsiyaning muvaffaqiyatli bajarilganlik belgisi natijasi ko‘rinishida qaytadi. Ko‘rib chiqilgan tizim chaqirig‘i prototipi hamda jarayonlarning ustunligi tasniflari bilan bog‘liq boshqa operatsiyalar tizimi boshlang‘ich sched. H faylida joylashadi. Oddiy foydalanuvchi jarayonlar nol statistik ustunlikka ega. Ularning dispetcherizatsiya vaqtini taqsimlash strategiyasi va dinamik ustunlik asosida amalga oshiriladi. Bunday strategiyada jarayonning reaksiya vaqti tashqi hodisa ta’sirida 10 millisekundgacha yetishi mumkin va ko‘pgina masalalar uchun bu real vaqt to‘g‘ri kelmaydi.
Tashqi hodisalarga tez javob qaytarishni talab qiluvchi real vaqt jarayonlari uchun nol bo‘lmagan statistik ustunliklardan foydalaniladi. Bajarishga tayyor bunday jarayonlarda ularning statistik ustunligi mohiyatiga asosan ro‘yxatlar bo‘yicha taqsimlanadi. Ko‘proq statistik ustunlikka ega bo‘lgan bo‘sh bo‘lmagan asosiy jarayonlar ro‘yxatidan dispetcher jarayonlarni aniqlash uchun jarayon tanlaydi. Shuni ta’kidlash kerakki, statistik ustunlik faqat superfoydalanuvchi nomidan o‘zgartirilishi mumkin. Statistik ustunlikning o‘zgartirilishi sched_ setparam tizimi chaqirig‘ining quyidagi prototipi orqali amalga oshiriladi: int sched_setparam(pid_t pid, struct sched_ param *p); — ko‘rsatilgan pid jarayonlari uchun ustunlik mohiyati o‘rnatiladi. Zarur ustunlik mohiyati avvaldan informatsion tuzilishning sched_priority maydoniga kiritilgan bo‘lishi kerak. Operatsiyaning muvaffaqiyatli bajarilganlik belgisi natija ko‘rinishida qaytadi. Real vaqt jarayonlari uchun real vaqtning maxsus strategiyalari: FIFO — rejalashtirish, RR— rejalashtirish qo‘llaniladi. Strategiya jarayonlari ro‘yxatiga jarayonni joylashtirish qoidasi va uni ro‘yxat ichida joy almashishini aniqlaydi. U faqat bir xil ustunlikka ega bo‘lgan jarayonlar raqobati mavjud bo‘lgandagina ishlaydi.
«FIFO — rejalashtirish» strategiyasida jarayonlar tayyor ro‘yxati kelib tushishi uchun protsessor taqdim etiladi. Jarayonlar o‘zining blokka tushguniga yoki tizimda yuqoriroq ustunlikka ega bo‘lgan jarayon tayyor bo‘lguniga qadar, protsessorga egalik qiladi. Tayyorgarlik holatiga o‘tishda jarayon ro‘yxatining oxiriga joylashtiriladi. Agar jarayon bajarilishi ustunroq jarayon orqali uzilsa, u holda ro‘yxatning boshida qoladi. Ushbu strategiya turli xil statistik ustunlikni jarayonlarga egalik ma’nosidagi ko‘p masalalik nuqtai-nazaridan siqib chiqarishni joriy etadi. Bunday jarayonlar o‘z faoliyatini tashqi hodisalar boshlanishini yoki «boshqarishga yon berish» jarayoni bajarilishini vaqti-vaqti bilan blokka tushurishni uyg‘unlashtirishi kerak. Oxirgi hodisada jarayon o‘zini blokka tushirolmay, ixtiyoriy ravishda protsessorni boshqa xuddi shunday ustunlikka ega bo‘lgan jarayonning bajarilishiga bo‘shatib beradi. Tizimli chaqiriq bu amalni bajarish uchun quyidagi prototipga egadir:
Do'stlaringiz bilan baham: |