进程间通信 - 共享内存删除 shmctr/shmdt
发布时间
阅读量:
阅读量
shmget:用于创建共享内存
shmat:实现共享内存映射的函数
当调用shmget时,系统会在内核中生成一块特定的缓存区域,该区域被定义为共享内存
执行shmat操作后,内核会将之前创建的共享内存映射至用户空间,从而便于用户进程进行读写操作。若未进行此映射,用户空间的进程在访问内核中的共享内存时,每次都需要切换至内核模式完成读写操作。而通过shmat将共享内存映射到用户空间后,则可减少频繁切换至内核模式的次数,从而提升整体运行效率
当共享内存不再使用时,需要对内核空间中的缓存进行释放,并且对应通过shmat映射到用户空间的内存地址也应一并释放。否则,内核中的共享内存将持续存在直至系统关闭;同时用户空间所占用的内存资源也将持续保留直至相关进程终止
shmdt:用于解除用户空间中已分配的共享缓存
shmctl:用于释放位于内核空间中的共享内存
调用shmdt函数时所需参数为shmat函数返回的结果值,即所映射到的具体地址shmaddr


还没有任何评论哟~
