燕山大学操作系统课程设计说明书
燕山大学课程设计说明书
课程设计名称:操作系统
题目:多道程序缓冲区协调操作
班级:软件工程2班
开发小组名称:多道程序缓冲区协调操作小组 课题负责人:马灿 课题组成员:马灿
姓名:马灿
学号:100120010039 班级:软件工程2班 自评成绩:A
课题开发日期:2012.01.
1
燕山大学操作系统课程设计说明书
目录
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
2
燕山大学操作系统课程设计说明书
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
3
燕山大学操作系统课程设计说明书
1概述
1.1.目的
通过实现多线程的生产者、消费者问题,掌握对线程、互斥信号及其同步机制的学习,巩固对线程实验的代码的实践能力,加深对相关基本概念的理解,将学习内容与实践有机的结合起来。而本实现界面的目的是通过动态演示,模拟多线程生产者消费者及其进程同步和互斥的程序设计的基本方法。 1.2 .主要完成的任务
有多个PUT操作要不断循环地向Buffer1送字符数据,有Move1操作不断地将Buffer1的数据取到Buffer2,Move2操作不断地将Buffer2的数据取到Buffer3,有多个GET操作要不断地从Buffer3中取数据。PUT、 MOVE、 GET每次操作一个数据,为了在操作的过程中要保证数据不丢失, 每个Buffer每次只能接受一个PUT或一个Move或一个Get,多个操作不能同时操作同一BUFFER。设计一个多道程序完成上述操作。
Move1 Move2 Put
Buff1 Buff2 Buff3 Get
图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++编程语言
4
燕山大学操作系统课程设计说明书
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基本的技术路线
面向过程
5