Soprotsess (coprocess, coroutine) Jarayonlar o’zaro bog’liqlik shabloni (paradigma): ishlab chiquvchi - iste’molchi - Jarayonlarning o'zaro ta'sirini amalga oshirish dasturlashning o'nlab yillar davomida rivojlangan klassik paradigmalaridan (shablonlaridan) biriga asoslanishi mumkin.
- Jarayonlarning o’zaro ta’sir paradigmalaridan eng ko’p tarqalganlaridan biri – ishlab chiquvchi – iste’molchi shabloni.
- Ishlab chiquvchi-jarayon (producer) iste’molchi-jarayonlar (consumer) foydalanadigan ba’zi ma’lumotlar buferini yaratadi.
- Ushbu paradigmani amalga oshirishda ikkita jarayonni bog’lash uchun cheklanmagan va cheklangan buferdan foydalanishi mumkin.
- Cheklanmagan bufer (unlimited buffer) sxemasida foydalaniladigan bufer o’lchamida nazariy jihatdan chegara yo’qligi taxmin qilinadi.
- Cheklangan bufer (bounded buffer) sxemasida esa aniq cheklangan bufer o’lchamidan foydalaniladi, masalan, BUFFER_SIZE konstantasidan.
Buferni taqdim etish C dasturlash tilida quyidagicha ko’rinishda bo’lishi mumkin: Ishlab chiqaruvchi algoritmi sxemasi: Mos ravishda iste’molchi-jarayonni amalga oshirish:
Ushbu kodlardan ixtiyoriy tizimda ishlab chiquvchi – iste’molchi sxemasini amalga oshirish uchun shablon (pattern) sifatida qo’llash mumkin.
- Jarayonlarning bevosita aloqasi va ular harakatini sinxronlash uchun mumkin bo’lgan mexanizmlari. Bulardan eng ko’p tarqalgani – xabarlar tizimi; buning uchun jarayonlar o’zaro umumiy o’zgaruvchilarga murojaat qilmasdan aloqa qiladi.
- Jarayonlar o’rtasida aloqa vositasini quyidagi ikkita amal ta’minlaydi:
- send (message ) – message xabarini uzatish; xabar o’lchami o’zgarmas yoki o’zgaruvchan bo’lishi mumkin;
- receive (message ) – message buferiga xabar qabul qilish.
- Agar P va Q jarayonlar o’zaro aloqani talab qilsa, ularga quyidagilar zarur bo’ladi:
- Bir biri bilan aloqa o’rnatish (communication link)
- Xabarlarni send/receive ko’rinishda almashish.
- Aloqani amalga oshirish fizik (umumiy xotira, shina qurilmasi) yoki mantiqiy (mantiqiy xususiyatli) bo’lishi mumkin.
Do'stlaringiz bilan baham: |