O’zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi muxammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti farg’ona filiali




Download 3.77 Mb.
bet27/33
Sana22.07.2021
Hajmi3.77 Mb.
#15557
1   ...   23   24   25   26   27   28   29   30   ...   33
Saqlash boshqaruvchisi

Bundan tashqari, bir ISR ichida ikkilik yoki sanab semafolarla yo orttirish uchun mazmunli bo’lmaydi. Har qanday vazifa ikkilik yoki sanab semafor ozod mumkin; Biroq, bir mutex faqat birinchi olingan (qulflangan) vazifa tomonidan (himoyasi) ozod qilinishi mumkin. Bir tomonlama ozod yoki semaforu birgalikda yoki I / O manbaga qurilma ishlamay o'zaro eksklyuziv kirish yo'qotishdan olib kelishi mumkin unutmang. Misol uchun, bir vazifa bilan bog'liq bo'lgan semafor kasb bilan birgalikda ma'lumotlar tarkibiga kirish mumkin. ikkinchi vazifa tasodifan o'sha semafor ozod qilish bo'lsa, bu qadam potentsial uchinchi vazifasi ham bir xil ma'lumotlar tuzilishi kirish uchun, o'sha semaforni kutib uchinchi vazifani ozod mumkin. Buzilgan ma'lumotlar bir xil vaqt natijalari shu ma'lumotlar tuzilishini o'zgartirish uchun harakat bir necha vazifalarni ega.

Dasturchilar bir maqsad yolida boradilar. Ular maqsadli monitorga asosolangan debug agentlikka asoslangan yoki qurilmaviy ta’minotga asoslangan bo’ladi. BOOT ROM o’z ichiga tasvir yuklash o’rnatish monitor tasviri va hatto bajaraladigan tasvirlarni ham o’z ichiga olishi mumkun. Qurilmaviy taminotni bog’likligi idealdir ikkisi ham qachonki birinchi tizimning fizikaviy jarayoni kech yuklanganday yani ramni tezkor hotiraga yoki doimiy hotiraga yuklaganday. Doimiy hotirani tashqi ko’rinishi bootga boradigan yollarnig bazilarida bo’lishi mumkin. Tizimni yuklanishi uch bosqichni o’z ichiga oladi ya’ni ular: qurilmavi ta’minotni yuklanishi, OS ni yuklanishi, dasturlarni yuklanishi. Tizim yuklangandan so’ng dasturlar platformani yuklashni boshlaydi, test qiladi va debug dasturlaei RTOS ostida yotadi.

S++ tilida diasturlar odatda bir yoki bir nechta ob’ektli fayllar yoki bibliotekalarni komponovka qilish yordamida hosil qilinadi. Biblioteka deb bir yoki bir nechta komponovka qilinuvchi fayllar to’plamiga aytiladi. S++ ning barcha kompilyatorlari dasturga qo’shish mumkin bo’lgan funktsiyalar (yoki protseduralar) va sinflardan iborat biblioteka hosil qila oladi. Funktsiya – bu ayrim xizmatchi amallarni, masalan ikki sonni qo’shib, natijasini ekranga chiqarishni bajaruvchi dastur blokidir. Sinf sifatida ma’lumotlar to’plami va ularga bog’langan funktsiyalarni qarash mumkin. Funktsiyalar va sinflar haqidagi ma’lumotlar keyingi mavzularda batafsil berilgan.



iostream.h fayli joriy faylga biriktilyapti. Dasturda birinchi funta (#) belgisi joylashgan. U prepotsessorga signal uzatadi. Kompilyatorning har safar ishga tushirilishida preprotsessor ham ishga tushiriladi. U dasturdagi funta (#) belgisi bilan boshlanuvchi qatorlarni o’qiydi.

include - preprotsessorning komandasi bo’lib, u quyidagicha tarjima qilinadi: «Bu komandani ortidan fayl nomi keladi. Ushbu nomdagi faylni topish va fayldagi mazmunni dasturning joriy kismiga yozish lozim».

Burchakli qavs ichidagi faylni mos fayllar joylashtirilgan barcha papkalardan izlash lozimligini ko’rsatadi. Agarda kompilyator to’g’ri sozlangan bo’lsa burchakli kavslar iostream.h faylini sizning kompilyatoringiz uchun muljallangan .h kengaytmali fayllarni o’zida saqlovchi papkadan izlashi kerakligini ko’rsatadi. iostream.h ( input – output stream – kiritish–chiqarish oqimi) faylida ekranga ma’lumotlarni chiqarish jarayonini ta’minlaydigan cout ob’ekti aniqlangan. Birinchi qator bajarilgandan so’ng iostream.h fayli joriy dasturga xuddi uning mazmunini qo’l bilan yozganimizdek biriktiriladi. Preprotsessor kompilyatordan keyin yuklanadi va funt (#) belgii bilan boshlanuvchi barcha qatorlarni bajaradi, dastur kodlarini kompilyatsiyaga tayyorlaydi.

Dasturning asosiy kodi main() funktsiyasini chaqirish bilan boshlanadi. S++ tilidagi har bir dastur main() fuktsiyasini o’zida saqlaydi. Funktsiya bu bir yoki bir necha amalni bajaruvchi dastur blokidir. Odatda funktsiyalar boshqa funktsiyalar orqali chaqiriladi, lekin main() funktsiyasi alohida xususiyatga ega bo’lib u dastur ishga tushirilishi bilan avtomatik tarzda chaqiriladi.

main() funktsiyasini boshqa funktsiyalar kabi qaytaradigan qiymati tipini e’lon qilish lozim. SALOM.cpp dasturida main() funktsiyasi int (integer – butun so’zidan olingan) tipli qiymat qaytaradi, ya’ni bu funktsiya ishini tugatgandan so’ng operatsion sistemaga butun sonli qiymat qaytaradi. Operatsion sistemaga qiymat qaytarish unchalik muhim emas, umuman sistema bu qiymatdan foydalanmaydi, lekin S++ tili standarti main() funktsiyasi barcha qoidalarga muvofiq e’lon qilinishini talab qiladi.

Barcha funktsiyalar ochiluvchi figurali qavs ({) bilan boshlanadi va (}) yopiluvchi qavs bilan tugaydi. main() funktsiyasi figurali qavsida 3 – satrdan 6 – satrgacha joylashtirilgan. Figurali qavslarni ichida joylashgan barcha satrlar funktsiya tanasi deb aytiladi.

Bizning oddiy dasturimizning barcha funktsionalligi 4–satrda keltirilgan. sout ob’ekti ekranga ma’lumotni chiqarish uchun qo’llaniladi. cin va cout ob’ektlari mos ravishda ma’lumotlarni kiritish (masalan, klaviatura orqali) va ularni chiqarish (ekranga chiqarish) uchun qo’llaniladi. main() funktsiyasi 6 – satr bilan tugallanadi.

cout ob’ekti haqida qisqacha ma’lumot.

Keyingi mavzularda siz sout ob’ektini qanday ishlatish lozimligini bilib olasiz. Hozir esa u haqida qisqacha ma’lumot beramiz. Ekranga ma’lumotni chiqarish uchun cout so’zini, undan so’ng chiqarish operatorini (<<) kiritish lozim. S++ kompilyatori (<<) belgisini birta operator deb qaraydi.

Demak, bajariluvchi faylni hosil qilish uchun quyida keltirilgan amallarni bajarish lozim:

.srr kengaytmali dastur kodi hosil qilinadi;

Dastur kodini kompilyatsiya qilish orqali .obj kengaytmali ob’ektli fayl tuziladi;

Bajariluvchi faylni hosil qilish maqsadida .obj kengaytmali fayli zaruriy bibliotekalar orqali komponovka qilinadi.

C++ dasturlash tilida amallarni qayta yuklash singari ba’zi bir operatorlarni ham qayta yuklash mumkin. Operatorlarni qayta yuklash amallarni qayta yuklash singari amalga oshiriladi. Masalan, chiqarish yoki kiritish operatorini qayta yuklaymiz.

Kiritish operatorini qayta yuklash:

istream& operator >> (…)

Chiqarish operatorini qayta yuklash:

ostream& operator << (…)

C++ dasturlash tilida massivlar va sturukturalarni birlashmasidan foydalanamiz. Bu vaqtda massivning elementlariga murojaat operatori bo’lgan [ ] operatorini qayta yuklash mumkin.

Sturukturalarda operatorlarni qayta yuklash.

Yuqorida keltirilgan dasturlar uchun kiritish va chiqarish operatorlarni qayta yuklash yordamida dastur tuzamiz. Bunda sturuktura yordamida e’lon qilingan o’zgaruvchini kiritish yoki chiqarish operatoridan song yozish bizga ancha qulayliklarni amalga oshiradi. Yuqorida keltirilgan dastirga ozgartirishlar kiritamiz.

Biz ushbu kiritish chiqarish operatorlarini qayta yuklab olgan holda o’zimizni masalimizni bajaramiz. Bizning masalamiz shundan iboratki: Ruyhat nomli double tipidagi sonlar bilan ishlovchi sturuktura yaratish kerak.

Biz dastur yaratishni boshlaymiz.

#include

using namespace std;

struct Ruyhat\\masalaga binoan Ruyhat nomli styruktura yaratamiz

{

double son1; \\ son1 nomli o’zgaruvchi kiritib olamiz



double son2; \\son2 nomli o’zgaruvchi kiritib olamiz

double yig’indi; \\ buyerga biron bir amalni kiritamiz

};

istream& operator >>(istream& input, Ruyhat& s)\\ bu yerda kiritish operatoridan foydalanamiz



{ cout<<"son1=";

input>>s.son1; \\ son1ga qiymat beramiz

cout<<"son2=";

input>>s.son2; \\ son2ga qiymat beramiz

return input;

};

ostream & operator <<(ostream& output, Ruyhat& s)\\ bu yerda kiritish operatoridan foydalanamiz



{ output<<"Birinchi son="<

output <<"ikkinchi son="<

return output;

}

\\ dasturimizni funksiyasini tuzib oldik endi uni ishlatsak boldi.



int main()

{ Ruyhat a;\\ Ruyhat tipida a o’zgaruvchi kiritamiz

cout<<"Birinchi son="; cin>>a.son1; \\ son1ga qiymat beramiz

cout<<"Ikkinchi son="; cin>>a.son2; \\ son2ga qiymat beramiz

cout<<"Yig'indi="<

cout << "2017.06.06"<< endl;

return 0;

}

Operatsiyalarni orttirish va ozod qilish uchun kernel(yadro) ga bog’langan holda turli nomlar bo’lishi mumkin: masalan, take va give , sm_p va sm_v , pend va post , va lock va unlock . Nima bo'lishidan qat'iy nazar nomi, ularning hammasi semafolarlar samarali orttiradi va ​​ ozod qiladi. Vazifalari, odatda quyidagi usullardan biri bilan semafor orttiradi:


1   ...   23   24   25   26   27   28   29   30   ...   33




Download 3.77 Mb.

Bosh sahifa
Aloqalar

    Bosh sahifa



O’zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi muxammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti farg’ona filiali

Download 3.77 Mb.