17 puan yazan GN⁺ 2024-06-08 | 3 yorum | WhatsApp'ta paylaş
  • Web'de PID 0 hakkında arama yaptığınızda çıkan bilgilerin çoğu yanlış.
  • Google, Bing, DuckDuckGo ve Kagi'de PID 0 aratıldığında doğru cevabı bulmak zordu.
  • Wikipedia'daki yanlış bilgi 16 yıl boyunca yayılıp birçok site tarafından alıntılandı.

PID 0'ın geçmişi

  • PID 0, zamanlama ve güç yönetimiyle ilgilidir; sayfalamayla ilgisi yoktur.
  • PID 0, CPU çekirdeğinin yapacak işi olmadığında çalışan zamanlayıcı görevi görür.
  • İlk Unix sürümlerinde PID 0 bellek yönetimiyle ilgili işler yapıyordu, ancak modern Unix'te durum böyle değildir.

PID 0'ın gerçek rolü

  • PID 0, çekirdeği başlatır ve sonrasında CPU çekirdeklerini yöneten bir rol üstlenir.
  • Linux çekirdeğinde PID 0, do_idle fonksiyonu olarak uygulanır.
  • FreeBSD gibi diğer çekirdeklerde de benzer bir rol oynar.

PID 0 etrafındaki kafa karışıklığı

  • Linux çekirdeğinde ve kullanıcı alanında PID'in anlamı farklıdır.
  • Çekirdekte task_struct tek bir thread'i temsil eder ve PID, thread kimliği anlamına gelir.
  • Kullanıcı alanında ise PID bir süreci temsil eder; bu da thread group ID ile aynıdır.

Çok çekirdekli sistemlerde PID 0

  • Çok çekirdekli sistemlerde her CPU çekirdeği için bir idle thread bulunur.
  • Bu idle thread'lerin tamamı thread group 0'a aittir.
  • Kullanıcı alanında bu durum PID 0 olarak görülür.

Sonuç

  • PID 0 vardır ve çekirdeği başlatan thread'dir.
  • PID 0, ilk çekirdek başlatma işlerini yürütür ve sonrasında idle thread'e dönüşür.
  • PID 0'ın bellek yönetimiyle ilgisi yoktur.
  • Çok çekirdekli sistemlerde her çekirdek için bir idle thread vardır ve bunların hepsi thread group 0'a aittir.

GN⁺ görüşü

  • Doğru bilginin önemi: Yanlış bilgi uzun süre yayılınca birçok insan bunu gerçek olarak kabul ediyor. Bu, doğru bilgi sunmanın ne kadar önemli olduğunu bir kez daha hatırlatıyor.
  • Çekirdeğin karmaşıklığı: Çekirdeğin başlatma süreci ve zamanlama mekanizması oldukça karmaşıktır; bunları anlamak yazılım mühendisleri için büyük fayda sağlar.
  • PID konusundaki kafa karışıklığı: Çekirdek ile kullanıcı alanında PID'in anlamı farklı olduğu için, bunu net biçimde anlamak önemlidir.
  • Çok çekirdekli sistemler: Modern çok çekirdekli sistemlerde PID 0'ın rolünü anlamak, sistem performansını optimize etmeye yardımcı olur.
  • Wikipedia'nın etkisi: Wikipedia'daki bilginin ne kadar çok web sitesini etkileyebildiğini gösteriyor. Doğru bilgilerin güncellenmesinin önemini vurguluyor.

3 yorum

 
thinkpad 2024-07-17

O agent'in kill -9 0 yaptığı o eski olay aklıma geliyor...

 
whizkyu 2024-06-09

İlginçmiş.

 
GN⁺ 2024-06-08
Hacker News görüşleri
  • Arkeolojik açıdan ilginç: "pid 0, [Linux] çekirdeğinin bir parçasıdır" ifadesi, çekirdek hata ayıklarken faydalıdır. Kullanıcı alanı süreçleri açısından ise "pid 0 kendimi ifade eder".
  • İnternette aşırı özgüven: İnternette birçok insan bildiğini sandığı konularda aşırı özgüvenli davranıyor. Kendinden emin bir üslubu yalnızca uzmanlar kullanmalı.
  • Windows'ta PID 0: NT tabanlı Windows'ta PID 0, Linux'a benzer şekilde "System Idle Process"tir. DOS tabanlı Windows'ta PID 0 yoktur ve idle loop, VMM32 içinde bulunur.
  • Akademik Unix'te PID 0: Akademik Unix sistemlerinin çoğunda PID 0, bellek alt sistemiyle (paging) ilişkilidir. PID 0 kavramının tek sahibi Linux değildir.
  • Genel bilginin hataları: "Genel bilgi" çoğu zaman yanlıştır. Doğru yöntem, çekirdek kaynak kodunu kontrol etmektir.
  • PID 0'ın üçüncü kullanımı: Linux'ta getppid'in 0 döndürdüğü durum, ebeveynin başka bir PID namespace içinde olmasıdır.
  • Ek kaynak önerisi: Erken çekirdek önyüklemesiyle ilgileniyorsanız, şu harika kaynağı okumanız tavsiye edilir: Linux Insides
  • ps -aux komutuyla ilgili soru: "ps -aux" komutunu çalıştırınca diğer kullanıcıların bilgileri de görüntüleniyor. Bunun varsayılan olarak gizli olması gerekmez mi?
  • kill 0ın ilginç kullanımı: kill 0 kullanarak bir komutu belirli bir süre çalıştırıp ardından sonlandıran bir betik paylaşılıyor.
  • v4 kodunda PID 0'ın yeniden kullanımı: v4 kodunun pid 0'ı yeniden kullanması ilginç. 80'lerin ortasında çekirdekte bu sorunu çözmek zorunda kaldığımı hatırlıyorum.