没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
内核级线程
难度系数:★★★★★
实验目的
深入理解线程和进程的区别;
全面实践进程、地址空间、程序执行体、PCB、调度、用户接口等操作系统概念;
获得在实际操作系统上设计与实现一个完整子系统的经验。
实验内容
1. 在Ubuntu下编写多线程的应用程序memtest.c,解决一个可并行运算的问题。
2. 在Linux0.11的进程管理基础上,按照POSIXThreads(https://computing.llnl.gov/tutorials/pthreads/)标准实现内核级线程,使其能支持memtest.c的
运行
多线程应用
编写一个多线程的应用程序(memtest.c),采用多线程并发的方式进行“并行”运算。该程序要解决的问题是“内存测试”,即测试一段内存是否可
靠。这段内存在进程空间内分配,大小不应小于1MB。
内存测试算法
对任一被测内存单元,先写入一个数,再从该单元读出,比较写入和读出的数是否相等。如果相等,说明该单元功能正常,否则就不正常。对一个
单元,要用如下5种数据测试:
1. 全0,即0
2. 全1,即0xFF
3. 01010101,即0x55
4. 10101010,即0xAA
5. 随机数
主线程功能
主线程就是进程建立后直接拥有的线程。它用命令行方式和用户交互,接受用户的命令,进行相应的工作,打印状态信息。命令包括:
1. timesnumber:设置对每个内存单元进行测试的次数。number即次数。每次测试都要测完全部的5种数据。例如,命令“times5”表示对每个内
存单元,每种数据都要测5次。
2. threadnumber:设置进行测试工作的线程个数。number即个数。主线程并不算在number内。例如,命令“thread2”表示同时建立2个工作线程
进行并发测试。
3. go:按照设定的参数建立工作线程,开始测试。主线程仍然在命令行等待用户命令。
4. status:打印所有工作线程的工作状态,包括它们的当前进度和测试结果等。
5. abort:停止测试。让所有工作线程都退出。
6. exit:停止测试并退出程序。
工作线程功能
该程序始终只有主线程和用户交互,工作线程即不打印信息,也不读用户的输入。主线程和工作线程之间通过全局变量进行信息传递。工作线程唯
一的功能是对主线程分配给它的内存区间进行测试。
内核级线程
要做到,同一个进程下的各个线程之间要能共享除指令执行序列、栈、寄存器以外的一切资源。相关功能通过系统调用和函数库共同完成。系统调
用负责内核内的相关工作,其接口可自定义,直接实现在Linux0.11已有的源程序文件中。函数库(命名为pthread.c和pthread.h)和应用程序链接到
一起,对系统调用进行更高级别的封装,供应用程序直接调用。函数库应至少包含如下函数:
pthread_attr_init
int pthread_attr_init(pthread_attr_t *attr);
用默认值初始化attr指向的pthread_attr_t结构。该数据是调用pthread_create()的第二个参数。pthread_attr_t主要定义了创建线程时需要用户提供的属性
信息,pthread_create()根据这些信息创建线程。属性的具体内容可完全自定义。
函数成功时返回0,出错时返回错误号。
pthread_create
田仲政
- 粉丝: 15
- 资源: 332
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0