C 我可以使用一个进程中的PTE来指示物理内存片段,以便在另一个进程中创建适当的PTE吗?
当我们在Linux中使用函数C 我可以使用一个进程中的PTE来指示物理内存片段,以便在另一个进程中创建适当的PTE吗?,c,linux,memory-management,linux-kernel,posix,C,Linux,Memory Management,Linux Kernel,Posix,当我们在Linux中使用函数mmap(,,MAP_ANON | MAP_SHARED),则对于相同的物理碎片内存区域(已分配),进程之间正在分配虚拟内存页(PTE)。也就是说,这些PTE从一个进程的页表复制到另一个进程的页表(与分配内存的物理地址片段序列相同),这是真的吗 但是mmap()需要在fork()之前完成。如果我们已经有两个工作进程(即fork()),那么我们需要为mmap()使用文件。哪些函数用于在两个已建立的进程之间复制PTE机制,以创建共享内存 我可以使用PTE/SGL(分散-聚
mmap(,,MAP_ANON | MAP_SHARED)代码>,则对于相同的物理碎片内存区域(已分配),进程之间正在分配虚拟内存页(PTE)。也就是说,这些PTE从一个进程的页表复制到另一个进程的页表(与分配内存的物理地址片段序列相同),这是真的吗
但是mmap()
需要在fork()
之前完成。如果我们已经有两个工作进程(即fork()
),那么我们需要为mmap()
使用文件。哪些函数用于在两个已建立的进程之间复制PTE机制,以创建共享内存
我可以使用PTE/SGL(分散-聚集列表)来指示物理内存片段,这些物理内存片段已分配给使用linux内核在其他进程中创建适当的PTE,以及如何做到这一点吗
我想了解它在较低级别上是如何工作的
当我们在Linux中使用函数mmap(,,MAP_ANON | MAP_SHARED)代码>,然后
对于相同的物理碎片内存区域(已分配)
进程之间分配虚拟内存页(PTE)
请重述问题/陈述,上述内容毫无意义
Ie这些PTE从一个进程的页面表复制到页面
另一个进程的表(具有相同的
物理地址分配内存),这是真的吗
不,这不是真的
当您建立一个新的映射时,内核首先会
对于进程的虚拟地址空间中足够大的未使用地址范围。然后,它修改相应的页表条目,以指示该地址范围有效,但不存在物理页
当您尝试访问该范围内的地址时,会生成页面错误。内核查看其数据结构并确定访问是否有效。然后它分配一个
刷新物理页面,修改页面条目以建立
虚拟地址和物理地址,并将页面标记为存在。从
页面错误异常时,将重新启动有问题的指令,并且这次将成功执行
但是mmap()需要在fork()之前完成。如果我们已经有了
两个工作进程(即fork()之后),然后我们需要使用一个文件
mmap()。哪些函数用于复制PTE之间的机制
创建共享内存的两个已建立的进程
如果在fork
之后执行mmap
,这两个进程将创建并初始化
页表条目彼此完全独立。但是,当您mmap
a文件时,
内核不会简单地分配一个免费的物理页面-它会分配一个页面,
用文件中的数据填充它,并将页面放入页面/缓冲区缓存。当一秒钟
进程mmaps相同的文件,内核在页面缓存中查找,在那里找到物理缓存
页,该页对应于同一文件和所需的文件偏移量,并指向PTE
转到那一页。现在,将有两个完全独立创建的PTE,它们只指向同一物理页面
我可以使用PTE/SGL(分散-聚集列表)来指示碎片吗
已分配用于创建适当内存的物理内存
PTEs在其他进程中使用linux内核,以及如何做到这一点
再说一遍,你问的不清楚
我想了解mmap()如何在较低级别上工作
我推荐一本操作系统书,一章关于虚拟内存管理,
差不多
当我们在Linux中使用函数mmap(,,MAP_ANON | MAP_SHARED)代码>,然后
对于相同的物理碎片内存区域(已分配)
进程之间分配虚拟内存页(PTE)
请重述问题/陈述,上述内容毫无意义
Ie这些PTE从一个进程的页面表复制到页面
另一个进程的表(具有相同的
物理地址分配内存),这是真的吗
不,这不是真的
当您建立一个新的映射时,内核首先会
对于进程的虚拟地址空间中足够大的未使用地址范围。然后,它修改相应的页表条目,以指示该地址范围有效,但不存在物理页
当您尝试访问该范围内的地址时,会生成页面错误。内核查看其数据结构并确定访问是否有效。然后它分配一个
刷新物理页面,修改页面条目以建立
虚拟地址和物理地址,并将页面标记为存在。从
页面错误异常时,将重新启动有问题的指令,并且这次将成功执行
但是mmap()需要在fork()之前完成。如果我们已经有了
两个工作进程(即fork()之后),然后我们需要使用一个文件
mmap()。哪些函数用于复制PTE之间的机制
创建共享内存的两个已建立的进程
如果在fork
之后执行mmap
,这两个进程将创建并初始化
页表条目彼此完全独立。但是,当您mmap
a文件时,
内核不会简单地分配一个免费的物理页面-它会分配一个页面,
用文件中的数据填充它,并将页面放入页面/缓冲区缓存。当一秒钟
进程mmaps相同的文件,内核在页面缓存中查找,在那里找到物理缓存
页,该页对应于同一文件和所需的文件偏移量,并指向PTE
转到那一页。现在,第