2023年操作系统实验报告二.docx
《2023年操作系统实验报告二.docx》由会员分享,可在线阅读,更多相关《2023年操作系统实验报告二.docx(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、重庆大学学生实验报告实验课程名称操作系统原理开课实验室DS1501学院软件学院年级2 023专业班 软件工程2班_学生姓名 胡其友 学号 2 023 1802开课时间 20 2 3 至 2023 学年第二学期总 成绩洪明坚洪明坚教师署名软件学院制操作系统原理实验报告开课实验室:日学院软件学院年级、专业、班202 3级软件工 程2班姓名胡其友成绩课程 名称操作系统原理实验项目名称指导教师洪明坚教 师 评 语教师署名:洪明坚年月日1 .实验目的: 随机生成3组非负整数列表,然后创建3个线程,分别用3种不同的排序算法对列表进行 排序 如何生成随机数?, S t cpl: v oi d s rand(
2、u int3 2_ t seed), seed是随机数的种子,建议用实验(一)中实现的系统调用“ t i m e t ime(time_t *loc)”, srand (time (NULL) S t ep 2 :多次调用%int3 2 _t r a ndom() ”获得随机数-进入图形模式,沿垂直方向把屏幕提成3个区域,每个排序线程用一个区域,动态 显示排序过程,运营效果如这里所示。如何进入图形模式?-Slepl:调用1 islGraphicsMod e s ()输出系统支持的图形模式该函数必须在文本模式下运营,才干看到结果-S t e p2:选择一个模式,调用 ini tGrap h ic
3、 s ( i nt mode)进 入图形模式如何获取屏幕的分辨率?- 水平:g_mib. XRes o lutio n垂直:g mib. YRcs o 1 utio n如何打点?-void s etPixel (i n t x , i n t y, COL ORREF cr);(x, y)是点坐标 cr是颜色用宏定义RGB( r , g, b)生成,其中r,g, b的 取值范围都是0 2 5 5 如何从 c r 中取出 r, g, b?用 g etX Value (c r ), 其中 X = R,G, B如何退出图形模式?- i n t exi t Graph i c s ();2.实验内容:
4、 实现静态优先级调度算法 修改t ask. c中的函数s c h edu 1 e,实现静态优先级调度 在“st r u c t tc b ”中增长线程的静态优先级属性n i ce 一定要加在ks tack字段之后! ! ! !, 在函数sy s _tas k c rea t e中初始化nice=0 nice是整数,取值范围一NZERO, NZEROT,值越小优先级越高 #define NZERO 20,函数s c hodu 1 e被调用时,CPU的中断已经被关闭线程0 (task。,它的ID=0)是一个特殊的线程,仅当没有其他可运营的线程时,才干调 度task 0运营!实现静态优先级调度算法(
5、续)增长系统调用, int getpriority(int tid), 成功返回(n ice+NZERO),失败返回T, i nt set p r i ori ty (in t tid, i n t pr i o ) 把线程ti d的ni c e设为(pri o -NZERO) prio 必须在0,2*NZERO- 1 成功返回0,失败返回-1 注意 假如tid=o,表达获取/设立当前线程的ni c e值,而不是t askO! 在调用函数“s truct tcb *get_task( i nt t i d) ” 获取 struc t tcb 指针时,一定要 用 s av e_f 1 ags_c
6、 1 i / restore_flag s 保护起来 u i nt 3 2 t flags; s t rue t tcb *tsk: s a v e_f 1 a g s cl i (f 1 a g s ); t s k = ge t _ta s k(tid); r e st o re_flag s (f 1 ag s );3.实验环节: 实现动态优先级调度算法 在“struct tcb”中,再增长两个属性 est c pu:表达线程最近使用了多少C P U时间 在函数 sy s t a s k crcate 中初始化 estcpu=0, 每次定期器中断时:g_ t a s k_run n in
7、gestcpu+, task。除外!每秒钟为所有线程(运营、就绪和等待)更新一次, pri o ri t y:表达线程的动态优先级, p ri o rit y = PRI_USER_MAX (e s tep u /4) ( n ice*2) 取值范围从 0 (PRIJJSE R_MIN)至ij 127 (PRI_USER_UAX)值越大优先级越高 每次调度前,先计算所有线程的P rior i t y ,再调度 实现动态优先级调度算法(续)-增长一个全局属性 g_ 1 oad_avg:表达系统的平均负荷-初值为零,每秒钟更新一次-g _ 1 o ad_a v g=(5 9 / 6 0 ) Xg_
8、l o a d _avg+ (1/60) X n r eady n r cady表达处在就绪状态的线程个数,ta s kO除外!属性计算-goad_avg和线程的e st epu:在定期器的中断解决函数(ISR)中计算 文献tim e r. c中的函数isr_t i me r如何每隔一秒计算一次?-(g_ t imer ti c ks % H Z) =0,表达1秒钟已通过去 否则,还不到1秒钟函数isr_t i mer被调用时,CPU的中断已经被关闭-线程的priorit y :在函数sche d u 1 e中,调度之前计算,然后基于p r i o r ity 进行调度效率问题-nice ,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 操作系统 实验 报告
限制150内