
linux kernel
文章平均质量分 93
带着耳机去梦游
跌跌撞撞,但也要更坚定,走出迷茫
为秉持开源精神,文章会陆续搬至github/码云/博客园,可搜索昵称:Amenda
展开
-
Linux内核宏Container_Of
container_of宏的作用是通过结构体内某个成员变量的地址和该变量名,以及结构体类型。找到该结构体变量的地址。这里使用的是一个利用编译器技术的小技巧,即先求得结构成员在结构中的偏移量,然后根据成员变量的地址反过来得出主结构变量的地址。原创 2022-09-11 18:49:43 · 430 阅读 · 1 评论 -
谨慎使用多线程中的 fork !!!!
Linux 中,fork 的时候只复制当前线程到子进程,也就是说除了调用 fork 的线程外,其他线程在子进程中 “蒸发” 了, 这就是多线程中 fork 所带来的一切问题的根源所在了原创 2022-08-28 00:10:52 · 531 阅读 · 0 评论 -
Linux内核空间内存申请函数kmalloc、kzalloc、vmalloc的区别
kmalloc()、kzalloc()、vmalloc()的区别是kzalloc是强制清零的kmalloc操作;(以下描述不区分kmalloc和kzalloc)kmalloc分配的内存大小有限制(128KB),而vmalloc没有限制;kmalloc可以保证分配的内存物理地址是连续的,但是vmalloc不能保证...原创 2022-07-22 12:06:26 · 656 阅读 · 0 评论 -
linux内核学习笔记-struct vm_area_struct
vm_area_structlinux 内核使用 vm_area_struct 结构来表示一个独立的虚拟内存区域,由于每个不同地址的虚拟内存区域功能和内部机制都不同,因此 一个进程使用多个vm_area_struct结构来分别表示不同类型的虚拟内存区域,包括虚拟内存的起始和结束地址,以及内存的访问权限等 。各个vm_area_struct结构使用链表或者树形结构链接,方便进程快速访问,如下图所示:Linux内核中,关于虚存管理的 最基本的管理单元 应该是 struct vm_area_struct 了原创 2022-02-14 20:34:00 · 1204 阅读 · 1 评论 -
浅析Linux下的task_struct结构体
参考:https://www.jianshu.com/p/691d02380312https://blog.youkuaiyun.com/npy_lp/article/details/7292563https://blog.youkuaiyun.com/gatieme/article/details/513832721.首先什么是进程?1.1进程可以这样描述:进程是程序的一个执行实例;进程是正在执行的程序;进程是能分配处理器并由处理器执行的实体。按内核观点来谈进程:它担当分配系统资源(CPU时间,内存)的实体。原创 2022-02-12 15:07:55 · 962 阅读 · 0 评论 -
Linux 内存映射函数 mmap()函数详解
mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。mmap在用户空间映射调用系统中作用很大。头文件 <sys/mman.h>函数原型void* mmap(void* start,size_t length,int prot,int flags,int fd,off_t offset);int munmap(void* start,size_t length);mmap()[1] 必须以PAGE_SI原创 2022-02-07 18:09:40 · 2614 阅读 · 0 评论 -
内核基础设施——hlist_head/hlist_node结构解析
原文: http://linux.laoqinren.net/kernel/hlist/数据结构hlist_head 和 hlist_node 用于散列表,分别表示列表头(数组中的一项)和列表头所在双向链表中的某项,两者结构如下:include/linux/types.h(line 190)struct hlist_head { struct hlist_node *first;};include/linux/types.h(line 194)struct hlist_node { st原创 2022-02-07 17:52:58 · 1243 阅读 · 0 评论