【发布时间】:2012-07-01 16:59:21
【问题描述】:
虚拟内存分为两部分。传统上,0~3GB 用于用户空间,3GB~4GB 用于内核空间。
我的问题:
用户空间的线程可以访问内核空间的内存吗?
对于ARM datasheet,访问属性由域访问控制寄存器负责。但是在内核源代码中,用户空间虚拟内存的页表项中的域值与内核空间的页表项相同。
【问题讨论】:
-
我得到了答案。访问权限管理仍然依赖于页表条目和域访问控制寄存器中的域和AP字段。在 2.6.38 之前,启动代码通过 DOMAIN_MANAGER 初始化 DOMAIN_USER。但是在 early_trap_init 中,系统会将 DOMAIN_USER 修改为 DOMAIN_CLIENT。而当域属性为DOMAIN_CLIENT 时,Page 表项中的AP 字段将生效。感谢以下答案。
标签: linux linux-kernel arm