进程状态转换、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点点 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
转载自:cococo点点 http://www.cnblogs.com/coder2012

时间: 2024-10-27 02:05:02

进程状态转换、CPU调度算法的相关文章

TASK_KILLABLE:Linux 中的新进程状态【转】

转自:https://www.ibm.com/developerworks/cn/linux/l-task-killable/index.html 新的睡眠状态允许 TASK_UNINTERRUPTIBLE 响应致命信号 Linux kernel 2.6.25 引入了一种新的进程状态,名为 TASK_KILLABLE,用于将进程置为睡眠状态,它可以替代有效但可能无法终止的 TASK_UNINTERRUPTIBLE 进程状态,以及易于唤醒但更加安全的 TASK_INTERRUPTIBLE 进程状态

操作系统概念学习笔记 10 CPU调度

操作系统概念学习笔记 10 CPU调度 多道程序操作系统的基础.通过在进程之间切换CPU,操作系统可以提高计算机的吞吐率. 对于单处理器系统,每次只允许一个进程运行:任何其他进程必须等待,直到CPU空闲能被调度为止. 多道程序的目标是在任何时候都有某些进程在运行,以使CPU的使用率最大化.多道程序的思想较为简单,当一个进程必须等待时,操作系统会从该进程拿走CPU的使用权,而将CPU交给其他进程. CPU-I/O 区间周期 CPU的成功调度依赖于进程的如下属性: 进程执行由CPU执行周期和I/O等

基于多核CPU的系统架构

自UTM产品诞生到现在,其技术已经从最初的以防火墙.入侵防御.防病毒的集成技术发展至以防火墙.入侵防御.防病毒.URL过滤.VPN.流量管理为主的集成技术.UTM市场规模在2010年达到约8.5亿人民币,有20家以上的厂商提供UTM产品,越来越多的用户开始选择UTM,或者从防火墙升级到UTM,来为自己的网络提供更深层次.更具管理性且更全面的防御能力. 同时,我们也要看到传统的UTM概念实际上是将多种技术集成在一个盒子里,没有考虑到太多产品集成调度的问题,由此导致数据包经过二次.三次甚至多次拆包.

2010年计算机基础综合 考试大纲

2010年计算机基础综合 考试大纲 2010年计算机基础综合 考试大纲请大家支持高教正版图书! 任何组织和个人无权将其用于任何商业赢利为目的的 2010年计算机基础综合考试大纲 2010年计算机基础综合考试大纲 计算机学科专业基础综合考试涵盖数据机构.计算机组成原理.操作系统和计算机网络等学科专业基础课程.要求考生比较系统地掌握上述专业基础课程的概念.基本原理和方法,能够运用所学的基本原理和基本方法分析.判断和解决有关理论问题和实际问题. Ⅱ考试形式和试卷结构 一.试卷满分及考试时间本试卷满分为

【操作系统】2、进程管理与死锁

1.进程 所谓进程,可以认为是一个程序及其正在运行的过程.相对来说,程序是一个静态的概念,而进程是一个动态的概念,更加强调程序运行的过程和状态.一般一个进程至少要包含几个内容,即程序代码.程序处理的数据.CPU寄存器的值.堆和栈以及进程所占用的系统资源. 进程的概念所以和程序相区分,关键在于进程具有三个特性,即动态性.独立性和并发性.所谓动态性,指的是进程表示动态执行的程序,每时每刻进程的状态都是在变化的,例如CPU寄存器的值.堆栈中的数据等.所谓独立性,指的是进程和进程之间一般不会相互影响,每

Linux系统管理员的命令行工具箱目录

Linux系统管理员的命令行工具箱目录 系统管理员(sysadmins)负责日常维护生产系统和服务.其中一个关键任务就是保证功能性服务能24小时工作.为了这个,他们得很小心地计划备份方式,灾难管理策略,定时维护,安全审查,等等.和任意其他管理一样,系统管理员也有他们的必备工具.在正确的时间正确的情况下使用合适的工具,可以帮助维护操作系统的健壮,达到最小的服务中断时间和最大的运行时间. 这篇文章会介绍一些系统管理员日常活动中最常用和有效的命令行工具.如果你想推荐其他没在这里列出来的好用的工具,别忘

计算机专业笔试题

1.const char*, char const*, char*const的区别问题: Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:  把一个声明从右向左读 ? 1 char * const cp;    // ( * 读成 pointer to ) cp is a const pointer to char   ? 1 const char * p; p is a pointer to const char;   2.char类型为一个

Linux的进程调度时机(Schedule函数何时调用)

Linux在众多进程中是怎么进行调度的,这个牵涉到Linux进程调度时机的概念,由Linux内核中Schedule()的函数来决定是否要进行进程的切换,如果要切换的话,切换到哪个进程等等. Linux进程调度时机主要有: 1.进程状态转换的时刻:进程终止.进程睡眠: 2.当前进程的时间片用完时(current->counter=0): 3.设备驱动程序 4.进程从中断.异常及系统调用返回到用户态时: 时机1,进程要调用sleep()或exit()等函数进行状态转换,这些函数会主动调用调度程序进行

Linux系统性能分析工具的使用

系统性能分析工具 上面的章节介绍了影响linux性能的几个方面以及如何解决这些方面的问题,但是如何才能从系统上发现是某个方面或某几个方面出现问题了呢,这就需要使用linux系统提供的几个常用性能分析工具,下面就具体讲述这几个常用性能分析工具的使用. 1.vmstat命令 vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,很多linux发行版本都默认安装了此命令工具,利用vmstat命令可以对操作系统的内存信息.进程状态.CPU活动等进行监视,不足之处是无法