<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=Shared_Memory</id>
	<title>Shared Memory - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=Shared_Memory"/>
	<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=Shared_Memory&amp;action=history"/>
	<updated>2026-04-08T02:37:49Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://wiki.foofun.cn//index.php?title=Shared_Memory&amp;diff=382&amp;oldid=prev</id>
		<title>Zhang3：创建页面，内容为“共享内存允许其他程序通过共享一块内存来相互影响  == 概念 ==  内存保护的概念已成为操作系统设计中公认的概念。 一个特殊的CPU组件，即 MMU (内存管理单元)，为每个用户空间应用程序提供 “虚拟” 地址空间。 每个应用程序 “认为” 它都有自己的整个地址空间。  实际上，MMU将每个 “虚拟” 地址映射到 “物理” 地址，通常以 “页面” 为单…”</title>
		<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=Shared_Memory&amp;diff=382&amp;oldid=prev"/>
		<updated>2022-02-06T10:24:51Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“共享内存允许其他程序通过共享一块内存来相互影响  == 概念 ==  内存保护的概念已成为操作系统设计中公认的概念。 一个特殊的CPU组件，即 &lt;a href=&quot;/index.php?title=MMU&quot; class=&quot;mw-redirect&quot; title=&quot;MMU&quot;&gt;MMU&lt;/a&gt; (内存管理单元)，为每个用户空间应用程序提供 “虚拟” 地址空间。 每个应用程序 “认为” 它都有自己的整个地址空间。  实际上，MMU将每个 “虚拟” 地址映射到 “物理” 地址，通常以 “页面” 为单…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;共享内存允许其他程序通过共享一块内存来相互影响&lt;br /&gt;
&lt;br /&gt;
== 概念 ==&lt;br /&gt;
&lt;br /&gt;
内存保护的概念已成为操作系统设计中公认的概念。 一个特殊的CPU组件，即 [[MMU]] (内存管理单元)，为每个用户空间应用程序提供 “虚拟” 地址空间。 每个应用程序 “认为” 它都有自己的整个地址空间。&lt;br /&gt;
&lt;br /&gt;
实际上，MMU将每个 “虚拟” 地址映射到 “物理” 地址，通常以 “页面” 为单位 (IA32体系结构上是4k或2或4MB)。 例如同时一个应用程序的第0页映射到物理地址0x0007 0000，而另一个应用程序的第0页映射到物理地址0x0008 0000。你明白了吧。&lt;br /&gt;
&lt;br /&gt;
这意味着应用程序无法直接相互通信 (传递数据)，因为它们在其地址空间中 “几乎是单独的”: 他们必须要求操作系统 [[kernel]] 传递消息 (数据)。 (只有内核地址空间中的内核和服务才能看到真实的地址空间)&lt;br /&gt;
&lt;br /&gt;
== 优势 ==&lt;br /&gt;
&lt;br /&gt;
现在，就时钟周期而言，[[Message Passing|消息传递]] 可能是昂贵的。 如果两个 [[Process|进程]] 打算密切合作，来回传递消息的惩罚可能会变得很大。 所以另一种选择是共享内存。&lt;br /&gt;
&lt;br /&gt;
为此，要求内核将进程A的某个地址范围映射到与进程B类似大小且地址范围相同的物理地址。 因此，该地址范围在进程A和进程B之间共享。&lt;br /&gt;
&lt;br /&gt;
== 注意事项 ==&lt;br /&gt;
&lt;br /&gt;
这里有很多事情要考虑: 例如身份验证。 或者，如果共享物理内存未映射到进程A和进程B中的相同虚拟地址范围，则共享内存结构中的任何指针必须是偏移量而不是绝对指针，否则它们将不再指向其他进程的地址空间中的同一事物。 同样，在多处理器系统上，检查另一个进程是否在同时访问内存也很重要。&lt;br /&gt;
&lt;br /&gt;
[[Category:IPC]]&lt;br /&gt;
[[Category:Memory management]]&lt;/div&gt;</summary>
		<author><name>Zhang3</name></author>
	</entry>
</feed>