栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

南京邮电大学操作系统进阶实验:多线程应用程序(选做)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

南京邮电大学操作系统进阶实验:多线程应用程序(选做)

实验原理及内容
  1. 利用蒙特卡洛(Monte Carlo)方法计算π值的原理

Monte Carlo方法又称计算机随机模拟方法,是利用随机试验求解问题的方法。

Monte Carlo法计算π值构造一个单位正方形和一个单位圆,往整个区域内随机投入点,根据点到原点的距离判断点是否落在圆内,从而根据落在圆内的点数和在正方形内的总的点数,求出两个区域点数的比值,进而利用下面的公式求出圆周率π。

π=4*(圆内点数)/(总的点数)   其中:“圆内点”满足x2+y2≤1

2.初步实现

使用编辑器gedit新建一个monteCarlo.c源文件,并输入后面的范例代码,存盘后退出。

#include
#include
#include
#include
#include

int intervals=1000;  //控制随机点的个数

int main()
{
   clock_t start,delta;  //用于统计程序运行时间
   start=clock();  
   unsigned seed=time(NULL);
   int circle_points=0;
   int i;
   double pi;
   
   for(i=0;i 

在终端先后执行,查看执行结果。
gcc monteCarlo.c -o monteCarlo
./ monteCarlo

3.自定义函数calculate_pi计算π值,主函数中10次调用该函数,在每次调用中增加随机点总数,比对计算结果和运行时间。

使用编辑器gedit新建一个mcMultitask.c源文件,并输入后面的范例代码,存盘退出。

#include
#include
#include
#include
#include

void calculate_pi(int intervals)
{
   int circle_points=0;
   int i;
   double pi;
   unsigned seed=time(NULL);

   for(i=0;i 

在Terminal中先后执行下述两条命令,查看并说明执行结果。

gcc mcMultitask.c -o mcMultitask

time ./mcMultitask

注:time命令获取其后命令的执行时间,其中包括命令的实际运行时间(real time),以及运行在用户态的时间(user time)和内核态的时间(sys time)。

4.通过多线程编程,改写上述mcMultitask.c,对执行结果进行分析比对。

  1. 使用编辑器gedit新建一个mcMultithreads.c源文件,并输入后面的范例代码,存盘退出。
#include
#include
#include
#include
#include
#include

void* calculate_pi(void* arg)
{
   int circle_points=0;
   int i;
   double pi;
   int intervals=*((int*)arg);  //线程函数参数用于控制循环次数
   unsigned seed=time(NULL);

   for(i=0;i 

 在Terminal先后执行下述2条命令,查看执行结果,对比mcMultitask的执行结果,理解多线程并发执行对计算性能的提升。

gcc mcMultithreads.c -o mcMultithreads -pthread  

time ./mcMultithreads

关闭虚拟机,编辑虚拟机设置,尝试调整处理器数量和/或每个处理器的内核数量,再次执行和对比以下命令的运行时间。

time ./mcMultitask

time ./mcMultithreads

 time命令获取其后命令的执行时间,其中包括命令的实际运行时间(real time),以及运行在用户态的时间(user time)和内核态的时间(sys time)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/613880.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号