Thread Context — thread bajarilishini aynan to‘xtagan joyidan davom ettirish uchun saqlanadigan registerlar, instruction pointer, stack va threadga xos holatlar majmuasi.
Register va stack
General-purpose va floating/vector registerlar, flags, stack pointer hamda program counter arxitekturaga xos contextdir. Kernel scheduler context switchda zarur qismini saqlaydi. Lazy FPU save tarixan xarajatni kamaytirgan, security va modern dizayn bunga ta’sir qiladi.
Stack qatlamlari
User stack function frame va local qiymatlarni, kernel stack esa system call yoki fault paytidagi kernel bajarilishini saqlaydi. Har thread alohida stack va thread-local storage’ga ega, lekin process address space’ini ulashadi.
Signal holati
Signal yoki exception thread contextini vaqtincha signal framega yozadi. Handlerdan qaytish oldingi holatni tiklaydi. Contextni foydalanuvchi o‘zgartira olsa kernel privilege va reserved flaglarni tekshiradi.
Yengil context
Coroutine context threadnikidan yengilroq bo‘lishi mumkin: faqat callee-saved register va stack pointer cooperative switchda yetarli. Preemptive switch esa istalgan instructionda bo‘lgani uchun to‘liqroq holat talab qiladi.
Debugger
Debugger thread context API orqali registerlarni o‘qiydi va single-step flagni o‘zgartiradi. Suspended thread contextini u ishlayotgan paytda o‘qish race bo‘lmasligi uchun OS uni xavfsiz to‘xtatadi.
Tekshiruv
Test integer, SIMD, TLS, signal va deep stack qiymatlarini ko‘p context switchdan keyin solishtiradi. Architecture-specific register layout versioni tekshiriladi.
Amaliy boshqaruv
Thread Context implementatsiyasida register set, stack va TLS alohida va versiyalangan holat sifatida yuritiladi. Qaror uchun zarur inputlar yashirin global taxminga aylantirilmaydi: platforma, konfiguratsiya, identity yoki memory-order sharti tegishli obyekt bilan bog‘lanadi. Shu sabab incremental yangilanish, context almashishi yoki parallel hodisada eskirgan ma’lumotdan foydalanish kamayadi. Debug rejim qarorni hosil qilgan edge, state transition va parametrlarni ko‘rsatadi; production log esa maxfiy qiymatlarni xom shaklda yozmaydi.
Muhim xato sinfi — SIMD/TLS qiymatini yo‘qotish. Bunday vaziyatda tizim optimistik tarzda davom etmaydi: semantikaga qarab konservativ fallback, bounded retry, taskni bloklash yoki aniq error tanlanadi. Timeout correctness isboti emas; u faqat operatsion limitdir. Queue membership, reference count, lock ownership va visibility kabi invariantlar state bilan atomik yangilanadi. Cancellation yoki failure o‘rtada yuz bersa qisman o‘zgargan holat cleanup protokoli orqali tiklanadi.
Sifat nazorati preemption, signal va debugger testi orqali bajariladi. Test normal yo‘ldan tashqari bo‘sh navbat, bitta element, yuqori contention, timeout bilan bir vaqtdagi wakeup, resurs limiti va platforma variantlarini qamraydi. To‘g‘rilik performance’dan alohida tekshiriladi; keyin throughput, p99 latency, context switch, cache miss yoki artefakt hajmi kabi mavzuga mos ko‘rsatkichlar baseline bilan solishtiriladi. Topilgan minimal interleaving yoki kirish regressiya to‘plamida doimiy saqlanadi.
Thread stack hajmi guard page bilan himoyalanadi; overflow boshqa memoryni jim buzish o‘rniga fault beradi. Alternate signal stack stack-overflow handlerga minimal joy yaratadi. Context migrationda architecture-specific shadow stack yoki pointer-authentication state ham saqlanishi talab etilishi mumkin.
Bog‘liq tushunchalar
thread, CPU context, stack, thread-local storage, context switch, register set