Linux.Kernel
文章平均质量分 55
byd yes
这个作者很懒,什么都没留下…
展开
-
进程基本概念
进程的运行状态程序计数器CPU寄存器,保存上下文内存管理信息统计信息文件相关的信息。原创 2022-09-25 20:09:54 · 1502 阅读 · 0 评论 -
Linux之进程管理
vfork()函数通过系统调用进入到linux内核,然后通过do_fork()函数来实现。clone()函数通过系统调用进入到Linux内核,然后通过do_fork()函数来实现。exit()系统调用吧退出码转换成内核要求的格式并且调用do_exit()函数来处理。vfork父进程会一直阻塞,知道子进程调用exit()或exec()为止。子函数会从复函数继承进程地址空间,包括。do_fork()函数有5个参数。fn就是线程的回调函数。clone()函数用来。常用的clone标志位。原创 2022-09-24 15:30:46 · 755 阅读 · 0 评论 -
spin_lock_bh使用
spin_lock_bh作用:1.保护临界区2.禁止抢占3.禁止软中断在软中执行函数_do_softirq()中已经使用__local_bh_disable_ip(_RET_IP_, SOFTIRQ_OFFSET)来禁止软中断了,所以CPU上执行软中断是串行执行的。软中断的执行:1.irq_exit()退出时可能会执行softirq2.softirq的内核线程spin_lock_bh()主要用于保护其他进程上下文访问软中断函数共享的变量。软中断和进程B共享原创 2022-01-04 10:34:07 · 3244 阅读 · 0 评论 -
ret_from_fork为什么要执行一次开中断
1. 在fork新进程的时候,新进程的内核栈是空的2. 在tick中断执行过程中,中断是关闭的。3. 当tick中断到来时,选择新进程执行的时候会执行ret_from_fork,进入中断的时候,中断被关闭的。切换到新进程的时候中断也是关闭的。所以在ret_from_fork的schedule_tail中要开中断。...原创 2021-12-30 14:52:44 · 721 阅读 · 0 评论 -
理解linux PELT算法
理解PELT算法最重要的是理解负载贡献的计算方法。1.物理时间被分为了1024us。即一个统计的周期(period)2.如果统计的周期不足1024us被补齐。3.每经历一个周期需要衰减1次,衰减系数为y。我们常常看到给出的公式:L = L0 + L1 * y + L2 * y^2 + L3 * y^3 + ... + Ln * y^n 公式1L0表示当前周期,不需要衰减。L1表示前1个周期的负载。Ln表示前n个周期的负载。linux内核...原创 2021-12-09 09:35:21 · 1807 阅读 · 2 评论 -
linux osq锁注意问题
在理解linux中osq的实现时需要注意的问题:1.在调用osq_lock()函数之前是需要调用preempt_disable()的。即禁止抢占linux5.0 osq_lock.c的注释/** An MCS like lock especially tailored for optimistic spinning for sleeping* lock implementations (mutex, rwsem, etc).** Using a single mcs node ...原创 2021-12-07 21:23:55 · 1339 阅读 · 0 评论 -
Linux内核链表的精彩实现
//Linux内核链表的精彩实现①//链表数据结构的定义很简单([include/linux/list.h],以下所有代码struct list_head{struct list_head *next,*prev;};//一般此结构可以实现双循环链表的功能//②.链表接口操作//1. 声明和初始化/*实际上Linux只定义了链原创 2012-11-18 18:14:04 · 1325 阅读 · 0 评论