linux 内核调度
来源:互联网 发布:网络犯罪的特征有 编辑:程序博客网 时间:2024/06/07 02:31
一 系统调用do_fork()
1 当前进程调用fork()创建子进程,进入kernel
2 当前进程分一半多时间片给子进程,
3 如果当前进程时间片剩余为0,设定当前进程need_sched=1,
4 从系统调用退出
5 到达ret_from_sys_call
6 到达ret_with_reschedule
7 发现当前进程要求调度,跳转到reschedule
8 调用schedule()
9 schedule()处理当前进程的调度要求,
10 如果有其他进程可运行,将在schedule()内发生切换。
二 定时钟断do_timer()
11 当定时钟断发生时8235->irq0->do_timer_interrupt()->do_timer()
12 ->update_process_times()递减当前进程的时间片,
13 如果当前进程时间片为0,设定当前进程need_sched=1,
14 从中断调用退出,
15 到达ret_from_intr
16 到达ret_with_reschedule ,
17 发现当前进程要求调度,跳转到reschedule
18 调用schedule()
19 schedule()处理当前进程的调度要求,
20 如果有其他进程可运行,将在schedule()内发生切换。
三 唤醒进程wake_up_process()
21 当前进程调用fork()创建子进程,进入kernel
22 当前进程调用了wake_up_process来唤醒进程x
23 使进程x状态为RUNNING,并加入runqueue队列,
24 调用reschedule_idle()
25 发现进程x比当前进程更有资格运行,设定当前进程need_sched=1,
26 从系统调用退出
27 到达ret_from_sys_call
28 到达ret_with_reschedule
29 发现当前进程要求调度,跳转到reschedule
30 调用schedule()
31 schedule()处理当前进程的调度要求,
32 如果有其他进程可运行,将在schedule()内发生切换。这次大多数可能切换到进程x
四 改变进程的调度策略setscheduler()
33 进入系统调用setscheduler()
34 改变进程x的调度策略
35 提前进程x在runqueue队列的位置
36 设定当前进程need_sched=1,
37 从系统调用退出
38 到达ret_from_sys_call
39 到达ret_with_reschedule
40 发现当前进程要求调度,跳转到reschedule
41 调用schedule()
42 schedule()处理当前进程的调度要求,
43 如果有其他进程可运行,将在schedule()内发生切换。
五 系统调用礼让 sys_sched_yield()
44 进入系统调用sys_sched_yield()
45 如果有其他的进程,进行礼让,
46 设定当前进程need_sched=1,
47 从系统调用退出
48 到达ret_from_sys_call
49 到达ret_with_reschedule
50 发现当前进程要求调度,跳转到reschedule
51 调用schedule()
52 schedule()处理当前进程的调度要求,
53 如果有其他进程可运行,将在schedule()内发生切换。
need_sched 表示CPU从系统空间返回到用户空间前夕要进行一次调度。
- linux的内核调度
- linux 内核调度
- Linux内核调度
- linux内核调度
- linux内核调度方法
- linux内核调度器
- Linux内核进程调度
- linux内核-进程调度
- 【Linux 内核】进程调度
- Linux内核调度算法
- LInux内核调度策略
- Linux内核-进程调度
- Linux内核-进程调度
- Linux内核调度算法
- Linux内核-进程调度
- Linux内核进程调度
- linux内核进程调度
- linux内核系统调度
- 注册表操作
- 真正的爱
- 关于 Oracle 连接数据库 二次登陆问题
- usb加密狗破解原理及方法介绍
- 无题
- linux 内核调度
- visualstudio的查找正则表达式例子
- 在C#中使用自定义消息
- 我做Freelancer
- [转]用ASP.NET做自己的邮件发送系统
- Instant Music Player for IE
- 内存管理 之 C内存管理
- mysql 删除重复数据
- HP MC service-guard 完全攻略