Har bir jarayonning bajarilishi vaqtini tashkil qilish yo'li bilan
Ko'p vazifani bajarishning ideal holati parallel ko'p vazifadir, chunki har bir vazifa o'zining apparat mikroprotsessor yadrosida bir vaqtning o'zida bir vaqtning o'zida bajariladi. Operatsion tizimning haqiqiy ko'p vazifalari faqat taqsimlangan hisoblash tizimlarida mumkin. Ushbu turdagi ko'p vazifani amalga oshirish katta moddiy investitsiyalarni talab qiladi (har bir vazifa uchun alohida uskuna talab qilinadi), shuning uchun uni ishlatish odatda amaliy emas. Quyida parallel multitaskingni amalga oshiradigan tizim misoli keltirilgan.
Parallax Propeller mikrokontrolleri bir vaqtning o'zida 8 ta vazifani bajaradi. Sakkizta integratsiyalangan protsessor yadrolari markaziy kommutatsiya qurilmasi orqali umumiy resurslarga kirish orqali ham qo'shma, ham mustaqil vazifalarni bajarishi mumkin. Ishlab chiquvchi har bir yadroni qanday va qachon yuklashni to'liq nazorat qiladi; kompilyator ham, biron bir operatsion tizim ham vazifalarni bir nechta yadrolar bo'ylab taqsimlamaydi. Umumiy soat manbai barcha protsessorlarni bir xil vaqt bazasi va sinxronizatsiya bilan ta'minlaydi. Tekshirish moslamasida ikkita mumkin bo'lgan dasturlash tili mavjud: o'rganish oson, yuqori darajadagi Spin tili, shuningdek, past darajadagi Propeller Assembler.
Parallel multitaskingga muqobil bir nechta protsessor yadrolari mavjudligida psevdoparallel multitasking yoki parallel va psevdoparallel multitasking kombinatsiyasidan foydalanish hisoblanadi.
Psevdoparallel ko'p vazifa turlari
Preemptiv bo'lmagan ko'p vazifa
16-bitli Windows allaqachon preemptive multitasking (preemptive multitasking) qo'llab-quvvatlay boshladi. Ushbu turdagi ko'p vazifalar Windows ning xabarlarga asoslangan arxitekturasi tufayli mumkin bo'ladi. Windows - dastur xotirada bo'lishi mumkin va u xabar olmaguncha bajarilmaydi. Ilgari, bu xabarlar ko'pincha klaviatura yoki sichqonchadan foydalanuvchi kiritishining bevosita yoki bilvosita natijasi edi. Endi xabarlarni yuborish mexanizmi ma'lumotlar almashinuvi, har qanday dastur harakatini boshlash va hokazolar uchun keng qo'llaniladi.
Bularning barchasi uchun Windows DOS dasturlarini bajarish uchun preemptive multitaskingdan foydalangan, shuningdek, ba'zi dasturlarga, masalan, multimedia maqsadlarida, taymerdan apparat uzilishlarini qabul qilishga ruxsat bergan.
Ushbu yondashuvning sezilarli cheklovi shundaki, dastur tomonidan xabarni qayta ishlash uchun sarflangan vaqt juda katta bo'lishi mumkin va boshqaruv faqat xabarga ishlov berilgandan keyin operatsion tizimga o'tkaziladi.
Vaqti-vaqti bilan bajarilayotgan dasturlarni o'zgartirish uchun taymerdan foydalanib , oxirgi cheklovni qisman engishingiz mumkin . Preemptiv bo'lmagan ko'p vazifani engishning yana bir yechimi PeekMessage funktsiyasini chaqirishdir . Odatda, dastur navbatdagi xabarlarni olish uchun GetMessage funksiyasiga qo'ng'iroqdan foydalanadi. Biroq, agar xabarlar navbati hozirda bo'sh bo'lsa, GetMessage funksiyasi navbatdagi xabar kelishini kutadi va keyin uni qaytaradi. PeekMessage funktsiyasi boshqacha ishlaydi - u navbatdagi xabarlar bo'lmasa ham dasturga boshqaruvni qaytaradi. Shunday qilib, ko'p vaqt talab qiladigan ishni bajarish, bu yoki boshqa dastur uchun navbatda xabarlar paydo bo'lgunga qadar davom etadi.
Do'stlaringiz bilan baham: |