如LDDä¸æ‰€è¿°ï¼Œå†…æ ¸è™šæ‹Ÿå†…å˜ï¼ˆIA-32地å€ç©ºé—´ä¸çš„å‰1GBï¼‰è¢«åˆ†åŒºä¸ºå†…æ ¸é€»è¾‘åœ°å€å’Œå†…æ ¸è™šæ‹Ÿåœ°å€ã€‚å†…æ ¸é€»è¾‘åœ°å€ç›´æŽ¥æ˜ 射,这æ„味ç€æ‚¨å¯ä»¥é€šè¿‡å‡åŽ»æŸä¸ªï¼ˆ0xC0000000)值将虚拟地å€æ˜ 射到物ç†åœ°å€ã€‚对于移动btwnæ˜ å°„ï¼Œå®šä¹‰äº†ä¸€å¯¹å®ï¼š__pa()
和__va()
。
我的问题是:"这些å®çš„用例是什么?" 并且:"ç›´æŽ¥æ˜ å°„æœ‰ä»€ä¹ˆå¥½å¤„ï¼Ÿï¼†ï¼ƒ34;
我å¬è¯´ç›´æŽ¥æ˜ å°„å…许使用更大的页é¢ï¼ˆä¾‹å¦‚,4MB),从而导致更高效的翻译。是å¦ä½¿ç”¨é¡µè¡¨æ‰§è¡Œç›´æŽ¥æ˜ 射区域的翻译?
ç”案 0 :(得分:0)
众所周知,在 32 ä½æ—§æ—¶ä»£ï¼Œ0 ~ 3 GB 的虚拟内å˜åœ°å€ç©ºé—´å±žäºŽç”¨æˆ·ç©ºé—´ï¼›3 GB ~ 4 GB 的虚拟内å˜åœ°å€ç©ºé—´å±žäºŽå†…æ ¸ç©ºé—´ï¼›
åœ¨å†…æ ¸ä¸ï¼Œå®ƒé€šå¸¸ä»Ž Normal Zone 分é…物ç†å†…å˜ï¼Œé€šå¸¸åœ¨ 1 GB 以下;
例如我们通过kmalloc(100, GFP_KERNEL)
GFP_KERNEL 表示从 Zone Normal 分é…物ç†å†…å˜ï¼›
è¿™æ ·ï¼ŒKernel å°±å¯ä»¥è½»æ¾åœ°å°† 0xC000000(åˆå,3 GB åç§»ï¼‰æ·»åŠ åˆ°ç‰©ç†å†…å˜åœ°å€ï¼ˆ0 ~ 1 GB),然åŽå°†ç‰©ç†å†…å˜åœ°å€ç›´æŽ¥æ˜ å°„åˆ°å†…æ ¸è™šæ‹Ÿå†…å˜åœ°å€ï¼ˆ3 ~ 4 GB);< /p>
通过这ç§æ–¹å¼ï¼Œå†…æ ¸å¯ä»¥æ›´å¿«åœ°è®¿é—®ç‰©ç†å†…å˜ï¼Œåªéœ€å‡åŽ»0xC0000000ï¼› (内å˜è®¿é—®æ˜¯é€šè¿‡è™šæ‹Ÿåœ°å€ï¼Œéœ€è¦å°†è™šæ‹Ÿåœ°å€æ˜ 射到物ç†åœ°å€ï¼‰