BT Sözlüğü › Programlama › Kritik bölge

Kritik bölge

Programlama Svenska → Güncellendi: 2026-11-02

Ortak veriye dokunan, bu yüzden aynı anda yalnızca tek bir yürütme akışının çalıştırabileceği kod parçası.

Sorunu 1965’te Edsger Dijkstra ortaya koydu: birkaç süreç bir değişkeni paylaşıyor ve biri içerideyken hiçbiri giremiyor. Sıradan bir işletim sisteminde çözüm kilittir: bekleme uzun sürebiliyorsa mutex, bölüm birkaç komutluksa spinlock. Windows hafif kilidine doğrudan CRITICAL_SECTION adını verecek kadar ileri gitti.

Tek çekirdekli bellenimde rakip genellikle bir kesmedir ve burada hiçbir kilit işe yaramaz: kesme işleyicisi ana döngüyü bekleyemez. Bunun yerine kesmeler kapatılır (__disable_irq() ya da ARM’de cpsid i), iş yapılır ve kesmeler yeniden açılır. Kesmeler kapalıyken geçen her mikrosaniye doğrudan sistemin kesme gecikmesine eklenir; bu yüzden kısa tutun, ayrıca önceki durumu kaydedip geri yükleyin, körlemesine yeniden açmayın; yoksa iç içe bir bölüm dıştakinin altındaki zemini çeker.

← Sözlüğe dön