Xotirani boshqarish shaklidir resurslarni boshqarish uchun qo'llaniladi kompyuter xotirasi. Xotirani boshqarishning muhim talabi shundan iboratki, dasturlarga ularning talabiga binoan xotira qismlarini dinamik ravishda taqsimlash va kerak bo'lmaganda uni qayta ishlatish uchun bo'shatish. Bu bitta kompyuterdan ko'proq bo'lgan har qanday rivojlangan kompyuter tizimi uchun juda muhimdir jarayon har qanday vaqtda bo'lishi mumkin.
Xotirani boshqarish samaradorligini oshiradigan bir necha usullar ishlab chiqilgan. Virtual xotira tizimlar ajratib turadi xotira manzillari protsessni ajratish va hajmini oshirishga imkon beradigan haqiqiy jismoniy manzillardan jarayon tomonidan foydalaniladi virtual manzil maydoni mavjud miqdordan tashqari Ram foydalanish xotira yoki almashtirish ikkilamchi saqlash. Virtual xotira menejerining sifati umumiy tizimga katta ta'sir ko'rsatishi mumkin ishlash.
Ba'zi operatsion tizimlarda, masalan, DOS / 360 va vorislari, OS / 360 va vorislari, manzil maydonida saqlashni ajratish operatsion tizim tomonidan amalga oshiriladi; masalan, Unixga o'xshash operatsion tizimlar, ichida ajratish manzil maydoni dastur darajasida.
Manzil maydonidagi xotirani boshqarish odatda avtomatik ravishda boshqarishni o'z ichiga olgan avtomatik xotira boshqaruvi deb tasniflanadi axlat yig'ish, yoki xotirani qo'lda boshqarish.
Ba'zi operatsion tizimlarda, masalan, DOS / 360 va vorislari, OS / 360 va vorislari, manzil maydonida saqlashni ajratish operatsion tizim tomonidan amalga oshiriladi; masalan, Unixga o'xshash operatsion tizimlar, ichida ajratish manzil maydoni dastur darajasida.
Manzil maydonidagi xotirani boshqarish odatda avtomatik ravishda boshqarishni o'z ichiga olgan avtomatik xotira boshqaruvi deb tasniflanadi axlat yig'ish, yoki xotirani qo'lda boshqarish.
Xotirani dinamik ravishda taqsimlash Ajratish haqidagi so'rovni bajarish vazifasi yetarli hajmdagi foydalanilmagan xotira blokini topishdan iborat. Deb nomlangan katta xotira fondidan qismlarni ajratish orqali xotira talablari qondiriladi uyum yoki bepul do'kon. Har qanday vaqtda, uyumning ba'zi qismlari ishlatilmoqda, ba'zilari esa "bepul" (foydalanilmayapti) va shu bilan kelajakda ajratish uchun mavjud.
Kabi bir nechta muammolar amalga oshirishni murakkablashtiradi tashqi parchalanishajratilgan xotira bloklari orasida juda ko'p kichik bo'shliqlar mavjud bo'lganda paydo bo'ladi, bu ularni ajratish so'rovi uchun ishlatilishini bekor qiladi. Ajratuvchi metadata kichik ajratmalar hajmini ham ko'paytirishi mumkin. Bu ko'pincha tomonidan boshqariladi chunking. Xotirani boshqarish tizimi bir-birining ustma-ust tushmasligi va hech qachon xotira "yo'qolmasligi" (ya'ni, yo'qligi) uchun ularni ajratib turishini ta'minlashi kerak.
297
1
Subjarayonni boshqaruvchi dastur
Amaliy informatikada katta programmaviy tizimlarni ishlab chiqish uchun tayyor programmalardan foydalanish va ularni dinamik tarzda bir- biri bilan bog’lash muhim masalalardan biridir. Bizga ma’lum bo’lgan TPas va Borland Pascal integrallashgan programmalash muhitlarida bu ishni bajarish uchun maxsus texnologiyalar ishlatiladi. Bu texnologiyalarni quyidagi xususiyatlarga ajratish mumkin:
muhitning tizimli modullarining tayyor protsedura va funksiyalari ishlatiladi;
chaqirilishi kerak bo’lgan tashqi programmalar ixtiyoriy programmalash muhitida tuzilishi mumkin;
programmalar .exe va .com kengaytmali fayl sifatida bo’lishi kerak;
programma sifatida operatsion sistemaning ixtiyoriy komandasini ham qo’llash mumkin.
Bu xususiyatlar va yuqoridagi mavzularda keltirilgan usul, texnologik yechimlar va mavjud bo’lgan instrumental vositalarining qulayliklaridan foydalanib biz quyida programmalashda subjarayonlarni tashkil qilishni ko’ramiz.
Programmalashda subjarayonlarni tashkil qilish uchun quyidagicha ish ko’radilar.
Qo’yilgan masalani yechish uchun programmalar ketma-ketligi hosil qilinadi.
Bitta programma boshqasini chaqirishini rejalashtiriladi.
Chaqiruvchi boshqa programmani ishga yurgizgandan keyin xotirada qolishi e’tiborga olinadi.
Chaqirilgan programma o’z ishini tugatgandan keyin uni ishga da’vat etgan (nisbatan yuqori darajali) programma yana o’z ishini davom ettiradi.
Ana shu texnologiya asosida integrator programmalar tashkil qilingan. Bunday programmalarda ishga da’vat etilishi kerak bo’lgan programmalar menyusi yordamida kerakli subjarayonlar (programmalar) ishga tushiriladi.
Oddiy programma o’z ishini tamomlab xotirani bo’shatsa, subjarayonlar esa ketma-ket bir-biriga boshqaruvni uzatadi va oxirgi subjarayon esa operatsion sistemaga boshqaruvni beradi.
Subjarayonlarni tashkil qilish uchun xotira hajmini ko’rsatish kerak. Subjarayonlar ozod xotirada, ya’ni operatsion sistema, rezident programmalar va ishga tushirilgan programmadan qolgan ortiqcha xotira sohasida tashkil qilinadi.
Masalan, bizga tanish bo’lgan Borland Pascal yoki Turbo Pascal muhitlarida xotirani boshqarish uchun $M turdagi kompilasiya kaliti ishlatiladi. Uni asosiy programmada birinchi satr o’rnida qo’yish kerak.
{$M Stek, Minimumkucha, Maksimumkucha}
Bu yerda 1024 bayt ≤ Stek ≤ 65520 bayt
0 ≤ Minimumkucha ≤ 640 k
0 ≤ Maksimumkucha ≤ 640 k
Ammo Minimumkucha ≤ Maksimumkucha
Dinamik o’zgaruvchilarni joylashtirish uchun ishlatiladigan xotiraning qismini kucha deymiz. Kuchani boshqarish uchun maxsus programma (kucha monitori) ishlatiladi.
$M direktivasiga misol tariqasida {$M 1024, 0, 2048}- ni keltirish mumkin.
Subjarayonlarni tashkil qilish uchun quyidagi DOS-modulining protseduralari ishlatiladi.
SwapVectors; Bu protseduraning parametrlari yo’q, tizimning yoki tashqi uzilishlar vektorlarini tiklash (qayta tiklash) uchun ishlatiladi.
298
3
Katta hajmdagi programmalarni loyihalash muammolari
Amaliy informatikada katta programmaviy tizimlarni ishlab chiqish uchun tayyor programmalardan foydalanish va ularni dinamik tarzda bir- biri bilan bog’lash muhim masalalardan biridir. Bizga ma’lum bo’lgan TPas va Borland Pascal integrallashgan programmalash muhitlarida bu ishni bajarish uchun maxsus texnologiyalar ishlatiladi. Bu texnologiyalarni quyidagi xususiyatlarga ajratish mumkin:
muhitning tizimli modullarining tayyor protsedura va funksiyalari ishlatiladi;
chaqirilishi kerak bo’lgan tashqi programmalar ixtiyoriy programmalash muhitida tuzilishi mumkin;
programmalar .exe va .com kengaytmali fayl sifatida bo’lishi kerak;
programma sifatida operatsion sistemaning ixtiyoriy komandasini ham qo’llash mumkin.
Bu xususiyatlar va yuqoridagi mavzularda keltirilgan usul, texnologik yechimlar va mavjud bo’lgan instrumental vositalarining qulayliklaridan foydalanib biz quyida programmalashda subjarayonlarni tashkil qilishni ko’ramiz.
Programmalashda subjarayonlarni tashkil qilish uchun quyidagicha ish ko’radilar.
Qo’yilgan masalani yechish uchun programmalar ketma-ketligi hosil qilinadi.
Bitta programma boshqasini chaqirishini rejalashtiriladi.
Chaqiruvchi boshqa programmani ishga yurgizgandan keyin xotirada qolishi e’tiborga olinadi.
Chaqirilgan programma o’z ishini tugatgandan keyin uni ishga da’vat etgan (nisbatan yuqori darajali) programma yana o’z ishini davom ettiradi.
Ana shu texnologiya asosida integrator programmalar tashkil qilingan. Bunday programmalarda ishga da’vat etilishi kerak bo’lgan programmalar menyusi yordamida kerakli subjarayonlar (programmalar) ishga tushiriladi.
299
3
Modulli texnalogiya asosida zamonaviy programmalash
Hozirgi paytda programmalash tizimlari asosan integrallashgan (birlashgan) shaklda tashkil qilinadi. Bunday tizimlarni Turbo Tizimlar ham deyiladi. Aytib o’tish joyizki SHEHM turbo rejimi va turbo tizim tushunchalari bir –biridan katta farq qiladi.
Modulli programmalash zamonaviy texnologiyalardan hisoblanadi. Katta va
murakkab programma ta’minotini yaratishda avvalo uning strukturasi va
komponentalari orasidagi munosabatni aniqlash maqsadga muvofiq.
Struktura (tarkib) masalasini muhokama qilsak u holda quyidagi holatlarni
qarab chiqishimiz kerak:
a) Programma yagona moduldan iborat va uni ijro etish uchun operativ
xotiraga to’liq yuklash kerak;
b) Programma bir nechta segmentlardan (bo’laklardan) iborat va har bir
segment kerakli paytda operativ xotiraga yuklanadi va ijro etiladi. i- modul
o’rniga (i+1)- modul yuklanishi mumkin.
d) Programma rezident (bosh) qism va bir nechta norezident qismlardan iborat.
Rezident qism ish boshlanishida xotiraga yuklanadi. Norezident qismlar esa
navbat bilan ketma-ket yuklanadilar.
Ko’rinib turibdikim, modul to’rtta qismga bo’linadi.
a) Modul sarlavhasi (unit nom);
b) Interfeys, ya’ni e’lonlar bo’limi (interface);
d) Ishlab chiqarish bo’limi (implementation);
e) Ishga yurgizish bo’limi (begin va end orasida);