操作系统实验内容.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三 进程管理实验 一、实验目的 了解有关Linux系统调用。 学习有关Linux的进程创建,理解进程创建后两个并发进程的执行。 加深对进程概念的理解,明确进程和程序的区别。 二、实验内容 进程的创建: 在Linux环境下,编写一个程序使用系统调用fork()创建2个子进程。当此子进程运行时,在系统中由一个父进程和两个子进程活动。让每个进程在屏幕上显示一个字符;父进程显示字符’x’,子进程分别显示’y’和’z’。试记录屏幕上的显示结果,并分析原因。 进程的管道通信: 编写一个程序使用系统调用fork生成3个子进程,并使用系统调用pipe创建一个管道,使得这3个子进程和父进程公用同一管道进行信息通信要求该程序实现数据的输入、输出以及信息提示。 三、实验原理(LINUX系统调用) 1. 进程控制的系统调用 ??1)fork系统调用创建新的子进程 格式: pid=int fork() fork调用返回时,系统中已有两个用户级环境完全相同的进程存在,这两个 进程从fork调用中得到的返回值不同,其中子进程得到的返回值为零,父进程 得到的返回值是新创建子进程的进程标识号。 ??2)exec系统调用 格式:(六种) int execl(path,arg0,arg1,…,argn,(char *)0) char *path, *arg0, *arg1, …, *argn ; exec调用进程的正文段被指定的目标文件的正文段所覆盖,其属性的变化方式与 fork成功后从父进程那里继承属性的方式几乎是一样的。系统中绝大多数命令都 是通过exec来执行的,不但shell进程所创建的子进程使用它来执行用户命令, shell进程本身和它的祖先进程也是用exec来启动执行的。 ??3) exit 系统调用终止进程执行 格式:void exit(status) int status ; 参数status是调用进程终止时传递给其父进程的值。如调用进程还有子进 程,则将其所有子进程的父进程改为1号进程。 ??4) wait 系统调用等待子进程暂仃或终止 格式:int wait(stat_loc) int wait((int *)0) int stat_loc ; wait 调用将调用进程挂起,直到该进程收到一个被其捕获的信号或者它的任 何一个子进程暂仃或终止为止。如果wait 调用之前已有子进程暂仃或终止,则 该调用立即返回。 ??5) lockf 锁定文件 格式:int lockf(fd,fuction,size) int files, fuction; long size; fd – 锁定文件标识 function=0不锁定表示 =1锁定 =2测试和锁定 =3测试有否被锁定 size --锁定或解锁的字节数,0表示从文件的当前位置到文件尾。 ? 进程创建程序 #include stdio.h void main(int argc, char *argv[ ]) { int pid; pid=fork(); /* fork child process */ if (pid0) { fprintf(stderr, ?Fork Failed?); exit(-1); } else if (pid==0) { execlp(?/bin/ls?,?ls?,NULL); } /* child process */ else { wait(NULL); printf(?child Complete?); exit(0); } /*parent process */ } 2.进程通信的系统调用 ??1)pipe系统调用 格式: int pipe (filedes) int filedes [2]; ? 管道通信程序 #include stdio.h #include fcntl.h char parent[]={“A message from parent .”}; char child[]={“A message from child .”}; main() { int chan1[2],chan2[2]; char buf[100]; if (pipe(chan1)==-1 || pipe(chan2)==-1) errexit(?pipe?); if (fork()) { close(chan1[0]); close(chan2[1]); write(chan1[1],parent,sizeof parent); close(chan1[1]); read(chan2[0],buf,100); printf(?parent process : %s \n?,buf); close(c

文档评论(0)

精品资料 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档