分类: LINUX
2011-04-13 15:45:13
进程的一些重要概念
最近开始学习进程和线程,一些重要的概念老是会迷惑,比如挂起、阻塞等一些重要的概念。在网上找了些资料,也参考了一些书籍,顺便做下笔迹。
进程的组成
程序: 描述了进程所要完成的功能。 是进程存在的物质基础。
就绪状态
进程以获得了除CPU之外的所有资源,处于就绪态的进程有多,它们存放在就绪队列中。
执行状态
处于就绪状态的进程,只要获得CPU,就可以执行。
阻塞(pend)
进程因发生某个事件(请求IO、申请缓冲空间)而暂停执行的状态。即进程的执行受到阻塞(等待、睡眠)。此时即使CPU空闲,进程也无法使用。
阻塞是一种能够被动行为,是在等待事件OR资源时任务的表现,你不知道它什么时候被pend,也就不能确切的它什么时候恢复。
阻塞会使任务释放CPU,让其他任务可以运行。
挂起(suspend)
挂起是主动的行为,因此恢复也应该要主动完成。比如使用pause函数时,使进程挂起直到捕捉到一个信号。挂起是不释放CPU的,如果任务优先级高就永远轮不到其他任务运行(但是这是不可能的,因为每发生一次时钟Tick也就是时钟中断,进程的优先级就会降低一次。)
一些关于阻塞和挂起的理解
理解一:挂起是一种主动行为,因此恢复也应该要主动完成,而阻塞则是一种被动行为,是在等待事件或资源时任务的表现,你不知道他什么时候被阻塞(pend),也就不能确切的知道他什么时候恢复阻塞。而且挂起队列在操作系统里可以看成一个,而阻塞队列则是不同的事件或资源(如信号量)就有自己的队列。
参考网址
http://www.cublog.cn/u3/102267/showart_2239495.html
水平有限,如果有错误的地方,请指正,thanks
cjok.liao@gmail.com