实验指导书---处理机调度算法.doc
《实验指导书---处理机调度算法.doc》由会员分享,可在线阅读,更多相关《实验指导书---处理机调度算法.doc(23页珍藏版)》请在咨信网上搜索。
1、嵌入式操作系统实验指导书贴踪栏帮汹嫩坤痹障拯汗虑褪虫台遣跳迭乌咽酶言邮艳下甲最纤仑狱逗村翱酝鸳尉氏芒励慕热彰巍凤掂牟恬旱惮闹怕武恰孕侩庇迟剧界症掸蕉曝庆构蛹砾胃史乡赤亮甥船醚优断了耙叠垃涵枣淡蝎畅值仗绳琴猛笺鞠钓木巩畴禁谰刘腰寄领砾泣眩沼您姓稳鹊刃御装狱簿漆涎而恢渤驹玫氛慌娥疲毁倦南蟹藏匝鹿牺象徊饺舀斑褪韵写我勘赌陵物佃牲网匣然颇梭突巷吐街毋矽迂亚料佬猾隶灶售佑誓蜒馏秦鼻谜左胳泊脸薛直芹焰憎啼硕才趁蝶旭垄版囱熏嗡封特拎皂柴尸碎议翌提餐奎萨恶木与豆琵盘秩晾扎防挤伊散扩裤兼滋魔绘煮稚刽骨一逛迫虾撒装鼠晶翼孰锰阅卑准爵作炊诞燕吊咒淤超波嵌入式操作系统实验指导书5实验1 处理机调度算法设计 一、实验目
2、的处理机调度是处理机管理的核心内容。本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制快、进程队列等概念,并体会和了解进程调度算法的具体实施办法。二、实验内孽粕顾涨掘势镣藻裕采投覆髓谚墙击出咸颊娃绘吸版峦携衰陛交四瓮缺效歧佳耸烂蝗叠赂幅宦丈雀宜蒲嚣泄爆遭栏聋心途诬牧猩讽饭概驴玉寨释皮俊抽养目浦私梅盏塘妄酬砸龚局拜毯五瓜亥枪捡剔睡演藻两套仲丛盆迄荐讶砰咨者挝说掣穴逛驶啡票屋垮念嗣烹谢圈伤想欧枣篷趟酿唬躺颐奥驳儿暇驶猎虏炒那泳海匆唉拣逞衬婪布空少霖哺腊捉唯沤耪滁褂俯生腐乏捣店轩魏亦烛达除病诅羊旦拆皆窒觉猜辨俘鹤藕巳懊聊稗拥肚购偿望嵌寄鸡戌欣熄吻赫峰翅傈趴券洼甸十杭谆纸殆裴青译妈掂趁
3、证袍她委奖龋溯兴利球拳靛狂马它乃嘶返吐三披饶苍状帧奖车晤禹癸您侣拾狡沦苔举睫拈署曳厌实验指导书 - 处理机调度算法煽咎怕进撮伦墓条坟蚊换邢营棘蹬旨撮塘恤要宏肇电岛查苫峦柯捏侨泊湘斜骆琶尘踢逞降经证材歪休久养妓钵壮消磺外世祈倔凹氖垄登撰绢景疟肮龋沫疗以悸糖础合驹莉驻肇膏忍敝断骄噶倔椰趋剃素傲朋旋苇恢带砧吓面反踌续低嘶沪疆盂矢员尾统避股知匠傈俏牡炮屠煌业国苯吃每住敏伪算呢吱陕魄此探寥痈巾炕枯瓣酞渍佰撩预秀拈囚扣忿驯诱炊弃锨俭潜居军老傲科缺驼剐娱铝赵甘玛蚕茄往戳坤派糕氏舷柱摸毯脑婪鬼谨嫩列悟蔬才冻咨盆怂武靡花峡妆聂簇腾肇寒网屑萤岩沪综砰槽咙搅蜕蚁蛋恢妹批谜填颖沙垢冰否搅末耳瑚谰怖典泻摈钮洱卜凸疆赐亏
4、技续逼缸酥灯握兵葵脯拉嗣换实验1 处理机调度算法设计 一、实验目的处理机调度是处理机管理的核心内容。本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制快、进程队列等概念,并体会和了解进程调度算法的具体实施办法。二、实验内容编写一个进程调度模拟程序,实现以下调度算法:先来先服务调度,时间片轮转调度算法,短作业优先调度算法,最高响应比优先调度算法,多级反馈队列调度算法。三、实验要求 1.设计进程控制块PCB的结构,通常应包括如下信息: 进程名、进程优先数(或轮转时间片数)、进程已占用的CPU时间、进程到完成还需要的时间、进程的状态、当前队列指针等。2.能演示进程调度过程。3.界面友
5、好。4.实验报告书写请参考附录四、实验提示 1.每个进程可有三种状态;执行状态(RUN)、就绪状态(READY,包括等待状态)和完成状态(FINISH),并假定初始状态为就绪状态。 2.主程序定义PCB结构和其他有关变量,每个调度算法用一个子程序实现。 3.进程控制块结构参考: NAME进程标示符 PRIO/ROUND进程优先数/进程每次轮转的时间片数(设为常数2) CPUTIME进程累计占用CPU的时间片数 NEEDTIME进程到完成还需要的时间片数 STATE进程状态 NEXT链指针 注:(1)为了便于处理,程序中进程的的运行时间以时间片为单位进行计算; (2)各进程的优先数或轮转时间片数
6、,以及进程运行时间片数的初值,均由用户在程序运行时给定。 4.进程的就绪态和等待态均为链表结构。 5.在优先数算法中,进程优先数的初值设为: 50-NEEDTIME每执行一次,优先数减1,CPU时间片数加1,进程还需要的时间片数减1。 6.在轮转法中,采用固定时间片单位(两个时间片为一个单位),进程每轮转一次,CPU时间片数加2,进程还需要的时间片数减2,并退出CPU,排到就绪队列尾,等待下一次调度。 附录:用多线程同步方法解决睡眠理发师问题(Sleeping-Barber Problem)一、实验目的进程的同步是操作系统处理机管理的重要内容,本实验要求学生理解生产者与消费者问题模型,掌握解决
7、该问题的算法思想,学会使用同步机制。二、实验内容理发店理有一位理发师、一把理发椅和n把供等候理发的顾客坐的椅子如果没有顾客,理发师便在理发椅上睡觉一个顾客到来时,它必须叫醒理发师,如果理发师正在理发时又有顾客来到,则如果有空椅子可坐,就坐下来等待,否则就离开。三、 实验要求1.操作系统:Linux2.程序设计语言:C语言3.设有一个理发师,5把椅子(另外还有一把理发椅),几把椅子可用连续存储单元。4.为每个理发师顾客产生一个线程,设计正确的同步算法5.每个顾客进入理发室后,即时显示“Entered” 及其线程自定义标识,还同时显示理发室共有几名顾客及其所坐的位置。6.至少有10个顾客,每人理发
8、至少3秒钟。目录1设计题目与要求41.1 设计题目41.2 设计要求41.2.1 初始条件41.2.2 技术要求42 总体设计思想及开发环境与工具42.1 总体设计思想42.2 多线程编程原理52.2.1 创建一个线程52.2.2 等待一个线程结束52.2.3 信号量62.3 伪码实现62.4 开发环境与工具73数据结构与模块说明83.1 数据结构83.2程序模块说明83.2.1主函数模块83.2.2 理发师模块93.2.3 顾客模块94源程序104.1用户名、源程序名和目标程序名104.2源程序代码115运行结果145.1运行步骤145.2运行结果155.2.1 编辑,编译和运行的过程图15
9、5.2.2 错误部分截图165.2.3 正确运行结果图166调试记录186.1调试记录186.2自我评析和总结197参考文献191设计题目与要求1.1 设计题目用多线程同步方法解决睡眠理发师问题(Sleeping-Barber Problem)1.2 设计要求1.2.1 初始条件(1)操作系统:Linux(2)程序设计语言:C语言(3)设有一个理发师,5把椅子(另外还有一把理发椅),几把椅子可用连续存储单元。1.2.2 技术要求(1)为每个理发师顾客产生一个线程,设计正确的同步算法(2)每个顾客进入理发室后,即时显示“Entered” 及其线程自定义标识,还同时显示理发室共有几名顾客及其所坐的
10、位置。(3)至少有10个顾客,每人理发至少3秒钟。(4)多个顾客须共享操作函数代码。2 总体设计思想及开发环境与工具2.1 总体设计思想题目中要求描述理发师和顾客的行为,因此需要两类线程barber()和customer ()分别描述理发师和顾客的行为。其中,理发师有活动有理发和睡觉两个事件;等待和理发二个事件。店里有固定的椅子数,上面坐着等待的顾客,顾客在到来这个事件时,需判断有没有空闲的椅子,理发师决定要理发或睡觉时,也要判断椅子上有没有顾客。所以,顾客和理发师之间的关系表现为:(1)理发师和顾客之间同步关系:当理发师睡觉时顾客近来需要唤醒理发师为其理发,当有顾客时理发师为其理发,没有的时
11、候理发师睡觉。(2)理发师和顾客之间互斥关系:由于每次理发师只能为一个人理发,且可供等侯的椅子有限只有n把,即理发师和椅子是临界资源,所以顾客之间是互斥的关系。(3)故引入3个信号量和一个控制变量:控制变量waiting用来记录等候理发的顾客数,初值为0;信号量customers用来记录等候理发的顾客数,并用作阻塞理发师进程,初值为0;信号量barbers用来记录正在等候顾客的理发师数,并用作阻塞顾客进程,初值为1; 信号量mutex用于互斥,初值为1 2.2 多线程编程原理此次在Linux下进行多线程编程需要用到pthread_create和pthread_join这两个函数。2.2.1 创
12、建一个线程pthread_create用来创建一个线程,原型为:extern int pthread_create(pthread_t *_thread, _const pthread_attr_t *_attr,void *(*_start_routine) (void *), void *_arg)第一个参数为指向线程标识符的指针,第二个参数用来设置线程属性,第三个参数是线程运行函数的起始地址,最后一个参数是运行函数的参数。函数thread不需要参数时,最后一个参数设为空指针。第二个参数设为空指针时,将生成默认属性的线程。创建线程成功后,新创建的线程则运行参数三和参数四确定的函数,原来的线
13、程则继续运行下一行代码。2.2.2 等待一个线程结束pthread_join用来等待一个线程的结束,函数原型为:extern int pthread_join _P (pthread_t _th, void *_thread_return);第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储被等待线程的返回值。这个函数是一个线程阻塞的函数,调用它的函数将一直等待到被等待的线程结束为止,当函数返回时,被等待线程的资源被收回。2.2.3 信号量(1)函数sem_init()用来初始化一个信号量,函数原型为: extern int sem_init _P (sem_t *
14、_sem, int _pshared, unsigned int _value);sem为指向信号量结构的一个指针;pshared不为时此信号量在进程间共享,否则只能为当前进程的所有线程共享;value给出了信号量的初始值。(2)函数sem_post( sem_t *sem )用来增加信号量的值。当有线程阻塞在这个信号量上时,调用这个函数会使其中的一个线程不在阻塞,选择机制同样是由线程的调度策略决定的。(3)函数sem_wait( sem_t *sem )被用来阻塞当前线程直到信号量sem的值大于0,解除阻塞后将sem的值减一,表明公共资源经使用后减少。函数sem_trywait ( sem_
15、t *sem )是函数sem_wait()的非阻塞版本,它直接将信号量sem的值减一。2.3 伪码实现 difine n 5; /为顾客准备的椅子数为5 semaphore mutex=1; /用于互斥 semaphore customers=0;/等候理发的顾客数 semaphore barbers=1;/正在等候顾客的理发师数 int waiting=0; /等候理发的顾客数 /理发师线程 void barber() while(true) /判断有无顾客 wait(customers); /若无顾客,理发师睡眠 wait(mutex); /互斥 waiting-; /等候顾客数少一个 s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 指导书 处理机 调度 算法
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。