共享内存实现原理
1个回答
展开全部
在磁盘上建立一个文件,每个进程存储器中,单独开辟一个空间来映射保存到实际硬盘,实际并没有反映到主存上。
使得进程之间通过映射同一个普通文件实现共享内存,普通文件被映射到进程地址空间后,进程可以向访问普通内存一样对文件进行访问,不必再调用read(),write()等操作。
每个进程的共享内存都直接映射到实际物理存储器上shm保存到物理存储器(主存),实际的存储量直接反映到主存上。
进程间需要共享的数据被放在一个叫做 IPC共享内存区域 的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地址空间中去。
通过shmget获得或创建一个IPC共享内存区域,并返回相应的标识符。
每一个共享内存区都有一个控制结构struct shmid_kernel。
主要API :shmget()、shmat()、shmdt()及shmctl()。
ps:Python开启多进程使用的是multiprocessing,进程传递了一个multiprocessing.Queue,使用的是shm共享内存机制。multiprocessing模块Value Array是基于mmap实现
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询