欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    东北大学 操作系统实验三报告文档格式.docx

    • 资源ID:6720195       资源大小:402.63KB        全文页数:18页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    东北大学 操作系统实验三报告文档格式.docx

    1、 为简单起见,每次产生的数据为0-99的整数,从0开始,顺序递增。两个进程的调度是通过运行者使用键盘来实现的。4. 程序使用的数据结构进程控制块:包括进程名,进程状态和执行次数。缓冲区:一个整数数组。缓冲区说明块:包括类型,读指针,写指针,读等待指针和写等待指针。5. 程序使用说明启动程序后,如果使用p键则运行一次生产者进程,使用c键则运行一次消费者进程。通过屏幕可以观察到两个进程的状态和缓冲区变化的情况。6.实验流程图源程序#includestdlib.hstring.h#define PIPESIZE 8enum Status RUN, WAIT, READY ;#define NORMA

    2、L 0#define SLEEP 1#define AWAKE 2struct PCB char name3; enum Status status; int time;struct waitqueue struct PCB pcb; struct waitqueue *next;struct PCB *producer; /* write wait point */struct PCB *consumer; /* read wait point */struct waitqueue *headerqueue, *tailqueue;int writeptr;int readptr;int w

    3、ritein, readout;int bufferPIPESIZE;int empty, full;void runp(char in3), runc(char in3), print();int main() char in3; writeptr = 0; readptr = 0; writein = 0; empty = PIPESIZE; full = 0; producer = (struct PCB *)malloc(sizeof(struct PCB); consumer = (struct PCB *)malloc(sizeof(struct PCB); headerqueue

    4、 = (struct waitqueue *)malloc(sizeof(struct waitqueue); headerqueue-next = NULL; tailqueue = headerqueue; producer-status = READY; consumer-status = WAIT;time = consumer-time = 0; printf(Now starting the program!n);Press p1 to run PRODUCER1,Press to run PRODUCER2 nc1 to run CONSUMER1,Press c2 to run

    5、 CONSUMER2 ne to exit from the program.n while (1) strcpy(in, N while (!strcmp(in, ) printf( scanf(%s, in); if (strcmp(in, e) & strcmp(in, p1p2c1c2 printf(error,please input again! strcpy(in, if ( = in0) runp(in); producer-time+; else if ( runc(in); consumer- else /printf(PRODUCER product %d timesn,

    6、 producer-time);CONSUMER consumer %d timesn, consumer- exit(0); print(); printf( void runp(char in3) if (full = 8) struct waitqueue *search; search = headerqueue-next; while (search != NULL) if (!strcmp(in, search-pcb.name)error! exit(1); search = search- producer-PRODUCER %s process is waiting, can

    7、t be scheduled.n struct waitqueue *p = (struct waitqueue *)malloc(sizeof(struct waitqueue); strcpy(p-pcb.name, in); p-pcb.status = WAIT;pcb.time = producer-time + 1; tailqueue-next = p; tailqueue = p; full+; else writein = (writein + 1) % 100;status = RUN;run PRODUCER %s process . product %d , in, w

    8、ritein); bufferwriteptr = writein; if (empty8) struct waitqueue *p; p = headerqueue-run CONSUMER %s process. use %d, p-pcb.name, bufferwriteptr); if (tailqueue = p) tailqueue = headerqueue; headerqueue-next = p- free(p); empty-; if (writeptr readptr) writeptr+; if (writeptr = PIPESIZE) writeptr = 0;

    9、 if (readptr = 0) producer- else producer- else if (writeptr = readptr) producer- else producer- full+;void runc(char in3) if (empty consumer-CONSUMER %s is waiting, can,in);pcb.time = consumer- empty+; readout = bufferreadptr;run CONSUMER %s process. use %d , in, readout); if (full writein = (write

    10、in + 1) % 100; bufferwriteptr = writein;run PRODUCER %s process. product %d full-; writeptr+; readptr+; if (readptr writeptr) readptr+; if (readptr readptr = 0; if (writeptr = 0) consumer- else else consumer- if (readptr = writeptr) consumer- writeptr = readptr = 0; producer- empty+;void print() int

    11、 i = 0; int j = 0; int low = 0; int high = 0; for (i; i PIPESIZE; i+)- if (readptr for (low = 0; low else if (producer-status = WAIT) for (i = 0; if (producer-status = WAIT & NULL !=headerqueue-next) struct waitqueue *p = headerqueue- while (NULL != p) PRODUCER %s process are waittingnpcb.name); p = p-PRODUCER ready n if (consumer-headerqueue- CONSUMER %s process are waittingnCONSUMER readyn 实验结果:


    注意事项

    本文(东北大学 操作系统实验三报告文档格式.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开