kodni qayta ishlatish ikki shaklda namoyon bo'lishi mumkin:
a) ikkita sinf umumiy qismga ega, u shu sinflarga meros bo'lib qolgan abstrakt sinfga ajratilgan ;
b) sinf kutubxonasida mos sinf topiladi va uning avlodi kerakli xususiyatlar bilan qurilgan .
Kichik turni yaratish. Agar A sinfidagi bola A sinfi qo'llaniladigan barcha joylarda ishlatilishi mumkin bo'lsa , u holda sinflar xatti-harakatlarga mos keladi va bola ajdodlar sinfining kichik sinfi hisoblanadi. Amalda, bu bolaning ajdodlari bilan bir xil dasturlash interfeysiga ega ekanligini anglatadi. Odatda, agar meros ajdoddagi tuzilmalarni qayta belgilash orqali emas, balki faqat kengaytma bilan shakllangan bo'lsa va kengaytma ajdod tuzilmalariga qo'shimcha cheklovlar qo'ymagan bo'lsa, odatda shunday bo'ladi.
Sinf ixtisosligi. Agar nasl meros orqali ota-onaga mos kelmaydigan tarzda o'zgartirilsa, u holda sinf ixtisoslashgan deb ataladi. Bu odatda ba'zi operatsiyalar va/yoki axborot tuzilmalari qayta belgilangan yoki olib tashlanganligini bildiradi.
Kontseptual. Meros g'oyasidan foydalanish nedensellikni ko'rsatadi va intuitivdir . RTOSni qurishda klassik va ob'ektga yo'naltirilgan yondashuvlar
Ob'ektga yo'naltirilgan yondashuvning afzalliklari tufayli ilovalar uning atrofida yondashuvni eng yaxshi qo'llab-quvvatlaydigan dasturlash tilidan foydalangan holda quriladi . Klassik real vaqtda operatsion tizimlar arxitekturasi UNIX arxitekturalariga asoslangan. tizimlari va dasturlashda an'anaviy protsessual yondashuvdan foydalaning. Ob'ektga yo'naltirilgan ilovalar va protsessual operatsion tizimlarning kombinatsiyasi bir qator kamchiliklarga ega.
Dasturlash paradigmasida tanaffus mavjud: bitta ishchi kompleksda (ilova + RTOS) turli komponentlar dasturiy ta'minotni ishlab chiqishda turli yondashuvlardan foydalanadi.
Ob'ektga yo'naltirilgan yondashuvning barcha xususiyatlaridan foydalanmaslik.
RTOS va ilovadagi interfeyslarning har xilligi tufayli ba'zi ishlash jazolari mavjud.
Tabiiyki, ob'ektga yo'naltirilgan yondashuvdan foydalangan holda RTOS-ning o'zini qurish g'oyasi paydo bo'ladi. Qayerda
ilova ham, operatsion tizim ham to'liq ob'ektga yo'naltirilgan va bu yondashuvdan to'liq foydalanadi;
ilova va RTOS to'liq birlashtirilishi mumkin, chunki ular bir xil ob'ektga yo'naltirilgan dasturlash tilidan foydalanadilar;
RTOS va dastur interfeyslarini muvofiqlashtirish ta'minlanadi;
ilova o'ziga kerak bo'lgan ob'ektlarga buyurtma berish orqali o'z ehtiyojlari uchun RTOSni "modellashi" mumkin;
bitta murakkab dastur + RTOS modulli va osongina yangilanadi.
butunlay C++ da yozilgan SoftKernel RTOS da amalga oshirilgan .
Monolitik arxitektura
Monolitik arxitekturaga ega RTOS sifatida ifodalanishi mumkin
amaliy qatlam: ishlaydigan amaliy jarayonlardan iborat;
tizim darajasi: operatsion tizimning monolit yadrosidan iborat bo'lib, unda quyidagi qismlarni ajratib ko'rsatish mumkin:
ilovalar va yadro o'rtasidagi interfeys ( API ),
tizimning yadrosi,
yadro va apparat o'rtasidagi interfeys (qurilma drayverlari).
API Bunday tizimlarda ikki tomonlama rol o'ynaydi:
qo'llaniladigan jarayonlar va tizim o'rtasidagi o'zaro ta'sirni boshqarish;
tizim kodini bajarishning uzluksizligini ta'minlash (ya'ni, tizim kodini bajarish jarayonida vazifani almashtirishning yo'qligi).
Monolit arxitekturaning asosiy afzalligi uning boshqa arxitekturalarga nisbatan nisbatan tezligidir. Biroq, bunga asosan tizimning muhim qismlarini assemblerda yozish orqali erishiladi.
Monolitik arxitekturaning kamchiliklari.
Imtiyoz darajalarini almashtirishni talab qiluvchi tizim chaqiruvlari (foydalanuvchi vazifasidan yadroga) API tomonidan amalga oshirilishi kerak. uzilishlar yoki tuzoqlar sifatida (istisnoning maxsus turi). Bu ularning ishlash vaqtini sezilarli darajada oshiradi.
Yadroni foydalanuvchi vazifasi bilan to'xtatib bo'lmaydi ( oldindan o'tkazib bo'lmaydi ) . Bu yuqori ustuvor vazifa past darajadagi vazifa tufayli nazoratni ololmasligiga olib kelishi mumkin. Masalan, past ustuvor vazifa xotirani ajratishni so'radi, tizim qo'ng'irog'ini amalga oshirdi, uning oxirigacha yuqori ustuvor vazifani faollashtirish signali uni faollashtira olmaydi.
qo'shimchalari tufayli yangi protsessor arxitekturalariga o'tish qiyinligi .
Rivojlanishning moslashuvchanligi va murakkabligi: tizim yadrosining bir qismini o'zgartirish uni to'liq qayta kompilyatsiya qilishni talab qiladi.
Modulli arxitektura (mikroyadroga asoslangan)
Modulli arxitektura to'siqni olib tashlashga urinish sifatida paydo bo'ldi - API va tizimni yangilash va yangi protsessorlarga ko'chirishni osonlashtiradi.
API modulli arxitekturada u faqat bitta rol o'ynaydi: u amaliy jarayonlar va maxsus modul - jarayon menejeri o'rtasidagi aloqani ta'minlaydi. Biroq, mikroyadro endi ikki tomonlama rol o'ynaydi:
tizim qismlarining o'zaro ta'sirini boshqarish (masalan, jarayon va fayl menejerlari ),
tizim kodining bajarilishining uzluksizligini ta'minlash (ya'ni, mikroyadroni bajarish jarayonida vazifani almashtirishning yo'qligi).
Modulli arxitekturaning kamchiliklari aslida monolitniki bilan bir xil. Muammolar API darajasidan ko'chirildi mikroyadro darajasiga. Mikroyadro ishlayotgan vaqtda tizim interfeysi hali ham vazifani almashtirishga ruxsat bermaydi, faqat bu holatda o'tkaziladigan vaqt qisqartirildi. API hali ham faqat assemblerda amalga oshirilishi mumkin, mikroyadroning portativligi bilan bog'liq muammolar kamaydi (uning hajmining qisqarishi tufayli), lekin saqlanib qolmoqda.
Mikroyadro ob'ektlari asosidagi obyekt arxitekturasi
Ushbu arxitekturada ( SoftKernel RTOS da ishlatiladi ), API umuman yo'q. Tizim komponentlari (mikroyadrolar) va foydalanuvchi jarayonlari o'rtasidagi o'zaro ta'sir oddiy funktsiya chaqiruvlari orqali amalga oshiriladi, chunki tizim ham, ilovalar ham bir xil tilda (C++) yozilgan. Bu tizim qo'ng'iroqlarining maksimal tezligini ta'minlaydi.
Tizimning barcha tarkibiy qismlarining haqiqiy tengligi har qanday vaqtda vazifalarni almashtirish imkoniyatini ta'minlaydi, ya'ni. tizim to'liq ustunlik qiladi.
Ob'ektga yo'naltirilgan yondashuv modullikni, xavfsizlikni, modernizatsiya qilish qulayligini va kodni qayta ishlatishni ta'minlaydi.
API roli ob'ekt havolalarining kompilyatori va dinamik muharririni o'ynaydi ( bog'lovchi ). Ilovada dinamik bog'lovchini ishga tushiring kerakli mikroyadrolarni yuklaydi (ya'ni, oldingi tizimlardan farqli o'laroq, operatsion tizimning barcha komponentlarini o'zi RAMga yuklash shart emas). Agar mikroyadro boshqa dastur uchun allaqachon yuklangan bo'lsa, u qayta yuklanmaydi, lekin allaqachon mavjud mikroyadroning kodi va ma'lumotlari ishlatiladi. Ushbu usullarning barchasi kerakli xotira hajmini kamaytiradi.
Turli xil ilovalar bir xil mikroyadrolarni baham ko'rganligi sababli, ular bir xil manzil maydonida ishlashi kerak. Shunday qilib, tizim virtual xotiradan foydalana olmaydi va shuning uchun tezroq ishlaydi (chunki virtual manzilni jismoniy manzilga tarjima qilishda kechikishlar yo'q).
Barcha ilovalar va mikroyadrolarning o'zlari bir xil manzil maydonida ishlaganligi sababli ular kompilyatsiya vaqtida noma'lum manzildan boshlab xotiraga yuklanadi. Shuning uchun ilovalar va mikroyadrolar boshlang'ich manzilga bog'liq bo'lmasligi kerak (kodda ham, ma'lumotlarda ham (ikkinchisini taqdim etish ancha qiyin)). Ushbu xususiyat avtomatik ravishda ilovalar va modullarni ROMga yozish imkoniyatini beradi, keyinchalik ularni ROMning o'zida ham, RAMda ham bajaradi.
Mikroyadrolar xarakteristikalari bo'yicha boshqa operatsion tizimlarda qo'llaniladigan tuzilmalarga o'xshash, ammo ba'zi farqlar mavjud.
Do'stlaringiz bilan baham: |