Memory Mapping — virtual address diapazonlarini physical page, fayl, qurilma yoki anonymous backing bilan bog‘lash jarayoni. U process address space’ining code, data, heap, stack va shared regionlarini tashkil qiladi.
Page table
Page table virtual page numberni physical frame va permissionlarga xaritalaydi. TLB tez-tez ishlatiladigan translationlarni cache qiladi. Mapping o‘zgarsa TLB invalidation local yoki boshqa CPUlarda bajariladi.
Backing turlari
Anonymous mapping zero-filled page sifatida boshlanadi va swap bilan backed bo‘lishi mumkin. File mapping fayl kontentiga bog‘lanadi. Shared memory bir physical page’ni bir nechta processga ko‘rsatadi.
Demand va COW
Demand paging physical memoryni faqat access paytida ajratadi. Copy-on-write fork yoki private mappingda writegacha share qiladi. Huge page TLB bosimini kamaytiradi, lekin fragmentation va allocation sharti bor.
Maxsus mapping
Fixed address, guard page, stack growth va memory-mapped device regionlari maxsus siyosatga ega. Device memory cacheability va ordering oddiy RAMdan farq qiladi.
API xavfsizligi
Mapping API length/offset overflow, alignment va address-space limitni tekshiradi. Unmapdan keyingi pointer dangling bo‘ladi; concurrent access lifecycle synchronization talab qiladi.
Tekshiruv
Test map/unmap, permission change, COW, fork, huge page fallback va TLB shootdownni qamraydi. RSS va page-fault soni o‘lchanadi.
Amaliy nazorat
Memory Mapping bilan ishlaydigan tizim page table, backing object va TLBni aniq lifecycle va version bilan yuritadi. Pointer, mapping, navbat yoki exception holati boshqa qatlamga uzatilganda ownership hamda permission shartlari yo‘qolmaydi. Debug rejimda manzil, obyekt identifikatori va state transition qayd etiladi; production log ASLR, maxfiy ma’lumot va raw pointerlarni ochib yubormaydigan shaklga keltiriladi. Eskirgan handle yoki metadata reuse qilinmasligi uchun generation, build-id yoxud reference hisobidan foydalaniladi.
Muhim xavf — unmapdan keyingi access yoki stale translation. Bunday vaziyatda tizim taxmin bilan davom etmaydi: access fault, aniq error, konservativ fallback yoki nazoratli cleanup qo‘llanadi. Signal/fault kelgan nuqta har doim asl buzilish joyi emas; allocation, mapping va oxirgi ownership amallari trace’i tashxisga yordam beradi. Parallel accessda lock, atomic ordering va lifetime birgalikda tekshiriladi. Timeout yoki null check memory safetyning o‘rnini bosa olmaydi.
Sifat nazorati COW, fork va shootdown testi orqali bajariladi. Sinovlar normal holat bilan birga nol uzunlik, page boundary, alignment, juda katta offset, concurrent close/free, permission o‘zgarishi va platforma farqlarini qamraydi. Correctness avval etalon hamda invariant bilan tekshiriladi, keyin page fault, cache miss, contention, latency yoki xotira sarfi o‘lchanadi. Sanitizer, fault injection va malformed-input fuzzing topgan minimal holat doimiy regressiya testiga aylantiriladi.
Anonim mapping heap allocator, thread stacki yoki katta vaqtinchalik arena uchun backing bo‘lishi mumkin. File-backed mappingda esa sahifa fayl offsetiga bog‘lanadi va shared yoki copy-on-write siyosati tanlanadi. Address rezervatsiyasi fizik RAM ajratilganini anglatmaydi: demand paging sabab birinchi accessda page fault yuz beradi. Huge page throughputni oshirishi mumkin, biroq fragmentatsiya va compaction xarajatini ko‘paytiradi. Mapping ro‘yxatini tahlil qilishda virtual hajm, resident set, private dirty va shared clean qiymatlari farqlanadi; faqat virtual intervalga qarab real xotira sarfi chiqarilmaydi.
Bog‘liq tushunchalar
virtual memory, page table, TLB, anonymous memory, copy-on-write, address space