liunx:复习大纲(进程管理与调度)

八.进程管理与调度

https://blog.csdn.net/Jochebed666/article/details/83049299

1)io密集型和处理器密集型进程

根据任务所需要的cpu和io资源的量可以分为:

  • CPU密集型任务:  主要是执行计算任务,响应时间很快,cpu一直在运行,这种任务cpu的利用率很高
  • IO密集型任务:主要是进行IO操作,执行IO操作的时间较长,这是cpu出于空闲状态,导致cpu的利用率不高

为了合理最大限度的使用系统资源同时也要保证的程序的高性能,可以给CPU密集型任务和IO密集型任务配置一些线程数。

  • CPU密集型:线程个数为CPU核数。这几个线程可以并行执行,不存在线程切换到开销,提高了cpu的利用率的同时也减少了切换线程导致的性能损耗
  • IO密集型:线程个数为CPU核数的两倍。到其中的线程在IO操作的时候,其他线程可以继续用cpu,提高了cpu的利用率 
     

2)liunx进程优先级的表示

用top或者ps命令会输出PRI/PR、NI、%ni/%nice这三种指标值,下面介绍这三种名次:

  1. PRI :进程优先权,代表这个进程可被执行的优先级,其值越小,优先级就越高,越早被执行
  2. NI :进程Nice值,代表这个进程的优先值
  3. %nice :改变过优先级的进程的占用CPU的百分比
     

更加详细的:

https://blog.csdn.net/longdel/article/details/7317511

3)liunx调度算法

操作系统的调度分为三种:

  • 1.远程调度(创建新进程)
  • 2.中程调度(交换功能的一部分)
  • 3.短程调度(下次执行哪个进程)

下面介绍这三种调度:

https://blog.csdn.net/lenomirei/article/details/79274073

4)内核切换进程:schedule()方法总结

Linux在众多进程中是怎么进行调度的,这个牵涉到Linux进程调度时机的概念,由Linux内核中Schedule()的函数来决定是否要进行进程的切换,如果要切换的话,切换到哪个进程等等。

 

这个是重点,大神写的:

https://blog.csdn.net/yunsongice/article/details/5526342

https://blog.csdn.net/songjinshi/article/details/23262923

5)实时进程的概念

liunx:复习大纲(进程管理与调度)_第1张图片

6)cpu亲和性

CPU affinity 是一种调度属性(scheduler property), 它可以将一个进程"绑定" 到一个或一组CPU上

在SMP(Symmetric Multi-Processing对称多处理)架构下,Linux调度器(scheduler)会根据CPU affinity的设置让指定的进程运行在"绑定"的CPU上,而不会在别的CPU上运行. 

Linux调度器同样支持自然CPU亲和性(natural CPU affinity): 调度器会试图保持进程在相同的CPU上运行, 这意味着进程通常不会在处理器之间频繁迁移,进程迁移的频率小就意味着产生的负载小

因为程序的作者比调度器更了解程序,所以我们可以手动地为其分配CPU核,而不会过多地占用CPU0,或是让我们关键进程和一堆别的进程挤在一起,所有设置CPU亲和性可以使某些程序提高性能

https://blog.csdn.net/zjy900507/article/details/81389670

你可能感兴趣的:(linux)