|
O‘zbekiston respublikasi axborot texnologiyalari
|
bet | 188/222 | Sana | 15.05.2024 | Hajmi | 5,84 Mb. | | #236377 |
Linuxda jarayon va oqimlar uchun bitta umumiy tasavvurdan foydalaniladi. Linux dagi oqim – bu umumiy manzil maydonini ona jarayon bilan birga foydalanidigan yangi jarayon. Farqi faqat clone tizim chaqiruvi bilan yangi oqim yaratilishida namoyon bo‘ladi:
fork klassik tizim chaqiruvi batamom yangi kontekstli, yangi jarayonni yaratadi;
clone tizim chaqiruvi o‘zining yangi shaxsiy identifikatoriga ega yangi jarayonni tashkil etadi, lekin unga o‘zining ona jarayoni bilan birga ma’lumotlar tuzilmasidan birgalikda foydalanishga ruxsat berilgan.
Clone tizim chaqiruvidan foydalanish jarayonlarga oqimlar tomonidan qanday resurslardan birgalikda foydalanishi ustidan ochiqdan-ochiq nazorat qilishga imkon beradi.
Yadro vazifalarini rejalashtirish va yadroda sinxronlash
Eslatib o‘tamiz, rejalashtirish – bu operatsion tizim protsessori vaqtining turli vazifalar o‘rtasida taqsimlash. OT larning aksariyatida rejalashtirish deyilganida jarayonlarni ishga tushurish va vaqtinchalik uzilishlar nazarda tutilsa, Linux da rejarashtirishga yadroning turli vazifalarini bajarish ham kiritiladi. Yadro vazifalarini bajarish o‘z
ichiga ham mazkur jarayon tomonidan so‘ralgan ma’lumotlar bo‘yicha vazifalar, hamda drayver ishlashi jarayonida bajariladigan vazifalar ham kiradi. Yadro rejimida bajarish bo‘yicha so‘rov ikki vaziyatda paydo bo‘lishi mumkin:
bajarilayotgan dastur ochiqdan-ochiq tizim so‘rovi yordamida yoki pinhoniy, masalan, sahifa buzilishida OT ning xizmatini so‘rashi mumkin;
qurilma drayveri apparat uzilishlarini ishga tushurishi mumkin, natijada protsessor yadro rejimida mazkur uzilishning ishlov beruvchisi vazifasini bajarishni boshlashi mumkin.
Yadroda sinxronlash yadroning muhim bo‘limlari boshqa muhim bo‘limlar tomonidan uzilishlarsiz bajarilishini talab qiladi.
Linux muhim bo‘limlarini himoyalashning ikki usulidan foydalanadi:
Yadroning oddiy kodi – to‘xtatilmaydi. Agar jarayon yadroning tizimli xizmat ko‘rsatish kichik dasturi bajarilayotgan paytida vaqt bo‘yicha uzilish qabul qilingan bo‘lsa, need_ resched bayrog‘i tizim chaqiruvi tugashi va boshqaruv imtiyozsiz kodga uzatilishi kerak bo‘lganida rejalashtiruvchi ishga tushishi uchun ko‘rsatma sifatida xizmat qiladi.
Ikkinchi usul uzilishlarga ishlov berish servislarida bajariladigan yadronining muhim bo‘limlariga nisbatan qo‘llaniladi. Muhim bo‘limni bajarilishi paytida uzilishlarni o‘chirish uchun protsessorning uzilishlarni boshqaradigan appraturadan foydalanib, yadro ma’lumotlarning umumiy tuzilmalariga bir vaqtda murojaat qilishining xavfsiz bajarilishini kafolatlaydi.
Unumdorlikda yo‘qotishlarga yo‘l qo‘ymaslik uchun Linux yadrosi muhim bo‘limlar ko‘pchiligini muhim bo‘lim bajarilishini to‘la vaqtiga uzilishlarni o‘chirish zarurligi bo‘lmasdan, bajarilishiga imkon beruvchi sinxronlash arixitekturasidan foydalaniladi.
Uzilishlarga ishlov berish xizmatlari yuqori yarmiga (top half) va pastki yarmiga (bottom half) bo‘linadi:
yuqori yarmi – bu rekursiv uzilishlarni o‘chirish tarzda bajariladigan uzilishlarga ishlov berishning oddiy protsedurasi;
pastki yarmi – uzilishlar rejimi yoqilgan holda, kichik yarimlar bir-birini to‘xtatmasligini ta’minlovchi mini- rejalashtiruvchidan foydalanib bajariladi.
Bu arixitektura yadroning oddiy kodi bajarilishida pastki yarimlarni tanlash mexanizmi bilan to‘ldiriladi. 9.3- rasmda uzilishlarni himoyalashning darajalari ko‘rsatilgan.
Yuqori yarmidagi uzilishlarga ishlov beruvchilar
|
Pastki yarmidagi uzilishlarga ishlov beruvchilar
|
Yadroning xizmat ko‘rsatadigantizimli kichik dasturlar tizimlari (uzilib qolmaydigan)
|
Foydalanuvchi qoladigan)
|
darajasidagi
|
kichik
|
dasturlar
|
(uzulib
|
9.3- rasm. Uzilishlarni himoyalashning darajalari
Har bir darajaning kodi yuqoriroq darajali kod bilan to‘xtatilishi mumkin, lekin teng yoki pastroq darajali kod bilan hech qachon to‘xtatilmaydi.
Foydalanuvchi jarayoni doimo boshqa jarayon bilan to‘xtalishi mumkin, agar uzilish vaqtni taqsimlash rejimida rejalashtiruvchi tomonidan amalga oshirilsa.
Linux jarayonlar rejalashtirishning ikki algoritmidan foydalanadi:
jarayonlar o‘rtasida uzilishlarni teng huquqli ravishda rejalashtirish uchun vaqtni taqsimlash algoritmi;
teng huquqlikka nisbatan absolyut ustuvorlik muhimroq bo‘lishi hollari uchun real vaqtli algoritmi.
Jarayonni rejalashtirish sinfi aynan qaysi algoritm qo‘llanilishini belgilaydi. Vaqtni taqsimlash jarayonlari uchun Linux ishonch (credits) asosidagi ustuvorliklar (priority) qo‘llaniladigan algoritmdan foydalanadi. credits := credits / 2 + priority qoidasi ham jarayon tarixini, ham uning ustuvorligini inobatga oladi. Bunday tizim bo‘yicha interaktiv yoki kiritish/chiqarishni bajaruvchi jarayonlarning ustuvorliklari avtomatik ravishda belgilanadi. Linux rejalashtirishda quyidagi algoritmlardan foydalanadi: FIFO va Round Robin; ikkala vaziyatda faqat ayrim rejalashtirish klassi emas, balki har bir jarayon
ustuvorlikka ega. Rejalashtiruvchi jarayonni eng yuqori ustuvorlik bilan ishga tushiradi; teng ustuvorlikka ega jarayonlaridan eng ko‘p vaqt kutib qolgan jarayon bajariladi. FIFO – jarayonlar tugaguncha yoki blokirovka qilinguniga qadar bajariladi. Round-robin – jarayon ma’lum vaqt o‘tgach to‘xtatiladi va rejalashtirish navbatining oxiriga joylashtiriladi; shuning uchun teng ustuvorlikka ega. RR-jarayonlar vaqtni avtomatik tarzda o‘zaro taqsimlaydi. Linux 2.0 versiyasi SMP qurilmalarni qo‘llab-quvvatlovchi Linux ning birinchi yadrosi bo‘lgan; turli jarayonlar yoki oqimlar bir nechta protsessorlarda parallel ravishda bajarilishi mumkin. Yadroning uzilishlarsiz bajarish talabiga rioya qilish uchun SMP quyidagi cheklashni o‘rnatadi: har bir onda bittadan ko‘p bo‘lmagan jarayon yadro rejimida kodni bajarishi mumkin.
|
| |