Linux çekirdeğine Dair, "Çekirdek" sayfaları hiç dışarı takas yapılıyor? Ayrıca, Kullanıcı alanı sayfaları ZONE_NORMAL içinde yer almak mı?Kernel sayfaları değiştirilmeye mi başlıyor?
cevap
Hayır, çekirdek bellek unswappable olduğunu.
Çekirdek sayfaları değiştirilemez. Ama serbest bırakılabilir.
userspace Sayfalar ZONE_NORMAL kalabileceklerdir. Linux Sistemi HIGHMEM'i kullanacak şekilde veya yapılandırılmış olarak yapılandırılabilir. ZONE_HIGHMEM yapılandırıldı , sonra userspace süreçleri ZONE_NORMAL gelen bellek alacak HIGHMEM başka userspace süreçlerinden hafızasını alacak. Çekirdek sayfaları (yani bellek çekirdek kullanımı için kernel ikamet eden) swappable, aslında, bir zamanlar (pagefault işleyicisi kaynak kodunu bakınız) tespit edilmediğinde, normal şartlar altında
Evet, çekirdek açıkça kendini çökecek . doğan pagefault algılayabilir -
1246 *
1247 * This verifies that the fault happens in kernel space
1248 * (error_code & 4) == 0, and that the fault was not a
1249 * protection error (error_code & 9) == 0.
1250 */
1251 if (unlikely(fault_in_kernel_space(address))) {
1252 if (!(error_code & (PF_RSVD | PF_USER | PF_PROT))) {
1253 if (vmalloc_fault(address) >= 0)
1254 return;
1255
1256 if (kmemcheck_fault(regs, address, error_code))
1257 return;
1258 }
Ancak aynı pagefault işleyicisi:
http://lxr.free-electrons.com/source/arch/x86/mm/fault.c
ve işlevi:
1205 /*
1206 * This routine handles page faults. It determines the address,
1207 * and the problem, and then passes it off to one of the appropriate
1208 * routines.
1209 *
1210 * This function must have noinline because both callers
1211 * {,trace_}do_page_fault() have notrace on. Having this an actual function
1212 * guarantees there's a function trace entry.
1213 */
1214 static noinline void
1215 __do_page_fault(struct pt_regs *regs, unsigned long error_code,
1216 unsigned long address)
1217 {
Ve burada algılama
bu bak olmayan usermode bellekten (tüm donanım pagefault det ection hep çekirdekte yapılır) açıkça varsa takas alanı veri almak veya sürecini daha fazla bellek vermek için bir bellek ayırma rutin başlayacaktır.
Tamam, dedi, çekirdek yapar takas dışarı çekirdek yapıları/bellek/tasklists vb yazılımlar sırasında askıya alma ve hazırda bekleme operasyonu: https://www.kernel.org/doc/Documentation/power/swsusp.txt
Ve devam aşamasında da takas gelen çekirdek belleği geri geri yükleyecektir
dosya.
- 1. ViewPager yanlış yerde mi başlıyor?
- 2. CUDA kernel
- 3. Linux Kernel
- 4. kernel sanal adres çevirisi
- 5. Stil sayfaları
- 6. Android: Kernel Debugging ile KGDB
- 7. Github (itme) işlemine başlıyor
- 8. mprotect() Linux kernel
- 9. Derleme programı eski kernel
- 10. Linux Kernel Modülünün Konumu
- 11. Got hatası: linux Kernel
- 12. linux kernel development
- 13. Visual Studio, Project'in Açılışında Başlıyor
- 14. tampermonkey (userscript) tüm sayfaları
- 15. Google reCaptcha - Seçili resim yeni resim ile değiştirilmeye devam ediyor
- 16. nsis yükleyici arka planda başlıyor
- 17. NUnit Testlerini Koşu Takımı'ndan başlıyor
- 18. ng-seçenek 2. pozisyondan başlıyor
- 19. Linux Kernel Modülünde Yeni İşlemlerin Dinlenmesi
- 20. Linux Kernel: copy_from_user - işaretçilerle yapı
- 21. Linux kernel görüntüsünden yapılandırma alma
- 22. Chrome - HTML sayfasını, alt sayfaları, alt sayfaları ve sayfaları bir kerede yenileyin
- 23. Azure Mobile Web Hizmetleri kimlik doğrulama sayfaları test sayfaları
- 24. Github sayfaları: işaretleme nerede?
- 25. AmazonS3: özel hata sayfaları
- 26. Github sayfaları, HTTP üstbilgileri
- 27. geçiş sayfaları düzgün değil
- 28. Middleman ve Github sayfaları
- 29. Phantomjs, sayfaları yavaşça yükler
- 30. Buildbot web sayfaları nasıl özelleştirilir
Ne sürücüler tarafından tahsis edilir sayfalarım? –