18Aug

Neden Tek Numaralı Windows İşlem Kimliği Bulunmamaktadır?

Windows ile bağlantı kurmayı ve gittiğiniz gibi öğrenmeyi seviyorsanız Windows işleminin ve iş parçacığı kimliğinin çift sayılı ve dört katlı olduğunu fark etmişsinizdir. Neden? Bugünün Süper Kullanıcısı Q & A yayını, merak uyandırıcı bir okuyucunun sorularına cevaplar içeriyor.

Bugünkü Soru &Yanıt oturumu bize Q & A web sitelerinin topluluk temelli bir gruplandırması olan Stack Exchange'in bir alt bölümü olan SuperUser nezaketen geliyor.

Soru

SuperUser okuyucu Peter Hahndorf neden tek sayılı Windows işlem kimliği olmadığını bilmek istiyor:

Windows'da işlem kimliklerine bakmanın birçok yolu var. PowerShell'i kullanarak:

Bu sonucu elde ediyorum:

Gördüğünüz gibi, tüm işlem kimlikleri yalnızca numaralandırılmış değil, hepsinin dört katları.İstediğiniz kadar sert görünebilir ve en azından Windows NT tabanlı herhangi bir sürümde tek sayılı bir işlem kimliği bulamazsınız. Bunun sebebi nedir?

Neden tek sayılı Windows işlem kimlikleri yok?

Cevap

SuperUser katkıda bulunan DavidPostill'in bize cevabı var:

Neden tek numaralı Windows işlem kimlikleri yok?

İşlemci ve iş parçacığı kimliklerini ayırmak için çekirdek tutamaçlarını ayıran aynı kod da kullanılır.Çekirdek tutamaçları dörtün bir katı olduğu için işlem ve iş parçacığı kimliği de aynıdır.

Neden süreç ve iş parçacığı kimliğinin katları dörttür?

Windows NT tabanlı işletim sistemlerinde, işlem ve iş parçacığı kimliğinin her zaman dörtten çarpı olması gerekir.bu sadece bir tesadüf mü?

Evet, bu sadece bir tesadüf ve programlama sözleşmesinin bir parçası olmadığından ona güvenmemelisiniz.Örneğin, Windows 95 işlemi ve iş parçacığı kimlikleri her zaman dört katları değildi. Karşılaştırıldığında, çekirdek kollarının daima dörtün bir katı olduğu gerekçenin bir parçası olduğu ve yakın gelecekte garanti edileceği düşünülmektedir.

Süreç ve iş parçacığı kimlikleri, kod tekrar kullanımının bir yan etkisi olarak dörtün katlarıdır.İşlemci ve iş parçacığı kimliklerini ayırmak için çekirdek tutamaçlarını ayıran aynı kod kullanılır.Çekirdek tutamakları dörtün katları olduğu için işlem ve iş parçacığı kimliğidir. Bu bir uygulama ayrıntısı, dolayısıyla üzerinde güvenen bir kod yazmayın. Merakınızı tatmin etmenizi söylüyorum sadece.

Kaynak: Neden işlem ve iş parçacığı kimlikleri dört katları?

Neden çekirdek tutamaçları daima dörtte birinin katları oluyor?

Çok iyi bilinmeyen bir şey, çekirdek tutamağının alttaki iki bitinin daima sıfır olmasıdır;Başka bir deyişle, sayısal değeri her zaman dörtün bir katıdır. Bunun yalnızca çekirdek tutamaçları için geçerli olduğunu unutmayın;sözde tutamaçlar veya başka bir tanıtıcı türü( KULLANICI tanıtıcıları, GDI tanıtıcıları, multimedya tanıtıcıları, vb.) için geçerli değildir.Çekirdek tutamaçları, CloseHandle işlevine geçirebileceğiniz şeylerdir.

En azından çekirdek tutamaçlarının alt biti daima sıfır olduğundan, GetQueuedCompletionStatus işlevi, tamamlama bağlantı noktası bildirimini bastırmak için olay işleci alt bitini ayarlayabildiğiniz anlamına gelir. Bunun çalışması için alt bit normal olarak sıfır olmalıdır.

Bu bilgiler, tutamakları opak değerler olarak değerlendirmeye devam etmesi gereken çoğu uygulama yazıcısı için yararlı değildir. Etiket bitleriyle ilgilenenler, düşük seviye sınıf kitaplıklarını uygulayan veya çekirdek nesneleri daha büyük bir çerçeve içine sarmalayan kişilerdir.

Kaynak: Neden çekirdek tutamaçları daima dörtlü bir kat!

Diğer Okuyor

Eski Yeni Şey: Raymond Chen'in( Microsoft 'deki Baş Yazılım Tasarım Mühendisi) Windows'un Evrimi boyunca Uygulamalı Gelişmesi

Açıklamaya eklemek isteyen var mı?Yorumların sesini kapatın. Diğer teknik uzman Stack Exchange kullanıcılarından daha fazla cevap okumak ister misiniz? Buradaki tam tartışma dizinine göz atın.