Mavzu: Amaliy dasturiy ta'minot muhitini amalga oshirish usullari. Operatsion tizimlarning arxitekturasi, maqsadi va vazifalari OT dastur muhiti
Mavhum ko'p tilli, ochiq, kompilyatsiya qiluvchi dasturlash tizimining tuzilishini va ushbu muhitda ilovalarni ishlab chiqish jarayonini ko'rib chiqing
Dastlabki tildagi dastur (manba moduli) matn muharrirlari yordamida tayyorlanadi va matn fayli yoki kutubxona bo'limi sifatida tarjimon kiritishiga beriladi.
Manba dasturini tarjima qilish - bu manba modulni oraliq, deb ataladigan ob'ekt shakliga aylantirish protsedurasidir. Tarjima odatda oldindan ishlov berish (oldindan ishlov berish) va kompilyatsiyani o'z ichiga oladi.
Oldindan ishlov berish ixtiyoriy bosqich bo'lib, u manba matnni tahlil qilish, undan preprotsessor ko'rsatmalarini olish va ularni bajarishdan iborat.
Preprotsessor direktivalari - bu qisqartmalar, belgilar va boshqalarni o'z ichiga olgan maxsus belgilar (odatda %, #, &) bilan belgilangan satrlardir. kompilyator tomonidan qayta ishlanishidan oldin dastlabki dasturga kiritilgan konstruksiyalar.
Manba matn kengaytmasi uchun ma'lumotlar standart, foydalanuvchi tomonidan aniqlangan yoki OT tizimi kutubxonalarida bo'lishi mumkin.
Kompilyatsiya odatda ko'p bosqichli jarayon bo'lib, quyidagi bosqichlarni o'z ichiga oladi:
Leksik tahlil - kiritilgan matnning leksik tarkibini tekshirish va qo'shma belgilarni (operatorlar, qavslar, identifikatorlar va boshqalar) keyinchalik qayta ishlash uchun qulay bo'lgan qandaydir oraliq ichki shaklga (jadvallar, grafiklar, steklar, giperhavolalar) tarjima qilish;
tahlil qilish- matnni tayyorlashda dasturchi qo‘llagan strukturalarning to‘g‘riligini tekshirish;
semantik tahlil- o'zgaruvchilarning turlari va tuzilmalari, funktsiyalari va protseduralaridagi nomuvofiqliklarni aniqlash;
Ob'ekt kodini yaratish tarjimaning yakuniy bosqichidir.
Tarjima (kompilyatsiya) turli xil rejimlarda amalga oshirilishi mumkin, ular kalitlar, parametrlar yoki parametrlar yordamida o'rnatiladi. Bu, masalan, faqat tahlil bosqichini yoki shunga o'xshash narsalarni bajarish uchun talab qilinishi mumkin.
Ob'ekt moduli - bu manba modulni kompilyatsiya qilish natijasi bo'lgan dastur moduli. U mashina ko'rsatmalari, lug'atlar, xizmat ma'lumotlarini o'z ichiga oladi.
Ob'ekt moduli ishlamaydi, chunki u kiritish/chiqarish funktsiyalarini amalga oshiradigan, raqamli va qatorli o'zgaruvchilarni qayta ishlovchi tarjimon kutubxonasining chaqiriladigan pastki dasturlariga (umumiy holatda, dasturlash tizimlari), shuningdek, boshqa foydalanuvchi dasturlari yoki dastur paketlari vositalariga noqonuniy havolalarni o'z ichiga oladi. .
Guruch. 1.4. Mavhum ko'p tilli, ochiq manba, kompilyatsiya dasturlash tizimi
Yuklash moduli – yuklab olish va bajarish uchun mos shakldagi dasturiy ta'minot moduli. Yuklash modulini qurish maxsus dasturiy vositalar - bog'lovchi, topshiriq yaratuvchisi, bog'lovchi, assembler tomonidan amalga oshiriladi, ularning asosiy vazifasi ob'ekt va yuk modullarini keyinchalik kutubxona yoki faylga yozish bilan bitta yuk moduliga birlashtirishdir. Olingan modul keyinchalik boshqa dasturlarni va hokazolarni yig'ish uchun ishlatilishi mumkin, bu esa dasturiy ta'minotni kengaytirish imkoniyatini yaratadi.
Yig'ishdan so'ng yuklash moduli foydalanuvchining dastur kutubxonasiga joylashtiriladi yoki to'g'ridan-to'g'ri bajarish uchun yuboriladi. Modulning bajarilishi uni operativ xotiraga yuklash, uni xotiradagi joylashuviga moslashtirish va boshqaruvni unga o‘tkazishdan iborat. Yuklash modulining xotiradagi tasviri mutlaq modul deb ataladi, chunki bu erda kompyuterning barcha buyruqlari yakuniy shaklga ega bo'ladi va xotirada mutlaq manzillarni oladi. Mutlaq modulni shakllantirish ham dasturiy jihatdan, ham modulning buyruq kodlarini yuklovchi dasturi tomonidan qayta ishlash orqali, ham apparatda, indekslashni qo'llash va yuklash modulining buyruqlarini asoslash va ularda ko'rsatilgan nisbiy manzillarni olib kelish orqali amalga oshirilishi mumkin. mutlaq shakl.
Zamonaviy tizimlar dasturlash bir bosqichdan ikkinchisiga qulay tarzda o'tish imkonini beradi. Bu matn muharriri, kompilyator, bog'lovchi, o'rnatilgan tuzatuvchini o'z ichiga olgan va tizim yoki uning versiyasiga qarab dasturchiga dasturlarni yozish va tuzatish uchun qo'shimcha qulayliklarni ta'minlaydigan integratsiyalashgan dasturlash muhitining mavjudligi bilan amalga oshiriladi. .
Ko'pgina OT arxitektura xususiyatlari bevosita tizim dasturchilariga tegishli bo'lsa-da, bir nechta amaliy (operatsion) ob'ektlar tushunchasi oxirgi foydalanuvchilarning ehtiyojlari bilan bevosita bog'liq - operatsion tizimning boshqalar uchun yozilgan ilovalarni bajarish qobiliyati. operatsion tizimlar. Operatsion tizimning bu xususiyati moslik deb ataladi.
Ilova mosligi ikkilik va manba kodlari darajasida bo'lishi mumkin. Ilovalar odatda OTda kod va ma'lumotlarning ikkilik tasvirlarini o'z ichiga olgan bajariladigan fayllar sifatida saqlanadi. Ikkilik moslik bajariladigan dasturni olib, uni boshqa OS muhitida ishga tushirishingiz mumkin bo'lganda erishiladi.
Manba darajasidagi muvofiqlik tegishli kompilyatorni dastur ishga tushiriladigan kompyuterning dasturiy ta'minotiga kiritilishini, shuningdek, kutubxonalar va tizim chaqiruvlari darajasidagi muvofiqlikni talab qiladi. Bu dasturning manba kodini yangi bajariladigan modulga qayta kompilyatsiya qilishni talab qiladi.
Manba darajasidagi muvofiqlik, asosan, ushbu manbalarga ega bo'lgan dastur ishlab chiquvchilari uchun muhimdir. Ammo oxirgi foydalanuvchilar uchun faqat ikkilik muvofiqlik amaliy ahamiyatga ega, chunki faqat bu holda ular bir xil mahsulotni turli xil operatsion tizimlarda va turli mashinalarda ishlatishlari mumkin.
Mumkin bo'lgan muvofiqlik turi ko'plab omillarga bog'liq. Ulardan eng muhimi protsessor arxitekturasidir. Agar protsessor bir xil ko'rsatmalar to'plamidan (ehtimol, IBM PC misolida bo'lgani kabi qo'shimchalar bilan: standart to'plam + multimedia + grafiklar + oqim) va bir xil manzil diapazonidan foydalansa, u holda ikkilik muvofiqlikka juda oddiy erishish mumkin. Buning uchun quyidagi shartlar bajarilishi kerak:
Ilova foydalanadigan API berilgan OT tomonidan qo'llab-quvvatlanishi kerak;
ilovaning bajariladigan faylining ichki tuzilishi OTning bajariladigan fayllari tuzilishiga mos kelishi kerak.
Agar protsessorlar turli xil arxitekturaga ega bo'lsa, unda yuqoridagi shartlarga qo'shimcha ravishda ikkilik kodni emulyatsiya qilishni tashkil qilish kerak. Masalan, Macintosh-ning Motorola 680x0 protsessorida Intel protsessor ko'rsatmalarining emulyatsiyasi keng qo'llaniladi. Dasturiy ta'minot emulyatori bu holda Intel protsessorining ikkilik ko'rsatmasini ketma-ket tanlaydi va Motorola protsessorining ko'rsatmalarida yozilgan ekvivalent pastki dasturni bajaradi. Motorola protsessorida xuddi Intel protsessorlarida bo'lgani kabi bir xil registrlar, bayroqlar, ichki ALU va boshqalar mavjud emasligi sababli, u o'z registrlari yoki xotirasi yordamida ushbu elementlarning barchasini simulyatsiya qilishi (taqlid qilishi) kerak.
Bu oddiy, lekin juda sekin ish, chunki bitta Intel buyrug'i uni taqlid qiluvchi Motorola protsessorining ko'rsatmalari ketma-ketligiga qaraganda ancha tezroq bajariladi. Bunday hollarda chiqish yo'li amaliy dasturiy ta'minot muhiti yoki operatsion muhit deb ataladigan vositalardan foydalanishdir. Bunday muhitning tarkibiy qismlaridan biri interfeys funktsiyalari to'plamidir amaliy dasturlash OT o'z ilovalariga taqdim etadigan API. Boshqa odamlarning dasturlarini bajarish vaqtini qisqartirish uchun dastur muhiti kutubxona funktsiyalariga qo'ng'iroqlarni taqlid qiladi.
Ushbu yondashuvning samaradorligi bugungi dasturlarning aksariyati Windows, MAC yoki UNIX Motif kabi GUI (grafik foydalanuvchi interfeysi) ostida ishlaydi, ilovalar esa vaqtning 60-80 foizini GUI funktsiyalari va boshqa OT kutubxonasi qo'ng'iroqlarini bajarishga sarflaydi. . Ilovalarning aynan shu xossasi dastur muhitlariga dasturlarni buyruq bo'yicha emulyatsiya qilish uchun sarflangan katta vaqtni qoplash imkonini beradi. Ehtiyotkorlik bilan ishlab chiqilgan dasturiy ta'minot muhiti GUI kutubxonalarini taqlid qiladigan, lekin mahalliy kodda yozilgan kutubxonalarni o'z ichiga oladi. Shunday qilib, boshqa operatsion tizimning API bilan dasturlarning bajarilishini sezilarli darajada tezlashtirishga erishiladi. Aks holda, bu yondashuv tarjima deb ataladi - uni bir vaqtning o'zida bitta ko'rsatmani taqlid qilishning sekinroq jarayonidan ajratish uchun.
Masalan, Macintosh-da ishlaydigan Windows dasturi uchun Intel protsessoridan buyruqlarni sharhlashda ishlash juda past bo'lishi mumkin. Biroq, GUI funksiyasi chaqirilganda, oyna ochilganda va hokazo, Windows dastur muhitini amalga oshiradigan OS moduli bu qo'ng'iroqni ushlab turishi va uni Motorola 680x0 protsessori uchun qayta tuzilgan oynani ochish tartibiga yo'naltirishi mumkin. Natijada, kodning bunday bo'limlarida dastur tezligi o'z protsessorida ishlash tezligiga yetishi mumkin (va, ehtimol, undan ham oshib ketadi).
Bitta OT uchun yozilgan dastur boshqa operatsion tizimda ishlashi uchun faqat API muvofiqligini ta'minlashning o'zi etarli emas. Turli xil operatsion tizimlar asosidagi tushunchalar bir-biriga zid bo'lishi mumkin. Masalan, bitta OTda dasturga kiritish-chiqarish qurilmalarini boshqarishga ruxsat berilishi mumkin, boshqasida bu harakatlar OTning vakolati hisoblanadi.
Har bir OT o'z resurslarini himoya qilish mexanizmlariga, o'z xato va istisnolarni qayta ishlash algoritmlariga, o'z protsessor tuzilishi va xotirani boshqarish sxemasiga, fayllarga kirish semantikasiga va o'zining grafik foydalanuvchi interfeysiga ega. Muvofiqlikni ta'minlash uchun kompyuter resurslarini boshqarishning bir necha usullarining bir xil OT ichida ziddiyatsiz birgalikda yashashini tashkil qilish kerak.
Mavjud turli xil variantlar arxitektura yechimlari xususiyatlarida ham, funksionalligida ham bir-biridan farq qiluvchi, ilovalarning turli darajada koʻchmaligini taʼminlovchi bir nechta amaliy muhitlarni yaratish. Bir nechta amaliy muhitlarni amalga oshirishning eng aniq variantlaridan biri OT ning standart qatlamli tuzilishiga asoslangan.
Bir nechta dastur muhitini yaratishning yana bir usuli mikroyadro yondashuviga asoslangan. Shu bilan birga, asosiy, barcha amaliy muhitlar uchun umumiy, operatsion tizim mexanizmlari va strategik muammolarni hal qiladigan har bir dastur muhitiga xos bo'lgan yuqori darajadagi funktsiyalar o'rtasidagi farqni qayd etish juda muhimdir. Ga muvofiq mikroyadroviy arxitektura OTning barcha funksiyalari mikroyadro va foydalanuvchi rejimi serverlari tomonidan amalga oshiriladi. Ilova muhiti alohida foydalanuvchi rejimi serveri sifatida ishlab chiqilganligi va asosiy mexanizmlarni o'z ichiga olmaydi.
Ilovalar API-dan foydalanib, mikroyadro orqali tegishli dastur muhitiga tizim qo'ng'iroqlarini amalga oshiradi. Ilova muhiti so'rovni qayta ishlaydi, uni bajaradi (ehtimol, yordam so'rab asosiy funktsiyalar mikroyadro) va natijani ilovaga yuboradi. So'rovni bajarish jarayonida dastur muhiti, o'z navbatida, mikroyadro va boshqa OT serverlari tomonidan amalga oshirilgan asosiy OT mexanizmlariga kirishi kerak.
Bir nechta dastur muhitini loyihalashda bunday yondashuv mikro yadro arxitekturasining barcha afzalliklari va kamchiliklariga ega, xususan:
dastur muhitlarini qo'shish va chiqarib tashlash juda oson, bu mikro yadroli operatsion tizimlarning yaxshi kengaytirilishining natijasidir;
agar dastur muhitlaridan biri ishlamay qolsa, qolganlari ishlashda qoladi, bu butun tizimning ishonchliligi va barqarorligiga hissa qo'shadi;
mikroyadro operatsion tizimlarining past unumdorligi dastur vositalarining tezligiga va shuning uchun ilovalar tezligiga ta'sir qiladi.
Natijada shuni ta'kidlash kerakki, bitta OT ichida turli xil OT ilovalarini bajarish uchun bir nechta amaliy vositalarni yaratish dasturning yagona versiyasiga ega bo'lish va uni turli xil operatsion tizimlar o'rtasida uzatish imkonini beradigan usuldir. Bir nechta dastur muhiti ma'lum bir OTning boshqa operatsion tizimlar uchun yozilgan ilovalar bilan ikkilik muvofiqligini ta'minlaydi.