热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

转进程的调度方式

http:blog.csdn.netkavensuarticledetails8075642进程调度详细总结一、概念:无论是在批处理系统还是分时系统中,
http://blog.csdn.net/kavensu/article/details/8075642
进程调度详细总结
一、概念:

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

二、进程的四个基本属性:
1.多态性 从诞生、运行,直至消灭。
  2.多个不同的进程可以包括相同的程序
  3.三种基本状态 它们之间可进行转换
  4.并发性 并发执行的进程轮流占用处理器
三、进程的三种基本状态:
1.等待态:等待某个事件的完成;
  2.就绪态:等待系统分配处理器以便运行;
  3.运行态:占有处理器正在运行。
  运行态→等待态 往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的。
  等待态→就绪态 则是等待的条件已满足,只需分配到处理器后就能运行。
  运行态→就绪态 不是由于自身原因,而是由外界原因使运行状态的进程让出处理器,这时候就变成就绪态。例如时间片用完,或有更高优先级的进程来抢占处理器等。
  就绪态→运行态 系统按某种策略选中就绪队列中的一个进程占用处理器,此时就变成了运行态
四、进程调度的方式:

非剥夺方式

分派程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生 
某事件而阻塞时,才把处理机分配给另一个进程。

剥夺方式

当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的处理机,将之分配给其它进程。剥夺原则有:优先权原则、短进程优先原则、时间片原则。
  例如,有三个进程P1、P2、P3先后到达,它们分别需要20、4和2个单位时间运行完毕。
  假如它们就按P1、P2、P3的顺序执行,且不可剥夺,则三进程各自的周转时间分别为20、24、
  26个单位时间,平均周转时间是23.33个时间单位。
  假如用时间片原则的剥夺调度方式,可得到:
  可见:P1、P2、P3的周转时间分别为26、10、6个单位时间(假设时间片为2个单位时间),平均周转时间为14个单位时间。
  衡量进程调度性能的指标有:周转时间、响应时间、CPU-I/O执行期。
五、进程调度算法:

1、先进先出算法(FIFO)

算法总是把处理机分配给最先进入就绪队列的进程,一个进程一旦分得处理机,便一直执行下去,直到该进程完成或阻塞时,才释放处理机。
  例如,有三个进程P1、P2和P3先后进入就绪队列,它们的执行期分别是21、6和3个单位时间,
  执行情况如下图:
  对于P1、P2、P3的周转时间为21、27、30,平均周转时间为26。
  可见,FIFO算法服务质量不佳,容易引起作业用户不满,常作为一种辅助调度算法。

2、最短CPU运行期优先调度算法(SCBF--Shortest CPU Burst First)

  该算法从就绪队列中选出下一个“CPU执行期最短”的进程,为之分配处理机。
  例如,在就绪队列中有四个进程P1、P2、P3和P4,它们的下一个执行 
进程调度

进程调度

期分别是16、12、4和3个单位时间,执行情况如下图:
  P1、P2、P3和P4的周转时间分别为35、19、7、3,平均周转时间为16。
  该算法虽可获得较好的调度性能,但难以准确地知道下一个CPU执行期,而只能根据每一个进程的执行历史来预测。

3、时间片轮转法:

前几种算法主要用于批处理系统中,不能作为分时系统中的主调度算法,在分时系统中,都采用时间片轮转法。
  简单轮转法:系统将所有就绪进程按FIFO规则排队,按一定的时间间隔把处理机分配给队列中的进程。这样,就绪队列中所有进程均可获得一个时间片的处理机而运行。

4、多级反馈队列:

  多级队列方法:将系统中所有进程分成若干类,每类为一级。 多级反馈队列方式是在系统中设置多个就绪队列,并赋予各队列以不同的优先权。
六、引起进程调度的原因:
进程调度发生在什么时机呢?这与引起进程调度的原因以及进程调度的方式有关。
  (1)正在执行的进程执行完毕。这时,如果不选择新的就绪进程执行,将浪费处理机资源。
  (2)执行中进程自己调用阻塞原语将自己阻塞起来进入睡眠等状态。
  (3)执行中进程调用了P原语操作,从而因资源不足而被阻塞;或调用了v原语操作激活了等待资源的进程队列。
  (4)执行中进程提出I/O请求后被阻塞。
  (5)在分时系统中时间片已经用完。
  (6)在执行完系统调用等系统程序后返回用户进程时,这时可看作系统进程执行完毕,从而可调度选择一新的用户进程执行。
  以上都是在不可剥夺方式下的引起进程调度的原因。在CPU执行方式是可剥夺时.还有
  (7)就绪队列中的某进程的优先级变得高于当前执行进程的优先级,从而也将引发进程调度。
七、各种系统采用的进程调度算法:

1、UNIX系统: 

UNIX操作系统采用可剥夺的动态优先级调度算法。进程的优先级由赋给它的优先数确定,优先数越小,优先级越高。在该算法中,进程的优先数随着它占用CPU的时间增加而增加。当进程占用CPU的时间减少时,其优先数也随着减少。
补充:作为一个分时的、多任务、多用户操作系统,要保证公平地对待各个用户的进程,使各终端用户的响应时间不至太一长.所以UNIX操作系统采用了这种调度算法。但这种算法不能满足关键任务的需求,从而使传统的UNIXrK操作系统缺乏实时性。

2、LINUX系统:

Linux中的进程如果从调度策略划分,可以分为两类,普通进程和实时进程。实时进程又可分为两类,FIFO,RR。实时进程的优先级远远大于普通进程。Linux的处理策略是如果有实时进程处于可运行状态,那么优先运行实时进程,知道所有的实时进程或者结束,或者被杀掉,或者处于阻塞状态。也就是说如果实时进程一直在运行,那么普通的进程就会被活活饿死。由于实时进程和普通进程所采用的调度策略不同,下面分别介绍。

(一)普通进程调度

每一个普通进程都有一个静态优先级。这个值会被调度器用来与作为参考来调度进程。在内核中调度的优先级的区间为[100,139],数字越低,优先级越高。

(二)实时进程调度

 

每一个实时进程都会与一个实时优先级相关联。实时优先级在1到99之间。不同与普通进程,系统调度时,实时优先级高的进程总是先于优先级低的进程执行。知道实时优先级高的实时进程无法执行。实时进程总是被认为处于活动状态。

如果有数个 优先级相同的实时进程,那么系统就会按照进程出现在队列上的顺序选择进程。假设当前CPU运行的实时进程A的优先级为a,而此时有个优先级为b的实时进程B进入可运行状态,那么只要b

 

不同调度策略的实时进程只有在相同优先级时才有可比性:

1. 对于FIFO的进程,意味着只有当前进程执行完毕才会轮到其他进程执行。由此可见相当霸道。
2. 对于RR的进程。一旦时间片消耗完毕,则会将该进程置于队列的末尾,然后运行其他相同优先级的进程,如果没有其他相同优先级的进程,则该进程会继续执行。
总而言之,对于实时进程,高优先级的进程就是大爷。它执行到没法执行了,才轮到低优先级的进程执行。等级制度相当森严啊。

 


转:https://www.cnblogs.com/njczy2010/p/5800072.html



推荐阅读
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • Linux设备驱动程序:异步时间操作与调度机制
    本文介绍了Linux内核中的几种异步延迟操作方法,包括内核定时器、tasklet机制和工作队列。这些机制允许在未来的某个时间点执行任务,而无需阻塞当前线程,从而提高系统的响应性和效率。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
author-avatar
厚宝-Anzx_730
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有