“LINUX” operatsion tizimi uchun real vaqt ilovasi
08.09.2014
Rukn: Sharh va fikr-mulohazalar.
Muallif: Elvira Migranova, Dilfuza Abidova, Dilshod Mirzaev.

lin_08_09_2014

“Linux” operatsion tizimi uchun dasturli tizimning bajarilishini ta’minlashdagi real vaqt masalalarni yechish uchun ayrim maxsus real vaqtdagi masalalarni yechish uchun dasturiy tizimning bajarilishini ta’minlovchi real vaqt ilovasi ishlab chiqilgan.

Real vaqt tizimi tushunchasi qo‘rib chiqilgan; real vaqt uchun POSIX. 1003. 1 xalqaro standartiga mos keluvchi tushunchaga aniqlik kiritilgan. real vaqt tizimidagi real vaqtning “qattiqdan” “yumshoqqa” o‘tish tizimi tasniflanishlari keltirilgan. Ko‘rib chiqilgan real vaqtining tizim dasturlari real vaqt operatsion tizimida maxsus boshqaruv orqali amalga oshiriladi.

Real vaqt tizimi. Dasturiy tizim «real vaqt tizimi» bo‘lib hisoblanadi, ishning muvaffaqiyati nafaqat uning mantiqiy to‘g‘riligidan, balki olingan natijalar vaqtiga ham bog‘liq. Agar bunday tizim vaqtli cheklanishni qoniqtirmasa, unda uning ishidagi adashishlar qayd qilinishi lozim. POSIX 1003. 1 standarti «real vaqt» deganda, bu tizimning ma’lum vaqt oralig‘ida servisning talab qilingan darajasi bilan ta’minlash deb ta’riflaydi. Shunday qilib, tizimning oldindan bashorat qilinmagan tashqi hodisalarining paydo bo‘lishiga vaqtning oldindan bashorat qilingan reaksiyasi real vaqt tizimining chegarasi bo‘lib hisoblanadi. Ba’zida real vaqt tizimi tushunchasi «tezkor tizim» bilan tenglashtiriladi, biroq bu har doim ham to‘g‘ri bo‘lavermaydi, chunki tizimning ushlanib qolish reaksiyasining vaqti emas, balki ko‘rib chiqilayotgan vazifa uchun yetarli bo‘lgan vaqt muhimdir va u kafolatlangan bo‘lishi lozim.

Ko‘pgina amaliy sohalarda «real vaqt»ga o‘zgacha tushuncha bilan qaraladi. Signallarga raqamli ishlov berish sohasidan misol qilib keltiramiz. Agar audio ma’lumotlarga ishlov berishda tovushning har bir T soniyasi tahliliga T dan oshib ketuvchi vaqt kerak bo‘ladigan bo‘lsa, bunday ishlov berish jarayoni real vaqt jarayoni bo‘lib hisoblanmaydi. Agar T soniyadan kam talab qilinsa, bu endi real vaqt jarayoni bo‘lib hisoblanadi. «Qattiq» va «yumshoq» real vaqt tizimi ajratiladi. «Qattiq» real vaqt tizimi ma’lum interval vaqtida harakatlarni bajarishni ta’minlaydi. Odatda, bunday kafolatlar reaksiyaning o‘rnatilgan muddatidan chetga chiqishi tizimning ishlash qobiliyatining fatal buzilishiga olib keluvchi tizimlar uchun talab qilinadi. Bunga o‘xshash jamlanma quyidagilarni o‘z ichiga oladi:

  • Boshqarish oqimi.
  • Vazifalarni rejalashtirishning maxsus oqimi.
  • Real vaqt signallari.
  • Sinxronizatsiya vositalari.
  • Yuqori oqimli taymerlar.
  • Sinxron kirish — chiqish.

«Linux» operatsion tizimida real vaqt
«Linux» operatsion tizimi real vaqtda vazifalarni yechish uchun yuqorida qayd qilingan maxsus vositalarni qo‘llab-quvvatlashni ta’minlaydi. Biroq u qat’iy qilib aytganda, real vaqtning operatsion tizimi bo‘lib hisoblanmaydi. Real vaqt tizimini baholashda ikkita muhim xarakteristikadan foydalaniladi:

  • uzilishga javob vaqti — uzishni talab qilish va uzishga ishlov berish funksiyasini bajarishni boshlash fursati orasidagi vaqt;
  • boshqaruv oqimiga javob berish vaqti («latency») — uzishni talab qilish va ushbu uzilishga bo‘lgan reaksiyaga javob beruvchi oqimni bajarishni boshlash fursati orasidagi vaqt. U, xususan, uzishga javob vaqti, rejalashtirishni to‘xtatib turish, kontekstni o‘zgartirish vaqtini o‘z ichiga oladi.

«Linux» operatsion tizimi uchun ko‘rsatilgan xarakteristikalardan ikkinchisining qiymati 1–10 msni tashkil qiladi. Boshqacha qilib aytganda, ishlov berish vazifalari va real vaqtda boshqarish holatlarida chaqiriqqa talab qilingan vaqt 1 millisekunddan kamni tashkil qilsa, «Linux»dan foydalanish muammoli bo‘lib qoladi. Shu bilan birga, yumshoq vaqtning ko‘pgina vazifalari «Linux» boshqaruvi ostida muvaffaqiyatli amalga oshirilishi mumkin. Keltirilgan javob vaqtini baholash oddiy foydalanuvchi jarayonlar uchun ma’qul. Bir vaqtning o‘zida bu qiymatlar tizimning superfoydalanuvchisi nomidan ilovani yurgizib yuborish hisobiga biroz kamaytirilishi mumkin. Bu dispetcherizatsiya tuzilmasini tanlash, yuqori yechimli taymerga erishish, operativ xotirada foydalanuvchi jarayonlarga erishib bo‘lmaydigan «svopingsiz» ba’zi ma’lumotlarni majburiy o‘rnatish qator imkoniyatlardan foydalanishga imkon yaratadi.

Superfoydalanuvchi nomidan ilovani yurg‘izib yuborish tizimning xavfsizligini ko‘zda tutgan holda potensial darajada xavflidir, biroq ko‘pgina holatlarda bunday yechimga yo‘l qo‘yiladi. Qoidaga ko‘ra, yoki real vaqtning butun ilovalari, yoki uning yadrosi foydalanuvchining qanday bo‘lmasin, ishtirokini ko‘zda tutmaydi va mustaqil ishlovchi avtonom komponentlar ko‘rinishida amalga oshiriladi. Agar tizimning holatidan nazorat qilinishi va/yoki inson tomonidan uning boshqarilishi talab qilinadigan bo‘lsa, unda ushbu vazifalar bilan ta’minlash odatdagi «foydalanuvchi» zimmasiga yuklatiladi. Uning real vaqt ilovasi bilan aloqasi operatsion tizim bilan taklif qilinadigan jarayonlararo o‘zaro ta’sirning standart vositalaridan foydalaniladi. Biroq shuni yodda saqlash muhimki, «Linux» «qattiq» real vaqt ilovalarini bajarish uchun mo‘ljallanmagan. Umumiy maqsaddagi barcha operatsion tizimlarga o‘xshab «Linux» eng yomon holatni ko‘rib chiqish o‘rniga o‘rtacha ishlab chiqarish ko‘rsatkichini maksimallashtirishga harakat qiladi. Eng yomon holatlarda uzilishga ishlov berishdagi ishlab chiqarish nihoyatda yuqori emas. Ishlab chiqarishni oshirishda qo‘llanilayotgan usullarning ko‘pchiligi eng yomon holatlarda reaksiyaning vaqtini oshirish bilan «o‘rta holatda» vaqtning kamayishiga olib keladi. Shu bilan birga, «qattiq» real vaqt ilovalari uchun RTLinux kabi Linuxga maxsus kengaytmalar mavjud.

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 masalalar-ning 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.

lin_08_09_2014_1

«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‘y-xatidan 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 oshriladi: 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:

int sched_yield(); — operatsiyaning muvaffaqiyatli bajarilganlik belgisi natija ko‘rinishida qaytadi.

«Davriy rejalashtirishda» (RR) protsessorni uzluksiz muddati vaqt kvantining (150 mks) uzunligi bilan chegaralanadi. Ajratilgan vaqt kvanti tugashi bilan protsessor majburan ajratiladi, jarayon esa ro‘yxat oxiriga o‘tkaziladi. Agar jarayon bajarilishi ustunlikka ega bo‘lgan jarayon tomonidan to‘xtatilsa, u holda vaqt kvantidan ortib qolgan qismini birinchi imkoniyatning o‘zidayoq qo‘llashi mumkin. Ushbu strategiya ko‘p masalalikni siqib chiqarishni amalga oshiradi.

Ko‘rib chiqilgan har qanday strategiyalardan foydalanish shuni anglash zarurki, ko‘proq statistik muhimlikka ega bo‘lgan, bajarishga tayyor bo‘lgan yagona jarayon — protsessor hisoblash tizimi ustidan blokka tushishi holati qaysidir ko‘rinishda yuzaga kelgunga qadar mutloq hokimlik qiladi (qandaydir voqea boshlanishini kutish). Be-rilgan pid identifikatori bilan joriy strategiya jarayonini rejalashtirishni quyidagi sched_getscheduler prototipi orqali tizim chaqiruvi yordamida bilish mumkin.

int sched_getscheduler(pid_t pid); — natija sifatida SCHED_FIFO, SCHED_RR yoki SCHED_OTHER’ni qaytaradi. Xato holatida — 1ni qaytaradi.

sched_setscheduler prototip bilan tizim chaqirig‘i rejalashtirish strategiyasi jarayonining o‘zgarishi bajariladi.

int sched_setscheduler(pid_t pid, int policy, struct sched_param *p); — pid identifikatorli jarayon uchun joriy policy strategiyasi sifatida, «r» dan olingan ma’nolar parametrini o‘rnatadi. Xato holatida — 1ni qaytaradi.

Adabiyotlar:
1. А. Д. Урсул. Становлeниe информационного общeства и модeль опeрeжающeго образования // НТИ. Сeр. 1. — 1997. — №2. — С. 1–11.
2. О. П. Околeлов //Пeдагогика. — 2001. —  6. — С. 45–51.
3. Б. Д. Эльконин, И. Д. Фрумкин // Вопросы психологии. — 1993. — 1. — С. 24–32.
4. Ч. Крук. Школы будущeго // Гуманитарныe исслeдования в Интeрнeтe/ Под рeд. А. E. Войскунского — М. : Можайск-Тeрра, 2000. — С. 285–302.

Orphus system
O'zbеkistonda AKT yangiliklaridan birinchilar qatorida xabardor bo'lish uchun Telegramda infoCOM.UZ kanaliga obuna bo'ling.
Telegramga qo`shmoq
WhatsAppga qo`shmoq
Odnoklassnikiga yubormoq
VKontakteda bo`lishmoq