厦门理工学院操作系统实验4.pdfVIP

  1. 1、本文档共9页,可阅读全部内容。
  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文档。上传文档
查看更多

《操作系统》实验报告

实验序号:4实验项目名称:线程创建和数据传递

学号姓名ZRZ专业、班18计卓1班

实验地点指导教师李远敏实验时间2020.4.24

一、实验目的及要求

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

2.进一步认识线程并发执行的实质。

3.学会利用pthread库,进行线程创建和线程间数据传递

二、实验设备(环境)及要求

1.Ubuntu操作系统环境

2.搭建Ubuntu操作系统下的C语言编程环境。

三、实验内容与步骤

1.线程的创建:

(1)编程实现在主进程中通过线程创建pthread_create()函数来创建新的线程。

(2)在主线程和子线程中要通过getpid()及pthread_self()获取对应的进程号和线程号并打

印输出

2.线程间参数传递:

(1)阅读下面主线程与子线程间传参数(多个参数值)的程序代码并输入调试并输出结

果;

(2)按下面要求编写子线程间参数传递程序

a.程序功能:

实现在两个子线程通过全局变量传递数据:即在一个子线程中对全局变量的成员进行赋

值,在另一个子线程中对全局变量的成员进行取值并显示

b.编程要求:

首先要定义一个全局结构类型和对应的变量,定义两个Pthread_t类型变量来保存两个

子线程的id;要定义一个主函数和两个用于创建子线程的对应函数

在主函数中创建两个函数对应的子线程并对创建是否成功进行判断,创建成功后,等待

显示子线程结束进程才结束。

在赋值子线程对应函数内要打印进入该子进程的特殊信息,分别对全局变量中相应成员

赋值。

在显示子线程对应函数内要先等待赋值子线程运行完该线程才开始,打印进入该子进程

的特殊信息,并取出全局变量中每个成员的值并显示。

3.接收子线程的返回值:

(1)阅读下面接收创建子线程的返回值-简单值的程序代码并输入调试并输出结果;针对

下列问题进行说明或修改:

a.程序运行结果ret=是一个不确定的值,试说明原因

b.将程序中inta=20语句调换到红颜色位置,结果如何

c.将程序中inta=20int*p=a;语句置换成蓝颜色语句,结果又如何?

(2)阅读下面接收创建子线程返回一个复杂的数据结构变量程序代码并输入、调试、输

出结果;针对下列问题进行说明或修改:

将temp定义和赋值变为create()函数内定义的局部变量,应如何修改程序对结果又

什么影响并说明原因?

四、实验结果与数据处理

1.线程的创建

(1)实验结果:

图1:进程的创建一代码

图2:程序运行结果

(2)结果分析:

运行结果:我们可以看到主线程会先打印出相应的ID,然后再是子线程打印自己的ID

原因:当一个程序启动时,就有一个进程被操作系统(OS)创建,与此同时一个线程也立刻

运行,该线程通常叫做程序的主线程(MainThread),因为它是程序开始时就执行的,如果

你需要再创建线程,那么创建的线程就是这个主线程的子线程。每个进程至少都有一个主线程,

所以没有干预的情况下,主线程都是优先于子线程运行的。

所以在输出ID的时候,主线程会比子线程早输出自己的ID。

(3)思考:

a.通过以上实验线程执行与函数调用的不同,线程与进程的不同

答:线程是程序执行部分,是操作系统的划分。函数是编程中的概念,是功能模块的划分。

b.如何控制主线程与子线程的执行顺序

答:我们可以使用sleep函数来对线程进行挂起的操作,从而来控制主线程与子线程的执

行顺序。

图3:修改后的代码

图4:修改后的代

您可能关注的文档

文档评论(0)

153****9248 + 关注
实名认证
文档贡献者

专注于中小学教案的个性定制:修改,审批等。本人已有6年教写相关工作经验,具有基本的教案定制,修改,审批等能力。可承接教案,读后感,检讨书,工作计划书等多方面的工作。欢迎大家咨询^

1亿VIP精品文档

相关文档