进程的状态

进程的基本状态

  • 就绪:进程已获得除处理机以外的所需资源,等待分配处理机资源
  • 执行:进程正在占用处理机资源执行
  • 阻塞:进程等待某种条件,在条件满足之前无法执行。例如发起I/O系统调用,等待I/O中断发生

挂起

挂起指将暂不执行的进程换出到外存,节省内存空间。

阻塞相比都是进程暂停执行的状态,但:

  • 阻塞表示进程正在等待一个事件的发生,阻塞状态下收到信号会切换为就绪状态
  • 挂起表示进程被换出到外存,挂起状态下被激活会被载入到内存,切换为非挂起状态

挂起状态进程按照是否阻塞分为:

  • 挂起就绪状态:进程在外存中,但只要被载入内存就可执行
  • 挂起阻塞状态:进程在外存中等待一个事件,即使被载入内存(激活)也无法执行

睡眠

Linux将进程的阻塞状态进一步细分为:

  • 暂停:不需要等待资源
  • 浅睡眠:需要等待资源且睡眠状态能被信号唤醒
  • 深睡眠:需要等待资源且睡眠状态不能被信号唤醒

进程调度算法

分类

  • 按照CPU分配方式:非抢占式,抢占式
  • 按照系统分时方式:批处理系统,交互系统,实时系统和多处理机调度

进程饥饿

  • 指某个进程无限等待,无法被调度

批处理系统调度算法

调度算法的目标:

  • 吞吐量(每小时最大作业数)
  • 周转时间(每作业从提交到完成时间的统计平均时间)
  • CPU利用率(最好令CPU始终忙碌)

1.先来先服务算法(FCFS)

  • 依据进程进入就绪状态的先后顺序排列,非抢占式 不公平
  • 优点:易于理解,便于实现,只需一个就绪队列
  • 缺点:平均等待时间波动大(例如短进程排在长进程后);I/O与CPU资源利用率低(CPU密集型进程会导致I/O设备闲置时,I/O密集型进程也等待)

2.最短进程优先算法(SPN或SJF)

  • 预知就绪队列中执行时间最短进程占用CPU进入运行状态,非抢占式 不公平
  • 优点:相对于FCFS提高了平均周转时间
  • 缺点:可能导致饥饿;对长作业不公平;需要预知未来(预估下一个CPU计算的持续时间:询问用户或用历史的执行时间来预估未来的执行时间)

3.最短剩余时间优先算法(SRT或SRTN)

  • 最短进程优先的抢占式版本,若新进程比正在执行的进程剩余时间短,则它优先执行, 抢占式 不公平
  • 优缺点同SPN

4.最高响应比优先算法(HRRN)

  • 响应比:作业等待时间/作业运行所需时间;响应比大的进程优先,非抢占式 不公平
  • 优先:同时考虑了等待时间和执行时间,既优先考虑短作业(进程),也防止长作业(进程)无限等待的饥饿

交互系统(分时系统)调度算法

1.时间片轮转算法(RR)

  • 将所有就绪进程排成一个队列,按照时间片轮转调度,用完时间片的进程排到队列末尾,抢占式 公平
  • 优点:没有饥饿问题
  • 缺点:当时间片太小时,产生大量的上下文切换,吞吐量低;当时间片太长时,等待时间过长,不能保证实时性,极限情况退化成FCFS

2.多级队列调度算法(MQ)

  • 优先级高的进程先运行,同优先级的进程轮转。当高优先级队列中没有进程后,再调度下一级队列。
  • 将就绪队列划分为多个独立的子队列,且每个队列拥有自己的调度策略(上述);队列间的调度采用固定的优先级:先处理前台队列,后处理后台队列。每个队列都得到一个确定的能够调度其进程的CPU总时间
  • 缺点:可能导致饥饿问题

3.多级反馈队列算法(MLFQ)

  • 进程可在不同队列间移动的多级队列算法(MQ);优先级高的队列先执行,优先级越高,时间片越短;若一个进程在当前队列规定时间片内无法执行完毕,则移动到下一个队列的队尾
  • 特征:CPU密集型进程的优先级下降很快;I/O密集型进程停留在高优先级
  • 缺点:可能导致饥饿问题:不断有新更高优先级的进程加入

4.公平共享调度(FSS)

  • 保证不重要的组无法垄断资源:未使用的资源按比例分配;没有达到资源使用率目标的组获得更高的优先级 公平

5.彩票法

  • 向进程提供各种系统资源的彩票。调度时随机抽取彩票,拥有该彩票的进程得到资源
  • 可给重要进程更多的彩票;协作进程可能交换彩票

实时系统的调度算法

目标:满足任务的截止时间。即若有一个任务需要执行,实时系统会马上执行该任务,不会有较长的延时。

1.速率单调调度算法(RM)

  • 通过周期安排优先级,周期越短优先级越高
  • 执行周期最短的任务

2.最早截止时间优先算法(EDF)

  • 截止时间越早优先级越高
  • 执行截止时间最早的任务

多处理机的调度

特征:多个处理机组成一个多处理机系统;处理机间可负载共享

对称多处理机(SMP)调度

  • 截止时间越早优先级越高,每个处理器运行自己的调度程序
  • 调度程序对共享资源的访问需要进行同步

分为静态进程分配和动态进程分配(负载均衡):

  • 静态进程分配:进程从开始到结束都被分配到一个固定的处理机上执行;每个处理机有自己的就绪队列;优点:调度开销小;缺点:但是各处理机可能忙闲不均
  • 动态进程分配(负载均衡):进程在执行中可分配到任意空闲处理机执行;所有处理机共享一个公共的就绪队列;优点:各处理机的负载是均衡的;缺点:调度开销大

优先级反置

  • 操作系统出现高优先级进程长时间等待低优先级进程所占用资源的现象
  • 基于优先级的可抢占调度算法存在优先级反置

解决方法:

  1. 优先级继承:占用资源的低优先级进程继承申请资源的高优先级进程的优先级;
  • 这种情况只在占有资源的低优先级进程被阻塞时,才提高占有资源进程的优先级
  1. 优先级天花板协议(PCP):占用资源进程的优先级和所有可能申请该资源的进程的最高优先级相同;
  • 不管是否发生等待,都提升占用资源进程的优先级
  • 优先级高于系统中所有被锁定的资源的优先级上限,任务执行临界区时就不会阻塞

Linux进程调度算法的更多相关文章

  1. 进程调度算法Linux进程调度算法

    这次介绍一下操作系统的进程调度算法 操作系统的调度分为三种:1.远程调度(创建新进程):2.中程调度(交换功能的一部分):3.短程调度(下次执行哪个进程) 这次讲述的就是短程调度,可以简单的看作咱们平 ...

  2. 【Todo】Linux进程调度算法学习

    参考这篇文章 http://blog.chinaunix.net/uid-27052262-id-3239260.html Linux支持三种进程调度策略,分别是SCHED_FIFO . SCHED_ ...

  3. Linux - 进程调度算法

    进程调度: 无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数.这将导致它们互相争夺处理机.另外,系统进程也同样需要使用处理机. 这就要求进程调度程序按一定的策略,动态地把处理机分配给处于 ...

  4. Linux常见的进程调度算法

    进程调度:在操作系统中调度是指一种资源分配. 调度算法是指: 根据系统的资源分配策略所规定的资源分配算法. 操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源 ...

  5. Linux内核初探 之 进程(三) —— 进程调度算法

    一.基本概念 抢占 Linux提供抢占式多任务,基于时间片和优先级对进程进行强制挂起 非抢占的系统需要进程自己让步(yielding) 进程类型 IO消耗型 经常处于可运行态,等待IO操作过程会阻塞 ...

  6. Linux 常见的进程调度算法

    1.在介绍进程调度之前,先对进程的状态的概念应该有所了解,下面是关于进程状态的一些基本概念:进程的状态分为三种,分别为: 1).运行态:该状态表明进程在实际占用CPU 2).就绪态: 该状态下进程可以 ...

  7. Linux进程管理知识整理

    Linux进程管理知识整理 1.进程有哪些状态?什么是进程的可中断等待状态?进程退出后为什么要等待调度器删除其task_struct结构?进程的退出状态有哪些? TASK_RUNNING(可运行状态) ...

  8. linux进程模型总结

    Linux进程通过一个task_struct结构体描述,在linux/sched.h中定义,通过理解该结构,可更清楚的理解linux进程模型.       包含进程所有信息的task_struct数据 ...

  9. linux学习之八---Linux进程基础知识

    一.linux进程 linux是一个多用户多任务的操作系统. 多用户是指多个用户能够在同一时间使用计算机. 多任务是指linux能够同一时候运行几个任务. 进程简单来说就是执行中的程序,Linux系统 ...

  10. Linux性能及调优指南(翻译)之Linux进程管理

    本文为IBM RedBook的Linux Performanceand Tuning Guidelines的1.1节的翻译原文地址:http://www.redbooks.ibm.com/redpap ...

随机推荐

  1. csp201503-1(矩阵逆时针九十度旋转)

    //矩阵变换的题,要找出两个矩阵各元素横纵坐标之间的关系 #include<bits/stdc++.h> using namespace std; int main() { int a[1 ...

  2. elasticsearch别名

    es创建别名的好处: 1.不暴露索引名 2.可以为多个结构类似的索引(动态索引)创建相同的别名,查询的时候直接查询别名 ,然后自动匹配多个索引. 在不同的索引创建窗口.比如,如果为数据创建了每日索引, ...

  3. 布尔类型:boolean

    布尔类型 基本介绍 布尔类型也叫boolean类型,其数据只允许取值true和false,无null boolean类型占1个字节 boolean类型适于逻辑运算,一般用于程序流程控制: if条件控制 ...

  4. php ajax跨域问题解决方案

    本文通过设置Access-Control-Allow-Origin来实现跨域. 例如:客户端的域名是client.runoob.com,而请求的域名是server.runoob.com. 如果直接使用 ...

  5. shell脚本定时任务转移项目日志

    1.之前同时项目部署在根目录,根目录磁盘空间40G,运行一年后日志占了18G的磁盘空间, 根目录只有几个G的磁盘空间,现在写shell脚本定时转移日志文件到挂载的磁盘目录下 2.编写shell脚本 # ...

  6. 【SSO单点系列】(8):CAS4.0 之整合CMS

    一.描术 CMS 是采用shiro来认证的: 过程 1.调用 login.do  get方式 来打开登录页面 2.录入用户名密码后调用/login.do的post来提交 并且只能是post提交 Jar ...

  7. CentOS 7.9 环境下添加拥有 sudo 权限的用户

    # 以root权限执行以下操作 # 添加用户 useradd vbird # 为用户设置密码 passwd vbird # Changing password for user vbird. # Ne ...

  8. GPS北斗卫星时钟同步系统提升电信支撑网性能

    GPS北斗卫星时钟同步系统提升电信支撑网性能 京准科技提供参考--更多资料VX(ahjzsz) 各项新的数据业务,如电子商务.多媒体通信.IP电话等都是电信业务发展的新增长点,而传统业务也存在多家企业 ...

  9. Visual Studio 2013图标变白

    今天一打开电脑,就发现我的Visual Studio 2013的图标变成白色的了,我点开程序发现程序照常可以运行. 于是我就百度,有的说看注册表,发现缺少文件,结果我也没缺,还有什么更换主题的,都不管 ...

  10. 宝塔邮局-并解决A纪录解析失败问题

    为什么一定要用这个邮局呢,只要是方便,在宝塔面板直接安装就行了. 使用教程如下: https://www.bt.cn/bbs/thread-87496-1-1.html 有一个BUG本来已经设置好了, ...