Bosh sahifa Wiki Page

Page

Page — virtual xotira tizimida manzil makoni bo‘linadigan qat’iy o‘lchamli blokdir. Operatsion tizim virtual sahifani fizik xotiradagi page frame bilan bog‘laydi. Sahifalash jarayonlarga uzluksiz virtual manzil berib, fizik RAMni bo‘laklar bo‘yicha taqsimlash, himoyalash va diskdagi ma’lumot bilan almashtirish imkonini yaratadi.

O‘lcham va manzil

Ko‘p tizimda bazaviy page 4 KiB, ammo arxitektura boshqa o‘lchamni ham qo‘llaydi. Virtual manzil page number va sahifa ichidagi offsetga bo‘linadi. 4 KiB sahifada pastki 12 bit offset bo‘ladi. Page table virtual page number uchun fizik frame va permissionlarni saqlaydi.

Kichik page ichki isrofni kamaytiradi va nozik himoya beradi, lekin katta manzil makoni uchun ko‘p page table entry hamda TLB bosimini yaratadi. Huge page entry sonini kamaytiradi, ammo katta blok ajratish, fragmentation va keraksiz xotira ishlatish xavfini oshiradi.

Sahifa holati

Page present yoki diskdagi backing store’da bo‘lishi, clean yoki dirty holatda turishi mumkin. Anonymous page heap va stack ma’lumotini, file-backed page executable, library yoki memory-mapped faylni ifodalaydi. Clean file page xotira kerak bo‘lsa tashlab yuborilib, keyin fayldan qayta o‘qiladi. Dirty page avval diskka yozilishi kerak.

Accessed va dirty bitlar replacement algoritmiga yordam beradi. Operatsion tizim yaqinda ishlatilmagan sahifalarni reclaim qiladi. Working set RAMdan katta bo‘lsa sahifalar tez-tez kirib-chiqib thrashing hosil qiladi.

Himoya va ulashish

Har page read, write, execute va user/kernel ruxsatlariga ega. W^X siyosati bir sahifaning bir vaqtda yoziladigan va bajariladigan bo‘lishini cheklaydi. Guard page stack yoki buffer chegarasiga kirishni darhol faultga aylantiradi. Permissionni o‘zgartirish page table update va TLB shootdown talab qilishi mumkin.

Bir fizik frame bir nechta jarayonga xaritalanishi mumkin. Shared library kodi read-only bo‘lgani uchun jarayonlar orasida bo‘lishiladi. Shared memory ataylab bir sahifalarni bir nechta manzil makoniga beradi. Fork copy-on-write bilan sahifalarni yozuvgacha bo‘lishadi.

Cache va I/O

Page cache fayl ma’lumotini RAMda saqlab, takror disk o‘qishni kamaytiradi. Buffered I/O odatda shu cache orqali o‘tadi. Direct I/O ayrim database ishida page cache’ni chetlab o‘tadi, ammo alignment va application cache mas’uliyatini oshiradi.

Page boundary qurilma DMA va memory allocationda muhim. Buffer fizik jihatdan uzluksiz bo‘lmasligi mumkin; scatter-gather bir nechta frameni bitta I/O sifatida beradi. NUMA tizimida frame qaysi xotira tugunida turgani access kechikishiga ta’sir qiladi. Profil page fault, cache miss va NUMA localityni birgalikda baholaydi.

Sahifa almashtirish

Memory pressure’da yadro anonymous dirty page’ni swapga, file-backed dirty page’ni faylga yozadi yoki clean cache sahifasini tashlaydi. LRUning aniq nusxasi o‘rniga active/inactive list va access sampling kabi algoritm ishlatilishi mumkin. Pinned yoki mlocked page reclaim qilinmaydi; haddan ortiq pin I/O uchun zarur xotirani tugatadi. Container memory limit global RAM bo‘sh bo‘lsa ham uning cgroupida reclaim va OOM yaratishi mumkin. Page cache ham limit hisobiga kirishi ehtimol. “Free memory” va application RSSni ajratib talqin qilish zarur, chunki cache zaruratda bo‘shatiladigan, foydali xotiradir.

Bog‘liq tushunchalar

Page frame, Virtual memory, Page table, Page cache, Huge page, Memory protection