问题标签 [page-tables]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
x86 - 如果为进程页表中的条目设置了当前位,这意味着什么?
这是否意味着引用的页面在进程的逻辑地址空间内?我在想也许引用的页面是内存驻留的?
linux - vmalloc - 在页面错误时更新另一个进程的页表
我在阅读 Mel Gorman 的《Understanding the Linux Virtual Memory Manager》一书时遇到了一个问题,即为什么进程的页表会因为访问 vmalloc()ed 区域而被更新。这是他用来解释此过程的图表的链接:
Vmalloc 由一个进程完成,另一个进程访问 vmalloc()ed 区域
在这种情况下更新的页表是主参考内核页表,而不是进程 A 的页表。我的问题是为什么进程 B 甚至访问进程 A 的 vmalloc() 区域。现实世界是什么一个进程将访问另一个进程分配的内存区域的场景?问题基本上归结为:如果进程 A 分配了虚拟内存,它将在某个时候开始写入由该虚拟内存支持的物理内存。为什么另一个进程要访问那块内存?
x86 - mmap 是否更改存储在页表中的标志?
尽我所知,
MMAP 可用于更改映射内存区域的保护。
例如,如果我想添加可执行权限
到我的堆栈页面之一
最初设置为可读可写权限
由于数据执行策略(DEP)。
而这个权限体现在 x86 架构中的 W/XD 等页表标志上。
所以我的问题是如果我使用 MMAP 更改特定页面的权限,
它是否要求内核更改页表标志?
它会自动刷新TLB吗?
谢谢。
arm - Why does ARM have 64KB Large Pages?
The ARM720T user manual mentions small and large pages. Since the ARM 720T requires a 64KB page table entry to be duplicated 16 times in the page table, why not place 16 small page (4KB) entries to mimic a 64KB page entry instead of using a large page in the first place?
memory-management - 当在页表中找不到虚拟地址时,内核如何转换它?
当在页表中找不到虚拟地址时,内核如何转换它?该页面位于磁盘上,但内核如何知道具体在哪里?(磁盘中的具体地址)
谢谢
linux - 页面错误处理程序如何知道从哪里获取 4K 字节?
我的意思是,哪个文件以及文件的偏移量是多少?
页面错误处理程序需要将 4K 字节从那里复制到物理 RAM。
- - - - - - - - - - - 编辑 - - - - - - - - - - - - - - -
我发现vm_file
invm_area_struct
正是我想要的。
process - 页表中SUP位的含义
页表条目属性之一是 SUP 位。我在几个文件中读到:
“如果设置了 SUP,则只有内核模式下的进程可以访问该页面。如果未设置,则用户模式下的进程可以访问它。”
我觉得这句话令人困惑,因为内核模式下的进程可以是用户程序正在运行的进程,也可以是内核程序(用户进程与系统进程)。那么该声明指的是哪个?或者只要进程当前在内核模式下执行,两者都是?
如果这个语句也指用户程序正在运行的进程(用户进程),那么我们已经知道只有在进程切换到内核模式时才能进行内存访问,那么就不需要SUP位了。
我的猜测是 SUP 位的意思是说这个页面只能由系统进程访问(不包括在内核模式下运行的用户进程),但我不确定,因为我不知道内核代码是如何存储在内存以及是否分页以及如何分页。
memory-management - 分页、页大小、页表 - 关于操作内存大小的结论
让我们考虑页面大小等于
1 KB
。表中的一项需要2B
. 页表占用不超过一页(所以<= 1KB
)。我们可以得出结论,操作内存的大小是
<= 512 KB
?
正确答案是否定的,但我无法理解。对我来说,答案是肯定的——请看看我的推理,告诉我我哪里错了。
表包含<=1024B/2B=512=2^9
页表中的条目。页面大小为1024B=2^10B
,因此偏移量不超过<=10
位。页数占位<=9
- 因为我们有512=2^9
条目。因此,9+10=19
。因此<=2^19 bits
使解决成为可能<= 2^19 B=2^9KB=512KB
。
我哪里错了?
operating-system - MMU 和页表
页表是程序员创建的数据结构。那么MMU是如何知道如何访问页表的呢?我知道 MMU 从页表基址寄存器中获取页表的地址,但是之后它如何读取页表呢?MMU 不知道程序员创建的页表的数据结构。
谢谢