Kernel
文章平均质量分 57
Kernel
苟浩
一链二棍
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
系统调用:2. select
本文分析4.19.90内核的select系统调用的源码。原创 2025-06-29 17:44:26 · 862 阅读 · 0 评论 -
VFS:8.fd管理-fs/file.c源码阅读
源码基于4.19。之前因为工作需要,把fs/file.c的源码通读了一遍,拿出来与大家分享。file.c里主要是关于fd, fdtable的管理。读懂这个文件里的代码,对理解进程里关于文件的管理有很大的帮助。原创 2024-06-04 23:55:42 · 833 阅读 · 0 评论 -
writeback: 1. 初始化
源码基于5.10。原创 2023-08-26 11:34:20 · 299 阅读 · 0 评论 -
block层:5. 请求分配
源码基于5.10。原创 2023-08-26 11:26:47 · 703 阅读 · 0 评论 -
block层:8. deadline调度器
源码基于5.10。原创 2023-08-26 11:09:20 · 1309 阅读 · 0 评论 -
block层:7. 请求下发
源码基于5.10。原创 2023-08-26 11:04:43 · 1879 阅读 · 0 评论 -
block层:4. 运行队列
源码基于5.10。原创 2023-08-26 11:02:31 · 646 阅读 · 0 评论 -
block层:1. 提交io
block: 1. submit io原创 2023-08-26 10:43:39 · 800 阅读 · 0 评论 -
block层:3. plug机制
源码基于5.10。原创 2023-08-26 10:49:32 · 709 阅读 · 0 评论 -
block层:2. mq提交io
block层:2. submit_blk_mq原创 2023-08-26 10:46:45 · 735 阅读 · 0 评论 -
内存管理:2. slub-create
slub的创建从kmem_cache_create->kmem_cache_create_usercopy都是一样的,从__kmem_cache_create开始区分。__kmem_cache_create的主要调用了kmem_cache_open来创建应的slab.计算一个slab对应page的oder,一个slab里存储对象的数量等。slub的创建,相对于slab来说要简单的多。原创 2023-03-12 23:05:56 · 287 阅读 · 0 评论 -
内存管理:1. slab-创建
【代码】内存管理:1. slab-创建。原创 2023-03-12 21:38:53 · 348 阅读 · 0 评论 -
文件系统:3. io_uring-提交sqe
文件系统:3. io_uring-提交sqe原创 2023-01-10 09:21:23 · 659 阅读 · 0 评论 -
文件系统:3. io_uring-io_uring_enter系统调用
文件系统:3. io_uring-io_uring_enter系统调用原创 2023-01-10 09:20:28 · 598 阅读 · 0 评论 -
文件系统:3. io_uring-io_wq原理
文件系统:3. io_uring-io_wq原理原创 2023-01-10 09:18:25 · 1052 阅读 · 0 评论 -
文件系统:3. io_uring-sq-poll模式
文件系统:3. io_uring-sq-poll模式原创 2023-01-09 23:18:51 · 671 阅读 · 0 评论 -
文件系统:3. io_uring-io_uring_setup系统调用
文件系统:3. io_uring-io_uring_setup系统调用原创 2023-01-09 23:16:59 · 831 阅读 · 0 评论 -
内存管理:2. slub-kfree
内存管理:2. slub-kfree原创 2023-01-09 22:31:54 · 410 阅读 · 0 评论 -
内存管理:2. slub-kmalloc
内存管理:2. slub-kmalloc原创 2023-01-09 22:30:52 · 689 阅读 · 0 评论 -
内存管理:2. slub-初始化
内存管理:2. slub-初始化原创 2023-01-09 22:29:40 · 680 阅读 · 0 评论 -
内存管理:2. slub-结构体
内存管理:2. slub-结构体原创 2023-01-09 22:28:23 · 196 阅读 · 0 评论 -
内存管理:1. slab-kfree
内存管理:1. slab-kfree原创 2023-01-09 22:25:53 · 342 阅读 · 0 评论 -
内存管理:1. slab-kmalloc
内存管理:1. slab-kmalloc原创 2023-01-09 22:23:53 · 254 阅读 · 0 评论 -
内存管理:1. slab-结构体
内存管理:1. slab-结构体原创 2023-01-09 22:20:01 · 217 阅读 · 0 评论 -
内存管理:1. slab-初始化
内存管理:1. slab-初始化原创 2023-01-09 22:17:37 · 692 阅读 · 0 评论 -
Kernel源码笔记之文件系统:2. fuse——查找文件
fuse查找文件流程原创 2022-07-13 09:08:42 · 492 阅读 · 0 评论 -
Kernel源码笔记之文件系统:2. fuse——打开文件
fuse打开文件的流程原创 2022-07-13 09:07:08 · 810 阅读 · 0 评论 -
Kernel源码笔记之文件系统:2. fuse——接收应答
介绍fuse接收应答的流程原创 2022-07-13 09:03:58 · 334 阅读 · 0 评论 -
Kernel源码笔记之文件系统:2. fuse——发送消息
主要介绍了fuse的发送消息流程原创 2022-07-13 09:00:32 · 759 阅读 · 0 评论 -
Kernel源码笔记之文件系统:2. fuse——挂载
初始化函数里,主要创建了fuse_fs_context对象,每个挂载的上下文对象。在挂载fusefs的时候,必须要传fd, rootmod, user_id, group_id,这4个参数。然后就根据是否有设备,调用不同的vfs函数,核心工作都在fuse_fill_super里。在fuse_fill_super主要流程:下面是参数解析的相关代码:fuse_conn_init在fuse_conn_init设置了已连接状态和fiq->ops,这个ops默认是fuse_dev_operations,处理原创 2022-07-01 17:09:07 · 1269 阅读 · 0 评论 -
Kernel源码笔记之文件系统:2. fuse——初始化
fuse模块初始化原创 2022-06-28 12:43:51 · 578 阅读 · 0 评论 -
Kernel源码笔记之系统调用:1. splice
splice系统调用,把一个文件描述符的数据移到到另一个文件描述符里,其中至少有一个得是pipe。原创 2022-06-28 12:28:11 · 731 阅读 · 0 评论 -
Kernel源码笔记之VFS:7.写文件
写文件写文件的系统调用,以及前面几个函数和读文件差不多,我们直接从generic_perform_write开始看ssize_t generic_perform_write(struct file *file, struct iov_iter *i, loff_t pos){ struct address_space *mapping = file->f_mapping; const struct address_space_operations *a_ops = mapping-&原创 2022-03-30 08:49:27 · 576 阅读 · 0 评论 -
Kernel源码笔记之VFS:6.读文件
读文件源码基于stable-5.10.102/*fd: 文件描述符buf: 缓冲区count: 要读入的数量要读取的位置在file的f_pos里*/SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count){ return ksys_read(fd, buf, count);}ssize_t ksys_read(unsigned int fd, char __user *buf, size_原创 2022-03-30 08:45:18 · 881 阅读 · 0 评论 -
内核调试之kprobe
trace-kprobe简介在调试内核的时候要跟踪函数有没有执行或者返回值等等,kprobe可以实现这些,用代码写的kprobe模块还可以修改返回值。这篇主要介绍kprobe在trace下的使用。本文以 do_filp_open 函数为例,来看一下kprobe在trace里的基本使用,do_filp_open代码如下:struct file *do_filp_open(int dfd, struct filename *pathname, const struct open_flags *op)原创 2022-03-22 17:58:18 · 2248 阅读 · 0 评论 -
Kernel源码笔记
Kernel源码笔记原创 2022-03-17 23:55:25 · 1561 阅读 · 0 评论 -
Kernel源码笔记之调度:1.PELT
PELT 算法时间被分成了1024us的序列(也就是1ms,按1024算比较好算),在每一个1024us的周期中,一个entity对系统负载的贡献可以根据该实体处于runnable状态(正在CPU上运行或者等待cpu调度运行)的时间进行计算。任务在1024us的周期窗口内的负载其实就是瞬时负载。如果在该周期内,runnable的时间是t,那么该任务的瞬时负载应该和(t/1024)有正比的关系。类似的概念,任务的瞬时利用率应该通过1024us的周期窗口内的执行时间(不包括runqueue上的等待时间)比率来原创 2022-03-01 18:11:36 · 1465 阅读 · 0 评论 -
Kernel源码笔记之调度:2.负载均衡
负载均衡代码基于4.19。负载均衡的时机在scheduler_tick时进行在schedule时,cpu队列为空时进行wake_up_new_task(在fork的时候), sched_exec(执行新程序时), try_to_wake_up(唤醒一个进程时)scheduler_tick在scheduler_tick中,每次都会调用trigger_load_balance来进行负载均衡。// kernel/sched/core.cvoid scheduler_tick(void){原创 2022-03-01 18:10:38 · 1339 阅读 · 0 评论 -
Kernel源码笔记之调度:3.CFS
简介主要介绍CFS(Completely Fair Scheduler)完全公平调度器。代码基于4.19。两个核心数据结构// kernel/sched/sched.h: 483// 可运行队列,每个cpu上都有一个队列struct cfs_rq { struct load_weight load; //队列中所有进程的权重和 unsigned long runnable_weight; unsigned int nr_running; //队列中进程数量 unsigned int原创 2021-07-29 17:59:51 · 710 阅读 · 0 评论 -
Kernel源码笔记之调度:4.Fork系统调用
简介fork系统调用是用户空间进程的起点,fork的流程中涉及了内核中大多数核心的基础组件,比如:文件系统,内存管理,namespace等等,execve用来执行一个程序,调度是驱动系统运行的核心,所以了解这三个流程,对学习内核是一个很好的引导。本文基于4.19.190版本的内核。文中可能有些地方描述不准确,如有请指出,感谢。陷入系统调用系统调用通过0x80号中断来陷入内核。在内核启动的主函数start_kernel(init/main.c)中会调用trap_init(arch/x86/kern原创 2021-07-29 17:50:27 · 957 阅读 · 0 评论
分享