第一篇:web server课程设计分析
Web server 软件体系结构课设
实验目的
掌握Web服务体系结构和工作方式,即该体系结构的服务提供者、服务请求者和服务注册中心的角色和它们之间的交互。实验内容
2.1 目的
开发一个基于Web Service的应用软件实例(比如天气查询、飞机/火车票价查询、分布式计算等)。
2.2 分工
我主要负责连接件和配置的设计,组员负责构件设计,我根据他们设计的程序进行思考后对整个web server系统进行了描述与总结。程序环境简介
本程序运行在Windows7系统下,采用Eclipse作为开发工具,使用Java作为开发语言,采用Apache的Tomcat搭建web服务器,实现web服务。
3.1 Web Server简介
通过网页搭建服务器,Web服务器可以解析HTTP协议。当Web服务器接收到一个HTTP请求,会返回一个HTTP响应,例如送回一个HTML页面。为了处理一个请求,Web服务器可以响应一个静态页面或图片,进行页面跳转,或者把动态响应的产生委托给一些其它的程序例如CGI脚本,JSP脚本,servlets,ASP脚本,服务器端JavaScript,或者一些其它的服务器端技术。无论它们的目的如何,这些服务器端的程序通常产生一个HTML的响应来让浏览器可以浏览。3.2 Apache简介
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
3.3 Tomcat简介
Tomcat是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。目前最新版本是8.0。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器。程序架构设计
本程序采用web server架构,通过发布web端的服务器,再通过将客户端与该服务器的http网址相绑定,通过接口来访问服务器对应的方法,达到web服务的作用。
其中web端和客户端都是该系统的构件,web端由Apache和Tomcat所搭建的web服务器。web server是一种基于SOAP通信协议的服务框架,所以该系统的连接件是SOAP协议。程序使用wsdl语言描述了该系统的函数关系。构件设计
构件包含客户端和服务器。5.1 服务器端设计 5.1.1 Apache搭建
通过系统图形化界面方式进行搭建,其中自动生成
等xml文件
其中server.xml对整个系统进行描述,用于生成系统代码。
5.1.2 服务器java代码
首先编写了一个加法程序,利用java的功能自动生成服务端的加法服务:int add(int a , int b);根据该函数通过系统生成对应的服务端代码。原程序结构
其中服务器共生成了如下代码
其中Cal这个类将是原函数之中的add方法在生成的服务端之中被重写为接口方法。以便客户端进行调用。剩下的都是为客户提供访问服务的方法。其中CalServiceLocator.java这个类里面也描述了http服务网址和远程服务的方法。
服务端自动包含了系统引用的包,Apache服务器的包和网络应用的包。
5.1.3 服务端wsdl文件
可以看到服务端还生成了一个cal.wsdl文件,这个文件是接口描述。
可以看到该文件描述了服务的http网址和其对应的方法。
在客户端进行调用的时候会根据这个描述文件进行相应的调用。
5.2 客户端设计
客户端由服务端的wsdl文件自动生成,其中包含了如下文件
其中Cal.java是我们的加法方法 CalServer.java是调用服务的方法
可以看到这个接口继承于rpc的类包,所以我认为是这是服务调用的方法。
CalServiceLocator.java类和CalSoapBindingStub.java类里面封装了服务启动以及运行的具体方法。
若想调用服务器端的加法,我们需要新建一个client包,其中包含了调用服务器的主代码。
可以看到其中声明了CalServerLocator类对象service,声明了一个URL对象url,并且用服务器端的wsdl的地址进行初始化,之后通过CalSoapBindingStub这个类生成sutb对象,并且用service和url对其进行初始化操作,客户端与服务器进行绑定。绑定成功之后可以调用stub的add方法进行计算。
通过这个绑定的文件名称,我们可以发现是通过Soap协议进行绑定,传输,这也说明了web server是基于Soap协议的一种架构。连接件设计
由于web server基于Soap协议进行数据传输,故这个系统中的连接件就是Soap协议(当然包括http协议)。具体在程序之中实例化表现为CalSoapBindingStub.java这个类,该类的构造函数中用wsdl地址和CalServiceLocator类对象进行初始化,将服务端与客户端进行绑定,达到了连接两端的作用,使客户端可以调用服务器的方法进行计算。配置设计
本系统由于比较简单,只有一个客户端与一个服务器进行连接通讯,所以只配置了点对点的连接方式。Web server的拓扑结构应该为三角结构,分别为客户端,服务端和注册端。由于是比较简单的web服务,目前市场的服务器计算吞吐量很大,点对点的服务让服务端不能满载,比较浪费资源,可以采用总线型或者星形的拓扑结构来增强服务器的带宽,以增强计算能力。实验结果
未开启服务运行客户端,客户端的add方法无法加载,但是system.out.println();未经过服务器,故函数可以进行调用,打印输出。可以看到命令行里面有很多的红色代码,说明没有开服务器是不能运行客户端的。
开启服务端的正确结果
可以看到客户端调用服务端的add方法,计算1+555等于556。说明程序运行成功。心得体会
通过这次试验,我明白了web server的开发过程,通过Apache服务器进行搭建web端的服务,再通过服务端的wsdl描述语言生成客户端与服务器之间的连接件,再通过调用连接件的对象方法对远程的服务器进行调用,达到web服务的目的。在写报告的时候我们将连接件误认为中间件,将Apache的服务器当做了连接件。
最开始我们还做了linux的RPC调用,在本次实验的服务端的CalServer.java里面写了继承于rpc包,所以一直认为web server和RPC一样,我都是客户端和服务器进行通讯达到服务的目的。经过网上的学习,我发现还是有区别的。
下面是RPC和web server的对比。
可以看到,RPC模型中多了一个stub的组件,这个是约定的接口,也就是server提供的服务。对客户端来说,有了这个stub,RPC调用过程对client code来说就变成透明的了,客户端代码不需要关心沟通的协议是什么,网络连接是怎么建立的。对客户端来说,它甚至不知道自己调用的是一个远程过程,还是一个本地过程。然后,前面说的理解协议,处理连接的工作,总是要有人做的,这个工作就是在下面的RPC Interface里完成的。
而web service接口就是RPC中的stub组件,规定了server能够提供的服务,这在server和client上是一致的,但是也是跨语言跨平台的。同时,由于web service规范中的WSDL文件的存在,现在各平台的web service框架,都可以基于WSDL文件,自动生成web service接口。web service框架,根据所选的平台有所不同,比如本次试验使用的就是Apache的服务架构。它做的事情也和RPC Interface是一样的,SOAP协议负责解析协议,HTTP协议负责处理连接。
就编程角度来说,RPC和Web server区别不大,RPC需要编写一个远程过程调用描述语言的*.x文件,通过rpcgen命令生成对应的服务端和客户端的结构,再更改其中的函数,通过gcc编译再运行。而Web server也是根据wsdl文件生成相应的web server结构,再去编写详细的函数进行调用。两者都是通过一个配置文件自动生成框架再去编写代码实现服务。
第二篇:证券市场投资分析课程设计
中 北 大 学
证券市场投资分析
综合作业
学 生 姓 名: 学 院、系: 专
业:
学 号:
作 业 题 目: 大东南股份有限公司证券价格模拟操作分析 指导教师: 系
2013 年 4 月 6 日 主任: 叶云
大东南股份有限公司证券价格模拟操作分析
本课题利用《证券投资学》与《证券市场投资分析》课的相关知识,采用光大证券分析软件工具,采用相关的证券技术分析理论,对大东南股份有限公司的证券价格进行了操作模拟。模拟时间:从年月日开始,至年月日结束,模拟经费:50万人民币。大东南股份有限公司证券价格模拟操作过程
大东南股份有限公司的股票买卖操作具体操作说明:
(1)2013年3月5日对大东南股份有限公司进行了看多买进,股数:2000。2013年3月6日对所买进的股票全部平仓。亏损:48元
(2)2013年3月11日对大东南股份有限公司进行了看多买进,股数:2000。2013年3月13日对所买进的股票全部平仓。亏损:1622元
(3)2013年3月18日对大东南股份有限公司进行了看多买进,股数:2000。2013年3月20日对所买进的股票全部平仓。盈利:186元
(4)2013年3月25日对大东南股份有限公司进行了看多买进,股数:2000。2013年3月27日对所买进的股票全部平仓。亏损:227元
(5)2013年4月1日对大东南股份有限公司进行了看多买进,股数:2000。2013年4月3日对所买进的股票全部平仓。亏损:342元
操作过程的最后经费为497998.36元人民币,其变化情况如下图所示。
图1,每次操作过程中的经费变动情况 大东南股份有限公司的模拟操作技术分析
(1)2013年3月5日对大东南股份有限公司进行了看多买进,股数:2000。2013年3月6日对所买进的股票全部平仓。亏损:48元。技术分析买卖依据如下: 趋势分析:
从图中趋势线可看出2013年3月5日大东南股票一直处于上升的趋势
波浪理论分析:
从图中画出的波浪线可以看出3月5号买进的股票处于2浪和3浪之间,是上升趋势。时间周期分析:
从图中看出股票从短期来看略有波动,从长期来看,股票成下降的趋势
形态理论分析 :
呈现双顶图示,3月5日正处于第二顶上升线上,所以判断应是下降趋势,应该买入做空.实际作多,亏损。
均线分析:
.股价高于平均线,视为强势;股价低于平均线,视为弱势
平均线向上涨升,具有助涨力道;平均线向下跌降,具有助跌力道 二条以上平均线向上交叉时,买进 二条以上平均线向下交叉时,卖出;
从趋势线看出,虽然有波动,但整体成下降的趋势。技术指标分析:
1.DIFF、DEA均为正,DIFF向上突破DEA,买入信号。2.DIFF、DEA均为负,DIFF向下跌破DEA,卖出信号。3.DEA线与K线发生背离,行情反转信号。
4.分析MACD柱状线,由红变绿(正变负),卖出信号;由绿变红,买入信号。3月5日DIFF、DEA均为负,是卖出信号
(2)2013年3月11日对大东南股份有限公司进行了看多买进,股数2000。2013年3月13日对所买进的股票全部平仓。亏损:1622元。
技术分析买卖依据如下
趋势分析:
从趋势线看出,是下降的趋势,因为近期来看3月11日是个最高点,应该看空,但我看多买进,亏损。波浪理论分析:
从这个图中可以看出,3月11日处于3浪,处于顶端,处于下降的趋势。
时间周期分析:
从图中看出股票从短期来看略有波动,从长期来看,股票成下降的趋势
形态理论分析:
呈现双顶图示,3月11日正处于第二顶上,所以判断应是下降趋势,应该做空.但实际我买多,亏损
均线分析:
从短期3月11日来看,平均线是上升的,但到3月11日到了较高点,长期来看平均 线是下降的。
技术指标分析:
从图中看出,.DIFF、DEA均为正,DIFF向上突破DEA,但.DIFF已经有下降的趋势。
(3)2013年3月18日对大东南股份有限公司进行了看多买进,股数2000。2013年3月20日对所买进的股票全部平仓。盈利:186元。技术分析买卖依据如下:
趋势分析
从趋势线看,是下降的趋势,3月18日基本处于低点,有望反弹,所以看多买进。
波浪理论分析:
从破浪可以看出,3月18日处于3浪4浪之间,处于低谷,有望突破 反弹,所以做多。
时间周期分析:
从图中看出股票从短期来看略有波动,从长期来看,股票成下降的趋势 形态理论分析:
呈现双顶图示,3月18日正处于第二顶上,所以判断应是上升趋势,应该做多.实际我买多 均线分析:
从平均线看,是下降的趋势
(4)2013年3月25日对大东南股份有限公司进行了看多买进,股数2000:。2013年3月27日对所买进的股票全部平仓。亏损:227元。技术分析买卖依据如下: 趋势分析:
从趋势来看,是下跌的趋势。
波浪理论分析:
反转形态,后市看空。股价下跌。时间周期分析:
从图中看出股票从短期来看略有波动,从长期来看,股票成下降的趋势
形态理论分析:
呈现双顶图示,3月25日正处于中间,所以判断应是下降趋势,应该做空.但实际我买多,亏损
均线分析:
平均线短期波动,长期是下降的
(5)2013年4月1日对大东南股份有限公司进行了看多买进,股数2000:。
2013年4月3日对所买进的股票全部平仓。亏损:342元。
技术分析买卖依据如下: 趋势分析:
从这个趋势线分析,是下降的 波浪理论分析:
从图中可看,反转形态,后市看空,股票会下跌
时间周期分析:
从图中看出股票从短期来看略有波动,从长期来看,股票成下降的趋势 形态理论分析:
呈现双顶图示,4月1日处于底部,应是下降趋势,应该做空.但实际我买多,亏损
均线分析:
从平均线看,都成下降的趋势。结论
从以上5次的操作模拟情况技术分析表明,大东南股份有限公司的股价现在处于下跌的趋势中,只有小范围的波动,但整体是下降的趋势。通过这次的模拟交易,我了解到了股票交易的一系列手续,从买入到卖出中间过程产出的一些手续费的计算等,亦了解到了股票交易的一些规则,专业术语。同时,通过不断进行的股票交易,我知道了紧随国家宏观调控的步伐,要时刻了解国家的一些政策的导向,列入融资融券的开展,对于一些银行以及一些上市公司的影响,同时也要时刻关注自己买卖的上市公司的基本情况,了解他们是否是政策导向型的企业,是否是国家发力扶持的企业,同时也要了解自己所关注的企业的财务报表,如有可能进行一些分析,来确定该企业将来的导向。最为重要的是时刻关注大盘的走向,了解大盘各个板块发展趋势,避免高买低卖。
总之,做股票需要技术与耐心。
第三篇:工作分析课程设计教学大纲
《工作分析》课程设计教学大纲
课程编号:
学 分:分 时 间:2周 适应专业: 人力资源管理 开课学期:第四学期
一、课程设计的性质与目的
本次课程设计是本专业学生学完所设《工作分析》课程后的一次综合性实际操作与演练,其目的是使学生通过实际操作掌握工作分析的基本方法、基本流程、职位说明书撰写的基本技巧、胜任特征模型的基本构建方法等专业技能,并据此了解工作分析及胜任特征模型的构建对人力资源管理者素质的要求,以便学生结合自身实际有针对性地加以改进。
二、课程设计的基本要求 1.以团队形式开展课程设计。2.以实地采集数据为基础开展。3.严格按照流程开展课程设计。
4.以小组为单位提交最终文档,并准备好演示文档集中演示。
三、课程设计内容
1.通过实地采集数据进行某单位或某部门三个左右岗位的工作分析(要求包含上下级职位),并撰写职位说明书
2.通过行为事件访谈法构建某职位的胜任特征模型。
四、课程设计的进度与时间分配
第一周:实地采集数据撰写职位说明书,进行行为事件访谈 第二周:构建胜任特征模型
五、课程设计评分标准
工作说明书评分标准:前期准备文档充分、职位说明书规范、标准,表述方式恰当,内容表述符合实际情况
胜任特征模型评分标准:按规定方法构建,格式符合要求,模型内容表述恰当,基本契合职位要求。
六、课程设计指导书及参考教材
1.《工作分析与研究》,朱勇国主编,中国劳动社会保障出版社 2.《才能评鉴法》,斯宾塞著,汕头大学出版社
3.《胜任:员工胜任能力模型应用手册》,安托尼特等著,北京大学出版社
编写人: 莫勍 审定人: 批准人: 2009年 7月
第四篇:《财务报表分析》课程设计指导书
《财务报表分析》课程设计指导书
一、课程设计的安排
本次课程设计安排在集中实践周,为了让学生有较充裕的时间进行选题、调查和收集有关资料,教师在理论课后就将课程设计任务布置给学生。
学生在学习了财务报表分析的理论、方法和技术的基础上,按照财务报表分析指标计算、财务分析方法,再结合行业和宏观经济环境以及企业发展战略等因素对所选的分析对象进行全面财务分析和评价,最终形成完整的财务报表分析报告。本次课程设计以分组方式进行,每组3~4人,每组同学在课程设计开始前需要制定课程设计计划书,用A4纸打印,交给指导老师。课程设计完成后,每组需交一份财务分析报告,也用A4纸打印。组内每个同学要写一份课程设计报告(格式见任务书),并连同财务分析报告一起按规定时间交给指导老师。
二、财务分析报告的内容及格式要求
1. 封面:课题名称、小组成员(学号,姓名)、指导教师、编写日期
2. 目录(小四 宋体 1.5倍行距)
3. 正文(小四 宋体 1.5倍行距)
(1)概述:案例企业的概况。
(2)
(3)
(4)
(5)
财务报表指标计算:案例企业在分析期间的关键财务指标。财务分析:结合行业数据和对比企业的财务指标进行财务分析。财务评价:解释和评价案例企业的财务状况、盈利状况和发展状况。财务建议:针对案例企业的财务状况,提出对策建议。4. 参考资料(小四 宋体 1.5倍行距)
三、成绩评定
课程设计结束后,指导教师根据报告完成情况及每个人的工作内容和工作量对每个同学评定成绩。成绩评定为“优”、“良”、“中”、“及格”、“不及格”五档。评定参考标准:
1.2.
3.4.
5. 优:财务分析报告完整,内容详细,能正确运用所学到的各种图表工具,分析合理、计算正确、具有一定的应用价值,工作量饱满。良:财务分析报告完整,内容详细,能正确运用所学到的各种图表工具,分析较合理、计算正确、工作量饱满。中:财务分析报告比较完整,能运用所学到的各种图表工具,财务分析较合理、计算基本正确、工作量基本饱满。及格:财务分析报告结构不完整,或财务分析报告比较完整,但个人只承担了部分简单工作。不及格:没有交个人的分析报告,或报告内容过于简单,工作量严重不
足,或没有独立完成设计任务。
第五篇:《操作系统课程设计》指导书分析
《操作系统课程设计》实验指导
课程设计一:进程调度
1、设计目的
(1)要求学生设计一个模拟进程调度的算法(2)理解进程控制块的结构(3)理解进程运行的并发性
(4)掌握进程调度的三种基本算法 注:三种算法任选一种编程实现。
2、设计要求
在多道程序运行环境下,进程数目一般多于处理机数目,使得进程要通过竞争来使用处理机。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之运行,分配处理机的任务是由进程调度程序完成的。一个进程被创建后,系统为了便于对进程进行管理,将系统中的所有进程按其状态,将其组织成不同的进程队列。于是系统有运行进程队列、就绪进程队列和各种事件的进程等待队列。进程调度的功能就是从就绪队列中挑选一个进程到处理机上运行。进程调度的算法有多种,常用的有优先级调度算法、先来先服务算法、时间片轮转算法。
进程是程序在处理机上的执行过程。进程存在的标识是进程控制块(PCB),进程控制块结构如下:
Typeedef struct node {
Char name[10];
/*进程标识符*/
Int prio;
/*进程优先数*/
Int round;
/*进程时间片轮转时间片*/
Int cputime
/*进程占用CPU时间*/
Int needtime
/*进程到完成还需要的时间*/
Int count;
/*计数器*/
Char state;
/*进程的状态*/
Struct node
*next;
/*链指针*/ }PCB;系统创建一个进程,就是由系统为某个程序设置一个PCB,用于对该进程进行控制和管理。进程任务完成,由系统收回其PCB,该进程便消亡。每个进程可以有三个状态:运行态、就绪态和完成状态。
用VC编写一个程序实现进程调度算法,模拟进程调度的过程,加深对进程控制块概念和进程调度算法的理解。
(1)进程调度算法采用优先数调度算法。(2)采用动态优先数法确定进程的优先级别。
(3)设计三个链队列,分别用来表示运行队列、就绪队列和完成队列。
(4)用户输入进程标识符以及进程所需要的时间,申请空间存放进程PCB信息。
优先数调度算法为每个进程设一个优先数,它总是把处理机给就绪队列中具有最高优先权的进程。常用的算法有静态优先数法和动态优先数法。
动态优先数法,使进程的优先权随时间而改变。初始的进程优先数取决于进程运行所需
第1页,共7页
要的时间,时间大,则优先数低。可采取将进程优先数定为一个较大的数(50)减去进程运行所需要的时间。随着进程的运行对优先数进行调整,每次运行时都是从就绪队列中选取优先数最大的进程运行,所以,就将就绪队列按照优先数的大小从高到低排序,这样,每次选队首进程即可。
进程每执行一次,优先数减一个数(自定),CPU时间数加1,进程还需要的时间减1。如果进程所需时间为0,说明进程运行完毕,将其状态变为完成状态“F”,将此进程PCB插入到完成队列中,若就绪队列不空,则将就绪队列中的第一个PCB变为运行状态。进程若没有完成,则将其优先数和就绪队列中的第一个PCB的优先数作比较,如果小,则将其变为就绪态,插入到就绪队列中适当的位置,将就绪队列中的第一个PCB变为运行态投入运行,重复上述过程,直到就绪队列为空,所以进程成为完成状态为止。时间片轮转算法完成进程的调度
设计要求:
(1)进程调度算法采用时间片轮转算法。
(2)设计三个链队列,分别用来表示运行队列、就绪队列和完成队列。
(3)用户输入进程标识符以及进程所需要的时间,申请空间存放进程PCB信息。(4)输出格式和上面的一样
时间片轮转调度:具体做法是调度程序每次把CPU分配给就绪队列首进程使用一个时间片。当这个时间片结束时,就强迫一个进程让出处理器,让它排列到就绪队列的尾部,等候下一轮的调度。实现这种调度要使用一个间隔时钟。当一个进程开始运行时,就将时间片的值置入间隔时钟内,当发生间隔时钟中断时,就表明该进程连续运行的时间已超过一个规定的时间片。此时,中断处理程序就通知处理器调度进行处理器的切换工作。用先来先服务算法完成进程的调度
设计要求:
(1)进程调度算法采用先来先服务算法。
(2)设计三个链队列,分别用来表示运行队列、就绪队列和完成队列。
(3)用户输入进程标识符以及进程所需要的时间,申请空间存放进程PCB信息。(4)输出格式和上面的一样 先来先服务算法:按照进程进入就绪队列的先后次序来分配处理器。先进入就绪队列的进程优先被挑选,运行进程一旦占有处理器将一直运行下去直到运行结束或被阻塞,这是一种非剥夺式调度。
课程设计二:磁盘调度
第2页,共7页
1、设计目的
(1)要求学生设计一个模拟磁盘调度的程序。(2)理解磁盘调度过程中的三个时间段(3)理解磁盘调度的三种算法
2、实验原理
共享设备的典型代表为磁盘,磁盘物理块的地址由柱面号、磁头号、扇区号来指定,完成磁盘某一个物理块的访问要经过三个阶段:寻道时间Ts、旋转延迟时间Tw和读写时间Trw。
寻道时间Ts是磁头从当前磁道移动到目标磁道所需要的时间;旋转延迟时间Tw是当磁头停留在目标磁道后,目标物理块从当前位置旋转到磁头位置的时间;读写时间Trw是目标物理块内容与内存中对应交换的时间。磁盘调度的原则是公平和高吞吐量,衡量指标有访问时间T和平均访问时间Ta:
T=Ts+Tw+Trw
Ta=Tsa+Twa+Trwa 寻道时间和旋转延迟时间成为调度算法的主要考虑因素。减少访问时间就是要减少寻道时间和旋转延迟时间。
3、设计要求
(1)设计一个函数完成先来先服务的磁盘调度功能。
(2)设计一个函数完成最短寻道时间优先的磁盘调度功能。(3)设计一个函数完成电梯算法的磁盘调度功能。
(4)从键盘输入一组磁盘访问序列,选择三种算法中的一种,输出其磁头移动的总的磁道数
课程设计三:主存空间的分配与回收
第3页,共7页
1、设计目的
主存是中央处理器能直接存取指令和数据的存储器,能否合理地利用主存,在很大程度上将影响到整个计算机系统的性能。主存分配是指在多道作业和多进程环境下,如何共享主存空间。主存回收是指当作业执行完毕或进程运行结束后将主存空间归还给系统。主存分配与回收的实现是与主存储器的管理方式有关。本次设计主要是为了帮助理解主存空间的分配与回收的几种算法。
(1)掌握最先适应分配算法(2)掌握最优适应分配算法(3)掌握最坏适应分配算法
2、设计要求
用户提出内存空间请求,系统根据申请者要求,按照最先适应算法的分配策略分析主存空间的使用情况,找出能满足请求的空闲区,分给申请者,当程序执行完毕时,系统要收回它所占用的内存空间。
建立空闲区数据文件,空闲区数据文件包括若干行,每行有两个字段:起始地址、内存块大小(均为整数),各字段以逗号隔开。下面是一个空闲区数据文件的示例:
0,10 10,08 18,10 28,06 34,10 44,09 读取空闲区数据文件,建立空闲区表并在屏幕上显示空闲区内存状态,空闲区表记录了可供分配的空闲内存的起始地址和大小,用标志位指出该分区是否是未分配的空闲区。
接收用户的内存申请,格式为:作业名、申请空间的大小。
按照内存分配算法中的一种方法选择一个空闲区,分割并分配,修改空闲区表,填写内存已分配区表(起始地址、长度、标志位),其中标志位的一个作用是指出该区域分配给哪个作业。
作业结束后回收内存。分区表的结构如下: Typedef struct node { Int start;
Int length;
Char tag[20];}job
设计内容: 设计一个内存分配回收的函数使用最优适应分配算法 2 设计一个内存分配回收的函数使用最坏适应分配算法 3设计一个内存分配回收的函数使用最先适应分配算法 用户提出内存空间请求,系统根据申请者要求,分别使用上述算法分析内存空间的使用情况,找出合适的空闲区,分给申请者,当作业执行完毕后,系统收回它所占用的内存空间。
课程设计四:P,V操作
第4页,共7页
设计要求:
编程模拟实现下列任一问题:
1.桌上有一盘子,可以存放一个水果。爸爸总是放苹果到盘子中,而妈妈总是放香蕉到盘子中;一个儿子专等吃盘中的香蕉,一个女儿专等吃盘中的苹果。请用P,V操作实现上述问题的解。
分析:在本题中,爸爸、妈妈、儿子和女儿共用一个盘子,盘子一次只能放一个水果。当盘子为空时,爸爸和妈妈都可以试着将一个水果放入盘中,但一次只能有一人成功放入水果。若放入盘子中的是香蕉,则允许儿子吃,女儿必须等待;若放入盘子中的是苹果,则允许女儿吃,儿子必须等待。
在本题中,应设置3个信号量dish、apple、banaba,信号量dish表示盘子是否为空,其初值为1;信号量apple表示盘中是否有苹果,其初值为0;信号量banana表示盘中是否有香蕉,其初值为0。进程之间的同步描述如下:
Semaphore dish=1;Semaphore apple,banana=0;Main(){
cobegin
father();
mother();
son();
daughter();
coend } Father()
mather(){
{
while(true)
while(true)
{
{
p(dish);
p(dish);
将苹果放入盘中;
将香蕉放入盘中;
v(apple);
v(banana);
}
} }
} Son()
daughter(){
{
while(true)
while(true)
{
{
p(banana);
p(apple);
从盘中取出香蕉;
从盘中取出苹果;
v(dish);
v(dish);
吃香蕉;
吃苹果;
}
}
}
2、设公共汽车上,司机和售票员的活动分别是: 司机的活动:启动车辆;正常行车;到站停车。
第5页,共7页
售票员的活动:关车门;售票;开车门。
在汽车不断的到站、停站、行驶过程中,用信号量和P,V操作实现它们的同步。
分析:在汽车行驶过程中,司机活动与售票员活动之间的同步关系为:售票员关车门后向司机发开车信号,司机接到开车信号后启动车辆,在汽车正常行驶过程中售票员售票,到站时司机停车,售票员在车停后开车门让乘客下车。因此司机启动车辆的动作必须与售票员关车门的动作取得同步;售票员开车门的动作也必须与司机停车取得同步。
在本题中,应设置两个信号量s1、s2,s1表示是否允许司机启动汽车,其初值为0;s2表示是否允许售票员开车门,其初值为0。这两个活动的同步用P,V原语描述如下:
Semaphore s1,s2=0;
Main(){
cobegin
driver();
busman();
coend } Driver()
busman()
{
{
while(true)
while(true)
{
{
p(s1);
关车门;
启动车辆;
v(s1);
正常行车;
售票;
到站停车;
p(s2);
v(s2);
开车门;
}
上下乘客;
}
}
}
3,、读者写者问题(算法略)
4、多个生产者与消费者问题(算法略)
5、哲学家就餐问题(算法略)
课程设计五:银行家算法
第6页,共7页
1、设计目的
(1)了解多道程序系统中,多个进程并发执行的资源分配。
(2)掌握死锁产生的原因、产生死锁的必要条件和处理死锁的基本方法。(3)掌握预防死锁的方法,系统安全状态的基本概念。
(4)掌握银行家算法,了解资源在进程并发执行中的资源分配策略。(5)理解避免死锁在当前计算机系统不常使用的原因
2、设计要求
在多道程序系统中,虽可借助于多个进程的并发执行来改善系统的资源利用率,提高系统的吞吐量,但可能发生一种危险----死锁。死锁是指多个进程在运行中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法向前推进。银行家算法是最具有代表性的避免死锁的算法,它的基本思想是分配资源之前,判断系统是否是安全的,若是才分配资源。
设计一个n个并发进程共享M个系统资源的程序实现银行家算法。要求包含:(1)简单的选择界面
(2)能显示当前系统资源的占用和剩余情况
(3)为进程分配资源,如果进程要求的资源大于系统剩余的资源,不予分配并且提示分配不成功。
(4)撤销作业,释放资源。
3、算法描述(略)
4、所用的数据结构说明(1)银行家所能提供的资源
Type struct node{ Int a;Int b;Int c;Int remain_a;Int remain_b;Int remain_c;}bank;
(2)进程所占用的资源
Typedef struct node1{ Chan name[20];Int a;Int b;Int c;Int need_a;Int need_b;Int need_c;}process
第7页,共7页