linux设置优先级继承(linux设置优先级)-冯金伟博客园

linux进程调度的三种策略是什么?

进程调度策略就是调度系统种哪一个进程来CPU运行。

这种调度分2层考虑。

第一层,进程状态这个是最优先考虑的,也就是说优先级最高的。

在linux中只有就绪态的进程才有可能会被调度选中然后占有CPU,其它状态的进程不可能占有的到CPU。

下面是linux中进程的状态 TASK_RUNNING:就绪状态,得到CPU就可以运行。

TASK_INTERRUPTIBLE:浅度睡眠,资源到位或者受到信号就会变成就绪态。

TASK_UNINTERRUPTIBLE:深度睡眠,资源到位就会进入就绪态,不响应信号。

TASK_ZOMBIE:僵死态,进程exit后。

TASK_STOPPED:暂停态,收到SIG_CONT信号进入就绪态。

第二层,其实真正在操作系统中的实现,就是所有就绪态进程链接成一个队列,进程调度时候只会考虑这个队列中的进程,对其它的进程不考虑,这就实现了第一层中的要求。

接下来就是就绪队列内部各个进程的竞争了。

Linux采用3种不同的调度政策,SCHED_FIFO(下面简写成FIFO,先来先服务),SCHED_RR(简写成RR,时间片轮流),SCHED_OTHER(下面简写成OTHER)。

这里大家就能看出一个问题,采用同等调度政策的进程之间自然有可比性,Linux3种调度政策并存,那么不同调度政策间的进程如何比较呢?可以说他们之间根本就没有可比性。

其实在调度时候,调度只看一个指标,那就是各个进程所具有的权值,权值最大的且在可执行队列中排在最前面的就会被调度执行。

而权值的计算才会设计到各方面因素,其中调度政策可以说在计算权值中,份量是最重的。

为什么Linux要这么干呢?这是由于事务的多样性决定的,进程有实时性进程和非实时性的进程2种,FIFO和RR是用来支持实时性进程的调度,我们看一下这3种政策下权值的计算公式就明白了: FIFO和RR计算公式,权值=1000+进程真正的运行时间 OTHER计算公式,当时间片为0时,权值=0.当时间片不为0时候,权值=剩余时间片+20-nice,同时如果是内核线程有+1的小加分,这是因为内核线程无需用户空间的切换,所以给它加了一分,奖励他在进程切换时候开销小的功劳。

时间片好理解,那么nice这个值,用过linux系统的人都知道,这是一个从unix下继承过来的概念,表示谦让度,是一个从20~-19的数,可以通过nice和renice指令来设置。

从代码中也能看到值越小就越不会谦让他人。

从这里我们看出FIFO和RR至少有1000的基数,所以在有FIFO和RR调度政策进程存在时,OTHER进程是没有机会被调度的到的。

从权值计算公式同时也能看出,FIFO先来先服务的调度政策满足了,但RR这个时间片轮流的调度如果按照这种权值计算是不能满足时间片轮流这一概念的。

这里只是权值的计算,在调度时候对RR政策的进程特殊处理。

以上都是权值计算,下面看看真正的调度过程,首先是对RR政策进程的特殊处理,如果当前进程采用的RR政策,那么看他的时间片是否用完,用完了就踢到就绪队列尾部,同时恢复他的时间片。

然后是便利整个就绪队列,找到第一个权值最大的进程来运行。

整体调度效果就是:如果有FIFO和RR政策的进程,就优先调度他们2个,他们之间看已执行时间长短决定胜负,而2种政策内部则遵守各自调度政策。

而OTHER只有在前面2种不存在于就绪队列时候才有可能执行,他们实际也是轮流执行,但他们之间是靠剩余时间和NICE值来决定胜负。

同时就绪队列中排在最前面的最优先考虑在同样权值情况下。

linux内核由哪几部分组成,简述各部分作用?

一个完整的Linux内核一般由5部分组成,它们分别是内存管理、进程管理、进程间通信、虚拟文件系统和网络接口。

1、内存管理

内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子系统对内存分配的请求。

Linux内存管理支持虚拟内存,而多余出的这部分内存就是通过磁盘申请得到的,平时系统只把当前运行的程序块保留在内存中,其他程序块则保留在磁盘中。在内存紧缺时,内存管理负责在磁盘和内存间交换程序块。

2、进程管理

进程管理主要控制系统进程对CPU的访问。当需要某个进程运行时,由进程调度器根据基于优先级的调度算法启动新的进程。:Linux支持多任务运行,那么如何在一个单CPU上支持多任务呢?这个工作就是由进程调度管理来实现的。

3、进程间通信

进程间通信主要用于控制不同进程之间在用户空间的同步、数据共享和交换。由于不用的用户进程拥有不同的进程空间,因此进程间的通信要借助于内核的中转来实现。

一般情况下,当一个进程等待硬件操作完成时,会被挂起。当硬件操作完成,进程被恢复执行,而协调这个过程的就是进程间的通信机制。

4、虚拟文件系统

Linux内核中的虚拟文件系统用一个通用的文件模型表示了各种不同的文件系统,这个文件模型屏蔽了很多具体文件系统的差异,使Linux内核支持很多不同的文件系统。

5、网络接口

网络接口提供了对各种网络标准的实现和各种网络硬件的支持。网络接口一般分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。

Linux采用了哪几种调度方法?各用于哪类进程的调度?

你问的是进程调度吧Linux进程调度采用的是抢占式多任务处理,所以进程之间的挂起和继续运行无需彼此之间的协作。调度方式:时间片,优先级,还有就是时间片加优先级混合,默认是第三种

linux下top命令参数解释?

-d:number代表秒数,表示top命令显示的页面更新一次的间隔。默认是5秒。

-b:以批次的方式执行top。

-n:与-b配合使用,表示需要进行几次top命令的输出结果。

-p:指定特定的pid进程号进行观察。

在top命令显示的页面还可以输入以下按键执行相应的功能(注意大小写区分的):

?:显示在top当中可以输入的命令

P:以CPU的使用资源排序显示

M:以内存的使用资源排序显示

N:以pid排序显示

T:由进程使用的时间累计排序显示

k:给某一个pid一个信号。可以用来杀死进程

r:给某个pid重新定制一个nice值(即优先级)

q:退出top(用ctrl+c也可以退出top)