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分。

5. 实验报告

实验报告模板-生产自行车

本文系Spark & Shine原创,转载需注明出处本文最近一次修改时间 2025-04-10 22:29

results matching ""

    No results matching ""