首页 > 代码库 > 进程与进程调度优先

进程与进程调度优先

这里先说一下进程:

  进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。——百度百科


  我们不妨把进程当做一个单元,这个单元有很多很多的属性,当然每个进程肯定是有优先级的,进程的优先级是根据一定算法来的,计算机按进程的性质或其长度,或是按作业的来源等,指定其优先级。

每个进程都有相应的优先级,优先级决定它何时运行和接收多少CPU时间。最终的优先级共32级,是从0 到31的数值,称为基本优先级别(Base Priority Level)。系统按照不同的优先级调度进程的运行,0-15 级是普通优先级,进程的优先级可以动态变化,高优先级进程优先运行,只有高优先级进程不运行时,才调度低优先级进程运行,优先级相同的进程按照时间片轮流运16-31级是实时优先级,实时优先级与普通优先级的最大区别在于实时优先级中相同优先级进程的运行不按照时间片轮转,而是先运行的进程就先控制CPU,如果它不主动放弃控制,同级或低优先级的进程就无法运行。

 

  进程分为3个状态:就绪状态(Ready),进程已获得除处理器外的所需资源,等待分配处理器资源,只要分配了处理器进程就可执行;运行状态(Running),进程占用处理器资源,处于此状态的进程的数目小于等于处理器的数目;阻塞状态(Blocked),由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行,该事件发生前即使把处理器资源分配给该进程,也无法运行。

  

  3个状态根据一定的机制和触发条件可以互相切换。

  

  计算机把所有就绪状态的进程放在一个就绪队列里,当我们的处理机完成一项处理准备进行下一项处理是,这里就会用调度机制来调度下一个进程进入处理机。

  

  那么计算机是根据什么样的机制或者说是算法来去调度进程进入处理机呢(调度的算法多种多样,根据不同的需求采取不同的方法,我想说说比较有代表性的)?

  

  在批处理系统中,用的比较多的是先进先出算法(FIFO,First In First Out)和短进程优先算法(SJF,Shortest Job First)。分时系统中,用的比较多的是时间片轮转算法(RR,Round Robin)。算法的具体执行过程自行百度。

 

 这些算法会根据自己的算法特性给就绪队列中的进程分配优先级,这就是我们说的进程调度优先级。这些算法基于进程的优先级,再根据自己的算法特性做适当的调试。

  这样,在不同需求的场合中,我们采取不同的调度方法来达到我们想要的结果。


本文出自 “sevenot” 博客,请务必保留此出处http://sevenot.blog.51cto.com/12398291/1945500

进程与进程调度优先