问题描述
- 关于进程间的三种状态的转移 能不能结合具体的程序实例说明一下
- running stateready statewaiting state这三种不同的状态之间的相互转换,能不能结合具体的程序实例说明一下 比如编译器等等
解决方案
运行、阻塞、就绪 是进程的3种基本状态,有些划分成更细的则分成4个状态(运行、就绪、睡眠、阻塞)
就以楼主分的这3种基本状态来解释:
运行态:进程正在执行时的状态
阻塞态:进程由于需要进行的IO操作,不得不等待其他进程IO或者某个IO事件完成,此时进入阻塞等待状态
就绪态:进程的资源操作已经就绪,只需操作系统调用时的状态
更细划分中,还有个睡眠态,他其实是阻塞态分出来的,他的含义是,由于用户请求,进程进入睡眠状态,等待时机满足,进程将被操作系统执行唤醒操作转为就绪状态
这些问题楼主如果有什么问题可随时问我
解决方案二:
运行态很好理解,程序正常执行
等待态,程序被阻塞
就绪态,程序万事俱备,只是因为当前运行的程序过多,不得不等下
解决方案三:
http://blog.csdn.net/evankaka/article/details/44366239
解决方案四:
http://m.blog.sina.com.cn/s/blog_3fe961ae0101lgej.html?sudaref=www.baidu.com#page=2
这个讲的比较清楚。
解决方案五:
http://www.xttblog.com/?p=177
解决方案六:
首先,你应该明白什么叫进程,它需要资源的。操作系统为它申请资源后,它就进入就绪队列,这就是就绪状态,当一个进程运行完以后轮到它执行了,就是运行状态,如果还要申请资源,如:打印机或者是内存的某个变量,就需要释放处理器,进入阻塞状态,申请到了资源又进入就绪队列,又到就绪状态,直至运行完成。我个人的理解希望对你有帮助吧!
解决方案七:
这些状态和具体的程序没有关系,和操作系统有关。
假设你的计算机只有1个cpu,那么你的计算机实际上同一个时间只能运行一个进程(的一个线程)。
程序被操作系统调度,正在运行,这个叫做运行态。
程序异步调用了某个资源,比如说读取文件,但是文件读取的结果尚未返回,此时操作系统出于性能的考虑,不能干等着,于是搁置这个程序,切换到另一个程序执行,这个叫做等待态。
当然,你的程序一直都不需要读写文件、网络等需要延迟的操作,也不能一直老让这个程序执行,操作系统会主动剥夺这个进程的执行,转而执行另一个,或者说你的程序在等待态下,异步资源的调用已经有返回了,有了继续执行的条件了。此时程序就是就绪态。