349
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:
1.
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.
2.
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.
350
Bu arixitektura yadroning oddiy kodi bajarilishida pastki
yarimlarni tanlash mexanizmi bilan to‘ldiriladi. 9.3- rasmda
uzilishlarni himoyalashning darajalari ko‘rsatilgan.
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
Yuqori yarmidagi uzilishlarga ishlov beruvchilar
Pastki yarmidagi uzilishlarga ishlov beruvchilar
Yadroning xizmat ko‘rsatadigantizimli kichik dasturlar
tizimlari (uzilib qolmaydigan)
Foydalanuvchi darajasidagi kichik dasturlar (uzulib
qoladigan)
Ustuvorliklarni
ko‘paytirish
351
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.
Dostları ilə paylaş: