
2.5.5 IRQ 线的动态分配 .............................................................................................. 116
2.6 下半部分........................................................................................................................ 117
2.6.1 软中断 ................................................................................................................. 118
2.6.2 tasklet ................................................................................................................... 121
2.6.3 工作队列 ............................................................................................................. 122
2.7 定时器中断 ..................................................................................................................... 124
2.7.1 时钟与定时器 ..................................................................................................... 124
2.7.2 定时器中断相关的数据结构 ............................................................................. 127
2.7.3 定时器中断的上半部分 ..................................................................................... 129
3 进程调度................................................................................................................................... 138
3.1 进程调度的概念 ............................................................................................................ 138
3.2 进程调度的数据结构和优先级 .................................................................................... 141
3.2.1 进程的优先级 ..................................................................................................... 141
3.2.2 数据结构 ............................................................................................................. 145
3.3 调度程序所使用的函数 ................................................................................................ 151
3.3.1 scheduler_tick 函数 ............................................................................................. 151
3.3.2 try_to_wake_up 函数 ........................................................................................... 156
3.3.3 recalc_task_prio 函数 .......................................................................................... 160
3.4 schedule()函数 ................................................................................................................ 163
3.4.1 直接调用 ............................................................................................................. 163
3.4.2 延迟调用 ............................................................................................................. 164
3.4.3 进程切换之前所做的工作 ................................................................................. 168
3.4.4 完成进程切换时所执行的操作 ......................................................................... 171
3.4.5 进程切换后所执行的操作 ................................................................................. 173
3.5 多处理器运行队列的平衡 ............................................................................................ 175
3.5.1 调度域 ................................................................................................................. 176
3.5.2 rebalance_tick()函数 ............................................................................................ 178
3.5.3 load_balance()函数 .............................................................................................. 180
3.5.4 move_tasks()函数 ................................................................................................ 183
3.6 进程退出........................................................................................................................ 187
3.6.1 进程终止 ............................................................................................................. 187
3.6.2 进程删除 ............................................................................................................. 189
4 进程的并发性体现 ................................................................................................................... 191
4.1 内核抢占........................................................................................................................ 193
4.1.1 内核抢占概念 ..................................................................................................... 193
4.1.2 同步技术总揽 ..................................................................................................... 196
4.2 每 CPU 变量 .................................................................................................................. 197
4.3 原子操作........................................................................................................................ 199
4.4 优化屏障和内存壁垒 .................................................................................................... 203
4.4.1 优化屏障 ............................................................................................................. 204
4.4.2 内存壁垒 ............................................................................................................. 204
4.5 自旋锁............................................................................................................................ 206
4.6 读写自旋锁 .................................................................................................................... 211
4.6.1 为读获取和释放一个锁 ..................................................................................... 213
评论20