2012年(9)
分类: LINUX
2012-05-29 14:38:11
看过操作系统的人应该都知道的一个概念.进程..
先提几个概念.就绪队列 阻塞队列,调度程序.
对多道程序设计的操作系统来说,进程在内存中有三个大体状态.就绪态,阻塞态和执行态. 进程创建好的状态时就绪态.多道程序设计要在一段时间内执行多个程序.所以所有的就绪态的进程组成一个就绪队列(一般是链式队列).同理,阻塞队列也是这样来的.进程状态之间的转换后面会提到.
调度程序就是从就绪队列中选择一个,让他执行.
进程通俗了理解就是运行中的程序,
进程和程序的区别:
1, 进程是动态的.程序是静态的,就是在内存或者外存中的一堆代码和数据.
2, 进程是动态的.
3,进程有自己的进程控制块.
4,进程大了来分有三个状态,程序就只是存在那里而已.
操作系统载入进程并为其分配PCB(进程控制块 Process Control Block)运行所需要的资源.然后把进程插入就绪队列中.进程状态从创建状态转为活动就绪态.若是分配运行时所需资源时没有分配成功(例如主存空间不够了).则进程状态被转换成静止就绪态.
进程之间详细状态以及其转换.进程状态大体来分的三种状态本文前面已经说过,在细分的话.就有:活动就绪态,静止就绪态,活动阻塞态,静止阻塞态. 执行态,创建态,终止态. 两种就绪态都不能直接到阻塞态.任何一种阻塞态不能直接到执行态.两种静止状态都是要转换成该状态是没有申请到空间.释放了空间就可以转换为对应的活动态.执行态若是遇到异常,等待某个正在占用的资源,或者等待某个程序的回应时等等则转换为阻塞态.等到了则被唤醒,进入就绪队列.
就绪态转换成执行态.若是就绪队列中的某个进程被调度程序选中了,则修改其PCB中的调度位(说明不需要调度了,调度程序通过这一位来选择程序).
很多时候一个时钟周期不能执行完一个进程.CPU执行了一个时间片后把断点保存到PCB 中的寄存器中.
进程的删除.删除PCB块并把资源还给操作系统.进程的创建也是创建PCB块并分配资源.进程删除时候,若是进程在就绪队列中并没有子孙进程,则删除PSB块,归还资源.若是进程在执行,则修改调度位,调度程序重新调度.若是有子孙进程,则先等待子孙进程退出然后删除PCB,归还资源给系统或者父进程.