22. Dasturning oqim sxemasi tushunchasi, oqimlarning o'zaro ta'siri dasturlarni bajarish jarayoni, oqimlarni sinxronlash, semaforlar



Yüklə 22 Kb.
səhifə1/3
tarix14.12.2023
ölçüsü22 Kb.
#178516
  1   2   3
Karamatdinova Aydin


22. Dasturning oqim sxemasi tushunchasi, oqimlarning o'zaro ta'siri
dasturlarni bajarish jarayoni, oqimlarni sinxronlash, semaforlar.

C++da oqimli sinflar kutubxonasi ikkita asosiy ios va streambuf sinflar asosida tuzilgan, streambuf sinfi kiritish-chiqarish fizik qurilmalari bilan xotirada joylashgan kiritish-chiqarish buferlarni o‘zaro bo‘g‘lanishini va tashkilini ta’minlaydi. Streambuf sinfining metodlarini va ma’lumotlarini dasturchi ochiq ishlatmaydi. Mavjud bo‘lgan sinflar asosida yangi sinflarni yaratishda dasturchiga xam sinfga murojaat etish ruxsat etilgan. ios sinfi formal kiritish chiqarish va xatolarni tekshirish vositalarga ega.


o Standart oqimlar (istream, ostream, iostream) terminal bilan ishlash uchun xizmat qiladi.
o Satrli oqimlar (istrstream, ostrstream, strstream) xotirada joylashtirilgan satrli buferlardan kiritish-chiqarish uchun xizmat qiladi.
o Faylli oqimlar(ifstream, ofstream, fstream) fayllar bilan ishlash uchun xizmat qiladi.
Oqimli sinflar, ularning metodlari va ma’lumotlari dasturda murojaat etish ruxsatiga ega bo‘ladi, qachonki unga kerakli bosh fayl kiritilgan bo‘lsa.
• iostream.h – ios, ostream, istream uchun.
• strstream.h – strstream, istrstream, ostrstream uchun
• fstream.h – fstream, ifstream, ofstream uchun
Quyidagi ob’ekt-oqimlar dasturda main funksiyasini chaqirish oldidan avvaldan aniqlangan va ochilgan bo‘ladi:
• extern istream cin; //Klaviaturadan kiritish standart oqimi
extern ostream cout; //Ekranga chiqarish standart oqimi
• extern ostream cerr; //Xatolar xaqidagi xabar chiqarish standart oqimi.
Oqimli sinflar metodlari
Oqimdan qiritish uchun istream sinfdagi ob’ektlar ishlatiladi, oqimga chiqarish uchun - ostream sinfdagi ob’ektlar.
istream sinfda quyidagi funksiyalar tavsiflangan:
• istream get (char& S) - istream dan S ga simvolni o‘qiydi. Xato xolatida S 0XFF qiymatini oladi.

• int get() - istream dan keyingi simvolni chiqaradi. Faylni oxirini aniqlagach EOFni qaytaradi.


• istream& get(char* buffer,int size,char delimiter=’\n’) - Bu funksiya istreamdan simvollarni chiqaradi va ularni buferga nusxalaydi. Operatsiya yoki faylning oxiriga yetganda, yoki size fayllardan nusxa olgan jarayonda, yoki ko‘rsatilgan ajratuvchini aniqlaganda to‘xtaydi. Ajratuvchi esa nusxalanmaydi va streambuf qoladi. O‘qib bulingan simvollar ketma-ketligi xardoim nul simvol bilan tugatiladi.
• istream& getline(char* buffer,int size, char delimiter=’\n’) - Ajratuvchi oqimdan chiqariladi, lekin, buferga kiritilmaydi. Bu esa satrlarni oqimdan chiqaruvchi asosiy funksiya. O‘kib chiqilgan simvollar nul simvoli bilan ta’momlanadi.
• istream& read(char* buffer,int size) - Ajratuvchilarni qo‘llanmaydi va buferga o‘qilgan simvollar nul simvoli bilan tugamaydi.
• int peek() - istream dan simvolni chiqarmasdan istreamga qaytaradi.
• int gcount() - Formatlanmagan oxirgi kiritish operatsiyasi vaqtida o‘qilgan simvollar sonini qaytaradi.
• istream& putback(S) - Agar get doirasidagi streambuf ob’ektida bo‘sh fazo mavjud bo‘lsa, unda o‘sha yerga S simvoli joylashtiriladi.
• istream& ignore(int count=1,int target=EOF) - Quyidagilar bajarilmaguncha istream dan simvol chiqarilaveradi:
• Semaforalar resurslar manbai bo'sh bo'lmaguncha, bir vaqtning o'zida bir nechta mavzular bo'yicha olinishi mumkin bo'lgan mavjud manbalarni anglatadi. Keyin qo'shimcha oqimlar kerakli miqdordagi manbalar yana mavjud bo'lguncha kutish kerak. Semaforlar juda samarali, chunki ular bir vaqtning o'zida manbalarga kirishga imkon beradi. Semafora - bu muteksning mantiqiy davomidir - 1 hisoblagichi bo'lgan semafora muteksga teng, ammo hisoblagich 1 dan ortiq bo'lishi mumkin.
Dasturlash tillarida, ayniqsa Unixga asoslangan tizimlarda bir necha jarayonlarning bitta zahira uchun raqobatini koordinatsiyalaydigan yoki sinxronlaydigan harakatlar texnikalari semaforlar deb ataladi. Semafor operatsion tizim (yoki yadro) omborining (хранилище) aniq joyi qiymati bo’lib, har bir jarayon uning qiymnatini tekshirishi va o’zgartirishi mumkin. Topilgan qiymatga bog’liq holda jarayon zahiradan foydalanishi yoki agar zahira band bo’lsa, undan takror foydalanishga urinish uchun biror vaqt kutib turadi. Semaforlar binar qiymatli (0 yoki 1) yoki qo’shimcha qiymatli bo’lishi mumkin. Qoida bo’yicha, semafordan foydalanayotgan jarayon qiymatni tekshiradi, so’ngra agar u zahiradan foydalanayotgan bo’lsa, buni navbatdagi jarayonga bildirish uchun uning qiymatini o’zgartiradi.
Semafor qiymati har xil jarayonlar uchun ochiq bo'lishi kerak. Shuning uchun semafora jarayonning manzil maydonida emas, balki yadroning manzil maydonida hisoblanadi. Semafora qiymatini tekshirish va o'zgartirish amaliyoti boshqa jarayonlarga nisbatan (ya'ni boshqa jarayonlar bilan uzluksiz) bitta atom operatsiyasi sifatida amalga oshirilishi zarur hisoblanadi. Aks holda, semafora qiymatini tekshirgandan so'ng, jarayon boshqa jarayon bilan uzilib qolsa, bu o'z navbatida semaforni tekshirib, uning qiymatini o'zgartirib yuborishi mumkin.
Semaforlar odatda ikki maqsadda qo’llaniladi: umumiy xotira maydonidan birgalikda foydalanish uchun yoki fayllarga birgalikda murojaat qilish uchun. Semaforlar jarayonlararo o’zaro harakati (interprocess communication - IPC) usullaridan biri hisoblanadi. C dastirlash tili semaforlarni boshqarish uchun interfeyslar yoki funksiyalar to’plamini taklif etadi.
Biz semaforlardan foydalanishni oddiy misol bilan tushuntiramiz. Aytaylik, ba'zi bir umumiy resurs mavjud (masalan, fayl). Muayyan jarayon resursda operatsiyani bajarganda (masalan, faylga yozadi), boshqa jarayonlar uchun manbaga kirishga taqiq qo`yilsin. Buning uchun ma'lum bir butun qiymatni ushbu resurs bilan bog'laymiz - barcha jarayonlar uchun mavjud hisoblagichning 1 qiymati manbaning mavjudligini, 0 - uning mavjud emasligini anglatadi. Keyin, resurs bilan ishlashni boshlashdan oldin, jarayon hisoblagich qiymatini tekshirishi kerak.
O`rnatilgan tizimlarda navbat masalalarini ishlashi uchun sinxronlangan semaforlardan foydalaniladi. Quyidagi 9.3-rasmda semafora tasvirlangan

10.3-rasm. OT semofora

Yüklə 22 Kb.

Dostları ilə paylaş:
  1   2   3




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin