进程状态转换、CPU调度算法

简介:

进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。

进程状态

  • 执行态run:进程正在使用CPU
  • 等待态wait:进程正在等待I/O完成,不在使用也不能使用CPU
  • 就绪态ready:进程不在使用CPU,但已经纯备好用使用CPU

  在特定的情况下,这三种状态可以相互转换。

状态转换

  就绪->执行, 当前运行进程阻塞,调度程序选一个优先权最高的进程占有处理机;

  执行->就绪, 当前运行进程时间片用完;

  执行->等待,当前运行进程等待键盘输入,进入了睡眠状态。

  等待->就绪,I/O操作完成,被中断处理程序唤醒。

 

  刚从其他状态进入就绪态的进程需要置入调度队列,该队列不一定按进入队列的时间先后顺序排列。

  从等待态中出来的进程通常不直接进入运行态,而要进入就绪态。如果需要直接进入运行态,这属于抢先式调度,通过抢先式中断完成。

  从执行态到就绪态的转换发生在抢先式终端处理中,例如I/O或分时下的时间片。分时是在多个用户同时以交互方式使用计算机时采用的一种技术。

  分时技术:每当时钟中断发生时且发现当前运行进程已连续在CPU上运行了一定的时间(称为时间片,一般为20ms~250ms)时,就强制地发生进程切换,使当前进程退出CPU,重新调度,选出另一个进程在CPU上运行。此时,退出的进程不能变为等待状态,因为它不是因为等待I/O而退出的,也不能变为终止,因为它尚未结束,因此,它需要转换为就绪态,等待属于它的时间片的到来。

  当正在建立一个新进程时,计算机上的当前运行进程是哪一个?

  该新进程的父进程。

CPU调度算法

  同时处于就绪态的进程经常有多个,因此需要一个CPU调度算法来君顶那一个就绪进程先运行。衡量CPU调度算法的标准有:CPU利用率、用户程序响应时间、系统吞吐量、公平合理性、设备利用率等。

  常见的调度算法有先来先服务FIFO、轮转调度法RR(时间片法)、优先级调度法、短作业优先SJF、最短剩余事件优先、最高相应比优先、多级反馈法、策略驱动法、最晚时间限调度、二级调度法。

定义  

  FIFO算法:一般应用于实时性系统中,最先进入就绪态的进程最先进入运行态。

  轮转调度法:根据系统给与的时间片,进行进程的轮询访问CPU,若时间片结束,该进程还在运行,就会被强制撤出。该方法通常和FIFO或优先级算法一起使用。

  优先级调度法:根据不同进程的重要程度和紧急程度,来赋予每个进程一个优先级,带有最高优先级的进程最先执行。优先级调度算法分为静态优先级和动态优先级两种。动态优先级可以防止优先级高的进程不停地执行。

  最短作业优先:最先执行占用CPU时间最短的进程。最短的进程第一个执行总是产生最小的平均相应事件。

  最短剩余时间优先:剩余运行事件最短的进程最先运行。

  最高相应比优先:最先执行相应比最高的进程。相应比的计算公式为1+等待时间/估计运行时间。

  多级反馈法:是目前最常用的算法!它结合了FIFO、RR、优先级算法和SJF算法。该算法有多个队列,同一队列中的进程优先级相同,不同队列中进程优先级不同,不同队列拥有不同的时间片。

  策略驱动法:基于对各个用户的承诺。

  最晚时间限调度:保证在每个进程必须完成的最晚时间限钱运行完该进程。

  二级调度算法:在系统负载很重时,不是所有的进程建立就立即进入就绪态,有些进程建立起来后,进入后备队列。操作系统采用一个二级调度程序来决定进程在后备队列和就绪队列之间的转换。其中一级调度是从后备队列中选择进程使其转换为就绪态;另一级调度则是在就绪队列中选择一个执行。


本文转自cococo点点博客园博客,原文链接:http://www.cnblogs.com/coder2012/p/3204730.html,如需转载请自行联系原作者

相关文章
|
算法 Linux 数据处理
《操作系统》—— 处理机调度算法
《操作系统》—— 处理机调度算法
|
3月前
|
Linux
|
3月前
|
缓存 负载均衡 Linux
内核:进程与调度机制(笔记)
内核:进程与调度机制(笔记)
59 0
|
1月前
|
资源调度 算法 Linux
Linux进程/线程的调度机制介绍:详细解析Linux系统中进程/线程的调度优先级规则
Linux进程/线程的调度机制介绍:详细解析Linux系统中进程/线程的调度优先级规则
64 0
|
3月前
|
Linux 调度
linux中进程与cpu核的绑定
linux中进程与cpu核的绑定
67 0
|
6天前
|
算法 Linux 调度
深入理解Linux内核的进程调度机制
【4月更文挑战第17天】在多任务操作系统中,进程调度是核心功能之一,它决定了处理机资源的分配。本文旨在剖析Linux操作系统内核的进程调度机制,详细讨论其调度策略、调度算法及实现原理,并探讨了其对系统性能的影响。通过分析CFS(完全公平调度器)和实时调度策略,揭示了Linux如何在保证响应速度与公平性之间取得平衡。文章还将评估最新的调度技术趋势,如容器化和云计算环境下的调度优化。
|
11天前
|
算法 Linux 调度
深度解析:Linux内核的进程调度机制
【4月更文挑战第12天】 在多任务操作系统如Linux中,进程调度机制是系统的核心组成部分之一,它决定了处理器资源如何分配给多个竞争的进程。本文深入探讨了Linux内核中的进程调度策略和相关算法,包括其设计哲学、实现原理及对系统性能的影响。通过分析进程调度器的工作原理,我们能够理解操作系统如何平衡效率、公平性和响应性,进而优化系统表现和用户体验。
19 3
|
15天前
|
资源调度 分布式计算 算法
【Hadoop Yarn】Hadoop Yarn 基于优先级的调度算法
【4月更文挑战第7天】【Hadoop Yarn】Hadoop Yarn 基于优先级的调度算法
|
2月前
|
弹性计算 负载均衡 算法
负载均衡调度算法介绍
介绍负载均衡调度算法
86 8
|
2月前
|
存储 Linux 调度
进程优先级与进程调度
进程优先级与进程调度
进程优先级与进程调度

热门文章

最新文章