操作系统实验指导书14.pdf

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统实验指导书14

操 作 系 统 实 验 指 导 书 信息工程学院 计算机系 实验报告要求 实验报告应包含以下内容: (1)实验题目 (2 )实验目的 (3 )实验环境 (4 )实验内容 (5 )实验步骤 (6 )出现的问题及对问题的解决方案 (7 )实验结果与结果分析 (包括运行界面截图、结果界面截图等) (8 )实验总结 实验1. 进程调度算法 1 实验目的 1. 掌握Linux2.6 调度算法的原理与实现。 2. 能够根据要求修改Linux2.6 调度算法。 3. 对Linux 核心进行编译。 4. 通过实验进一步熟悉操作系统的原理。 2 实验学时 2 学时 3 实验内容 首先了解Linux 系统的进程结构和调度原理,然后把Linux2.6 的调度算法修 改成为随机调度算法。最后对修改的调度算法进行编译,并使用新内核替换老内 核。 4 Linux 调度分析 PCB 结构 V2.6 内核中,进程描述符task_struct(PCB)主要含有如下与调度有关的成员: ① policy :进程调度策略,有以下3 种类型: ·SCHED_NORMAL 非实时进程。 ·SCHED_FIFO 实时进程,采用先进先出的调度算法。 ·SCHED_RR 实时进程,采用轮转法。 ② rt_priority :实时进程的优先级。MAX_RT_PRIO 定义为 100,故其 rt_priority 范围为0~99,且不参与优先级计算。 ③ static_prio:非实时进程静态优先级。由nice 值转换而来,nice 值为-20~ 19,公式static_prio=MAX_RT_PRIO+nice-20,故其范围为100~139。 ④ sleep_avg:进程平均等待时间。相当于进程等待时间与运行时间的差值, 既反映该进程的交互程度,又表示进程需要运行的紧迫程度,该值越大,算出来 的数据越小,进程的优先级就越高。 ⑤ prio :进程动态优先级。在进程运行过程中动态计算,主要影响因素为 sleep_avg 。创建时子进程继承父进程的动态优先级、唤醒等待进程时对它进行优 先级修正、时钟中断中重新计算进程优先级并进入相应队列、负载平衡/修改nice 值/修改等待策略(setscheduler())都有可能改变进程动态优先级。 1 ⑥ prio_array_t*array :进程优先级数组。以进程优先级为序号排列。 ⑦ time_slice :进程时间片余额。进程默认时间片与static_prio 有关,内核 将 100~139 优先级映射为800ms~5ms 的时间片区间。 ⑧ load_weight :平衡负载用的权重。解决可运行队列出现的负载不均现象。 ⑨ CONFIG_PREEMPT :内核可剥夺编译选项,当该开关开启时,v2.6 内 核将会在更多内核安全点上检测TIF_NEED_RESCHED 位,从而让刚被唤醒的 高优先级进程减少延迟而尽快获得CPU 运行。 运行队列 Linux2.6 的调度算法称为Ο(1)算法,不论就绪进程与CPU 的个数多少,调 度程序的调度开销总是恒定的常数。每个CPU 都有一个运行队列(runqueue),它是 给定CPU 上的可执行进程的链表,每个就绪进程都唯一归属于一个运行队列。 此外,运行队列中还包含每个CPU 的调度信息,运行队列的定义如下: struct runqueue{ spinlock_t lock; /*本CPU 上的运行队列自旋锁*/ unsigned long nr_runni

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档