2012-11-12 202 views

回答

3

SHM适用于多个进程中的IPC。在现代操作系统中,每个进程都无法看到彼此的内存空间。使用shmget()的公共密钥获取共享内存,并使用shmat()将共享内存页映射到每个进程内的本地内存地址。映射的共享内存地址可能会因不同的内存使用情况和共享库加载到每个进程空间而有所不同。 SHM键,尺寸是预定义的,并在这些过程中固定。

对于线程的内存,我们可能不会将其称为共享内存,因为线程全部在单个进程内存空间寻址中。他们可以在同一个进程空间中看到和读写。

2

老实说,不是很多。在Linux上,没有OS级别的线程。一个进程,一个线程。所以,当你使用pthreads时,你实际上使用了多个进程,除了线程特定的存储区域外,它们共享所有的内存。但是,在不同的UNIX上,如OSX,情况可能并非如此。但是,您可以亲自看到这一点,您可以制作一个简单的pthreads进程并对其进行背景处理,然后在shell提示符处键入ps