'da verilen bir işlev bağlamında, belirli bir işlevin bir kesme bağlamında mı yoksa işlem bağlamında mı çağrılacağını belirlemek için düz bir ileriye doğru mekanizma var mı? Bu sorunun ilk kısmı. İkinci bölüm: Biri müdahale bağlamında olan ve süreç bağlamında olan diğer iki işlemi nasıl senkronize edebilirim. Anlayışım doğruysa, uyumaya izin verilmediğinden, ara verme bağlamında süreç için muteksleri kullanamayız. Diğer yandan, eğer spin kilitler kullanırsam, diğer süreç CPU döngülerini kullanacaktır. Bu 2 işlemi senkronize etmenin en iyi yolu nedir? Anlayışım tamamen yanlış olursa beni düzeltin.Linux Kernel
cevap
İşlev, in_irq() işlevini kullanarak IRQ işleyicisi olarak çalıştırılıp çalıştırılmadığını söyleyebilirsiniz. Ama bunu kullanmak için iyi bir uygulama olduğunu sanmıyorum. Yalnızca işlevinizin bağlamında hangi koddan çalıştırıldığını görmelisiniz. Aksi halde kodunuzun kötü bir tasarım olduğunu söyleyebilirim. senkronizasyon mekanizması gelince
- Eğer (örneğin kesme) atomik bağlamda senkronizasyonu yapmak gerekir, çünkü sayaç kilidi kullanmak zorunda, doğru - Burada pek fazla seçeneğim değil. Ayrıca, spinlock için beklerken çok fazla CPU döngüsünün boşa harcanması için haklısınız, bu yüzden kodunuzun kilidinin altındaki miktarını azaltmaya çalışmalısınız.Sam'in cevabına ekleme - kesme işleyicinizi alt yarısı ve üst yarım bölümleriyle tasarlamalısınız. Bu, kesme işleyicisinde (sürücüde irq istendiğinde kayıt olduğunuz) ve bir iş kuyruğu kullanarak zamanlama yapabileceğiniz (alt yarısı) minimum bir kod (üst yarı) elde etmenizi sağlar. Bu üst yarıçapı (sadece interrupt ile uğraştığınız ve cihazdan en az kırmızı/yazı yazarak) atomik bağlamda spinlock ile korunabilir, böylece daha az sayıda CPU döngüsü boşa harcanmasını bekler.
- 1. mprotect() Linux kernel
- 2. Linux Kernel Modülünün Konumu
- 3. Got hatası: linux Kernel
- 4. linux kernel development
- 5. Linux Kernel: copy_from_user - işaretçilerle yapı
- 6. Linux kernel görüntüsünden yapılandırma alma
- 7. Linux kernel işlevini bir modülle değiştirebilir miyim?
- 8. Yerel veriyi linux kernel modülüne çevirin
- 9. Linux Kernel Modülünde Yeni İşlemlerin Dinlenmesi
- 10. Linux Kernel, bir işlemin% 100 bellek tüketmesine izin veriyor mu?
- 11. Linux kernel karakter aygıt sürücüsü, kullanıcı arabirimine boş dize döndürüyor
- 12. Derleme programı eski kernel
- 13. kernel sanal adres çevirisi
- 14. CUDA kernel
- 15. Kernel sayfaları değiştirilmeye mi başlıyor?
- 16. Kernel modülü olarak Ext4 kodlama ve derleme
- 17. Dışa aktarılan sembolleri isteğe bağlı olarak, yalnızca modifiye edilmiş bir Linux Kernel modülünde mevcutsa nasıl kullanılır?
- 18. Soyulmuş Linux çekirdeğinin yük adresini ve giriş noktasını belirleyin. Kernel image
- 19. Whats anlamı obj-y + = bir şey/linux kernel Makefile? CONFIG_USB sonra usb.o derlenmiş olacak y ise
- 20. 64 bit sistemde Linux Kernel 3.13'e yeni Sistem Çağrısı ekleme
- 21. linux kernel alt sistemi dm-crypt ve ecryptfs arasındaki fark nedir?
- 22. Android: Kernel Debugging ile KGDB
- 23. Kernel libcrc32c (veya aynı işlevler) userpace programlarında nasıl kullanılır?
- 24. fedora linux --- ilk linux modülünü derleme
- 25. Kernel Module Init and Exit işlevleri yanlış sırada çağrılıyor
- 26. Unix Yönlendirme Tablosunda "proto kernel" ne anlama geliyor?
- 27. linux
- 28. Linux
- 29. linux
- 30. Linux