操作系统第一次实验报告(大全).docx 立即下载
2025-08-27
约2.5万字
约42页
0
29KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

操作系统第一次实验报告(大全).docx

操作系统第一次实验报告(大全).docx

预览

免费试读已结束,剩余 37 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

操作系统第一次实验报告(大全)

第一篇:操作系统第一次实验报告(大全)操作系统实验报告实验名称:线程控制实验计算机科学与技术学院目录一、实验目的和要求2二、实验内容2三、实验步骤2四、实验结果与分析31.单线程32.单线程(睡眠4s)33.多线程44.多线程(每个子线程睡眠1s)45.单线程与多线程对比5五、程序源代码51.单线程实验代码52.单线程实验代码6六、实验体会7一、实验目的和要求通过本实验掌握在Linux操作系统中遵循Posix线程标准接口进行多线程程序编程,熟练掌握线程的创建pthread_create(),线程的终止pthread_exit(),等待线程合并pthread_join()等线程控制操作,利用信号量或者互斥锁实现线程建的同步。二、实验内容问题:求1000000个浮点数(精确到小数点后4位)的平均值(和,最大值,最小值),具体的问题描述流程图如下图图1所示:三、实验步骤1、随机生成1000000个浮点数;2、创建4个子线程,分别求250000个浮点数之和;3、完成1000000个浮点数之和并打印结果;4、统计多线程并发执行完成计算的时间;5、写一个单线程程序,同样完成1000000个随机数求和的计算,统计计算时间,并和前面结果进行对比;6、让单线程程序睡眠四秒钟、多线程程序各子程序睡一秒的条件下(两个程序总的睡眠时间相同),对比执行结果;7、分析两次对比结果的差异,写出自己的见解。四、实验结果与分析1、单线程完成1000000个浮点数的求和运算所用的时间情况如下图图2所示:图图2单线程计算时间分析:实验中每次随机产生一个0到1之间的浮点数,1000000个这样的数相加的话的平总和大概就在500000左右(按照随机数的平均值原理),实验中sum=,显然结果正确,整个计算运行时间为。2、单线程完成1000000个浮点数的求和运算,单线程中睡眠4秒钟,所用的时间情况如下图图3所示:图图3单线程计算时间(睡眠4秒)分析:根据上一次单线程的执行情况来看,这一次让单线程睡眠4秒钟,最后执行时间刚好就是4秒加上计算时间。也就是说计算1000000个浮点数的总和平均时间约为。3、四个子线程共同完成1000000个浮点数的求和计算所用时间情况如下图图4所示:图图4多线程计算时间分析:因为这次是4个子线程并发运行,每个子线程只需计算250000个浮点数的总和,理想情况下这时候的运行时间应该是这单线程中计算时间的四分之一。从图中可以看到执行时间是,很显然这个时间约为单线程求1000000个浮点数之和的时间()的四分之一,符合预期的结果。4、四个子线程共同完成1000000个浮点数的求和计算,其中每个子线程睡眠1秒钟,最终所用时间情况如下图图5所示:图图5多线程计算时间(每个子线程眠睡眠1秒)分析:这里四个子线程每个子线程睡眠一秒,但由于四个子线程并发同步的在执行,当一个子线程在睡眠时,另外一个子线程却仍然在继续求和计算,因此他们一起合作同步完成1000000个浮点数的计算所需的时间就是1秒加上上图中不睡眠的时候的计算时间。从图中可以看到≈1s+,所以最终的结果符合预期值。5、单线程计算时间(睡眠4s)与多线程计算时间(每个子线程睡眠1s)对比效果如下图图6所示:图图6单线程(睡眠4s)与与多线程(每个眠子线程睡眠1s)计算时间对比图五、程序源代码/**************************FileName:*Author:*Date:2013/11/22***************************/#include#include#include#include#include#defineLOOP1000000floatSUM=0;void*ADD(){inti;srand(time(NULL));for(i=0;i{SUM+=(float)(rand()/(float)RAND_MAX);}sleep(4);}intmain(){pthread_tp;intresult;floattime;structtimevalstart;structtimevalend;gettimeofday(&start,NULL);result=pthread_create(&p,NULL,ADD,NULL);if(result!=0){printf(“CreateThreadofADDFailuren”);exit(-1);}pthread_join(p,NULL);gettimeofday(&end,NULL);time=((float)-*1000000+(float)-)/1000000;printf(“Signal_Thread_Sum:%.4fn”,SUM);printf(“Signal_Thread_E
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

操作系统第一次实验报告(大全)

文档大小:29KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用