- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验小组《OS操作系统实验三》----作业调度系统
《Linux操作系统实验三》:
《作业调度系统》实现文档Linux实验小组
2005年7月3日星期日 王 克(组长) 杜可斌 张 劲 徐 瑞
目录:
1 概述(实验目的) 2
2 功能及设计 2
2.1 主要功能 2
2.2 信号和命令键 2
2.3 作业调度函数处理流程图 3
2.4 主函数运行流程图 4
2.5 任务的调试策略 5
3 程序文件说明及源代码 5
3.1 文件说明 5
3.2 主要函数说明 5
3.3 主要数据结构说明 6
4 简易测试 7
4.1 编译运行测试 7
4.2 测试总结 8
5 总结及感想 8
5.1 王克 8
5.2 杜可斌 8
5.3 张劲 9
5.4 徐瑞 9
6 附录 9
6.1 参考资料 9
6.2 源代码及详细注释(见src文件夹下) 9
概述(实验目的)
本实验的目的主要有:
理解OS中调度的概念和调度算法。
学习Linux下进程控制以及进程之间通信的知识
理解在OS中作业是如何被调度的,如何协调和控制各作业对CPU的使用
功能及设计
主要功能
实现一个多进程的作业控制系统,用户可以完成如下操作:
提交自己的作业,让系统调度运行;
将已提交的作业移出;
查看作业的状态。
条件假设:为了简便起见,假设每个用户最多能提交1个作业,系统中只有2000个用户。
使用方法:
scheduler 进行作业的调度
enq 将作业入队
deq 将提交的作业出队
stat 查看作业状态
信号和命令键
SIGSTOP: 停止(stopped)进程的执行.它和terminate以及interrupt的区别:该进程还未结束, 只是暂停执行. 本信号不能被阻塞, 处理或忽略让一个停止(stopped)的进程继续执行. 本信号不能被阻塞. 可以用一个handler来让程序在由stopped状态变为继续执行时完成特定的子进程结束时, 父进程会收到这个信号虚拟时钟信号. 类似于SIGALRM, 但是计算的是该进程占用的CPU时间
主函数运行流程图
任务的调试策略
采用多级反馈的循环赛调度策略。每个作业有其动态的优先级,在用完分配的时间片后,可以被优先级更高的作业抢占运行。等待队列中的作业等待时间越长,其优先级越高。
为了区分作业的重要程度,每个作业都设置有优先级。优先级分为 0,1,2,3 四个等级,3 为最高。每个作业都具有两种优先级:
初始优先级(initial priority),在作业提交时指定,将保持不变,直至作业结束。
当前优先级(current priority),由 scheduler更新,用以调度。scheduler总是选择当前优先级最高的那个作业来执行。
作业当前优先级的更新主要依赖以下两种情况:
一个作业在就绪队列中等待了 100毫秒,将它的当前优先级加 1(最高为 3);
若当前运行的作业时间片到,使当前执行的进程停止执行(抢占式多任务),将其放入就绪队列中,它的当前优先级也恢复为初始优先级。 通过这样的反馈处理,使得每个作业都有执行的机会,避免了低优先级的作业迟迟不能执行而“饿死”,而高优先级的作业将不断执行。
同时, 简单起见,我们假设作业只有两种状态:
READY,就绪状态,在就绪队列(ready queue)中等待;
RUNNING,运行状态,当前正在执行。
程序文件说明及源代码
文件说明
文件名 说明 1 Job.h 全部定义的头文件 2 Job.c 调试程序,主程序 3 Deq.c 作业出队命令 4 Enq.c 作业入队命令 5 Stat.c 作业状态查看命令 Error.c 错误处理函数文件 Makefile MakeFile文件,使用make命令编译 主要函数说明
函数名 说明 1 void schedule(); 作业调度函数 2 Void sig_handler(int sig,siginfo_t *info,void *notused); 信号处理函数 3 int allocjid(); 分配作业ID 4 void do_enq(struct jobinfo *newjob,struct jobcmd enqcmd); 作业入队函数 5 void do_deq(struct jobcmd deqcmd); 作业出队函数 6 void do_stat(struct jobcmd statcmd); 打印作业信息函数 7 void updateall(); 更新所有作业的状态
您可能关注的文档
- CN201310489476.1-用于电子元器件一体成型技术的环氧胶黏剂及其制备方法.pdf
- CN201310490948.5-一种降血压海参口服液的制造方法.pdf
- CN201310490941.3-一种增强免疫力的海参口服液的制造方法.pdf
- CN201310490956.X-一种补血润燥的海参胶囊的制造方法.pdf
- CN201310490959.3-一种固本培元的海参胶囊的制造方法.pdf
- CN201310490963.X-一种海参营养胶囊的制造方法.pdf
- CN201310490969.7-一种海参胶囊的制造方法.pdf
- CN201310490961.0-一种滋阴健阳的海参胶囊的制造方法.pdf
- CN201310490951.7-一种降血糖海参口服液的制造方法.pdf
- CN201310491362.0-一种增加伤口愈合速度的海参咀嚼片的制造方法.pdf
最近下载
- 2024年银行考试-授信业务资格笔试参考题库含答案.docx
- 2023-2024学年重庆市高二上册数学期末试卷1(人教版).docx VIP
- 园林景观施工技术交底记录大全.docx
- 期末周末作业题(含解析)2024-2025学年人教新目标(Go for it)版英语八年级上册.docx VIP
- 2024山西省农商银行招聘1340人笔试模拟试题及答案解析.docx
- 人教版2024-2025学年度第一学期七年级期末数学试卷.docx
- 可信数据空间建设及应用参考指南1.0.docx
- 2024江苏高考政治真题(原卷版).docx
- 三年级数学上册专项练习(拔高题)北师大版.pdf
- Rhino5.0&KeyShot产品设计实例教程(第2版).ppt VIP
文档评论(0)