- 博客(14)
- 收藏
- 关注
原创 linux socket应用层调用过程
1. 开头上一篇聊了一下协议族的大致过程,本篇主要仔细聊聊里面的具体细节。2. 套接字和虚拟文件的接口套接字也是虚拟文件系统的一种,因此也需要file和indoe结构体,socket的inode继承inode,同时也有自己的结构体私有成员struct socket。这个理念在内核很常见,各种inode转换成对应系统的真实类(比如SOCKET_I函数,通过inode获取socket成员)。 具体的代码实现:static const struct super_operations sockfs_ops
2021-12-10 00:25:30
645
原创 linux 虚拟文件系统设计模式
linux 虚拟文件系统设计模式1. 为什么有vfs2. 高级语言如何设计vfs2.1 先定义一套标准接口2.2 创建接口的方法3. linux内核是如何设计vfs3.1 IFILE如何设计3.2 IFILE 如何返回应用层3.3 可扩展的vfs3.3.1 区分文件系统1. 为什么有vfs多样的外部设备,如磁盘,网络,假如没有vfs,我们对每种设备都需要设置一套打开,读写,关闭操作,对于应用层的开发者是一个巨大的负担。vfs的职责就是简化了应用层,把复杂性在内核里包装起来。这个和我们设计模式的接口抽象思
2021-12-05 00:47:23
1150
原创 如何减少linux内存碎片
1. 什么式内存分配以及内存碎片 内存分配是虚拟内存分配vma,虚拟内存在内核是一个连续的空间(这里内核只是管理vma的其实地址和结束地址,所以占用很小)。在运行过程中mmap时,由于虚拟内存各个线程式共享的,所以分配vma会加锁,在多线程中表现不佳。第二,在长期运行过程中,vma导致碎片会,在分配中,查找vma可用gap的时间可能很长,最坏时间时o(n),同时也会引起vma红黑树的深度增加,查找,删除,增加时长增加。所以减少内存碎片在提高性能和内存利用率十分重要。 同时由于碎片导致页表项变...
2021-12-04 10:53:17
1785
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人