1、 嵌入式系统开发技术嵌入式系统开发技术 课程设计课程设计 专专 业:业: 电子信息工程电子信息工程 班班 级:级: 学学 号:号: 姓姓 名:名: 设计题目:设计题目: 多进程程序设计多进程程序设计 2011 年年 11 月月 目录目录 1 设计概述. 3 1.1 设计简介 . 3 1.2 设计目的 1 1.3 设计要求 1 2 设计内容. 2 2.1 编写目的 2 2.2 需求概述 2 2.3 设计概述 9 3 编写代码 14 4 实验分析报告 15 4.1 实验结果 3 5 实验总结 17 6 附录 21 1 设计设计概述概述 1.1 设计设计简介简介 嵌入式系统软件的实时性是其非常重要的
2、特性, 采用多进程设计可以提 高系统的效率,增强系统的实时性,因此,掌握多进程编程,是学习嵌入式 Linux 必须达到的目标 1.2 设计目的设计目的 本课程设计通过设计多进程程序,掌握创建多进程的方法,掌握通过有 名管道实现进程之间的通信,掌握进程中运行现有程序的方法。 “生产者消 费者”问题是一个著名的同时性编程问题的集合。通过学习经典的“生产者 消费者”问题的实验,读者可以进一步熟悉 Linux 中的多线程编程,并且掌 握用信号量处理处理线程间的同步和互斥问题。 1.3 设计设计要求要求 本课题所设计的系统要求实现以下功能。 创建子进程 1 及子进程 2。 子进程 1 创建子进程 A、B
3、,子进程 1 等待子进程 A、B 退出后退出。 子进程 A、B 之间通过有名管道 FIFO1 进行通信,实现生产者-消费者功 能。 子进程 2 创建子进程 C、D,子进程 C 运行“ls l”命令,子进程 D 通过 有名管道 FIFO1 作为消费者与进程 A 通信。 2 设计设计内容内容 2.1 编写目的编写目的 通过编写多进程程序,使读者熟练掌握 fork() 、exec() 、wait()和 waitpid()等函数的实用,进一步理解在 Linux 中多进程编程的步骤。 2.2 需求概述需求概述 创建子进程 1 及子进程 2。 子进程 1 创建子进程 A、B,子进程 1 等待子进程 A、B
4、 退出后退出。 子进程 A、B 之间通过有名管道 FIFO1 进行通信,实现生产者-消费者功 能。 子进程 2 创建子进程 C、D,子进程 C 运行“ls l”命令,子进程 D 通过 有名管道 FIFO1 作为消费者与进程 A 通信。 2.3 设计概述设计概述 (1)画出设计的流程图)画出设计的流程图 该设计的流程图如图 2.3 所示 开始 Fork()创 建两个进 程 Fork)创建两 个子进程 Fork()创建 两个子进程 子进程1子进程2 建立有名 通道 建立有名 通道 子进程A 子进程B 运行(调用 execlp()执行 “Is-1”命令) 子进程C 阻塞式等待 子进程1的结 束 父进程 等待1秒 子进程2是否结束 结束 是 打开有名通 道 初始化三个 信号量 创建消费者 和生产者两 个进程 P操作 (avail) 生产者线程 P操作 (mutex) 读管着 V操作 (full) V操作 (mutex) P操作 (full) 写管道 P操作 (