Jarayonni qanday tashkillashtirish kerak? Eng keng tarqalgan uchta strategiya:
* Birinchi muvofiq strategiya (birinchi fit). Jarayon birinchi o'lchamga mos keladigan qismga joylashtiriladi.
* Eng mos strategiya (eng yaxshi mos). Jarayon yuklab olingandan keyin eng kam bo'sh joy qoladigan bo'limga joylashtiriladi.
* Eng kam mos strategiya (eng yomon mos). Eng katta bo'limga joylashtirilganda, boshqa jarayonni joylashtirish uchun etarli joy mavjud.
Modellashtirish birinchi ikki holatda foydali xotira ulushi katta ekanligini ko'rsatdi, birinchi usul biroz tezroq. Shu bilan birga, ushbu strategiyalar Osning boshqa tarkibiy qismlari, masalan, fayllarni diskka joylashtirish uchun keng qo'llanilishini ta'kidlaymiz.
Xotira boshqaruvi ishining odatiy aylanishi erkin saytni (bo'lim) tanlash so'rovini tahlil qilish, uni strategiyalarning biriga (birinchi mos, eng mos va eng mos) muvofiq tanlash, tanlangan bo'limga jarayonni yuklash va bepul va band bo'lgan joylarning jadvallaridagi keyingi o'zgarishlarni o'z ichiga oladi. Xuddi shunday tuzatish jarayoni tugagandan so'ng ham talab qilinadi. Manzillarni ulash yuklab olish va bajarish bosqichlarida amalga oshirilishi mumkin.
Bu usul sobit bo'limlari usuli bilan solishtirganda ko'proq moslashuvchan, lekin u tashqi fragmentation xos-foydalanilmagan xotira saytlar bir qator mavjudligi, har qanday jarayon uchun ajratilgan emas. Birinchi mos va eng mos keladigan jarayonni joylashtirish strategiyasini tanlash parchalanish qiymatiga ozgina ta'sir qiladi. Qizig'i shundaki, eng mos usul eng yomon bo'lishi mumkin, chunki u juda ko'p kichik bo'sh bloklarni qoldiradi.
Tashqi parchalanish muammosiga yechimlardan biri siqishni tashkil qilish, ya'ni barcha bo'sh ish joylarini manzillarning o'sishiga (kamayib ketishiga) yo'naltirishdir, shunda barcha bepul xotira doimiy maydonni hosil qiladi. Ushbu usul ba'zan ko'chiriladigan qismlar bilan sxema deb ataladi. Ideal holda, siqilishdan keyin parchalanish yo'q bo'lishi kerak. Biroq, siqishni qimmatbaho protsedura bo'lib, optimal siqishni strategiyasini tanlash algoritmi juda qiyin va odatda siqishni boshqa manzillarga tushirish va yuklab olish bilan birgalikda amalga oshiriladi.
Foydalanuvchi nuqtai nazari va tizim o'rtasidagi farqni yana bir bor eslatib o'tamiz. Foydalanuvchi nuqtai nazaridan uning xotirasi faqat bitta dasturni o'z ichiga olgan yagona uzluksiz makondir. Haqiqiy ekran foydalanuvchi tomonidan yashiringan va OS tomonidan nazorat qilinadi. Foydalanuvchi jarayonida boshqa birovning xotirasi mavjud emasligini unutmang. Faqat o'z sahifalarini o'z ichiga olgan sahifa jadvalidan tashqarida xotirani joylashtirish imkoniyati yo'q.
Jismoniy xotirani boshqarish uchun OS ramka jadvali tuzilishini qo'llab-quvvatlaydi. Uning holatini ko'rsatadigan har bir jismoniy ramka uchun bitta yozuv bor.
Manzillarni ko'rsatish murakkab holatlarda ham to'g'ri amalga oshirilishi kerak va odatda apparat bilan amalga oshiriladi. Jarayon jadvaliga murojaat qilish uchun maxsus registrdan foydalaniladi. Jarayonlarni almashtirishda siz yangi jarayonning sahifa jadvalini topishingiz kerak, bu jarayonning kontekstiga kiritilgan ko'rsatgich.
Segment va segment-sahifa xotira tashkiloti
Xotira boshqaruvini tashkil etishning boshqa ikkita sxemasi mavjud: segment va segment-sahifa. Segmentlar, sahifalardan farqli o'laroq, o'zgaruvchan hajmga ega bo'lishi mumkin. Segmentatsiya g'oyasi kirish qismida keltirilgan. Segmentni tashkil qilishda virtual manzil dasturchi va operatsion tizim uchun ikki o'lchovli bo'lib, ikkita maydondan iborat: segment raqami va segment ichidagi joy. Keling, sahifa tashkilotidan farqli o'laroq, chiziqli manzil ikki o'lchovli operatsion tizimga aylantirilsa, bu erda manzilning ikki o'lchamlari-bu jarayonning Foydalanuvchining baytning chiziqli qatori shaklida emas, balki o'zgaruvchan segmentlar to'plami (ma'lumotlar, kod, Stack...).
Past darajadagi tillarda yoziladigan dasturchilar segmentli tashkilot haqida tushunchaga ega bo'lishi kerak, bu segmentli registrlarning qiymatlarini aniq o'zgartiradi (bu Assemblerda yozilgan dasturlarning matnlaridan aniq ko'rinadi). Mantiqiy manzil maydoni segmentlar to'plamidir. Har bir segmentda ism, o'lcham va boshqa parametrlar mavjud(imtiyozlar darajasi, ruxsat etilgan murojaatlar, mavjud bayroqlar...). Sahifa sxemasidan farqli o'laroq, foydalanuvchi faqat bitta manzilni belgilaydi, bu sahifa raqamiga bo'linadi va dasturchi uchun shaffof tarzda almashinadi, segment sxemasida foydalanuvchi har bir manzilni ikki qiymat bilan belgilaydi: segment nomi va ofset.
Har bir segment 0 bilan boshlangan manzillarning chiziqli ketma - ketligi. Segmentning maksimal hajmi protsessorning hajmi bilan aniqlanadi (32-bit manzili 232 bayt yoki 4 Gb). Segment hajmi dinamik ravishda o'zgarishi mumkin (masalan, Stack segmenti). Segment jadvalining elementi segmentning boshlang'ich jismoniy manziliga qo'shimcha ravishda segmentning uzunligi ham mavjud. Agar virtual manzildagi joy o'zgarishi segmentning kattaligidan tashqariga chiqsa, alohida holat yuzaga keladi.
Mantiqiy manzil-buyurtma qilingan juftlik v = (s, d), segment raqami va segment ichidagi joy.
Segmentlar apparat tomonidan qo'llab-quvvatlanadigan tizimlarda bu parametrlar odatda segment identifikatorlari jadvalida saqlanadi va dastur bu identifikatorlarga selektor raqamlari orqali murojaat qiladi. Shu bilan birga, har bir jarayonning kontekstida kodning joriy segmentlarini, to'plamini, ma'lumotlarini va boshqalarni o'z ichiga olgan segmentli registrlar to'plami mavjud. Bu protsessorni allaqachon apparat darajasida xotiraga kirishning joizligini aniqlash, axborotni zarar etkazishdan va ruxsatsiz kirishdan himoya qilishni soddalashtirish imkonini beradi.
Uskuna segmentini qo'llab-quvvatlash juda kam (asosan Intel protsessorlarida) keng tarqalgan. Ko'pgina OSLARDA segmentatsiya apparatdan mustaqil darajada amalga oshiriladi.
Katta o'lchamdagi segmentlarni xotirada saqlash jarayoni uzluksiz blok bilan saqlash kabi noqulaydir. Segmentlarni sahifalarga ajratish g'oyasi paydo bo'ladi. Segment-sahifa xotira tashkiloti bilan virtual manzilning ikki darajali jismoniy efirga uzatilishi amalga oshiriladi. Bunday holda, mantiqiy manzil uchta maydondan iborat: mantiqiy xotira segmenti raqami, segment ichidagi sahifa raqami va sahifa ichidagi joy. Shunga ko'ra, ikkita ekran jadvali ishlatiladi - segment raqamini sahifa jadvali bilan bog'laydigan segment jadvali va har bir segment uchun alohida sahifa jadvali.
Segment-sahifa va sahifa xotirasi tashkiloti bir xil ma'lumotlar va dasturiy kodlarni turli vazifalar bilan bo'lishishni osonlashtirishga imkon beradi. Buning uchun turli xil jarayonlarning turli mantiqiy xotira bloklari bir xil jismoniy xotira blokida ko'rsatiladi, bu erda kod yoki ma'lumotlar birgalikda joylashtiriladi.
Do'stlaringiz bilan baham: |