Xotirani taqsimlash, qayta taqsimlash va jamlash usullari

|
Xotirani taqsimlash, qayta taqsimlash va jamlash usullari
|
bet | 59/222 | Sana | 15.05.2024 | Hajmi | 5,84 Mb. | | #236377 |
Belgilangan (statik) qismlar
Tezkor xotirani boshqarishning eng oddiy yo‘li uni oldindan (ishga tushurish bosqichida yoki tizim yuklanishi vaqtida) bir qancha belgilangan (statik) o‘lchamdagi qismlarga bo‘lishdan iboratdir. Kelib tushayotgan jarayonlar u yoki bu qismga joylashtiriladi. Shu sababli fizik manzillar maydonining shartli bo‘linishi yuzaga keladi. Jarayonning mantiqiy va fizik manzillari bog‘lanishi uni aniq bir qismga yuklash vaqtida yoki bazan kompilatsiya vaqtida yuzaga keladi.
Har bir qism o‘zining jarayonlar navbatiga ega, yoki hamma qismlar uchun jarayonlar global navbati mavjud bo‘lishi mumkin. Bu sxema IBM OS/360 (MFT), DES RSX-11 va shunga yaqin boshqa tizimlarda qo‘llanilgan. Xotirani boshqarish tizimi jarayonni hajmini baholaydi, unga mos keluvchi qismni tanlaydi, jarayonni bu qismga yuklaydi va manzillarni sozlaydi.
3.6- rasmda belgilangan qismli sxemalar ko‘rsatilgan: (a) navbati umumiy bo‘lgan jarayonlar, (b) alohida navbatli jarayonlar.
Bu sxemaning kamchiligi ko‘rinib turibdiki, bir vaqtda bajariladigan jarayonlar soni qismlar soni bilan cheklangan. Boshqa muhim kamchiligi shundan iboratki, taklif qilinayotgan sxema, ichki fragmentlashdan, yani jarayonga ajratilgan, ammo ishlatilmagan xotira qismini yo‘qotish bilan qattiq zararlanadi. Fragmentatsiya, jarayon o‘ziga ajratilgan qismni to‘liq band qilmasligi yoki bazi qismlar, bajariladigan foydalanuvchi dasturlari uchun kichik bo‘lganligidan kelib chiqadi.
3.6- rasm. Overleyli (qoplangan) tuzilish
Jarayon mantiqiy manzillar maydoni hajmi, unga ajratilgan qism hajmidan katta (yoki eng katta hajmdan ham katta) bo‘lgan holatlarda, ba’zan overley nomli (yoki qoplanadigan tuzilishli) tashkil etadigan texnikadan foydalaniladi.
Asosiy g‘oya – faqat ayni vaqtda kerak bo‘lgan dastur ko‘rsatmalarini xotirada saqlab turishdir. Overley tuzilishning tavsifini yozish uchun odatda maxsus sodda (overley description language) tildan foydalaniladi.
Asosiy xotirada qo‘llanilgan belgilangan qismlar (statik qismlar deb ham ataladi) multidasturlashga imkon beradigan birinchi urinishdir – har bir vazifa uchun bitta qism. Har bir qismning o‘lchami tizim ishga tushurilganda belgilanganligi sababli, har bir qism faqat kompyuter tizimi o‘chirilgan, qayta konfiguratsiya qilingan va qayta ishga tushirilganida qayta tuzilishi mumkin edi. Shunday qilib, tizimni ishga tushirgandan so‘ng, qism o‘lchamlari o‘zgarishsiz qoldi. Ushbu sxemada muhim omil paydo bo‘ldi: vazifa xotirasi maydonini himoya qilish. Qismga vazifa berilgandan so‘ng, boshqa vazifalarga unga tasodifan yoki qasddan kirishga ruhsat berilmagan. Qismlarga kirishning bu usuli bir foydalanuvchili tizimga qaraganda har bir qismni himoya qilishni nazarda tutadi. Chunki bir foydalanuvchilik tizimda istalgan vaqtda faqat bitta ish asosiy xotirada bo‘lgan, shuning uchun operatsion tizimning asosiy xotirada joylashgan qismi himoya qilinishi kerak edi. Shu bilan birga, belgilangan qismni taqsimlash sxemalari uchun asosiy xotirada mavjud bo‘lgan har bir qism uchun himoya majburiy edi. Odatda bu kompyuter qurilmalari va operatsion tizimning birgalikdagi javobgarligi edi. Vazifalarni xotirada saqlash uchun ishlatiladigan algoritm bir foydalanuvchi tizimida ishlatilgandan ko‘ra bir necha marotaba ko‘proq qadamlarni talab qiladi, chunki vazifa hajmi to‘liq mos kelishiga ishonch hosil qilish uchun bo‘lim hajmiga mos kelishi kerak. Keyin, yetarlicha kattalikdagi blok aniqlanganda, uning mavjudligini tekshirish uchun qismning holatini tekshirish kerak. Har bir qism faqat bitta dastur tomonidan ishlatilishi mumkin. Har bir qismning o‘lchamini kompyuter operatori oldindan belgilab qo‘ygan, shuning uchun tizimni qayta ishga tushurmasdan hajmni o‘zgartirish mumkin emas.
Vazifani belgilangan qismlarga yuklash algoritmi
Vazifa talab qilgan xotira hajmini aniqlash
Agar vazifa hajmi > qism hajmidan katta bo‘lsa Unda, vazifani rad etadi
Operatorga kerakli xabarni chop etadi
Navbatdagi vazifani bajarish uchun 1-qadamga o‘tish Aks holda
3-qadamdan davom etadi
Hisoblagichni 1 ga o‘rnatish
Hisoblagich o‘rnatilganda xotiradagi bo‘limlar soni katta yoki teng bo‘lganda bajarish
Agar vazifa hajmi xotira qismi hajmidan (hisoblagich) katta bo‘lsa
Unda hisoblagich = hisoblagich + 1 Aks holda
Agar xotira qismi hajmi (hisoblagich) = “bo‘sh” bo‘lsa Unda xotira qismiga (hisoblagich) vazifani yuklash Xotira qismi holatini (hisoblagich) “band” ga o‘zgartirish Aks holda
Hisoblagich = hisoblagich + 1 Bajarishni tugatish
Hozirgi vaqtda bo‘sh qismlar mavjud bo‘lmasa, vazifani kutish navbatiga qo‘yish
Navbatda turgan vazifani bajarish uchun 1-qadamga o‘tish.
Ushbu taqsimlash sxemasi bir foydalanuvchi tizimiga qaraganda ancha moslashuvchan, chunki u bir vaqtning o‘zida bir nechta dasturlarni xotirada saqlashga imkon beradi. Biroq, bu hali ham dasturni doimiy ravishda va bajarilishning boshidan oxirigacha xotirada saqlashni talab qiladi. Vazifa uchun xotira maydonini taqsimlash uchun operatsion tizimning xotira menejeri har bir xotira qismining o‘lchamini, uning manzili, kirish cheklovlari va tizimning joriy holatini (bo‘sh yoki band) ko‘rsatadigan jadvalni (3.1- jadval) saqlashi kerak.
3.1- jadval
Qism hajmi
|
Xotira manzili
|
Ruxsat
|
Qism holati
|
100 K
|
200 K
|
Vazifa 1
|
Band
|
25 K
|
300 K
|
Vazifa 4
|
Band
|
25 K
|
325 K
|
|
Bo‘sh
|
50 K
|
350 K
|
Vazifa 2
|
Band
|
Har bir vazifa bajarilib tugatilgach, uning xotira qismining holati band holatdan bo‘shga o‘zgaradi, va ushbu qismga kiruvchi boshqa vazifani kiritish mumkin.
Vazifalar ro‘yxati Vazifa 1 = 30K Vazifa 2 = 50K
Vazifa 3 = 30K (kutmoqda) Vazifa 4 = 25K
Asosiy xotira
1-qismda vazifa 1 (30K)
200K
mavjud
Asosiy xotira
2-qismda vazifa 4 (25K)
Ichki bo‘linish
4-qismda vazifa 2 (50K)
Bo‘sh qism
Qism 1 = 100K
|
Qism 2 = 25K
|
Qism 3 = 25K
|
Qism 4 = 50K
|
3.7- rasm. Asosiy xotiradan qismlarga ajratilgan holda foydalanish Asosiy xotiradan qismlarga ajratilgan holda foydalanish
3.1- jadvalda keltirilgan. Vazifa 1 mavjud 100 Kbayt xotiraning atigi 30 Kbaytini oladi, vazifa 3 qismlarni bo‘shashini kutishi kerak, hatto 1- qismda 70K bo‘sh joy mavjud bo‘lsa ham. Vazifalarga “kerakli hajmdagi birinchi mavjud qism” asosida bo‘sh joy ajratilgan.
Agar tizimda bajariladigan barcha vazifalar bir xil o‘lchamli bo‘lsa yoki o‘lchamlari oldindan ma’lum bo‘lsa va konfiguratsiyaga qarab o‘zgarmasa, belgilangan qismlar sxemasi yaxshi ishlaydi. Ideal holda, bu tizimda yaqin soatlarda, kunlarda yoki haftalarda bajariladigan barcha vazifalar to‘g‘risida aniq ma’lumot talab qiladi. Ammo, agar operator kelajakni aniq taxmin qila olmasa, qismlarning o‘lchamlari tasodifiy ravishda belgilanadi va ularning o‘lchami kiruvchi vazifalar uchun juda kichik yoki juda katta bo‘lishi mumkin. Qismning o‘lchamlari juda kichik bo‘lsa, jiddiy oqibatlarga olib keladi. Boshqa tomondan, agar qismlar juda katta bo‘lsa, xotira behuda sarflanadi. Agar vazifa to‘liq qismni egallamasa, qismda foydalanilmagan xotira bo‘sh qoladi, uni boshqa vazifaga o‘tkazish mumkin emas, chunki har bir qism bir vaqtning o‘zida bitta vazifaga beriladi. Bu ajralmas birlikdir. 3.7- rasmda shunday vaziyatlardan biri ko‘rsatilgan. Ruxsat etilgan qismlardan qisman foydalanish va bir vaqtning o‘zida qism ichida foydalanilmagan bo‘shliqlarni yaratishning bu hodisasi ichki bo‘linish (fragmentatsiya) deb ataladi
va belgilangan qismlar uchun xotirani taqsimlash sxemasining asosiy kamchiligi hisoblanadi.
|
| |