need_resched 是怎么使用的(ZT)
来源:互联网 发布:ovid medline数据库 编辑:程序博客网 时间:2024/06/08 03:35
need_sched 表示CPU从系统空间返回到用户空间前夕要进行一次调度。
一 系统调用do_fork()
1 当前进程调用fork()创建子进程,进入kernel2 当前进程分一半多时间片给子进程,
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()内发生切换。
阅读全文
0 0
- need_resched 是怎么使用的(ZT)
- need_resched 是怎么使用的(ZT)
- CreateDIBSection 是怎么使用内存的?
- cocos2dx是怎么使用lua引擎的
- JNI的使用(ZT)
- zt 女人是用来疼的
- 唯一缺的是SB用户(ZT)
- zt围棋是世界上最大的伪科学
- 我的丈夫是个程序员zt
- 【ZT】delete this的使用
- 【ZT】使用JQuery的each
- 看看360的同学日常是怎么使用python的
- 怎么是空白的
- OEMAddressTable 内存映射表是怎么被wince使用的
- MySQL是怎么使用索引条件下推的?
- Composer是干嘛的,怎么用它。(2) 使用
- Observer Pattern 在C#是怎么使用的(一)
- MySQL是怎么使用索引条件下推的?
- 29:数字反转
- .net转java(一)--Linux篇
- Java多线程--线程的监控工具之jstack,jvisualvm
- field com.moreunion.zhenghao.ui.fragment.MainVideoInterrogation.mLabel has type java.util.List, got
- Tomcat 调优及 JVM 参数优化
- need_resched 是怎么使用的(ZT)
- php 字符串常用函数总结
- kuangbin 简单搜索 F题
- 数据库分库分表
- apache-ab并发负载压力测试
- Codeforces Round #433 (Div. 2) C. Planning
- Apache服务器和tomcat服务器有什么区别?
- 软件项目绩效——承包制实施经验五则
- 线程--线程的生命周期