最潮流的网站开发脚本语言wordpress用户修改头像
最潮流的网站开发脚本语言,wordpress用户修改头像,永康网站建设的公司,公司网站模板下载#x1f3ac; 个人主页#xff1a;艾莉丝努力练剑❄专栏传送门#xff1a;《C语言》《数据结构与算法》《C/C干货分享学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法#xff1a;从基础到进阶》《Python干货分享》⭐️为天地立心#xff0c;为生民立命… 个人主页艾莉丝努力练剑❄专栏传送门《C语言》《数据结构与算法》《C/C干货分享学习过程记录》《Linux操作系统编程详解》《笔试/面试常见算法从基础到进阶》《Python干货分享》⭐️为天地立心为生民立命为往圣继绝学为万世开太平 艾莉丝的简介文章目录1 ~ 为什么共享内存的 key 值由用户设置1 让不相关的进程找到同一个共享资源2 实现命名资源的协作模型3 避免冲突和实现权限控制4 灵活性与系统自动分配的权衡2 ~ 总结结尾在 System V IPC进程间通信机制中共享内存、消息队列和信号量都依赖一个名为key的整数值来标识资源。很多初学者会困惑为什么这个key必须由用户指定而不是操作系统自动生成一个简单的 ID本文将深入探讨其背后的设计哲学和实际用途。1 ~ 为什么共享内存的 key 值由用户设置1 让不相关的进程找到同一个共享资源这是最根本的原因。共享内存的主要目的是让多个没有亲缘关系的进程例如一个数据库服务和一个管理工具访问同一块物理内存。如果 ID 由内核随机生成假设每次创建共享内存时内核随机分配一个 ID比如12345。另一个进程如何知道这个12345对应的是哪块内存除非通过复杂的带外通信把随机 ID 传递过去这显然不现实。使用用户约定的 Key通过一个双方事先约定的、固定的、在整个系统中唯一的key例如0x123456或通过ftok()函数基于文件路径生成的 key两个进程可以各自调用shmget(key, ...)。内核看到这个 key 就能确定它们想要访问的是同一块共享内存。类比key就像公共图书馆的索书号。如果图书馆每次随机给书编号你想找《红楼梦》就完全不知道该找哪个号。但若约定《红楼梦》的索书号是I242.4/1无论谁去查这个号都能找到那本书。2 实现命名资源的协作模型System V IPC 的设计哲学是“命名资源”进程 A 通过一个key创建IPC_CREAT了一块共享内存。进程 B 知道这个key它不需要重新创建只需“获取”即可。如果key由内核自动分配进程 B 就失去了一个固定的“名字”去查找这块内存。虽然我们可以通过文件或管道传递内核分配的 ID但这增加了复杂度而且不够健壮。直接在代码或配置文件中约定一个key是最直接的“握手”方式。3 避免冲突和实现权限控制用户设置key也意味着对资源命名的控制防止冲突不同的应用程序团队可以协商使用不同的key范围或者使用ftok()函数基于一个特定的文件路径通常是程序自己的配置文件或可执行文件和一个项目 ID 来生成key。由于不同程序使用的文件路径不同生成的key重复的概率就非常低。ftok()典型用法key_tkeyftok(/tmp/myserver.conf,1);只要文件路径和 ID 不变生成的 key 就不变。权限结合创建共享内存时不仅要指定 key还要指定权限如 0666。内核将 key 和权限信息绑定在该 IPC 对象上。如果 key 是自动生成的那么权限的管理也会变得混乱。4 灵活性与系统自动分配的权衡有人可能会问“如果我不想手动管理key想让系统自动分配一个给我用行不行”答案是可以。System V IPC 提供了一个特殊值IPC_PRIVATE。当你在shmget()中传入key IPC_PRIVATE时内核会保证创建一个全新的共享内存段并返回一个唯一的ID。但是因为key是IPC_PRIVATE其他进程无法通过 key 找到它。它通常仅用于有亲缘关系的进程比如父子进程。父进程创建共享内存后通过fork()子进程继承了父进程的资源描述符可以直接使用返回的shmid。这正好从反面证明了用户设置key的必要性当你需要无关进程通信时IPC_PRIVATE无能为力你必须依靠一个约定的、用户设置的key来作为通信的锚点。2 ~ 总结共享内存的key由用户设置本质上是为了在操作系统的全局范围内提供一个稳定的、众所周知的、用于定位和协商共享资源的命名机制。它让完全独立的进程可以通过一个约定的“暗号”找到对方共同访问同一块物理内存——这是实现进程间通信的基础。结尾uu们本文的内容到这里就全部结束了艾莉丝在这里再次感谢您的阅读结语希望对学习Linux相关内容的uu有所帮助不要忘记给博主“一键四连”哦往期回顾【Linux文件】进程间通信博主在这里放了一只小狗大家看完了摸摸小狗放松一下吧૮₍ ˶ ˊ ᴥ ˋ˶₎ა