第14课:合理控制优先级,根据职责赋予权利

Linux 是一个多用户多任务的操作系统,即使是在单核心 CPU 的系统上,用户也感觉系统中的多个进程在同时运行。实际上,内核使用的是一套固定的调度策略,多个进程轮流使用 CPU,并快速地轮流切换。但是,对于不同功能的进程,它们的任务优先级和对实时性的要求是不一样的,有什么办法能控制进程这一行为呢?

在本节课中,我们就来介绍一下 Linux 中影响进程被内核调度的参数,并介绍控制这些参数的系统调用及它们的使用方法。深入理解它们的作用和底层的实现机理,能帮助开发者更加合理地控制和分配不同功能的进程的权责,主要包括以下几方面内容:

  • 普通进程优先级
  • 实时进程优先级
  • 进程的 CPU 亲和力

14.1 普通进程优先级

如果没有特别指定,在 Linux 中创建的进程都是普通进程,它们在内核中是以时间片轮转的方式被依次调度的。

更具体地说,如果一个运行中的进程发生了以下任意一种情况,内核会把它暂时调度出 CPU,转而调入其他符合运行条件的进程继续执行:

  • 进程自己主动休眠(如主动调用 sleep);
  • 进程因为执行了阻塞的 I/O 操作,而需要等待慢速的 I/O 完成;
  • 进程已经用光了当前分配给自己的时间片。

默认情况下,所有进程都会被分配相同长度的时间片,所以,长期来看,抛开进程自己主动休眠和调用阻塞 I/O 的部分,每个进程能获得的 CPU 总时间是差不多的。

有时候,这样的默认行为不能满足我们的要求。比如,如果一个进程执行的计算工作特

评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符 “速评一下”
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付 49.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值