İşlemci çekirdekleri görevleri paralel olarak nasıl işler

Kerem Aydın·9 Temmuz 2026·⏱6 dk

İşlemci çekirdekleri birbirinden bağımsız olarak talimatları yürütür ve işletim sistemi, yükü maksimize etmek ve boşta kalma sürelerini en aza indirmek için veri akışlarını bu çekirdekler arasında dağıtır. Bu mekanizmayı anlamak, yazılımları doğru şekilde yapılandırmaya, performans darboğazlarından kaçınmaya ve bilgisayar kaynaklarını etkili bir şekilde kullanmaya olanak tanır; ister video render almak, kod derlemek ister modern oyunları çalıştırmak olsun.

Özet: Hiper iş parçacığı olmadan tek bir çekirdek aynı anda iki iş parçacığını yürütemez. Çoklu görevlilik, hızlı bağlam değiştirme veya paralel çalışan birden fazla fiziksel çekirdeğin varlığı sayesinde sağlanır.

Fiziksel çekirdekler ve mantıksal iş parçacıkları

Yük dağılımını anlamak için fiziksel çekirdek ve mantıksal iş parçacığı kavramlarını net bir şekilde ayırt etmek gerekir.

Fiziksel çekirdek, kendi kayıt defteri setine ve yürütme birimlerine sahip, işlemci içindeki bağımsız bir hesaplama bloğudur. Makine talimatlarını yürütme yeteneğine sahiptir.

Mantıksal iş parçacığı, işletim sisteminin gördüğü sanal bir iş birimidir. Hiper iş parçacığı (Intel) veya SMT (AMD) teknolojisi sayesinde, tek bir fiziksel çekirdek iki mantıksal iş parçacığını yönetebilir. Bu, bir iş parçacığı bellekten veri beklerken çekirdeğin boştaki kaynakları kullanarak ikinci iş parçacığının talimatlarını yürütmeye geçmesiyle gerçekleşir.

ÖzellikFiziksel ÇekirdekMantıksal İş Parçacığı
DoğaSilikon donanım bloğuİşletim sistemi için sanal temsil
PerformansYüksek, kaynaklara tam erişimAynı çekirdekteki komşu iş parçacığının yüküne bağlıdır
Hıza EtkisiParalelleştirmede doğrusal artışÇoklu iş parçacıklı görevlerde %15–30 artış

Gücü ikiye katlama efsanesi: Hiper iş parçacığı çekirdek gücünü ikiye katlamaz. Sadece bekleme boşluklarını yararlı işlerle doldurarak kaynak kullanım verimliliğini artırır.

Görev zamanlamada işletim sisteminin rolü

İşlemci tek başına hangi programın ilk çalıştırılacağına karar vermez. Bunu işletim sisteminin (Windows, Linux, macOS) görev zamanlayıcısı (scheduler) yapar.

Dağıtım ilkeleri

  1. Hazır kuyruk: Tüm aktif iş parçacıkları ortak bir kuyruğa girer.
  2. Zaman dilimi (Quantum): Zamanlayıcı her iş parçacığına kısa bir zaman aralığı (kuantum) ayırır, genellikle birkaç milisaniye.
  3. Bağlam değiştirme: Kuantum süresi dolduğunda veya iş parçacığı bekleme moduna geçtiğinde (örneğin klavye girişi beklerken), işletim sistemi mevcut iş parçacığının durumunu belleğe kaydeder ve bir sonrakinin durumunu yükler.

Yük dengeleme (Load Balancing)

Modern zamanlayıcılar sadece sıralamayı değil, aynı zamanda işlemci mimarisini de dikkate almaya çalışır:

  • Önbellek yerelliği: Bir iş parçacığı yakın zamanda Çekirdek 1'de çalıştıysa, verileri büyük olasılıkla bu çekirdeğin L1/L2 önbelleğinde kalmıştır. Zamanlayıcı, pahalı ana bellek yüklemerinden kaçınmak için iş parçacığını oraya geri döndürmeye çalışacaktır.
  • Sıcaklık kontrolü: Bir çekirdek aşırı ısındığında, işletim sistemi throttling'i (frekans düşüşünü) önlemek için hafif görevlerin bir kısmını daha soğuk çekirdeklere taşıyabilir.

Paralellik türleri ve performansa etkileri

Tüm görevler çekirdekler arasında verimli bir şekilde paylaştırılamaz. İki temel yaklaşım vardır:

1. Veri paralelliği (Data Parallelism)

Aynı işlem, büyük bir veri dizisinin farklı öğelerine uygulanır.

  • Örnek: Bir görüntünün her pikseline filtre uygulamak veya oyundaki binlerce nesne için fizik hesaplamaları yapmak.
  • Verimlilik: Mükemmel ölçeklenebilirlik. Çekirdek sayısı ne kadar fazlaysa, görev o kadar hızlı tamamlanır.

2. Görev paralelliği (Task Parallelism)

Farklı çekirdekler tamamen farklı işlevleri yerine getirir.

  • Örnek: Bir çekirdek sesi işlerken, ikincisi ağ kodunu, üçüncüsü ise yapay zeka mantığını yürütür.
  • Verimlilik: Senkronizasyona bağlıdır. Yapay zekadan sorumlu çekirdek yavaş çalışırsa, diğer çekirdekler sonuçlarını beklerken boşta kalabilir.

Geliştiriciler için: Mümkünse sıkı iş parçacığı senkronizasyonundan (kilitlerden) kaçının. Ortak kaynakları beklemek için iş parçacıklarının sık sık durması, çok çekirdekli olmanın avantajını ortadan kaldırır.

Mimari nüanslar: NUMA ve büyük/küçük çekirdekler

Modern sistemlerde görev dağılımı iki faktörle karmaşıklaşır.

Hibrit mimari (big.LITTLE, Intel Hybrid): İşlemciler "performans" (P-çekirdekleri) ve "enerji verimli" (E-çekirdekleri) çekirdeklere sahiptir.

  • Zamanlayıcı ağır görevleri (oyunlar, render alma) P-çekirdeklerine gönderir.
  • Arka plan işlemleri (güncellemeler, bulut senkronizasyonu) E-çekirdeklerine yönlendirilir.
  • Sorun: Eski oyunlar veya programlar çekirdek türünü yanlış tespit edip yavaş E-çekirdeğinde çalışarak takılmalara neden olabilir.

NUMA (Non-Uniform Memory Access - Düzensiz Bellek Erişimi): Sunucularda ve yüksek performanslı iş istasyonlarında bellek fiziksel olarak çekirdek grupları arasında bölünmüştür. "Kendi" belleğine erişim hızlıdır, "başkasının" belleğine erişim yavaştır. Bu tür sistemlerde iş parçacıklarının yanlış dağıtılması performansı %20–40 oranında düşürebilir.

Yükü nasıl kontrol eder ve optimize edersiniz

Kullanıcılar ve yöneticiler, görevlerin çekirdeklere nasıl dağıtıldığını etkileyebilir.

Gerçek zamanlı izleme

  • Windows: Görev Yöneticisi → "Performans" sekmesi → CPU grafiğine sağ tık → "Grafiği değiştir" → "Mantıksal işlemciler". Bu, her iş parçacığının yükünü ayrı ayrı gösterecektir.
  • Linux: htop veya top yardımcı programı. Her çekirdeğin yükünü görmek için 1 tuşuna basın.
  • macOS: Activity Monitor → CPU sekmesi.

Manuel yönetim (Affinity)

Bir programı belirli çekirdeklere zorla sabitleyebilirsiniz (CPU Affinity).

  • Neden gerekli? Kritik öneme sahip bir uygulamayı (örneğin bir veritabanı sunucusu veya ses oynatıcı), kesintiler nedeniyle mikro gecikmelere neden olabilecek arka plan işlemlerinden izole etmek için.
  • Nasıl yapılır? Windows'ta Görev Yöneticisi üzerinden (işleme sağ tık → Benzerlik ayarla) veya Process Lasso gibi üçüncü taraf yardımcı programlarla.

Affinity konusunda dikkatli olun: Bir uygulama için mevcut çekirdek sayısını yapay olarak sınırlamak, otomatik ölçeklendirme için tasarlanmışsa uygulamanın kararsız çalışmasına neden olabilir. Bu ayarı yalnızca belirli performans sorunlarınız varsa kullanın.

Çoklu iş parçacığı ile çalışırken sık yapılan hatalar

  1. Veri yarış durumu (Race Condition): İki iş parçacığının aynı anda tek bir değişkeni değiştirmeye çalıştığı durum. Sonuç öngörülemez hale gelir. Mutexler veya atomik işlemler kullanılarak çözülür.
  2. Kilitlenme (Deadlock): A İş Parçacığı B İş Parçacığı tarafından tutulan kaynağı beklerken, B İş Parçacığı da A İş Parçacığı tarafından tutulan kaynağı bekler. Sistem donar.
  3. False Sharing (Yanlış Önbellek Paylaşımı): İki iş parçacığı fiziksel olarak işlemcinin aynı önbellek satırında bulunan farklı değişkenlerle çalışır. İşlemci, önbelleği çekirdekler arasında sürekli senkronize etmek zorunda kalır, bu da hızı ciddi şekilde düşürür.
  4. Aşırı iş parçacığı oluşturma: Basit görevler için binlerce iş parçacığı oluşturmak, işletim sistemi zamanlayıcısı üzerinde büyük bir yük yaratır. Bunun yerine, sınırlı sayıda çalışan iş parçacığının kuyruktan görev aldığı "iş parçacığı havuzları" (thread pools) kullanmak daha iyidir.

SSS

Oyunlarda FPS'yi çekirdek sayısı etkiler mi? Evet, ancak belli bir limite kadar. Çoğu oyun 6–8 çekirdeği verimli bir şekilde kullanır. Bunun ötesindeki çekirdek artışı minimal kazanç sağlar, çünkü sınırlayıcı faktör tek iş parçacıklı performans (tek çekirdek hızı) ve ekran kartı olur.

CPU yükü %100 gösteriyor ama bilgisayar neden yavaşlamıyor? Eğer tüm çekirdekler değil de sadece biri veya ikisi yüklendiyse, sistem yanıt vermeye devam edebilir. Takılmalar, tüm fiziksel çekirdekler yüklendiğinde ve zamanlayıcının kullanıcı eylemlerini (fare hareketleri, tıklamalar) işlemek için kaynağı kalmadığında başlar.

Hangisi daha iyi: Çok çekirdek mi yoksa yüksek frekans mı?

  • Oyunlar ve ofis görevleri için yüksek frekans (tek çekirdekli performans) daha önemlidir.
  • Video düzenleme, 3D render alma, kod derleme ve sanallaştırma için çok sayıda çekirdek kritiktir.

Tüm çekirdekleri manuel olarak açabilir miyim? Modern işletim sistemlerinde tüm çekirdekler varsayılan olarak açıktır. Windows'taki msconfig içindeki "İşlemci sayısı" seçeneği çekirdekleri açmak için değil, hata ayıklama ve çekirdekleri sınırlamak için tasarlanmıştır. Tüm çekirdeklerin etkinliğini Görev Yöneticisi'nde kontrol edebilirsiniz.