- 102
- 1
- 约3.37千字
- 约 11页
- 2022-06-30 发布于上海
- 举报
上海应用技术学院 程序设计语言实验报告
实验名称 时间片轮转调度 实验序号 实验五 实验日期姓 名 学 号 指导教师
专 业 计算机科学与技术 班 级 成 绩
一、实验目的及要求
为 EOS 调度器添加时间片轮转调度算法,了解常用调度算法。
二、实验环境
Windows XP;Tevation OS Lab。
三、实验内容
准备实验
按照下面的步骤准备实验:
启动 OS Lab。
新建一个 EOS Kernel 项目。如图 1.
图 1
在“项目管理器”窗口中双击 Floppy.img 文件,使用 FloppyImageEditor 工具打开此
软盘镜像。如图 2。
图 2
将本实验文件夹中的 multi.exe 文件添加到软盘镜像的根目录中。如图 3。
图 3
点击 FloppyImageEditor 工具栏上的保存按钮,关闭该工具。
阅读 multi.exe 的源代码
在本实验文件夹中找到 multi.exe 的源代码文件 multi.c,使用 OS Lab 打开此文件,仔细阅读此文件中的源代码。在阅读的过程中需要注意下面的问题:
在 main 函数中使用 ThreadFunction 线程函数创建了 23 个新线程。这样在该应用程序
创建的进程中,算上主线程后就会包括 24 个线程。
主线程会在控制台的第 0 行循环输出计数,其它的线程也会在控制台的对应行循环输出计数,这样就可以很方便的观察各个线程执行的情况。
各个线程在向控制台输出时使用“关中断”和“开中断”进行了互斥。原则上在应用程
序中是不能使用“关中断”和“开中断”指令的,这里是为了保证各个线程不进行让权等待,保证实验的效果。
为了保证实验效果,所有的线程(包括主线程)都是死循环。也就是说所有的线程都不
会结束执行。
执行 multi.exe
按照下面的步骤执行 multi.exe,查看其运行效果:
按 F7 生成在 3.1 中创建的 EOS Kernel 项目。如图 4。
图 4
按 F5 启动调试。如图 5。
图 5
在 EOS 控制台中输入“A:\multi.exe”后按回车。
在 multi.exe 开始执行后,观察其执行结果(如图 6)会发现 multi.exe 的执行没有体现其源代码的设计意图。通过之前对 multi.c 的分析,multi 进程中的 24 个线程应该在控制台对应的行中不停地输出字符。而这里只有主线程在运行,其它线程都没有运行。
图 6
造成上述现象的原因是什么呢?因为进程内的所有线程在被创建时都采用了默认优先级8,这就造成这 24 个线程的优先级都是相同的。而此时 EOS 只实现了基于优先级的抢先式调度算法,还没有实现时间片轮转调度算法,所以至始至终都只有主线程在运行,其它具有相同优先级的线程都没有运行。
为 EOS 添加时间片轮转调度算法
要求
修改 EOS 内核项目 ps/sched.c 文件中的 PspRoundRobin 函数(第 335 行),在其中实现时间片轮转调度算法。如图 7。
图 7
测试方法
代码修改完毕后,按 F7 生成 EOS 内核项目。如图 8。
图 8
按 F5 启动调试。如图 9。
图 9
在 EOS 控制台中输入“A:\multi.exe”后按回车。应能看到 24 个线程并发执行的效果,如图 10。
图 10
图 2:进行时间片轮转调度时 multi.exe 的执行效果
PspRoundRobin
函数开始执行
否 被中断线程仍处于运行状态?
是
被中断线程的时间片减少1
否 被中断线程的剩余时间片等于0?
是
重新为被中断线程分配时间片
存在和被中断
否 线程优先级相
同的就绪线程?
是
将被中断线程转入就绪状态
函数返回
图 3:PspRoundRobin 函数的流程图
提示
在 EOS 操作系统运行过程中,TCB 指针变量 PspCurrentThread 始终指向当前线程。所以, 当发生中断时,PspCurrentThread 就指向被中断的线程。PspCurrentThread 的定义参见ps/sched.c 的第 44 行。TCB 结构体定义参见 ps/psp.h 的第 58 行。
PspRoundRobin 函数在被调用时,被中断线程(PspCurrentThread 指向的线程)的状态可
能已经改变(例如从运行状态转变为等待状态)。所以要先判断一下被中断线程是否仍处于运行状态, 只有当被中断线程处于运行状态时才能进行时间片轮转调度。在PspRoundRobin 中的第一行代码可以如下:
if (NULL != PspCurrentThread Running == PspCurrentThread-State) {
// 在此实现时间片轮转调度算法
}
线程状态的定义可以参见
您可能关注的文档
最近下载
- 2025年衢州国企水处理岗位考试模拟试卷及答案.docx VIP
- 基于微信小程序的实验室管理系统的设计与实现.docx VIP
- 2024届高考英语二轮专题复习读后续写 :巧妙结尾之情景交融 借物抒情 课件 (共14张PPT).pptx VIP
- 谐振变换器的性能分析与 GaN 器件应用-高圣伟-天津工业大学.pdf VIP
- 2020-2023年广西公务员考试《申论》真题(B卷)及参考答案.doc VIP
- EMI 滤波器共模电感设计的关键影响因素分析-林苏斌-福州大学.pdf VIP
- 西门子SINAMICS DCM参考手册2011(中文).pdf VIP
- 客舱乘务员手册.pdf
- 河北省单招考试十类真题及答案.doc
- 《种子检验技术》全套教学课件(共11章).pptx
原创力文档

文档评论(0)