nimo_096
2015-07-19 05:23
采纳率: 50%
浏览 2.4k
已采纳

关于进程间的三种状态的转移 能不能结合具体的程序实例说明一下

running state,ready state,waiting state,这三种不同的状态之间的相互转换,能不能结合具体的程序实例说明一下 比如编译器等等

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • 欧阳春晖 2015-07-20 07:22
    已采纳

    运行、阻塞、就绪 是进程的3种基本状态,有些划分成更细的则分成4个状态(运行、就绪、睡眠、阻塞)
    就以楼主分的这3种基本状态来解释:
    运行态:进程正在执行时的状态
    阻塞态:进程由于需要进行的IO操作,不得不等待其他进程IO或者某个IO事件完成,此时进入阻塞等待状态
    就绪态:进程的资源操作已经就绪,只需操作系统调用时的状态

    更细划分中,还有个睡眠态,他其实是阻塞态分出来的,他的含义是,由于用户请求,进程进入睡眠状态,等待时机满足,进程将被操作系统执行唤醒操作转为就绪状态
    这些问题楼主如果有什么问题可随时问我

    已采纳该答案
    打赏 评论
  • threenewbee 2015-07-19 05:28

    这些状态和具体的程序没有关系,和操作系统有关。
    假设你的计算机只有1个cpu,那么你的计算机实际上同一个时间只能运行一个进程(的一个线程)。

    程序被操作系统调度,正在运行,这个叫做运行态。
    程序异步调用了某个资源,比如说读取文件,但是文件读取的结果尚未返回,此时操作系统出于性能的考虑,不能干等着,于是搁置这个程序,切换到另一个程序执行,这个叫做等待态。
    当然,你的程序一直都不需要读写文件、网络等需要延迟的操作,也不能一直老让这个程序执行,操作系统会主动剥夺这个进程的执行,转而执行另一个,或者说你的程序在等待态下,异步资源的调用已经有返回了,有了继续执行的条件了。此时程序就是就绪态。

    打赏 评论
  • threenewbee 2015-07-19 05:30

    运行态很好理解,程序正常执行
    等待态,程序被阻塞
    就绪态,程序万事俱备,只是因为当前运行的程序过多,不得不等下

    打赏 评论
  • Evankaka 2015-07-19 05:51
    打赏 评论
  • oyljerry 2015-07-19 06:01
    打赏 评论
  • 业余草 2015-07-19 07:11
    打赏 评论
  • Angry_Ants 2015-07-19 15:45

    首先,你应该明白什么叫进程,它需要资源的。操作系统为它申请资源后,它就进入就绪队列,这就是就绪状态,当一个进程运行完以后轮到它执行了,就是运行状态,如果还要申请资源,如:打印机或者是内存的某个变量,就需要释放处理器,进入阻塞状态,申请到了资源又进入就绪队列,又到就绪状态,直至运行完成。我个人的理解希望对你有帮助吧!

    打赏 评论

相关推荐 更多相似问题