操作系统实验报告-实验2-常用开发工具+Linux进程管理.pdfVIP

操作系统实验报告-实验2-常用开发工具+Linux进程管理.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

实验报告模板

实验名称实验二常用开发工具+Linux进程管理学院

姓名学号班级

实验地点实验日期评分

指导老师同组其他成员

一、实验目的

1.掌握C语言编译的基本用法。

2.掌握gdb调试工具的基本用法。

3.加深对进程概念的理解,明确进程和程序的区别。

4.进一步认识并发执行的实质。

5.了解Linux系统中进程通信的基本原理。

二、实验环境

VMware,RedHatLinux

三、实验内容

1.利用gcc编译C语言程序,使用不同选项,观察并分析显示结果。

2.用gdb调试一个编译后的C语言程序。

3.运行Linux进程的创建程序,观察运行结果。

4.利用fork函数,编写程序。

5.利用软中断系统功能调用,编写程序。

四、实验结果(含程序、数据记录及分析和实验总结等)

1.编写一个helloworld.c程序,使用下列选项对它进行编译:-I,-D,-E,-c,

-o,-l。

编写好的helloworld.c

使用-I,包含myinclude目录下的文件,显示未找到

使用-D定义宏,并使用-o输出,运行成功

使用-E对helloworld.c文件进行预处理,由于未加-o,所以将结果直接输出到

控制台:

-c表示仅仅汇编及编译代码,不进行链接。也就是将源代码编译成.o文件。

-o已经在前面使用过,指定输出文件名

-l,如果为-lname,则链接时装载名为libname.a的函数库,如图,载入了libm.a

库进行编译:

2.利用gdb调试下面的程序:

/*dbme.c*/

#includestdio.h

#includestdlib.h

#defineBIGNUM1000

voidindex_m(intary[],floatfary[]);

intmain()

{

intintary[100];

floatfltary[100];

index_m(intary,fltary);

exit(EXIT_SUCCESS);

}

voidindex_m(intary[],floatfary[])

{

inti;

floatf=3.14;

for(i=0;iBIGNUM;++i){

ary[i]=i;

fary[i]=i*f;

}

}

(1)使用带-g选项的gcc命令对该程序进行编译$gcc–gdbme.c–odbme,然后运行

该程序$./dbme,屏幕显示什么?

注意,此处如果使用BIGNUM的常量,则会显示正常退出。

无奈直接将BIGNUM换为1000,编译后运行显示段错误。

(2)用程序名dbme作为参数启动gdb。

(3)在gdb环境下运行该程序,gdb给出的程序错误出现在哪里?利用backtree

命令生成导致错误的函数树。使用list命令显示出错行的上下文。

如图所示,错误出现在第20行,ary[i]=i

(4)设置断点,让程序在文件dbme.c的第20行且i等于100时停止执行。然后

运行该程序,并检查有关变量的值。

运行该程序,可见程序停在第20行,且此时i的变量值为100

3.进程的创建。编写一段C程序,使用系统调用fork()创建两个子进程。当此

程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏

幕上显示一个字符;父进程显示字符“a”,子进程分别显示字符“b”和

“c”。试观察记录屏幕上的显示结果,并分析原因。

编写的fork2.c程序

编译并执行,可见输出为”bca”

原因:程序通过判断pid来确定进程的关系,当系统调用父进程的时候,为其分

配了一个大于0的pid,而fork得到的子进程pid为0,子进程1先启动,输出b,

紧接着返回到父进程,然后父进

文档评论(0)

180****7669 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档