程序设计说明书

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

燕山大学课程设计说明书课程设计名称:操作系统题目:多道程序缓冲区协调操作

班级:软件工程2班

开发小组名称:多道程序缓冲区协调操作小组课题负责人:马灿

课题组成员:马灿

姓名:马灿

学号:100120010039

班级:软件工程2班

自评成绩:A

课题开发日期:2012.01.

目录

1概述 (4)

1.1.目的 (4)

1.2 .主要完成的任务 (4)

1.3.使用的开发工具 (5)

1.4. 解决的主要问题 (5)

2.使用的基本概念和原理 (5)

2.1.基本概念 (5)

2.2.基本原理 (5)

3总体设计 (6)

3.1基本的技术路线 (6)

3.2软件的总体结构 (6)

3.3模块关系 (6)

3.4总体流程 (6)

3.5创立的进程、线程 (6)

4.详细设计 (7)

4.1.线程操作的函数 (7)

4.2.三个缓冲池对应三个空区信号,通用函数 (7)

4.3三个缓冲池对应三个数据信号 (7)

4.4互斥信号 (7)

5.编码设计 (8)

5.1开发环境的设置和建立 (8)

5.2程序设计时要注意的事项 (8)

5.3关键控件的特点和使用 (9)

5.4主要程序的代码设计及注释 (9)

5.5解决的技术难点、经常犯的错误 (14)

6. 测试时出现过的问题及其解决方法 (14)

6.2.问题2 (14)

6.1.问题1 (14)

7.软件使用说明 (14)

7.1基本功能 (14)

7.2需要运行的环境 (14)

7.3运行 (15)

7.4操作 (15)

8.总结 (15)

9.参考文献 (16)

1概述

1.1.目的

通过实现多线程的生产者、消费者问题,掌握对线程、互斥信号及其同步机制的学习,巩固对线程实验的代码的实践能力,加深对相关基本概念的理解,将学习内容与实践有机的结合起来。而本实现界面的目的是通过动态演示,模拟多线程生产者消费者及其进程同步和互斥的程序设计的基本方法。

1.2 .主要完成的任务

有多个PUT 操作要不断循环地向Buffer1送字符数据,有Move1操作不断地将Buffer1的数据取到Buffer2,Move2操作不断地将Buffer2的数据取到Buffer3,有多个GET 操作要不断地从Buffer3中取数据。PUT 、 MOVE 、 GET 每次操作一个数据,为了在操作的过程中要保证数据不丢失, 每个Buffer 每次只能接受一个PUT 或一个Move 或一个Get ,多个操作不能同时操作同一BUFFER 。设计一个多道程序完成上述操作。

图1 Buffer 操作

基本功能要求

(1) 可以随机产生字符数据,由put 操作放入Buff1,buffer 中容量单位是字符。

(2)提供良好图形界面,显示Buffer 的操作过程。

(3) 可以设定各Buffer 的容量、PUT 、GET 、Move 操作的个数;

(4) 可以设定PUT 、GET 、Move 操作的速度;

(5) 实时显示每个Buffer 中数据的个数和数据的内容,空闲Buffer 的空间的个数;

(6) 实时显示线程、进程所处于等待(阻塞)状态的个数

(7)程序运行结束,显示汇总数据:

总的运行时间;

Buffer 中数据的个数;

已放入BUFFER 的数据个数;

已放已取的数据个数;

平均每个buffer 中的数据个数。

1.3. 使用的开发工具

Windows 7操作系统,V C++6.0开发工具,C++编程语言

Put

Get Move1

1.4. 解决的主要问题

通过对三个Buffer的操作,利用操作系统课程所学的P、V原语操作对put、move1、move2、get等多线程进行协调处理,实现了多道程序同时执行的原理。并在执行时动态显示每个Buffer中数据的个数和数据的内容,空闲Buffer的空间的个数。

2.使用的基本概念和原理

2.1.基本概念

多道程序:多道程序设计技术是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制下,相互穿插运行。特征:多道,即计算机内存中同时存放几道相互独立的程序;宏观上并行,同时进入系统的几道程序都处于运行过程中,即它们先后开始了各自的运行,但都未运行完毕;微观上串行,从微观上看,内存中的多道程序轮流地或分时地占有处理机。

进程:进程是操作系统结构的基础,是一个正在执行的程序,计算机中正在运行的程序实例,可以分配给处理器并由处理器执行的一个实体,由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。

线程:线程是"进程"中某个单一顺序的控制流。也被称为轻量进程。计算机科学术语,指运行中的程序的调度单位

同步:同步主要任务是对多个相关进程在执行次序上进行协调,以使得并发执行的进程间有效的共享资源和相互合作,从而使程序的执行具有再现性。

互斥:线程互斥是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

2.2.基本原理

在put与move1、move2与get、move1/move2之间都有n个公用的缓冲池,这时可以利用三个互斥信号mutex实现诸进程或线程对缓冲池的互斥使用,然后利用个缓冲池的empty和full信号表示缓冲池中空缓冲区和满缓冲区的数目。只要缓冲池未满即可放数据,缓冲池有数据即可取数据。

3总体设计

3.1基本的技术路线

面向过程

相关文档
最新文档