2055
- 收藏
- 点赞
- 分享
- 举报
线程、进程关系及调度
本帖最后由 anwafs 于 2018-11-20 11:15 编辑
进程、线程及其调度
知识需要不断总结、验证、迭代,知其然,知其所以然。
Question:
A、 有了进程,为什么还要线程?
B、 操作系统如何选择下一个要执行的线程?
如果对这两个问题感兴趣,那么请思考……
Think……
1、进程和线程
进程和线程的区别与联系:
进程:资源申请的最小单位
线程:资源调度的最小单位,进程的一部分,描述指令流的执行状态。
内核中,描述进程的数据结构PCB:进程控制块,描述线程的数据结构 TCB:线程控制块。
图1 单线程进程
图2 多线程进程
进程主要设计目的是隔离,和其他进程地址空间隔离开来;线程是进程的一部分,主要设计目的是通信和并发,隔离不是主要目的。
进程/线程 生命周期:
图3 进程生命周期
2、线程的调度
调度算法最基本的一类是基于线程优先级的,线程的一种分类角度为:普通线程(SCHED_OTHER)和实时线程(SCHED_RR/SCHED_FIFO)。实时线程的优先级高于普通线程。操作系统每次从就绪队列中选择线程调度,占有cpu。
关于优先级,在TCB中有三个字段描述优先级:
A、 静态优先级,static_proi,和nice的值(-20~19)相关
B、 动态优先级, proi
C、 实时优先级, rt_priority
普通线程使用,A、B,实时线程使用的参数A、C。
在分时线程中,操作系统根据动态优先级选定下一个待执行的线程,静态优先级是动态优先级的一个基准。即B会在A的基础上浮动,同时A决定了线程调度的时间片。
在实时线程中,操作系统不计算动态优先级,只根据C即实时优先级选定下一个待执行的线程。如果是FIFO则没有时间片(要么主动放弃cpu、要么被高优先级线程抢占),如果RR,可以理解为带时间片轮转的FIFO。
1、 假设系统中只有:OTHER的线程,A、B、C、D、E、F…
那么系统会根据动态优先级高低来调用其中的线程,
动态优先级 = max(100, min(静态优先级 – bonus + 5, 139))(参考深入理解linux内核)。
同时每个线程执行的时间片,也是和静态优先级强相关的。
2、 假设系统中只有RR类型的线程,A、B、C、D、E、F…
操作系统每次调用就只会根据实时优先级的高低选择带执行的线程,假如A在执行,这个时候B等待的资源满足了,B的实时优先级比A高,那A就会B抢占。B结束有三种可能:1、B的时间用完了;2、B主动放弃cpu(等待某种资源);3、B被更高优先级线程抢占。
3、假设系统中只有FIFO类型的线程,A、B、C、D、E、F….
操作系统同样每次直选实时优先级最高的线程执行,假如A正在执行,这个时候B等待的资源满足了,B的优先级 > A的优先级,那同样B就抢占A。B结束的条件是:1、主动放弃cpu;2、被更高优先级抢占。FIFO线程没有时间片的概念,如果需要它会一直占着cpu,直到被抢占或者主动放弃。
4、如果系统中三类线程都有会是什么情况呢?
首先,实时线程 > 普通线程,优先选择实时线程且普通线程还会被实时线程抢占。
实时线程中,选择优先级高的执行,在执行过程中,也会被更高优先级的线程抢占。假如有两个FIFO线程A和B,优先级都是80,如果A在执行且一直占用cpu,那么B就无法执行,产生饥饿,直到A主动放弃cpu。如果他们不是FIFO而是RR的,那么A和B就是时间片轮转执行,大家都有机会拿到cpu。
欢迎回复讨论
参考:深入理解linux内核
Linux内核设计与实现
学堂在线,在线课程:《操作系统》—清华大学向勇
进程、线程及其调度
知识需要不断总结、验证、迭代,知其然,知其所以然。
Question:
A、 有了进程,为什么还要线程?
B、 操作系统如何选择下一个要执行的线程?
如果对这两个问题感兴趣,那么请思考……
Think……
1、进程和线程
进程和线程的区别与联系:
进程:资源申请的最小单位
线程:资源调度的最小单位,进程的一部分,描述指令流的执行状态。
内核中,描述进程的数据结构PCB:进程控制块,描述线程的数据结构 TCB:线程控制块。
图1 单线程进程
图2 多线程进程
进程主要设计目的是隔离,和其他进程地址空间隔离开来;线程是进程的一部分,主要设计目的是通信和并发,隔离不是主要目的。
进程/线程 生命周期:
图3 进程生命周期
2、线程的调度
调度算法最基本的一类是基于线程优先级的,线程的一种分类角度为:普通线程(SCHED_OTHER)和实时线程(SCHED_RR/SCHED_FIFO)。实时线程的优先级高于普通线程。操作系统每次从就绪队列中选择线程调度,占有cpu。
关于优先级,在TCB中有三个字段描述优先级:
A、 静态优先级,static_proi,和nice的值(-20~19)相关
B、 动态优先级, proi
C、 实时优先级, rt_priority
普通线程使用,A、B,实时线程使用的参数A、C。
在分时线程中,操作系统根据动态优先级选定下一个待执行的线程,静态优先级是动态优先级的一个基准。即B会在A的基础上浮动,同时A决定了线程调度的时间片。
在实时线程中,操作系统不计算动态优先级,只根据C即实时优先级选定下一个待执行的线程。如果是FIFO则没有时间片(要么主动放弃cpu、要么被高优先级线程抢占),如果RR,可以理解为带时间片轮转的FIFO。
1、 假设系统中只有:OTHER的线程,A、B、C、D、E、F…
那么系统会根据动态优先级高低来调用其中的线程,
动态优先级 = max(100, min(静态优先级 – bonus + 5, 139))(参考深入理解linux内核)。
同时每个线程执行的时间片,也是和静态优先级强相关的。
2、 假设系统中只有RR类型的线程,A、B、C、D、E、F…
操作系统每次调用就只会根据实时优先级的高低选择带执行的线程,假如A在执行,这个时候B等待的资源满足了,B的实时优先级比A高,那A就会B抢占。B结束有三种可能:1、B的时间用完了;2、B主动放弃cpu(等待某种资源);3、B被更高优先级线程抢占。
3、假设系统中只有FIFO类型的线程,A、B、C、D、E、F….
操作系统同样每次直选实时优先级最高的线程执行,假如A正在执行,这个时候B等待的资源满足了,B的优先级 > A的优先级,那同样B就抢占A。B结束的条件是:1、主动放弃cpu;2、被更高优先级抢占。FIFO线程没有时间片的概念,如果需要它会一直占着cpu,直到被抢占或者主动放弃。
4、如果系统中三类线程都有会是什么情况呢?
首先,实时线程 > 普通线程,优先选择实时线程且普通线程还会被实时线程抢占。
实时线程中,选择优先级高的执行,在执行过程中,也会被更高优先级的线程抢占。假如有两个FIFO线程A和B,优先级都是80,如果A在执行且一直占用cpu,那么B就无法执行,产生饥饿,直到A主动放弃cpu。如果他们不是FIFO而是RR的,那么A和B就是时间片轮转执行,大家都有机会拿到cpu。
欢迎回复讨论
参考:深入理解linux内核
Linux内核设计与实现
学堂在线,在线课程:《操作系统》—清华大学向勇
我来回答
回答2个
时间排序
认可量排序
认可0
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
2019-12-09 15:59:55
-
2016-01-27 09:07:13
-
02012-12-24 15:20:51
-
2014-12-05 13:59:15
-
2020-03-24 16:27:18
-
2018-12-02 10:10:39
-
02018-08-13 14:33:31
-
2021-01-05 15:43:44
-
12012-12-05 11:05:24
-
2017-02-21 16:17:16
-
2020-08-10 10:21:22
-
2017-06-05 15:20:33
-
2013-12-29 16:05:27
-
2010-06-01 23:27:59
-
02018-03-28 14:27:02
-
12010-01-28 11:02:15
-
2017-02-16 21:32:50
-
2016-10-09 14:47:02
-
2008-09-12 12:10:03
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认