linux内核同步的一些基本理解

本文探讨了进程调度的基本原则,包括优先级、时间片、调度触发条件等,并深入讨论了内核同步机制,如自旋锁、信号量的使用场景及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程调度的一些基本事实:
1.调度是优先级和时间片共同决定的
2.I/O消耗型的优先级较高,时间片较长,计算消耗型反之。
3.当进程阻塞或者主动schedule()或者被抢占时候,则发生调度
4.当时间片耗尽时,进程将被挂到另一个队列中。
5.用户抢占发生在系统调用返回到用户空间时候或者从中断处理程序返回用户空间时候
6.只要没有锁,内核就可以抢占,

中断:
1.中断处理程序可分为上半部和 下半部,必须完成的时间短的放在上半部,因为此时禁止低级别和同级别的中断。
2.
内核同步:
1.非对其的内存访问不是原子操作
2.自旋锁的争用失败会导致忙等待,所以自旋锁的持有应该尽量短的时间。
3.若内核抢占被关闭,则自旋锁会在编译时候,清除出去。(可能是关掉内核抢占后,内核代码就不会被重入了?
4.自旋锁不可递归。
5.在中断处理程序中不能使用信号量(因为这样会导致睡眠)
6.中断处理程序使用自旋锁时候,一定要关闭本地中断;否则其他中断打断当前中断并且要争用同一个自旋锁时候,就会导致忙等待,而持有锁的前一个中断也得不到释放锁的机会
7.当一个任务获取信号量失败后,就会被处理器挂在一个队列上睡眠。
8.信号量适用于锁会被长时间持有的情况。短的话,睡眠维护等待队列以及唤醒的开销成本太大。
9.占用信号量的同时不能占用自旋锁,因为持有自旋锁是不允许睡眠的
10.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值