5分钟学会两年经验Linux运维都不懂的内核问题
posix 消息队列的实现有点类似与 pipe 的实现,也是自己一套 mqueue 文件系统,然后在 inode 上的 i_private 上挂上关于消息队列属性 mqueue_inode_info,在这个属性上,内核2.6时,是用一个数组存储消息,而到了4.6则用红黑树了存储消息(我下载了这两个版本,具体什么时候开始用红黑树,没深究)。 然后两个进程每次操作都是操作这个 mqueue_inode_info 中的消息数组或者红黑树,实现进程通信,和这个 mqueue_inode_info 类似的还有 tmpfs 文件系统属性shmem_inode_info 和为epoll服务的文件系统 eventloop,也有一个特殊属性struct eventpoll,这个是挂在 file 结构的 private_data 等等。 说到这,可以小结下,进程空间中代码段,数据段,动态链接库(共享文件映射),mmap 共享匿名映射都存在于 cache 中,但是这些内存页都有被进程引用,所以是不能释放的,基于 tmpfs 的 ipc 进程间通信机制的生命周期是随内核,因此也是不能通过 drop_caches 释放。 虽然上述提及的cache不能释放,但是后面有提到,当内存不足时,这些内存是可以 swap out 的。 因此 drop_caches 能释放的就是当从磁盘读取文件时的缓存页以及某个进程将某个文件映射到内存之后,进程退出,这时映射文件的的缓存页如果没有被引用,也是可以被释放的。 4.4 内存自动释放方式 当系统内存不够时,操作系统有一套自我整理内存,并尽可能的释放内存机制,如果这套机制不能释放足够多的内存,那么只能 OOM 了。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 了解在Windows 11中卸载更新的不同办法
- 微软新款Surface Pro X设备或认证免费升级至Windows 11
- 微软发Windows Server 2022新款 ISO镜像开放下载
- 微软发布Windows 7 10 11紧急更新 修复很多问题、快升级
- 如何在Windows上重启Apache? “Apache -k restart”给出错
- Windows – PowerShell DSC组资源 – “找不到具有提供名称
- win10禁止安装一切软件怎么处理
- 微软正将 Windows 11 MR 混合现实新性能推送给 Windows 10
- 微软发布 Windows10 11微软锁屏画报应用
- 大神手把手教你怎么优化win10开机速度慢