- 論壇徽章:
- 1
|
回復(fù) 5# futex
還有一個(gè)疑問;正如您所說,所有的基礎(chǔ)頁表的后半部分拷貝自init_mm
mips:
init = pgd_offset(&init_mm, 0UL);
pgd_init((unsigned long)ret);
memcpy(ret + USER_PTRS_PER_PGD, init + USER_PTRS_PER_PGD,
(PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t));
x86:
clone_pgd_range(pgd + KERNEL_PGD_BOUNDARY,
swapper_pg_dir + KERNEL_PGD_BOUNDARY,
KERNEL_PGD_PTRS);
有個(gè)問題,一個(gè)進(jìn)程A新建時(shí),自己的頁目錄拷貝自當(dāng)前的init_mm,那后續(xù)如果init_mm被修改(比如進(jìn)程B通過系統(tǒng)調(diào)用在內(nèi)核態(tài)使用了vmallc新開辟了某塊內(nèi)存,更新了init_mm頁目錄,并且寫了數(shù)據(jù)),由于進(jìn)程A的內(nèi)核部分頁目錄并未被修改,豈不是無法完成內(nèi)核態(tài)的內(nèi)存共享?
|
|