操作系统多线程同步与互斥课程设计报告

2018-12-21 13:09

燕山大学课程设计说明书

课程设计名称:操作系统

题目:多道程序缓冲区协调操作

班级:14计算机科学与技术1班

开发小组名称:砺剑编码小组 课题负责人:刘

课题组成员:刘14计算机1班 A 14计算机1班 B 14计算机1班 B 14计算机1班 C

课题开发日期:2016.12.19-2016.12.30

1.概述

1.1目的

通过运用操作系统基本原理, 解决进程同步控制;实现多道程序缓冲区协调操作设计,了解多线程的创建,运行原理;通过信号量机制的运用了解各线程间的协调工作机制;通过界面编程,熟练掌握可视化编程工具的能力;独立完成项目的需求分析和总体设计、详细设计,提升软件工程能力。

1.2主要完成的任务

如下图1所示,有多个PUT操作要不断循环地向Buffer1送字符数据,有Move1操作不断地将Buffer1的数据取到Buffer2,Move2操作不断地将Buffer1的数据取到Buffer3,有多个GET操作要不断地从Buffer2和Buffer3中取数据。PUT、 MOVE、 GET每次操作一个数据,为了在操作的过程中要保证数据不丢失,每个Buffer每次只能接受一个PUT或一个Move或一个Get。运用进程同步和互斥机制设计一个多道程序完成上述操作。

图1 Buffer操作

基本功能要求:

(1) 可以随机产生字符数据,由put操作将数据放入Buff,buffer中容量单位是字符; (2)提供良好图形界面,显示Buffer的操作过程,可以暂停和继续系统的执行; (3) 可以设定各Buffer的容量、PUT、GET、Move操作的个数; (4) 可以设定PUT、GET、Move操作的速度;

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

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

(7)程序运行结束,显示汇总数据,如:总的运行时间;Buffer中数据的个数;已放入BUFFER的数据个数;已取出的数据个数;平均每个buffer中的数据个数。

(8)能够将每次的实验输入和实验结果存储起来,下次运行时或以后可查询。

Move1 Put

Buff2 Get

Buff1 Move2 Buff3 Get

1.3使用的开发工具

操作系统:Window10

开发语言:Java

开发环境:NetBeans IDE 8.1

1.4解决的主要问题

(1)界面的设计;

(2)界面显示各个buffer的模拟put字符,move字符和get字符操作; (3)线程间的同步和互斥问题; (4)各个线程状态的控制;

(5)设置的速度、容量等参数的传递问题。

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

2.1线程

线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。线程基本上是轻量级的进程,它负责在单个程序里执行多任务。

2.2多线程

通常由操作系统负责多个线程的调度和执行。多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度。

2.3信号量

信号量是一个在一定范围内变化的整形数据,用来表示一种临界资源,线程通过信号量的值来确定自己的状态是执行还是挂起,各线程间也是通过信号量机制来协调运行顺序一起完成任务。

2.4同步与互斥

(1)进程同步

进程同步是进程之间直接的制约关系,是为完成某种任务而建立的两个或多个线程,这个线程需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系来源于他们之间的合作。 (2)进程互斥

进程互斥是进程之间的间接制约关系。当一个进程进入临界区使用临界资源时,另一个进程必须等待。只有当使用临界资源的进程退出临界区后,这个进程才会解除阻塞状态。

3.总体设计

3.1 基本的技术路线

本课程设计使用面向对象的编程语言Java,应用Java的多线程编程技术,模拟各个缓冲区之间的动作。

3.2软件的总体结构、模块关系、总体流程

3.2.1总体结构 主显示界面 参数设开始,暂停,结束按钮 置 继续按钮 参数传递给 实验数据BUFFER中主显示界面开始模拟统计结果界 保存到txt各全局变量put,move,get过程 面 文件中 或局部变量 2总体结构 3.2.2模块关系

本课程设计共创建8个类,可分为三个模块分别是界面模块,共享资源模块和Runnable接口类模块。8个类分别为主界面类Main_win,结果统计输出界面Result_win,共享资源类BUFFER,以及实现Runnable接口的5个类:BUFFER_PUT、BUFFERT_MOVE、BUFFERTH_MOVE、BUFFERT_GET、BUFFERTH_GET。

各模块关系可用下图表示 界面控制模块 控制设 线通过置 程成员、 的函数传 各在界递 个面模参 状拟过数 态 程 Runnable接口类模块 线程run函数中调用共享资源模块成员函数 共享资源模块

图3 模块关系

3.2.3总体流程

初始化主界面

图4 总体流程 实验数据保存至txt文件 关闭软件 结束并弹出统计结果页面 继续 暂停 模拟过程输出在主界面 参数设置 开始 各线程启动 3.3创立的线程

(1)据BUFFER_PUT类建立的线程体buffer1,通过buffer1建立两个线程t11、t12,模拟多个put操作。

(2)据BUFFERT_MOVE 类建立的线程体buffer2,通过buffer2建立两个线程t2,模拟move2操作。

(3)据BUFFERTH_MOVE 类建立的线程体buffer3,通过buffe3建立两个线程t3,模拟move3操作。

(4)据BUFFERT_GET类和BUFFERTH_GET类建立的线程体buffer4、buffer5通过buffer4、buffer5建立4线程t41、t42,t51、t52模拟多个get操作。

4.详细设计

4.1主要类

4.1.1Main_win类

(1)成员变量

s:布尔型,用于控制系统的暂停,继续等; starttime:loog型,开始运行的系统时间; endtime:loog型,结束时的系统时间 gotime:loog型,运行总时间 (2)成员方法

main(String args[]):主函数


操作系统多线程同步与互斥课程设计报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于承担行政职能事业单位改革的几点思考

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: