Bosh sahifa Wiki Protection Fault

Protection Fault

Protection Faultmemory yoki protsessor resursiga murojaat mavjud protection qoidalarini buzganida hosil bo‘ladigan umumiy fault tushunchasi. Uning aniq turi architecture va operatsion tizimga bog‘liq.

Page protection

Page present bo‘lsa ham user write read-only pagega, user code supervisor pagega yoki execute NX pagega tegsa protection violation yuz beradi. Page-fault error code sababni ajratadi.

Boshqa resurslar

Segment, descriptor, control register yoki privileged instruction qoidalari ham protection faultga olib kelishi mumkin. x86’da ayrimlari General Protection Fault bilan ifodalanadi.

Kernel handler

Kernel user faultni signal/exceptionga aylantiradi, kernel faultda esa exception table orqali recovery yoki fatal panic bo‘lishi mumkin. User-copy helper known faultni xato kodi bilan qaytaradi.

Qonuniy retry

Fault handler accessni qonuniy qilib retry qilishi faqat copy-on-write, stack growth yoki lazy mapping kabi oldindan belgilangan holatlarda mumkin. Arbitrary permission buzilishi yashirilmaydi.

Security log

Security log fault addressni chiqarishda address randomization va maxfiylikni hisobga oladi. Takroriy fault exploit urinish yoki oddiy bug bo‘lishi mumkin; context kerak.

Test

Test read/write/execute, privilege, protection key, COW va kernel user-copy holatlarini qamraydi. Error code architecture manualiga mos decode qilinadi.

Amaliy nazorat

Protection Fault bilan ishlaydigan tizim protection flags va privilegeni 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 — faultni asossiz retry qilish. 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 permission va kernel-copy 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.

Protection fault mavjud resursga murojaat qilingan, ammo privilege yoki permission sharti bajarilmaganini bildiradi. Page-table present biti yoqilgan bo‘lsa-yu write, user yoki execute ruxsati mos kelmasa page-protection violation yuz beradi; boshqa arxitektura resurslari uchun alohida exception turi bo‘lishi mumkin. Kernel handler faultni har doim fatal qilmaydi: copy-on-write yozuvi, stack growth yoki lazy permission yangilanishi qonuniy ravishda sahifani tuzatib instruktsiyani qayta bajarishi mumkin. Haqiqiy buzilishda user processga signal beriladi yoki kernel holatida panic ehtimoli tug‘iladi. Error code va privilege level tashxisning asosiy dalillaridir.

Bog‘liq tushunchalar

memory protection, page fault, privilege level, NX bit, access violation, fault handler