1. 实验目的
用信号量来解决实际进程互斥问题,进而加深对信号量、进程互斥的理解。
2. 实验内容
在服务器上用Vim编写一个程序,使用信号量解决IPC问题:生产自行车。
假设自行车生产线上有一只箱子,其中有n个位置(n≥3),每个位置可以存放一个车架或一个车轮;现有3个加工者,其活动分别如下:
加工者1活动:
while (1){
加工1个车架
将车架放入箱子
}
加工者2活动:
while (1){
加工1个车轮
将车轮放入箱子
}
加工者3活动:
while (1){
从箱中取1个车架
从箱中取2个车轮
组装成1辆自行车
}
用信号量和PV操作实现三个加工者的合作,要求合作过程不含死锁。
- 创建10个生产车轮加工者,创建10个生产车架加工者,创建10个消费者(生产自行车)
线程创建函数:pthread_create(3): create new thread - Linux man page
在指定文件编写代码:
- 信号量创建、加锁、解锁操作,直接使用库提供的API,见信号量操作
- 在源文件
exp5_mutex_pv_producer_bicycle/producer_bicycle_pv.c
上编写代码
3. 实验要求及评分
实验基本要求见:所有实验要求章节
截止时间:见课堂派
作业提交:将pdf和md版文档上传到课堂派
本次课程设计按百分制打分,满分为100分。
- 如何模拟箱子,10分
- 信号量声明、初始值,得10分
- 生产者-车轮,15分
- 生产者-车架,15分
- 消费者,30分
- 测试代码:10分
- 其他非关键性代码,文档可读性等,10分
注:以上评分只是参考,比如文档不具备可读性,直接0分。