1 / 18
文档名称:

燕山大学os课程设计说明书.doc

格式:doc   大小:890KB   页数:18页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

燕山大学os课程设计说明书.doc

上传人:drp539605 2019/1/7 文件大小:890 KB

下载得到文件列表

燕山大学os课程设计说明书.doc

文档介绍

文档介绍:. 目的 3
. 主要完成的任务 3
. 使用的开发工具 3
. 解决的主要问题 3
2. 使用的基本概念和原理 3
. 线程 3
. 线程的同步 4
. 模态对话框 4
. 原理 4
3. 总体设计 4
. 确定基本的技术路线 4
. 软件的总体结构 4
. 创建的进程和线程 5
4. 详细设计 5
. 利用的进程操作的函数、原语、API 5
. 信号量创建函数 5
. 互斥对象的创建. 5
. 线程创建函数 6
. 等待函数 6
. 模块内部的流程和实现算法 6
. 全局变量的声明 8
5. 编码设计 9
. 开发环境的设置和建立 9
. 编译环境的设置 9
. 程序设计时要注意的事项 10
. 主要程序的代码设计及注释 10
. 解决的技术难点、经常犯的错误 14
6. 测试时出现的问题及其解决方法 14
7. 软件使用说明及运行结果 14
. 基本功能 14
. 需要运行的环境 15
. 安装及运行 15
. 操作 15
. 运行结果 15
8. 总结 16
. 操作系统课程设计完成情况 16
. 收获和感受 16
. 经验总结 16
9. 参考文献 17
概述
目的
通过使用程序设计语言设计一个程序,模拟生产者消费者和搬运者对产品操作的过程。
主要完成的任务
Put
Move2
Buff1
Buff2
Buff3
Get
Move1
图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中的数据个数。
使用的开发工具
使用MFC在VC++。
解决的主要问题
(1)可以随机产生字符数据。
(2)设计put,get,move的线程。
(3)可以设计buffer的容量,put,get,move的个数。
(4)控制put,get,move的速度。
(5)实时显示buffer的内容。
使用的基本概念和原理
线程
线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。
线程的同步
临界段:临界段对象通过提供所有线程必须共享的对象来控制线程。只有拥有临界段对象的线程才可以访问保护资源(进行临界区操作)。在另一个线程可以获取对象的访问权。用户应用程序可能会使用临界对象来阻止两个线程同时访问共享的资源发文件等。
互斥量:互斥量的工作方式和临界段非常相似,其区别在于互斥量不公保护一个进程内的资源共享,而且还保护系统中进程之间的共享资源。它是通过为互斥量提供一个“互斥量名”来进行进程间资源共享协调的。
事件:事件对象用于给线程传递信号,指示线程中特定的操作可以开始或结束。除非线程已经收到了这个事件信号,否则它将一直处于挂起状态。当事件对象进入其信号状态时,正在等待该事件的线程就可以开始执行。例如,一个应用程序可以通过事件来通知线程它需要的数据已经准备好。经常利用事件进行线程之间的通信。
信号量:信号量与互斥相似,但是互斥只允许在同一时刻一个线程访问它的数据,而信号量允许多个线程在同一时刻访问它的数据。WIN32 不知道哪一个线程拥有信号量,它只保证信号量使用的资源计数正确的设置。
模态对话框
模态对话框(Modal Dialogue Bo