Oqim oqim; ingliz tilidan
I / O va rejalashtirish [
Download 36.31 Kb.
|
I / O va rejalashtirish [Maxsus oqimlar va tolalar odatda to'liq foydalanuvchi maydonida amalga oshiriladi. Natijada, xuddi shu jarayonda foydalanuvchi oqimlari va tolalari o'rtasida kontekstni almashtirish juda samarali, chunki u yadro bilan o'zaro aloqani umuman talab qilmaydi. Kontekst tugmachasi ishlaydigan foydalanuvchi oqimlari yoki tolalari foydalanadigan protsessor registrlarini saqlash va keyin yangi ijro uchun zarur bo'lgan registrlarni yuklash orqali amalga oshiriladi. Rejalashtirish foydalanuvchi makonida sodir bo'lganligi sababli, rejalashtirish siyosati ma'lum bir dastur talablariga osongina moslashtirilishi mumkin. Biroq, maxsus oqimlar (yadro oqimlaridan farqli o'laroq) va tolalar uchun tizim chaqiruv qulflaridan foydalanish o'z muammolariga ega. Agar odatiy oqim yoki tolalar tizim chaqiruvini amalga oshirsa, jarayondagi boshqa oqimlar va tolalar ushbu ishlov berish tugamaguncha ishlamaydi. Bunday muammoning odatiy misoli I / U operatsiyalarida. Ko'pgina dasturlar I / U sinxron ravishda bajarishga mo'ljallangan. I / U ishga tushirilganda, tizim chaqiruvi amalga oshiriladi va u tugamaguncha qaytmaydi. Ularning orasida butun jarayon yadro tomonidan bloklanadi va uni bajarish mumkin emas, shu sababli ushbu jarayondagi boshqa foydalanuvchi oqimlari va tolalari ishlashga imkon bermaydi. Ushbu muammoning keng tarqalgan echimi - bu ichki blokirovka qilmaydigan I / U yordamida sinxron interfeysni amalga oshiradigan I / O uchun alohida API-ni taqdim etish va I / U qayta ishlanayotganda boshqa maxsus oqim yoki tolalarni ishga tushirish. Shunga o'xshash echimlarni tizim qo'ng'iroqlarini blokirovka qilish uchun taqdim etish mumkin. Bundan tashqari, sinxron I / U yoki boshqa blokirovka qiluvchi tizim qo'ng'iroqlaridan foydalanmaslik uchun dastur yozilishi mumkin. In SunOS deb atalmish "amalga 4.x engil vazn jarayonlari " yoki LWP. NetBSD 2.x + va ninachi BSD lari LWP ijro yadrosi (: 1 Model 1) sifatida amalga oshirildi. SunOS 5.2 va SunOS 5.8 gacha va NetBSD 2 va NetBSD 4 gacha bo'lgan yadro oqimlari uchun bitta yoki bir nechta foydalanuvchi oqimlaridan foydalangan holda (M: N modeli) ikki darajali modelni amalga oshiradi. SunOS 5.9 va undan keyingi versiyalar, shuningdek NetBSD 5 foydalanuvchi tarmoqlarini qo'llab-quvvatlashni olib tashladi va 1: 1 modeliga qaytdi. [3]FreeBSD 5 M: N modelini amalga oshiradi. FreeBSD 6 ikkala 1: 1 va M: N modellarini qo'llab-quvvatlaydi va foydalanuvchi berilgan dasturda qaysi birini ishlatishini /etc/libmap.conf yordamida tanlashi mumkin. FreeBSD 7 1: 1 modelini standart holatga keltirdi va FreeBSD 8 va undan keyingi versiyasi M: N modelini umuman qo'llab-quvvatlamaydi. Yadro oqimlaridan foydalanish yadroga ko'p qirrali ishlov berishning bir qancha murakkab tomonlarini ko'chirish orqali foydalanuvchi kodini soddalashtiradi. Dastur bajarilish satrlarini rejalashtirish va protsessorning aniq tortib olishlarini talab qilmaydi. Maxsus kod odatdagi protsessual uslubda yozilishi mumkin, shu jumladan blokirovka qilingan API-ga qo'ng'iroqlar, protsessorga boshqa bajarilish satrlari orqali kirishni rad etmasdan. Biroq, yadro oqimlari istalgan vaqtda oqimlar orasidagi kontekst almashinuviga olib kelishi mumkin va shu bilan yuzaga kelmasligi mumkin bo'lgan poyga va parallel xatolarni xavf ostiga qo'yishi mumkin. SMP tizimlarida bu yanada og'irlashadi, chunki yadro oqimlari bir vaqtning o'zida turli xil protsessorlarda bajarilishi mumkin. Download 36.31 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling