X86 mimarisi bir donanım sağlar tek adım hata ayıklama için tuzak. Çalışan programı ne kadar yavaşlatıyor?
Örneğin, bir işlemin tek adımından başka bir şey yapmamak için bir Linux çekirdek işlevi oluşturulmuşsa, bu işlem ne kadar yavaş çalışacak? İyi bir tahmini olan var mı?
Bir haftayı iş parçacığı hatalarını izleyerek geçirdikten sonra merak ediyorum. Bu böceklerin çoğalması iyi olurdu. Tahmin edilebilir bir şekilde bir ipliğin bir talimatı ile diğer bir talimatın yürütülmesi arasında değişen iki sıralı olarak gerçekleştirilen bir özelliğe ne dersiniz? Ben bir bit dizesi üretecek olan sahte rasgele sayı üretecini düşünüyorum - 0, konu 1'de bir komut yürütmek anlamına gelir, 1, konu 2'de bir komut yürütmek anlamına gelir.
Ardından PRNG'yi tohumlayabilir ve talimatların tekrarlanabilir bir araya getirilmesini sağlayabilirsiniz. Farklı PRNG tohumları farklı serpiştirme düzenleri üretecektir. Bir grup PRNG tohumunun altında bir test davası açabilir ve bir başarısızlığı tetikleyen birini bulursanız, çoğaltın.
Böyle bir şeyin yapıldığını duyan var mı?
Güncelleştirme:
Nasıl yapılabilir?
4 işlemci durumunuz ve 2 çekirdeğinizin olduğu Core i5 gibi bir şey üzerinde çalıştığımızı varsayalım. Tek adımlı tuzağı, kullanıcı alanından çekirdek alanına kadar ileri ve geri götürmek için kullanıyoruz. Demek devletlerin ikisi bu, değil mi? O zaman diğer çekirdeği kullanıcı alanı ve çekirdek alanı durumlarıyla diğer çekirdeğe koştuk, değil mi? İki çekirdek ipliğini senkronize eden bir spinlock (muhtemelen iki spinlock) gibi bir şey var. Her biri birer kilitleme yaparken, diğeri kullanıcı alanını birkaç komutla ilerletir, sonra rolleri senkronize eder ve paylaşırlar.
Görünüşe göre, doğru sayıda dişe ve çekirdeğe sahibiz, böylece her şey bir anda çipe sığar. Ama ne kadar hızlı çalışıyor?
Sadece deneyebiliriz. Birileri bazı çekirdek kodlarını yazabilir. Ya da belki birileri bilir.
Bütün bu süslü şeyler bu yeni çiplerin yaptığı. Olurdum etkilendim ve çabuk olsaydı, tamamen şaşırmadım.