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 了。 (编辑:汕尾站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Win7系统EFS功能如何使用?Win7系统EFS功能制作方法
- 你都用过哪几个?微软评出Windows 11Windows 10优秀应用
- 小米电脑win10系统下载与安装教程详细版步骤
- windows-server-2003 – Windows IIS身份验证不能与FQDN一起
- 教你win11怎么更改管理员账户名称
- 深度系统win10下载及安装教程步骤
- 如何在Windows 10中截取屏幕截图
- win7引用的帐户现阶段已锁住且极有可能无法登录该怎么办
- Chrome 70将允许用户禁用自动登录和清除Google Cookie
- windows-server-2003 – 是否有任何程序记录Windows 2003文