Linux——进程调度

一.进程的分类:
实时进程:与用户交互,需要快速响应
普通进程:不需要及时响应

二.上下文切换:
上下文切换简单来说就是cpu在运行当前的进程的时候切换到另一个进程执行;这中间需要对前一个进程的有关信息进行保存,比如程序计数器、变量、寄存器的值等等保存到内核的栈中;例如CPU在执行P1进程的时候需要切换到P2进程,这时候保存P1的相关环境和参数,然后加载P2相关进程信息,让P2运行起来。

三.调度算法
调度算法是为了实现一个CPU执行多个进程
1.先到限制性算法,短作业/进程调度算法
1.1 FFCFS(先到先执行):
CPU运行最先到来的进程;
优点:算法简单;
缺点:如果首先到达的进程需要执行的时间很长,这样的话就会导致其他的进程需要等待很长使劲才能够分配到CPU;
1.2 SJF(短作业优先调度算法):
当多个进程同时过来的时候,CPU会选择一个进程时间最短的进程让其运行;
优点:整体的运行时间下降;
缺点:当同时到达多个进程的时候才会选择最短的进程运行时间,但是如果一个运行时间长的进程先到达时,后面的运行时间较短的进程依然需要等待;
1.3 SPF(短进程有限调度算法):
前两种调度算法是非抢占式调度算法,而SPF算法即使当前有进程正在运行,如果有运行时间更短的进程到来,便会转过去执行运行时间更短的进程;

2.时间片轮转法:
系统将已经就绪的进程按照先到的原则放到队列中,然后为队首的进程分配一个时间片,当时间片结束的时候,会将该进程中断,并将这个进程置于队尾,再把处理机交给新的队首进程,让其执行一个时间片,依次进行;

3.高进程优先级调度算法
每一个进程不是拥有相同的进程优先级;
实时进程优先级(0~100);
普通进程优先级(100~140);
静态优先级:
每个人进程有一个nice值,这个nice值是回去影响进程的优先级,用户可以通过设置nice的值,来设置进程的优先级,这种设置优先级叫做静态优先级;

根据内核源码找到nice值和优先级之间的关系;
在这里插入图片描述
在这里插入图片描述

设置进程nice值得方式:nice -n xxx 进程号;
修改进程nice的值:renice;

优先级和nice值得范围:
nice:(-20~19);
进程优先级:(0~139)值越大优先级越低;能够获得的CPU调度时间就越少;

动态优先级:
由内核决定,当有些进程超时运行的时候,会提高其他进程的优先级;

对于不同的进程优先级,采用了调度器的方式来对进程进行调度;
O(n)调度器:CPU进程队列中存放带有优先级的进程,通过遍历队列来找到优先级最高的进程,运行该进程;
使用这种调度器缺点就是效率较慢;
O(1)调度器:(类似于IO多路复用中的select)
CPU使用位运算的速度最快,所以将进程的优先级(0-139)映射成bitmap结构,在某个优先级有进程就绪的时候bitmap对应的优先级的位会被置1,CPU通过在bitmap中找到被置1的优先级,通过优先级找到对应的程序去执行;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值