《linux内核设计与实现》笔记:第四章进程管理

1、关于Linux的进程调度策略

1)进程可以被分为I/O消耗型和处理器消耗型。
2)I/O消耗型指进程的大部分时间用来提交I/O请求或是等待I/O请求。因此,这样的进程经常处于可运行状态,但通常是运行短短的一会儿,因为它在等待更多的I/O请求时,最后总会被阻塞。这里所说的I/O是指任何类型的可阻塞资源,比如键盘输入,或者是网络I/O。
3)处理器消耗型进程则是把时间大多用在执行代码上。对于这类处理器消耗型的进程,调度策略往往时尽量降低它们的调低频率,而延长其运行时间。处理器消耗型进程的极端例子就是无限循环地执行。
4)Linux为了保证交互式应用程序和桌面系统的性能,对进程的响应做了优化(缩短响应时间),更倾向于优先调度I/O消耗型进程。虽然如此,调度程序也并未忽略处理器消耗型的进程。

2、关于进程优先级

1)Linux采用了两种不同的优先级范围。
2)第一种是用nice值,它的范围是从-20到+19,默认值为0;越大的nice值意味着更低的优先级。nice似乎意味着你对系统中的其它进程更“优待”。相比于高nice值(低优先级)的进程,低nice值得进程可以获得更多得处理器时间。在Linux系统中,nice值代表时间片的比例。
3)第二范围是实时优先级,其值是可配置的,默认情况下它的变化范围是从0到99(包括0和99)。与nice值意义相反,越高的实时优先级数值,意味着进程优先级越高。

3、关于时间片

1)时间片是一个数值,它表明进程在被抢占前所能持续运行的时间。
2)I/O消耗型不需要长的时间片,而处理器消耗型的进程则希望越长越好(比如这样可以让它们的高速缓存命中率更高)。
3)在Linux中使用CFS调度器,其抢占时机取决于新的可运行程序消耗了多少处理器使用比。如果消耗的使用比比当前进程小,则新进程立刻投入运行,抢占当前进程。否则,将推迟其运行。

4、关于Linux调度器

1)Linux调度器是以模块方式提供的,这样做的目的是允许不同类型的进程可以有针对性地选择调度算法。
2)完全公平调度(CFS)是一个针对普通进程的调度类。
3)CFS采用的方法是对时间片分配方式进行根本性的重新设计:完全摒弃时间片,而是分配给进程一个处理器使用的时间比重。通常这种方式,CFS确保了进程调度中能有恒定的公平性,而将切换频率置于不断变动中。

5、关于CFS公平调度

1)CFS的出发点基于一个简单的理念:进程调度的效果应如同系统具备一个理想中的完美多任务处理器。
2)CFS的策略是:允许每个进程运行一段时间、循环轮转、选择运行最少的进程作为下一个运行进程,而不再采用分配给每个进程时间片的做法,CFS在所有可运行进程总数基础上计算出一个进程应该运行多久,而不是依靠nice值来计算时间片。
3)nice值在CFS中被作为进程获得的处理器运行的权重:越高的nice值(越低的优先级)进程获得更低的处理使用权重,这是相对默认nice值进程的进程而言的;相反,更低的nice值(越高的优先级)的进程获得更高的处理器使用权重。
4)每个进程都按其权重在全部可运行进程中所占比列的“时间片”来运行。
5)越小的调度周期将带来越好的交互性,同时也更接近完美的多任务。但是你必须承受更高的切换代价和更差的系统总吞吐能力。

6、关于进程的休眠和唤醒

1)休眠(被阻塞)的进程处于一个特殊的不可执行状态。
2)休眠的一个常见原因就是文件I/O——如进程对一个文件执行了read()操作,而这需要从磁盘里读取。还有,进程在获取键盘输入的时候也需要等待。
3)对内核而言,操作都是相同的:进程把自己标记成休眠状态,从可执行红黑树中溢出,放进等待队列,然后调用schedule()选择和执行一个其它进程。
4)唤醒的过程刚好相反:进程被设置为可执行状态,然后再从等待队列中移到可执行红黑树中。

7、关于用户抢占

1)内核即将返回用户空间时,如果need_resched标志被设置,会导致schedule()被调用,此时就会发生用户抢占。内核无论在中断处理程序还是在系统调用后返回,都会检查need_resched标志。
2)用户抢占在一下情况时产生:①从系统调用返回用户空间;②从中断处理程序返回用户空间时。

8、关于内核抢占

1)内核抢占会发生在:
①中断处理程序正在执行,且返回内核空间之前;
②内核代码再一次具有可抢占性的时候;
③如果内核中的任务显示地调用schedule();
④如果内核的任务阻塞(这样同样也会导致调用schedule())。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值