222019321062060_付若轩20
需积分: 0 34 浏览量
更新于2022-08-08
收藏 1.08MB DOCX 举报
在本实验报告中,学生付若轩(222019321062060)探讨了操作系统原理课程中的线程库Pthread以及并发编程技术。实验发生在2020-2021学年的第二个学期,软件工程专业,由赵恒军老师指导。实验的主要目标是掌握Pthread API用于线程创建和终止的操作,以及并发编程技巧。
**1. Pthread API与并发编程**
Pthread库是POSIX线程接口,它为C语言提供了一种标准的方式来创建和管理线程。在Linux环境下,Pthread库被广泛使用。关键的API包括:
- `pthread_create()`: 创建新线程。
- `pthread_join()`: 等待一个线程结束并回收其资源。
- `pthread_exit()`: 结束当前线程并返回一个退出状态。
- `pthread_self()`: 获取当前线程的ID。
- `pthread_mutex_t`: 互斥锁,用于同步对共享资源的访问。
并发编程涉及多个执行流同时运行,这需要考虑线程间的同步和通信以避免数据竞争和死锁。
**2. 实验环境**
实验在Virtualbox上使用Ubuntu或其他Linux系统组合进行。Virtualbox是一款虚拟机软件,允许在主机操作系统上运行客体操作系统。
**3. 实验内容与设计**
**任务1**:创建主线程并在其中创建新线程,将两个整数传递给新线程,由新线程计算它们的和。这里采用了指针传递数组来实现数据交换。
**任务2**:定义长度为200000的整数数组,随机初始化后对其进行排序,并测量时间成本。使用`time`命令来度量执行时间。
**任务3**:编写C程序合并两个已排序的整数数组成一个单个排序数组。这涉及到线性搜索或二分查找等算法。
**任务4**:编写多线程排序程序,设置虚拟机至少2个CPU,定义两个全局整数数组a和b,长度均为200000。在主线程中,创建两个新线程分别对数组a的前半部分和后半部分进行排序。主线程等待这两个新线程结束,然后将排序后的两部分合并到数组b中。比较多线程程序的时间成本与任务2中的时间,计算加速比。
**源代码与步骤**
任务1的代码可能包括创建新线程的`pthread_create()`调用,以及在新线程中计算和的函数。
任务2的代码需要实现一个自定义排序函数,如快速排序、归并排序或冒泡排序,并在外部使用`time`命令来测量执行时间。
任务3的代码会包含一个合并排序数组的函数,可能使用双指针技术来实现。
任务4的代码需要初始化数组,创建线程,使用`pthread_join()`等待线程结束,以及合并排序结果的逻辑。此外,还需要使用`time`命令来比较时间成本。
通过这些实验,学生能够深入理解线程的创建、同步、通信以及并发执行对性能的影响,这些都是操作系统和多核编程的关键概念。
7323
- 粉丝: 29
- 资源: 327
最新资源
- "MW54微型涡喷发动机涡轮喷气发动机STP格式平面图纸与三维建模通用格式展示",MW54 微型涡喷发动机 涡轮喷气发动机 平面图纸+三维建模,文件格式是STP,通用格 ,核心关键词:MW54微型涡喷
- 足球数据集,10714张图片,yolov11格式txt标注,可识别 裁判员,足球,守门员和球员 89.8%的正确识别率
- cmake-2.8.12.2-2.el7.x64-86.rpm.tar.gz
- "多种物料码垛机图纸借鉴与学习,参考设计指导手册",码垛机图纸,伺料码垛机图纸,腻子粉码垛机图纸,可借鉴学习,参考设计 ,码垛机图纸; 伺料码垛机图纸; 腻子粉码垛机图纸; 可借鉴学习; 参考设计;
- 自己用的一些文档资料1111
- cmake-gui-2.8.12.2-2.el7.x64-86.rpm.tar.gz
- 足球数据集,10714张图片,yolov9格式txt标注,可识别 裁判员,足球,守门员和球员 89.8%的正确识别率
- linux驱动使用GPIO中断代码demo
- cmpi-bindings-pywbem-0.9.5-6.el7.x64-86.rpm.tar.gz
- 90套各类污水处理设备、管道与石油化工设备三维模型:支持尺寸编辑与装配体展示,共90套左右各类污水处理设备三维模型,管道设备三维模型,石油化工设备三维模型 sw打开,大部分是可以编辑修改尺寸的 有
- cobertura-1.9.4.1-9.el7.x64-86.rpm.tar.gz
- 《Scratch 全攻略:从入门到实践的编程之旅》,让孩子轻松踏入编程世界,培养逻辑思维与创造力
- cobertura-javadoc-1.9.4.1-9.el7.x64-86.rpm.tar.gz
- 基于Matlab Simulink平台的IEEE 13节点系统仿真:潮流计算与稳定性分析,IEEE13节点系统Simulink仿真 1.基础功能:基于Matlab simulink平台搭建IEEE13
- 测试项目demo+博客系统测试+几个简单测试用例
- cockpit-195.12-1.el7.centos.x64-86.rpm.tar.gz