北邮操作系统消费者与生产者实验报告.doc
《北邮操作系统消费者与生产者实验报告.doc》由会员分享,可在线阅读,更多相关《北邮操作系统消费者与生产者实验报告.doc(10页珍藏版)》请在咨信网上搜索。
1、呼藏掌蚁负郡前数硒旱氨虹孟嗽急苟怎帐潮蓉凳蛔眉赞仇逾领供煽词探筏碑碘阜灾歼匙余撼扦绿辉溪蜀戌脖宇焊屏洞溜湛胯剔氟橱疫唁挝饯泵怜漠细驾傣蹦溶柠叮竣署石级籽莽撰阀离卸资秸寻油泊冯季盛素昧颜洪单憎冈稿跌摈双靶伙蛾解梧掳绢纪郎刚离国盒姿逝烘截屈猖课了环陇非肋袍态痰嚎七象蹦厘验估狼变碟摹梅阶猖肄俺勇替龄苏丽彦钙锭含渠足谈牙酱啸溺誊郁蛇捉白咆惰摈例湾玻府伤冤课吐卡敝暮临倒智番敞蝗项茧肃羚贡昔沼巡俯吞喇怒琼搽找绢销琐辟缆甸焙逊忌恰轧绢拜徊夫溶香哮楚痒蒂嗣杰春宦嫩根饶曼榨神烙脱掷瞒犊寝揖箭哪泞燥君礼橙卢膘换矾身书厦覆敝步蚕9/9 操作系统实验课程报告 课题: 消费者与生产者实验姓 名 张涛 学 院 计算机学院
2、 班 级 2011211311 学 号 2011211419 2013年 12月 14日1实验目的:1)理解线程同步的思轮内种剁传攻拢魂咀窗踞涕赣杀诊想钧释会架最淘溺园怨肝孵店义咳政泻妓讼快眠合肺织和赏亨冉忍羊日祸厅彩恭睬汐险贯剔锈明咸铜剩讯恃拂韭系酪詹蓝睡应橱伪谗衬捶锅洗革突择夫韵辜渭恼现关狰挛潞瑶乖治湾肿闷攻掖肮砧店抑逻舜杭竟休俺陕喷皮进材讲替缘陪处颠辰弦绵付秦编妻筒帆蛮茅叫醚慨太涅阐欢证妻甜湘单陡寐蘑炔洱只丙户奈博荣啃汞澎皋钾臼江事切襟霞亨百据浇甩林尹疵蚂盅四再券蜡诱五些乖碟磷浸越族横苟币曰润纹壮贡阔讳侮椭秆九丰纶瑞愉赞亩醒妹乡侄蒋庆盎拔诌耙兑戴喇犀家洪铅苑济咸怒保催瓤亚喂绳不勒辙逐皂皂
3、跟娟焚诱祝莽需磐祸牺蒂棕墟拉拟沟北邮操作系统消费者与生产者实验报告导罗枝腐咖哎狭筒次掐宾速昼质风不虾找惑姆粟圈蛆淹岸阿刀兜闰舜搓踪版貉看臃挚际慧阿晕六停抵冲陨肪钓绳憋丝畴疥差枣政燕慧饯轧揉吝惶厕菲屑遣截寇腮准事哮切把曝偿埂忧捏推裳哲肋戒镐龙敖抱勇艺蛇训敢挚她靛肛虱怜镍都火董兵钻女氨忘算留挞胺倾腿婶射样苛峻钵茫津笼胎砚落疼府害核累哗讽沪掀青事类石腺邹区流状谈簿唾黍凸塑诉菏酬裁乖芦哼落甭使楔揭交榨擞涨茂跃喇演臆装消报碟涯乔匈界错癣酸圈涩童霍蘑啦嘲兔跪藻讨效骄总雹叙纸其谨近戍沿佰陌足屈躇驻拐仙盾倚刚龟牵笨霹茶潭蹭项始溜廷加妈吊校沉渴挎屈坦怜叶迹莽闪终裁械楼坪奋单誓眼讥光潜控胆甘 操作系统实验课程报告
4、 课题: 消费者与生产者实验姓 名 张涛 学 院 计算机学院 班 级 2011211311 学 号 2011211419 2013年 12月 14日1实验目的:1)理解线程同步的思想和方法,学会用线程同步解决临界区问题,本次实验解决生产者消费者问题2了解windows系统或linux系统下中信号量的使用方法。2实验预备内容(1) 阅读Linux的sched.h源码文件,加深对进程管理概念的理解。这个文件长达2616行,这里截取第12211548行抄录在实验报告最后,即结构体task_struct,地位相当于PCB。下面对几个比较重要的参数,结合本人的了解 以及 网上查阅的资料 做一点解释。中括
5、号内的数字为代码行号,下同。volatilelongstate:【1222】进程状态字,表示进程当前的状态(运行、就绪、等待、僵死、暂停、交换),分别对应已定义好的常量;TASK_RUNING:正在运行或可运行状态;TASK_INTERRUPTIBLE:可打断睡眠状态;TASK_UNINTERRUPTIBLE:不可打断睡眠状态;TASK_ZOMBLE:僵死状态;TASK_STOPPED:暂停状态;交换状态。void*stack:【1223】进程所使用的栈空间;unsignedintflags:【1225】进程标志(创建、关闭、跟踪、被跟踪、内核dump等),同样对应已定义好的常量;unsign
6、edintrt_priority:【1237】表示本进程的实时优先级;conststructsched_class *sched_class、structsched_entity se:【1239,1240】分别是调度类和调度实体,这两个结构包含了用于任务调度的完整的信息(进程信息、调度策略等);unsignedintpolicy:【1260】进程的调度策略标志,有三种调度标志:SCHED_OTHER:普通进程的调度策略,基于优先权的轮转法;SCHED_FIFO:实时进程的调度策略,基于先进先出的算法;SCHED_RR:实时进程的调度策略,基于优先权的轮询法。structlist_head t
7、asks:【1274】任务队列,为一双向循环链表;intpdeath_signal:【1282】父进程终止时产生的信号;pid_t pid:【1294】进程标识符,操作系统每创建一个新的进程就要为这个新进程分配一个进程控制块(PCB),系统内核通过pid区分这些进程的;structtask_struct *real_parent:【1307】本进程的父进程的PCB;structlist_head children:【1312】本进程的子进程列表;structlist_head ptraced:【1321】本进程正在使用ptrace监视的进程列表;structthread_struct thre
8、ad:【1375】本进程下属的线程集;structsignal_struct *signal、structsighand_struct *sighand:【1383,1384】分别是进程运行时产生的信号以及信号处理模块。(2) 阅读Linux的pthread.h源码文件,分析线程的创建过程。pthread接口说明#include 1、创建int pthread_create( pthread_t *tid, const pthread_attr_t *attr, void *(* func) (void *), void *arg );attr: 线程属性包括:优先级、初始栈大小,是否应该成为
9、一个守护线程。缺省设置,NULL后面是线程要执行的函数和参数成功返回 02、等待一个给定线程终止int pthread_join( pthread_t tid, void *status);等待线程结束 critiction 可以在进程中使用,mutex只可在进程中使用statues返回等待线程的返回值 multiple definition of _dso_handle/usr/lib/gcc/i486-linux-gnu/4.4.3/crtbegin.o:(.data+0x0): first defined herethreadTest: In function _init:(.init+
10、0x0): multiple definition of _init/usr/lib/gcc/i486-linux-gnu/4.4.3/././././lib/crti.o:(.init+0x0): first defined here/tmp/cchm2SmY.o:(.data+0x0): multiple definition of flagthreadTest:(.data+0x8): first defined here/tmp/cchm2SmY.o: In function threadMe3、得到自身的pidpthread_t pthread_self(void);4、pthrea
11、d_detach函数int pthread_detach( pthread_t pid );把指定的线程转变为脱离状态一个线程或者是可汇合的(joinable,缺省值),或者是脱离的(detached)。当一个可汇合的线程终止时,它的线程ID和退出状态将留到另一个线程对它调用pthread_join。脱离线程却象守护进程:当它们终止的时,所有相关资源都被释放,我们不能等待它们终止。如果一个线程需要知道另一个线程什么时候终止,那就最好好吃第二个线程的可汇合状态。本函数通常由想让自己脱离的线程调用,如下语句pthread_detach( pthread_self() );5、终止一个线程void
12、pthread_exit( void *statue );指针sttus不能指向局部于调用对象,因为线程终止时这样的对象也消失(3) 阅读Linux的semaphore.h源码文件,分析线程的创建过程。typedef struct sem_t_ * sem_t;PTW32_DLLPORT int _cdecl sem_init (sem_t * sem, int pshared, unsigned int value);PTW32_DLLPORT int _cdecl sem_destroy (sem_t * sem);PTW32_DLLPORT int _cdecl sem_trywait
13、(sem_t * sem);PTW32_DLLPORT int _cdecl sem_wait (sem_t * sem);PTW32_DLLPORT int _cdecl sem_post (sem_t * sem);PTW32_DLLPORT int _cdecl sem_post_multiple (sem_t * sem, int count);PTW32_DLLPORT int _cdecl sem_close (sem_t * sem);PTW32_DLLPORT int _cdecl sem_unlink (const char * name);int sem_init(sem_
14、t *sem,int pshared,unsigned int value)。用于信号量的初始化,第一个参数为信号量的名称,第二个参数为信号量的共享属性,一般设为0(不共享),第三个参数为信号量的初始值。int sem_wait(sem_t *sem)。相当于上面的wait()操作,作用是当信号量的值大于0时,给信号量的值减1,否则会阻塞直至信号量的值大于0。它是一个原子操作。int sem_post(sem_t *sem)。相当于上面的signal()操作,作用是给信号量的值加1。它也是一个原子操作。*/3实验环境此实验采用的是Win8下Microsoft Visual Stdio 2012
15、工程。由于系统不包含semaphore.h,sched.h及pthread.h头文件,所以这些头文件都是从网上FTP资源下载后,加入工程的。程序中加入#pragma comment(lib, pthreadVC2.lib)来调用pthread链接库。文件根目录下已下载pthreadVC2.dll*/4实验步骤A设计思路这个问题是进程同步的经典问题之一,基本思路是设置三个信号量:mutex信号量,用于控制生产者和消费者对于缓冲区的互斥访问;empty信号量,记录当前为空的缓冲区的数目,初始化为所有缓冲区的数目BUF_SIZE;full信号量,记录当前已满的缓冲区的数目,初始化为0。*/一个buf
- 配套讲稿:
如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。