《计算机操作系统原理-Linux实例分析》课件第2章.pptVIP

  • 2
  • 0
  • 约4.54万字
  • 约 289页
  • 2025-08-21 发布于广东
  • 举报

《计算机操作系统原理-Linux实例分析》课件第2章.ppt

(2)时间片轮转法。对某个运行中的进程,当它的时间片用完时,系统将停止它的运行并把处理机分配给其他进程。

Linux操作系统支持多任务、多用户、多处理器。进程调度是所有支持多任务操作系统的关键部分,Linux操作系统具有一个高效的基于优先级的进程调度程序。2003年正式发布的2.6系列内核,相对2.4系列内核有很大的改进,特别在进程管理方面,2.6内核增加了对可抢占内核的支持,改进了进程调度算法。2.就绪进程队列

在Linux2.4内核中,就绪进程队列是一个全局数据结构,所有的处理器共享同一个队列。调度程序对它的所有操作都会因全局自旋锁而导致系统各个处理机之间的等待,使得就绪队列成为一个明显的瓶颈。2.6内核重新为每个CPU设计了数据结构,每个处理器都维护一个自己的就绪队列,这样就避免了2.4内核的性能瓶颈。每个CPU的就绪进程队列由一个structrunqueue结构描述,其中最关键的子结构是优先级就绪数组。每个runqueue包含两个优先级就绪数组:active数组和expired数组。active数组指向时间片没有用完、当前可被调度的就绪进程;expired数组指向时间片已用完的就绪进程。Active、expired数组示例如图2.22所示。描述优先级就绪数组的数据结构是prio_array_t,定义为:

structprio_array{

intnr_active; /*本进程组中的进程数*/

unsignedlongbitmap[BITMAP_SIZE]; /*加速以上HASH表访问的位图*/

structlist_headqueue[MAX_PRIO]; /*以优先级为索引的HASH表*/

};图2.22active、expired数组示例prio_array中包含一个就绪队列数组,数组的索引是进程的优先级(共140级,详见下面进程静态优先级“static_prio”的说明),相同优先级的进程放置在相应数组元素的链表queue中。调度时直接给出就绪队列active中具有最高优先级的链表中的第一项作为候选进程,而优先级的计算过程则分布到各个进程的执行过程中进行。此外,为了加速寻找存在就绪进程的链表,prio_array还包含一个优先级位图(bitmap),来对应每一个优先级链表,如果该优先级链表非空,则对应位为1,否则为0,用于快速定位优先级最高的进程。bitmap所有位的初始状态都是0,当一个优先级为N的进程变为task_running时,bitmap中对应的位N置1。此后,内核可以通过调用sched_find_first_bit()函数快速定位第一个非空的就绪进程链表。

prio_array还包含一个nr_active变量用于记录该优先级就绪数组中进程的数目。Runqueue结构中另两个重要的成员变量是best_expired_prio和expired_timestamp。前者记录expired就绪进程组中的最高优先级,后者用来表征expired中就绪进程的最长等待时间。

active中的进程一旦用完了自己的时间片,就被转移到expired中,并设置好新的初始时间片;而当active为空时,则表示当前所有进程的时间片都消耗完了,此时,active和expired进行一次对调,重新开始下一轮的时间片递减过程。3.task_struct结构的相关项

(1)?timestamp:进程发生调度事件的时间(单位是nanosecond)。包括以下几类:

●被唤醒的时间(在activate_task()中设置);

●被切换下来的时间(schedule());

●被切换上去的时间(schedule())。

从这个值与当前时间的差值中可以分别获得“在就绪队列中等待运行的时长”、“运行时长”等与优先级计算相关的信息(见“优先级计算方法”)。系统的时间是以nanosecond

(十亿分之一秒)为单位的,但这一数值粒度过细,大部分核心应用仅能取得它的绝对值,感知不到它的精度。(2)?intstatic_prio:静态优先级,与Linux2.4的nice值意义相同,但转换到与prio相同的取值区间。nice值沿用Linux的传统,在-20到19之间变动,数值越大,进程的优先级越小。nice是用户可维护的,但仅影响非实时进程的优先级。Linux2.6内核中不再存储nice值,而存储static_prio值。进程初始时间片的大小仅决定于进程的静态优先级,这一点不论是实时进程还是非实时进程都一样,不过实时进程的static_pri

文档评论(0)

1亿VIP精品文档

相关文档