Thread Control Block (TCB) — kernel yoki threading runtime’da bitta threadning scheduling, execution va lifecycle ma’lumotlarini saqlaydigan boshqaruv tuzilmasi.
TCB tarkibi
TCB thread ID, state, priority, CPU affinity, saved register context, stack reference va scheduling statisticsni saqlaydi. Process address space, file va credential ma’lumotlari umumiy PCBga reference qilinadi.
Runtime TCB
Kernel TCB va user runtime TCB turli qatlamda bo‘lishi mumkin. User-level thread runtime stack, continuation va local storage’ni saqlaydi; M:N modelda ko‘p user TCBlar kam kernel threaddan foydalanadi.
TLS va lifecycle
Thread-local storage pointeri TCB yoki architecture register orqali topiladi. Destructorlar thread exitda ishlaydi. Cancellation, signal mask va join waiters ham lifecycle ma’lumotiga kirishi mumkin.
Queue a’zoligi
TCB run queue va wait queue’da bir vaqtda noto‘g‘ri turmasligi kerak. State, queue link va wakeup lock ostida atomik yangilanadi. Double wake yoki double enqueue queue corruptionga olib keladi.
Cleanup
Thread exit stackni darhol bo‘shatmasligi mumkin: joiner statusni olishi yoki hazard reference tugashi kerak. Detached thread cleanupni runtime avtomatik bajaradi.
Thread testi
Test create/join/detach, cancellation, priority change, affinity migration va signalni qamraydi. Queue membership va reference count invariantlari assertion bilan tekshiriladi.
Amaliy boshqaruv
Thread Control Block implementatsiyasida TID, scheduling state va stack 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 — double enqueue yoki erta cleanup. 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 join, detach va queue invariantlari 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.
TCBdagi stack pointer va state scheduler critical sectionida mos yangilanadi. Architecture context switch kodi C struct offsetlariga bog‘liq bo‘lsa build-time static assertion layoutni tekshiradi. Kernel versiyasi o‘zgarganda user debugger TCB ichki layoutiga tayanmay, rasmiy tracing API ishlatadi.
Scheduler class o‘zgarganda TCB priority va queue positioni bir transactionda yangilanadi. Eski run queue’da qolgan node keyingi dispatchda double-run xavfini tug‘diradi.
Bog‘liq tushunchalar
thread, thread state, scheduler, thread-local storage, context switch, process control block