加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_宿迁站长网 (https://www.0527zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

kernel学习之进程调度器简介

发布时间:2016-09-26 09:19:04 所属栏目:Unix 来源:站长网
导读:副标题#e# 多任务操作系统可分为非抢占式多任务和抢占式多任务。和大多数现代操作系统一样,linux也采用了抢占式多任务模式。这也就是说任务占用cpu的时间由调度器来决定。 调度策略: 决定在什么时候用怎样的方式选择一个新的进程在哪个cpu上运行多长时间
副标题[/!--empirenews.page--]

多任务操作系统可分为非抢占式多任务和抢占式多任务。和大多数现代操作系统一样,linux也采用了抢占式多任务模式。这也就是说任务占用cpu的时间由调度器来决定。

调度策略:

决定在什么时候用怎样的方式选择一个新的进程在哪个cpu上运行多长时间的规则称为调度策略。

通常情况下,使用什么样的调度策略与进程的类型有关。进程常分为cpu消耗型和IO消耗型。

另一种分类方式为:

1、交互式进程(interactiveprocess):此类进程需要大量的人机交互,这样的进程会不断的睡眠,等待键盘和鼠标操作将其唤醒。这样的进程对系统响应时间要求高。典型的进程如文本编辑程序。

2、批处理进程(batch process):这样的进程不需要人机交互,常在后台进程,能忍受响应的迟缓,如编译器。

3、实时进程(real-time process):这样的进程对系统响应时间要求很高。如视频音频播放软件。

注:为了与实时进程对应,交互进程和批处理进程常称为普通进程。

策略标志:

SCHED_NORMAL:默认的调度策略,在旧版本中名为SCHED_OTHER, 分时调度策略

SCHED_BATCH:针对批处理进程。

SCHED_IDLE:使用此调度器的进程的优先级最低。在实现CFS时引入。

SCHED_FIFO:针对实时进程的先进先出策略。一旦占用cpu就一直进行,直到有更高的优先级的进程或自己放弃cpu。适合时间要求高,每次运行时间短的进程。

SCHED_RR:针对实时进程的时间片轮转策略。进程的时间片用完后,系统会重新为其分配时间片,并把它放到队列的尾端。这样就能让每个进程都能运行一段时间。适用于每次执行时间较长的进程。

总结:SCHED_NORMAL,SCHED_BATCH,SCHED_IDLE:都是用与普通进程。区别:SCHED_NORMAL为默认的调度策略。SCHED_BATCH用于批处理进程。SCHED_IDLE用于优先级最低的后台程序。SCHED_NORMAL和SCHED_BATCH求别只是在唤醒时有区别。唤醒较频繁的进程不适合SCHED_BATCH。进程采用的调度策略反应在policy中,它的值为上面的值。子进程会继承父进程的policy。同时我们也可以通过sched_setscheduler来修改它。

所有任务都采用linux分时调度策略时。

1,创建任务指定采用分时调度策略,并指定优先级nice值(-20~19)。

2,将根据每个任务的nice值确定在cpu上的执行时间(counter)。

3,如果没有等待资源,则将该任务加入到就绪队列中。

查看本栏目更多精彩内容:http://www.bianceng.cn/OS/unix/

(编辑:云计算网_宿迁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读