16.2. Chiziqli tenglamalar sistemalarini yechish 116
16.3. Parallel saralash usullari 124
Glossary 132
Xulosa 136
Foydalanilgan adabiyotlar roʻyxati 138
Oqim anatomiyasi. Tarmoq ma’lum bir tarzda tartibga solinishi kerak boʻlgan OS jarayonida bajariladigan kodning bir qismi sifatida tushuniladi. Tarmoqni yaratish, uni qoʻllab-quvvatlash va boshqarish bilan bogʻliq OSning hisoblash resurslari xarajatlari jarayon uchun bir xil xarajatlarga nisbatan ancha past. Amaliy dasturchi nuqtai nazaridan, oqim va jarayon oʻrtasidagi asosiy farq shundaki, bitta jarayon ichidagi oqimlar oʻzgaruvchilarni almashishi mumkin.
Har bir jarayon birinchi boʻlib boshlanadigan asosiy yoki birlamchi oqimga ega. C++da asosiy oqim funksiyasi har doim main() deb nomlanadi. Har bir oqimning oʻziga xos koʻrsatmalar ketma-ketligi bor, u boshqa oqimlardan mustaqil ravishda va, ehtimol, ular bilan parallel ravishda bajariladi.
Bitta jarayon ichida hosil boʻlgan oqimlar teng va bitta manzil maydonida mavjud boʻlib, uning resurslarini (fayl identifikatorlari, global oʻzgaruvchilar va boshqalar) almashadi. Oqimlar oʻz jarayonida boshqa oqimlar yaratishi, toʻxtatib turishi, boshlashi yoki hatto tugatishi mumkin. Shu bilan birga, oqimlar protsessor, xotira va boshqa resurslardan foydalanishda bir-biri bilan raqobatlashadigan dasturning bajariladigan qismlaridir. Koʻp protsessorli (koʻp yadroli) muhitda oqimlar turli protsessorlarda (yadrolarda) ishlashi mumkin. Bir protsessorli tizimlarda ular faqat kontekstni almashtirish orqali amalga oshiriladi.
Oqimni boshqarish uchun dasturchiga til konstruksiyalari, OS tizimi chaqiruvlari yoki maxsus ishlab chiqilgan kutubxonalar orqali mavjud boʻlgan tegishli vositalar qoʻllaniladi. Masalan, Pthread oqim kutubxonasi obyekt yaratuvchisi kirishi va oʻzgartirishi mumkin boʻlgan oqim xususiyatlarini qamrab oluvchi oqim atributi obyektini belgilaydi. Windowsda oqim yadro obyekti hisoblanadi. Har bir yadro obyekti yadro tomonidan ajratilgan va faqat yadro uchun mavjud boʻlgan xotira blokidir. Ushbu blok ma’lumotlar strukturasi boʻlib, uning elementlari obyekt (oqim atributlari) haqidagi ma’lumotlarni oʻz ichiga oladi. "Oqim" yadro obyekti barcha OS yadro obyektlari uchun umumiy atributlar (obyekt nomi, xavfsizlik deskriptori, foydalanuvchilar soni hisoblagichi) va faqat "oqim" obyektiga xos atributlar (u tegishli boʻlgan jarayon identifikatori) bilan tavsiflanadi.
Koʻp oqimlarni oshkor dasturlashda har qanday koʻp oqimli dastur asosiy oqim va boshqa oqimlar kodini oʻz ichiga olgan funksiyalardan iborat boʻlishi kerak. Asosiy oqim kamida bitta tayanch oqimni hosil qiladi va shu bilan birga, avlo oqimining bajarilish kodini oʻz ichiga olgan funksiyani ham belgilaydi. Agar kerak boʻlsa, avlodlar oqimlari oʻzlarining pastki oqimlarini yaratishi mumkin.
Quyidagi misolda oqimlarni yaratish uchun WinAPI funksiyalaridan foydalanadigan oddiy koʻp tarmoqli dastur uchun kod mavjud. E’tibor bering, bu misolda asosiy oqim oʻzining barcha hosil qilingan oqimlari tugamaguncha tugamaydi.
Do'stlaringiz bilan baham: |