cevap

10

Hayır, çekirdek bellek unswappable olduğunu.

5
  1. Çekirdek sayfaları değiştirilemez. Ama serbest bırakılabilir.

  2. 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

+1

Ne sürücüler tarafından tahsis edilir sayfalarım? –

1

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.