操作系统实验--刘佳敏.docx

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北京联合大学 信息 学院 实 验 报 告 题目: 操作系统实验 系 别: 计算机科学与技术   专 业: 计算机科学与技术 班 级: 计算机1303B 学 号: 2013080332058 姓 名: 刘佳敏 指导教师: 孙悦 2015年 11 月 19日 实验二 进入VI编辑器 格式:vi 文件名 例 :vi sy.c Vi编辑器三种工作方式: 编辑方式:进入VI 处于编辑方式 文本输入方式:在编辑方式下输入a ,进入追加方式,输入i,进入插入方式 命令方式:在输入方式下,按Esc 键,由文本输入转向编辑方式,输入冒号:进入命令方式 退出vi : wq写文件退出 :w wenjianming 写文件 : q! 不写退出 :wq! 写退出 编译c文件 Gcc -o wenjianming.out wenjianming.c 运行文件: ./wenjianming.out 实验内容和目的 用vi编辑器编辑下列文件,使用gcc编译器和gdb调试器,对下列程序编译运行,分析运行结果。要求至少完成3个程序。 2.程序示例 (1) /* 父子进程之间的同步之例 */ #include stdio.h main( ) { int pid1; /*声明*/ if(pid1=fork()) /*调用fork函数复制创建child1进程*/ { if (fork()) /*调用fork函数复制child1进程创建child2进程,即child1的子进程*/ { printf (“parent’s context.\n”); printf(“parent is waiting the child1 terminate.\n); wait(0); /*父进程同步等待子进程结束,结束之后进行下一步,否则继续等待*/ printf(“parent is waiting the child2 terminate.\n”); wait(0); /*父进程同步等待子进程结束,结束之后进行下一步,否则继续等待*/ printf(“parent terminate.\n”); exit(0); /*父进程终止*/ } Else /*如果创建child2进程不成功,进行以下操作*/ /* child2*/ printf(“child2’s context.\n”); sleep(5); /*休眠5秒钟*/ printf(“ child2 terminate.\n”); exit(0); /*child2进程终止*/ } else { if(pid1==0) /*在子进程中*/ { printf(“child1’s context.\n”); sleep(10); /*休眠10秒钟*/ printf(“child1 terminate.\n”); exit(0); /*child1进程终止*/ } } } 分析: 上述程序是父进程首先创建一个子进程,若成功,再创建另一个子进程,之后三个进程并发执行。究竟谁先执行,是随机的,可根据执行结果判断。试分析该程序的所有运行结果。 注释: fork( ) 调用正确完成时,给父进程返回地是被创建子进程的标识,给子进程返回的是0;创建失败时,返回给父进程的时-1; exit(0) 进程终止自己 wait(0) 父进程同步等待子进程结束,即无子进程结束,父进程等待。 实验分析:首先fork()正确调用,执行父进程,输出parent’s context parent is waiting the child1 terminate.这个时候wait(0); //父进程同步等待子进程结束,即无子进程结束,父进程等待。执行子进程2,输出child2’s context。然后休眠5秒钟,执

文档评论(0)

boss + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档