第一篇:web server課程設(shè)計分析
Web server 軟件體系結(jié)構(gòu)課設(shè)
實驗?zāi)康?/p>
掌握Web服務(wù)體系結(jié)構(gòu)和工作方式,即該體系結(jié)構(gòu)的服務(wù)提供者、服務(wù)請求者和服務(wù)注冊中心的角色和它們之間的交互。實驗內(nèi)容
2.1 目的
開發(fā)一個基于Web Service的應(yīng)用軟件實例(比如天氣查詢、飛機/火車票價查詢、分布式計算等)。
2.2 分工
我主要負(fù)責(zé)連接件和配置的設(shè)計,組員負(fù)責(zé)構(gòu)件設(shè)計,我根據(jù)他們設(shè)計的程序進行思考后對整個web server系統(tǒng)進行了描述與總結(jié)。程序環(huán)境簡介
本程序運行在Windows7系統(tǒng)下,采用Eclipse作為開發(fā)工具,使用Java作為開發(fā)語言,采用Apache的Tomcat搭建web服務(wù)器,實現(xiàn)web服務(wù)。
3.1 Web Server簡介
通過網(wǎng)頁搭建服務(wù)器,Web服務(wù)器可以解析HTTP協(xié)議。當(dāng)Web服務(wù)器接收到一個HTTP請求,會返回一個HTTP響應(yīng),例如送回一個HTML頁面。為了處理一個請求,Web服務(wù)器可以響應(yīng)一個靜態(tài)頁面或圖片,進行頁面跳轉(zhuǎn),或者把動態(tài)響應(yīng)的產(chǎn)生委托給一些其它的程序例如CGI腳本,JSP腳本,servlets,ASP腳本,服務(wù)器端JavaScript,或者一些其它的服務(wù)器端技術(shù)。無論它們的目的如何,這些服務(wù)器端的程序通常產(chǎn)生一個HTML的響應(yīng)來讓瀏覽器可以瀏覽。3.2 Apache簡介
Apache是世界使用排名第一的Web服務(wù)器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務(wù)器端軟件之一。它快速、可靠并且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務(wù)器中。
3.3 Tomcat簡介
Tomcat是Apache 軟件基金會的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發(fā)而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP 規(guī)范總是能在Tomcat 中得到體現(xiàn),Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 規(guī)范。因為Tomcat 技術(shù)先進、性能穩(wěn)定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web 應(yīng)用服務(wù)器。目前最新版本是8.0。
Tomcat 服務(wù)器是一個免費的開放源代碼的Web 應(yīng)用服務(wù)器,屬于輕量級應(yīng)用服務(wù)器。程序架構(gòu)設(shè)計
本程序采用web server架構(gòu),通過發(fā)布web端的服務(wù)器,再通過將客戶端與該服務(wù)器的http網(wǎng)址相綁定,通過接口來訪問服務(wù)器對應(yīng)的方法,達到web服務(wù)的作用。
其中web端和客戶端都是該系統(tǒng)的構(gòu)件,web端由Apache和Tomcat所搭建的web服務(wù)器。web server是一種基于SOAP通信協(xié)議的服務(wù)框架,所以該系統(tǒng)的連接件是SOAP協(xié)議。程序使用wsdl語言描述了該系統(tǒng)的函數(shù)關(guān)系。構(gòu)件設(shè)計
構(gòu)件包含客戶端和服務(wù)器。5.1 服務(wù)器端設(shè)計 5.1.1 Apache搭建
通過系統(tǒng)圖形化界面方式進行搭建,其中自動生成
等xml文件
其中server.xml對整個系統(tǒng)進行描述,用于生成系統(tǒng)代碼。
5.1.2 服務(wù)器java代碼
首先編寫了一個加法程序,利用java的功能自動生成服務(wù)端的加法服務(wù):int add(int a , int b);根據(jù)該函數(shù)通過系統(tǒng)生成對應(yīng)的服務(wù)端代碼。原程序結(jié)構(gòu)
其中服務(wù)器共生成了如下代碼
其中Cal這個類將是原函數(shù)之中的add方法在生成的服務(wù)端之中被重寫為接口方法。以便客戶端進行調(diào)用。剩下的都是為客戶提供訪問服務(wù)的方法。其中CalServiceLocator.java這個類里面也描述了http服務(wù)網(wǎng)址和遠程服務(wù)的方法。
服務(wù)端自動包含了系統(tǒng)引用的包,Apache服務(wù)器的包和網(wǎng)絡(luò)應(yīng)用的包。
5.1.3 服務(wù)端wsdl文件
可以看到服務(wù)端還生成了一個cal.wsdl文件,這個文件是接口描述。
可以看到該文件描述了服務(wù)的http網(wǎng)址和其對應(yīng)的方法。
在客戶端進行調(diào)用的時候會根據(jù)這個描述文件進行相應(yīng)的調(diào)用。
5.2 客戶端設(shè)計
客戶端由服務(wù)端的wsdl文件自動生成,其中包含了如下文件
其中Cal.java是我們的加法方法 CalServer.java是調(diào)用服務(wù)的方法
可以看到這個接口繼承于rpc的類包,所以我認(rèn)為是這是服務(wù)調(diào)用的方法。
CalServiceLocator.java類和CalSoapBindingStub.java類里面封裝了服務(wù)啟動以及運行的具體方法。
若想調(diào)用服務(wù)器端的加法,我們需要新建一個client包,其中包含了調(diào)用服務(wù)器的主代碼。
可以看到其中聲明了CalServerLocator類對象service,聲明了一個URL對象url,并且用服務(wù)器端的wsdl的地址進行初始化,之后通過CalSoapBindingStub這個類生成sutb對象,并且用service和url對其進行初始化操作,客戶端與服務(wù)器進行綁定。綁定成功之后可以調(diào)用stub的add方法進行計算。
通過這個綁定的文件名稱,我們可以發(fā)現(xiàn)是通過Soap協(xié)議進行綁定,傳輸,這也說明了web server是基于Soap協(xié)議的一種架構(gòu)。連接件設(shè)計
由于web server基于Soap協(xié)議進行數(shù)據(jù)傳輸,故這個系統(tǒng)中的連接件就是Soap協(xié)議(當(dāng)然包括http協(xié)議)。具體在程序之中實例化表現(xiàn)為CalSoapBindingStub.java這個類,該類的構(gòu)造函數(shù)中用wsdl地址和CalServiceLocator類對象進行初始化,將服務(wù)端與客戶端進行綁定,達到了連接兩端的作用,使客戶端可以調(diào)用服務(wù)器的方法進行計算。配置設(shè)計
本系統(tǒng)由于比較簡單,只有一個客戶端與一個服務(wù)器進行連接通訊,所以只配置了點對點的連接方式。Web server的拓?fù)浣Y(jié)構(gòu)應(yīng)該為三角結(jié)構(gòu),分別為客戶端,服務(wù)端和注冊端。由于是比較簡單的web服務(wù),目前市場的服務(wù)器計算吞吐量很大,點對點的服務(wù)讓服務(wù)端不能滿載,比較浪費資源,可以采用總線型或者星形的拓?fù)浣Y(jié)構(gòu)來增強服務(wù)器的帶寬,以增強計算能力。實驗結(jié)果
未開啟服務(wù)運行客戶端,客戶端的add方法無法加載,但是system.out.println();未經(jīng)過服務(wù)器,故函數(shù)可以進行調(diào)用,打印輸出??梢钥吹矫钚欣锩嬗泻芏嗟募t色代碼,說明沒有開服務(wù)器是不能運行客戶端的。
開啟服務(wù)端的正確結(jié)果
可以看到客戶端調(diào)用服務(wù)端的add方法,計算1+555等于556。說明程序運行成功。心得體會
通過這次試驗,我明白了web server的開發(fā)過程,通過Apache服務(wù)器進行搭建web端的服務(wù),再通過服務(wù)端的wsdl描述語言生成客戶端與服務(wù)器之間的連接件,再通過調(diào)用連接件的對象方法對遠程的服務(wù)器進行調(diào)用,達到web服務(wù)的目的。在寫報告的時候我們將連接件誤認(rèn)為中間件,將Apache的服務(wù)器當(dāng)做了連接件。
最開始我們還做了linux的RPC調(diào)用,在本次實驗的服務(wù)端的CalServer.java里面寫了繼承于rpc包,所以一直認(rèn)為web server和RPC一樣,我都是客戶端和服務(wù)器進行通訊達到服務(wù)的目的。經(jīng)過網(wǎng)上的學(xué)習(xí),我發(fā)現(xiàn)還是有區(qū)別的。
下面是RPC和web server的對比。
可以看到,RPC模型中多了一個stub的組件,這個是約定的接口,也就是server提供的服務(wù)。對客戶端來說,有了這個stub,RPC調(diào)用過程對client code來說就變成透明的了,客戶端代碼不需要關(guān)心溝通的協(xié)議是什么,網(wǎng)絡(luò)連接是怎么建立的。對客戶端來說,它甚至不知道自己調(diào)用的是一個遠程過程,還是一個本地過程。然后,前面說的理解協(xié)議,處理連接的工作,總是要有人做的,這個工作就是在下面的RPC Interface里完成的。
而web service接口就是RPC中的stub組件,規(guī)定了server能夠提供的服務(wù),這在server和client上是一致的,但是也是跨語言跨平臺的。同時,由于web service規(guī)范中的WSDL文件的存在,現(xiàn)在各平臺的web service框架,都可以基于WSDL文件,自動生成web service接口。web service框架,根據(jù)所選的平臺有所不同,比如本次試驗使用的就是Apache的服務(wù)架構(gòu)。它做的事情也和RPC Interface是一樣的,SOAP協(xié)議負(fù)責(zé)解析協(xié)議,HTTP協(xié)議負(fù)責(zé)處理連接。
就編程角度來說,RPC和Web server區(qū)別不大,RPC需要編寫一個遠程過程調(diào)用描述語言的*.x文件,通過rpcgen命令生成對應(yīng)的服務(wù)端和客戶端的結(jié)構(gòu),再更改其中的函數(shù),通過gcc編譯再運行。而Web server也是根據(jù)wsdl文件生成相應(yīng)的web server結(jié)構(gòu),再去編寫詳細的函數(shù)進行調(diào)用。兩者都是通過一個配置文件自動生成框架再去編寫代碼實現(xiàn)服務(wù)。
第二篇:證券市場投資分析課程設(shè)計
中 北 大 學(xué)
證券市場投資分析
綜合作業(yè)
學(xué) 生 姓 名: 學(xué) 院、系: 專
業(yè):
學(xué) 號:
作 業(yè) 題 目: 大東南股份有限公司證券價格模擬操作分析 指導(dǎo)教師: 系
2013 年 4 月 6 日 主任: 葉云
大東南股份有限公司證券價格模擬操作分析
本課題利用《證券投資學(xué)》與《證券市場投資分析》課的相關(guān)知識,采用光大證券分析軟件工具,采用相關(guān)的證券技術(shù)分析理論,對大東南股份有限公司的證券價格進行了操作模擬。模擬時間:從年月日開始,至年月日結(jié)束,模擬經(jīng)費:50萬人民幣。大東南股份有限公司證券價格模擬操作過程
大東南股份有限公司的股票買賣操作具體操作說明:
(1)2013年3月5日對大東南股份有限公司進行了看多買進,股數(shù):2000。2013年3月6日對所買進的股票全部平倉。虧損:48元
(2)2013年3月11日對大東南股份有限公司進行了看多買進,股數(shù):2000。2013年3月13日對所買進的股票全部平倉。虧損:1622元
(3)2013年3月18日對大東南股份有限公司進行了看多買進,股數(shù):2000。2013年3月20日對所買進的股票全部平倉。盈利:186元
(4)2013年3月25日對大東南股份有限公司進行了看多買進,股數(shù):2000。2013年3月27日對所買進的股票全部平倉。虧損:227元
(5)2013年4月1日對大東南股份有限公司進行了看多買進,股數(shù):2000。2013年4月3日對所買進的股票全部平倉。虧損:342元
操作過程的最后經(jīng)費為497998.36元人民幣,其變化情況如下圖所示。
圖1,每次操作過程中的經(jīng)費變動情況 大東南股份有限公司的模擬操作技術(shù)分析
(1)2013年3月5日對大東南股份有限公司進行了看多買進,股數(shù):2000。2013年3月6日對所買進的股票全部平倉。虧損:48元。技術(shù)分析買賣依據(jù)如下: 趨勢分析:
從圖中趨勢線可看出2013年3月5日大東南股票一直處于上升的趨勢
波浪理論分析:
從圖中畫出的波浪線可以看出3月5號買進的股票處于2浪和3浪之間,是上升趨勢。時間周期分析:
從圖中看出股票從短期來看略有波動,從長期來看,股票成下降的趨勢
形態(tài)理論分析 :
呈現(xiàn)雙頂圖示,3月5日正處于第二頂上升線上,所以判斷應(yīng)是下降趨勢,應(yīng)該買入做空.實際作多,虧損。
均線分析:
.股價高于平均線,視為強勢;股價低于平均線,視為弱勢
平均線向上漲升,具有助漲力道;平均線向下跌降,具有助跌力道 二條以上平均線向上交叉時,買進 二條以上平均線向下交叉時,賣出;
從趨勢線看出,雖然有波動,但整體成下降的趨勢。技術(shù)指標(biāo)分析:
1.DIFF、DEA均為正,DIFF向上突破DEA,買入信號。2.DIFF、DEA均為負(fù),DIFF向下跌破DEA,賣出信號。3.DEA線與K線發(fā)生背離,行情反轉(zhuǎn)信號。
4.分析MACD柱狀線,由紅變綠(正變負(fù)),賣出信號;由綠變紅,買入信號。3月5日DIFF、DEA均為負(fù),是賣出信號
(2)2013年3月11日對大東南股份有限公司進行了看多買進,股數(shù)2000。2013年3月13日對所買進的股票全部平倉。虧損:1622元。
技術(shù)分析買賣依據(jù)如下
趨勢分析:
從趨勢線看出,是下降的趨勢,因為近期來看3月11日是個最高點,應(yīng)該看空,但我看多買進,虧損。波浪理論分析:
從這個圖中可以看出,3月11日處于3浪,處于頂端,處于下降的趨勢。
時間周期分析:
從圖中看出股票從短期來看略有波動,從長期來看,股票成下降的趨勢
形態(tài)理論分析:
呈現(xiàn)雙頂圖示,3月11日正處于第二頂上,所以判斷應(yīng)是下降趨勢,應(yīng)該做空.但實際我買多,虧損
均線分析:
從短期3月11日來看,平均線是上升的,但到3月11日到了較高點,長期來看平均 線是下降的。
技術(shù)指標(biāo)分析:
從圖中看出,.DIFF、DEA均為正,DIFF向上突破DEA,但.DIFF已經(jīng)有下降的趨勢。
(3)2013年3月18日對大東南股份有限公司進行了看多買進,股數(shù)2000。2013年3月20日對所買進的股票全部平倉。盈利:186元。技術(shù)分析買賣依據(jù)如下:
趨勢分析
從趨勢線看,是下降的趨勢,3月18日基本處于低點,有望反彈,所以看多買進。
波浪理論分析:
從破浪可以看出,3月18日處于3浪4浪之間,處于低谷,有望突破 反彈,所以做多。
時間周期分析:
從圖中看出股票從短期來看略有波動,從長期來看,股票成下降的趨勢 形態(tài)理論分析:
呈現(xiàn)雙頂圖示,3月18日正處于第二頂上,所以判斷應(yīng)是上升趨勢,應(yīng)該做多.實際我買多 均線分析:
從平均線看,是下降的趨勢
(4)2013年3月25日對大東南股份有限公司進行了看多買進,股數(shù)2000:。2013年3月27日對所買進的股票全部平倉。虧損:227元。技術(shù)分析買賣依據(jù)如下: 趨勢分析:
從趨勢來看,是下跌的趨勢。
波浪理論分析:
反轉(zhuǎn)形態(tài),后市看空。股價下跌。時間周期分析:
從圖中看出股票從短期來看略有波動,從長期來看,股票成下降的趨勢
形態(tài)理論分析:
呈現(xiàn)雙頂圖示,3月25日正處于中間,所以判斷應(yīng)是下降趨勢,應(yīng)該做空.但實際我買多,虧損
均線分析:
平均線短期波動,長期是下降的
(5)2013年4月1日對大東南股份有限公司進行了看多買進,股數(shù)2000:。
2013年4月3日對所買進的股票全部平倉。虧損:342元。
技術(shù)分析買賣依據(jù)如下: 趨勢分析:
從這個趨勢線分析,是下降的 波浪理論分析:
從圖中可看,反轉(zhuǎn)形態(tài),后市看空,股票會下跌
時間周期分析:
從圖中看出股票從短期來看略有波動,從長期來看,股票成下降的趨勢 形態(tài)理論分析:
呈現(xiàn)雙頂圖示,4月1日處于底部,應(yīng)是下降趨勢,應(yīng)該做空.但實際我買多,虧損
均線分析:
從平均線看,都成下降的趨勢。結(jié)論
從以上5次的操作模擬情況技術(shù)分析表明,大東南股份有限公司的股價現(xiàn)在處于下跌的趨勢中,只有小范圍的波動,但整體是下降的趨勢。通過這次的模擬交易,我了解到了股票交易的一系列手續(xù),從買入到賣出中間過程產(chǎn)出的一些手續(xù)費的計算等,亦了解到了股票交易的一些規(guī)則,專業(yè)術(shù)語。同時,通過不斷進行的股票交易,我知道了緊隨國家宏觀調(diào)控的步伐,要時刻了解國家的一些政策的導(dǎo)向,列入融資融券的開展,對于一些銀行以及一些上市公司的影響,同時也要時刻關(guān)注自己買賣的上市公司的基本情況,了解他們是否是政策導(dǎo)向型的企業(yè),是否是國家發(fā)力扶持的企業(yè),同時也要了解自己所關(guān)注的企業(yè)的財務(wù)報表,如有可能進行一些分析,來確定該企業(yè)將來的導(dǎo)向。最為重要的是時刻關(guān)注大盤的走向,了解大盤各個板塊發(fā)展趨勢,避免高買低賣。
總之,做股票需要技術(shù)與耐心。
第三篇:工作分析課程設(shè)計教學(xué)大綱
《工作分析》課程設(shè)計教學(xué)大綱
課程編號:
學(xué) 分:分 時 間:2周 適應(yīng)專業(yè): 人力資源管理 開課學(xué)期:第四學(xué)期
一、課程設(shè)計的性質(zhì)與目的
本次課程設(shè)計是本專業(yè)學(xué)生學(xué)完所設(shè)《工作分析》課程后的一次綜合性實際操作與演練,其目的是使學(xué)生通過實際操作掌握工作分析的基本方法、基本流程、職位說明書撰寫的基本技巧、勝任特征模型的基本構(gòu)建方法等專業(yè)技能,并據(jù)此了解工作分析及勝任特征模型的構(gòu)建對人力資源管理者素質(zhì)的要求,以便學(xué)生結(jié)合自身實際有針對性地加以改進。
二、課程設(shè)計的基本要求 1.以團隊形式開展課程設(shè)計。2.以實地采集數(shù)據(jù)為基礎(chǔ)開展。3.嚴(yán)格按照流程開展課程設(shè)計。
4.以小組為單位提交最終文檔,并準(zhǔn)備好演示文檔集中演示。
三、課程設(shè)計內(nèi)容
1.通過實地采集數(shù)據(jù)進行某單位或某部門三個左右崗位的工作分析(要求包含上下級職位),并撰寫職位說明書
2.通過行為事件訪談法構(gòu)建某職位的勝任特征模型。
四、課程設(shè)計的進度與時間分配
第一周:實地采集數(shù)據(jù)撰寫職位說明書,進行行為事件訪談 第二周:構(gòu)建勝任特征模型
五、課程設(shè)計評分標(biāo)準(zhǔn)
工作說明書評分標(biāo)準(zhǔn):前期準(zhǔn)備文檔充分、職位說明書規(guī)范、標(biāo)準(zhǔn),表述方式恰當(dāng),內(nèi)容表述符合實際情況
勝任特征模型評分標(biāo)準(zhǔn):按規(guī)定方法構(gòu)建,格式符合要求,模型內(nèi)容表述恰當(dāng),基本契合職位要求。
六、課程設(shè)計指導(dǎo)書及參考教材
1.《工作分析與研究》,朱勇國主編,中國勞動社會保障出版社 2.《才能評鑒法》,斯賓塞著,汕頭大學(xué)出版社
3.《勝任:員工勝任能力模型應(yīng)用手冊》,安托尼特等著,北京大學(xué)出版社
編寫人: 莫勍 審定人: 批準(zhǔn)人: 2009年 7月
第四篇:《財務(wù)報表分析》課程設(shè)計指導(dǎo)書
《財務(wù)報表分析》課程設(shè)計指導(dǎo)書
一、課程設(shè)計的安排
本次課程設(shè)計安排在集中實踐周,為了讓學(xué)生有較充裕的時間進行選題、調(diào)查和收集有關(guān)資料,教師在理論課后就將課程設(shè)計任務(wù)布置給學(xué)生。
學(xué)生在學(xué)習(xí)了財務(wù)報表分析的理論、方法和技術(shù)的基礎(chǔ)上,按照財務(wù)報表分析指標(biāo)計算、財務(wù)分析方法,再結(jié)合行業(yè)和宏觀經(jīng)濟環(huán)境以及企業(yè)發(fā)展戰(zhàn)略等因素對所選的分析對象進行全面財務(wù)分析和評價,最終形成完整的財務(wù)報表分析報告。本次課程設(shè)計以分組方式進行,每組3~4人,每組同學(xué)在課程設(shè)計開始前需要制定課程設(shè)計計劃書,用A4紙打印,交給指導(dǎo)老師。課程設(shè)計完成后,每組需交一份財務(wù)分析報告,也用A4紙打印。組內(nèi)每個同學(xué)要寫一份課程設(shè)計報告(格式見任務(wù)書),并連同財務(wù)分析報告一起按規(guī)定時間交給指導(dǎo)老師。
二、財務(wù)分析報告的內(nèi)容及格式要求
1. 封面:課題名稱、小組成員(學(xué)號,姓名)、指導(dǎo)教師、編寫日期
2. 目錄(小四 宋體 1.5倍行距)
3. 正文(小四 宋體 1.5倍行距)
(1)概述:案例企業(yè)的概況。
(2)
(3)
(4)
(5)
財務(wù)報表指標(biāo)計算:案例企業(yè)在分析期間的關(guān)鍵財務(wù)指標(biāo)。財務(wù)分析:結(jié)合行業(yè)數(shù)據(jù)和對比企業(yè)的財務(wù)指標(biāo)進行財務(wù)分析。財務(wù)評價:解釋和評價案例企業(yè)的財務(wù)狀況、盈利狀況和發(fā)展?fàn)顩r。財務(wù)建議:針對案例企業(yè)的財務(wù)狀況,提出對策建議。4. 參考資料(小四 宋體 1.5倍行距)
三、成績評定
課程設(shè)計結(jié)束后,指導(dǎo)教師根據(jù)報告完成情況及每個人的工作內(nèi)容和工作量對每個同學(xué)評定成績。成績評定為“優(yōu)”、“良”、“中”、“及格”、“不及格”五檔。評定參考標(biāo)準(zhǔn):
1.2.
3.4.
5. 優(yōu):財務(wù)分析報告完整,內(nèi)容詳細,能正確運用所學(xué)到的各種圖表工具,分析合理、計算正確、具有一定的應(yīng)用價值,工作量飽滿。良:財務(wù)分析報告完整,內(nèi)容詳細,能正確運用所學(xué)到的各種圖表工具,分析較合理、計算正確、工作量飽滿。中:財務(wù)分析報告比較完整,能運用所學(xué)到的各種圖表工具,財務(wù)分析較合理、計算基本正確、工作量基本飽滿。及格:財務(wù)分析報告結(jié)構(gòu)不完整,或財務(wù)分析報告比較完整,但個人只承擔(dān)了部分簡單工作。不及格:沒有交個人的分析報告,或報告內(nèi)容過于簡單,工作量嚴(yán)重不
足,或沒有獨立完成設(shè)計任務(wù)。
第五篇:《操作系統(tǒng)課程設(shè)計》指導(dǎo)書分析
《操作系統(tǒng)課程設(shè)計》實驗指導(dǎo)
課程設(shè)計一:進程調(diào)度
1、設(shè)計目的
(1)要求學(xué)生設(shè)計一個模擬進程調(diào)度的算法(2)理解進程控制塊的結(jié)構(gòu)(3)理解進程運行的并發(fā)性
(4)掌握進程調(diào)度的三種基本算法 注:三種算法任選一種編程實現(xiàn)。
2、設(shè)計要求
在多道程序運行環(huán)境下,進程數(shù)目一般多于處理機數(shù)目,使得進程要通過競爭來使用處理機。這就要求系統(tǒng)能按某種算法,動態(tài)地把處理機分配給就緒隊列中的一個進程,使之運行,分配處理機的任務(wù)是由進程調(diào)度程序完成的。一個進程被創(chuàng)建后,系統(tǒng)為了便于對進程進行管理,將系統(tǒng)中的所有進程按其狀態(tài),將其組織成不同的進程隊列。于是系統(tǒng)有運行進程隊列、就緒進程隊列和各種事件的進程等待隊列。進程調(diào)度的功能就是從就緒隊列中挑選一個進程到處理機上運行。進程調(diào)度的算法有多種,常用的有優(yōu)先級調(diào)度算法、先來先服務(wù)算法、時間片輪轉(zhuǎn)算法。
進程是程序在處理機上的執(zhí)行過程。進程存在的標(biāo)識是進程控制塊(PCB),進程控制塊結(jié)構(gòu)如下:
Typeedef struct node {
Char name[10];
/*進程標(biāo)識符*/
Int prio;
/*進程優(yōu)先數(shù)*/
Int round;
/*進程時間片輪轉(zhuǎn)時間片*/
Int cputime
/*進程占用CPU時間*/
Int needtime
/*進程到完成還需要的時間*/
Int count;
/*計數(shù)器*/
Char state;
/*進程的狀態(tài)*/
Struct node
*next;
/*鏈指針*/ }PCB;系統(tǒng)創(chuàng)建一個進程,就是由系統(tǒng)為某個程序設(shè)置一個PCB,用于對該進程進行控制和管理。進程任務(wù)完成,由系統(tǒng)收回其PCB,該進程便消亡。每個進程可以有三個狀態(tài):運行態(tài)、就緒態(tài)和完成狀態(tài)。
用VC編寫一個程序?qū)崿F(xiàn)進程調(diào)度算法,模擬進程調(diào)度的過程,加深對進程控制塊概念和進程調(diào)度算法的理解。
(1)進程調(diào)度算法采用優(yōu)先數(shù)調(diào)度算法。(2)采用動態(tài)優(yōu)先數(shù)法確定進程的優(yōu)先級別。
(3)設(shè)計三個鏈隊列,分別用來表示運行隊列、就緒隊列和完成隊列。
(4)用戶輸入進程標(biāo)識符以及進程所需要的時間,申請空間存放進程PCB信息。
優(yōu)先數(shù)調(diào)度算法為每個進程設(shè)一個優(yōu)先數(shù),它總是把處理機給就緒隊列中具有最高優(yōu)先權(quán)的進程。常用的算法有靜態(tài)優(yōu)先數(shù)法和動態(tài)優(yōu)先數(shù)法。
動態(tài)優(yōu)先數(shù)法,使進程的優(yōu)先權(quán)隨時間而改變。初始的進程優(yōu)先數(shù)取決于進程運行所需
第1頁,共7頁
要的時間,時間大,則優(yōu)先數(shù)低??刹扇⑦M程優(yōu)先數(shù)定為一個較大的數(shù)(50)減去進程運行所需要的時間。隨著進程的運行對優(yōu)先數(shù)進行調(diào)整,每次運行時都是從就緒隊列中選取優(yōu)先數(shù)最大的進程運行,所以,就將就緒隊列按照優(yōu)先數(shù)的大小從高到低排序,這樣,每次選隊首進程即可。
進程每執(zhí)行一次,優(yōu)先數(shù)減一個數(shù)(自定),CPU時間數(shù)加1,進程還需要的時間減1。如果進程所需時間為0,說明進程運行完畢,將其狀態(tài)變?yōu)橥瓿蔂顟B(tài)“F”,將此進程PCB插入到完成隊列中,若就緒隊列不空,則將就緒隊列中的第一個PCB變?yōu)檫\行狀態(tài)。進程若沒有完成,則將其優(yōu)先數(shù)和就緒隊列中的第一個PCB的優(yōu)先數(shù)作比較,如果小,則將其變?yōu)榫途w態(tài),插入到就緒隊列中適當(dāng)?shù)奈恢?,將就緒隊列中的第一個PCB變?yōu)檫\行態(tài)投入運行,重復(fù)上述過程,直到就緒隊列為空,所以進程成為完成狀態(tài)為止。時間片輪轉(zhuǎn)算法完成進程的調(diào)度
設(shè)計要求:
(1)進程調(diào)度算法采用時間片輪轉(zhuǎn)算法。
(2)設(shè)計三個鏈隊列,分別用來表示運行隊列、就緒隊列和完成隊列。
(3)用戶輸入進程標(biāo)識符以及進程所需要的時間,申請空間存放進程PCB信息。(4)輸出格式和上面的一樣
時間片輪轉(zhuǎn)調(diào)度:具體做法是調(diào)度程序每次把CPU分配給就緒隊列首進程使用一個時間片。當(dāng)這個時間片結(jié)束時,就強迫一個進程讓出處理器,讓它排列到就緒隊列的尾部,等候下一輪的調(diào)度。實現(xiàn)這種調(diào)度要使用一個間隔時鐘。當(dāng)一個進程開始運行時,就將時間片的值置入間隔時鐘內(nèi),當(dāng)發(fā)生間隔時鐘中斷時,就表明該進程連續(xù)運行的時間已超過一個規(guī)定的時間片。此時,中斷處理程序就通知處理器調(diào)度進行處理器的切換工作。用先來先服務(wù)算法完成進程的調(diào)度
設(shè)計要求:
(1)進程調(diào)度算法采用先來先服務(wù)算法。
(2)設(shè)計三個鏈隊列,分別用來表示運行隊列、就緒隊列和完成隊列。
(3)用戶輸入進程標(biāo)識符以及進程所需要的時間,申請空間存放進程PCB信息。(4)輸出格式和上面的一樣 先來先服務(wù)算法:按照進程進入就緒隊列的先后次序來分配處理器。先進入就緒隊列的進程優(yōu)先被挑選,運行進程一旦占有處理器將一直運行下去直到運行結(jié)束或被阻塞,這是一種非剝奪式調(diào)度。
課程設(shè)計二:磁盤調(diào)度
第2頁,共7頁
1、設(shè)計目的
(1)要求學(xué)生設(shè)計一個模擬磁盤調(diào)度的程序。(2)理解磁盤調(diào)度過程中的三個時間段(3)理解磁盤調(diào)度的三種算法
2、實驗原理
共享設(shè)備的典型代表為磁盤,磁盤物理塊的地址由柱面號、磁頭號、扇區(qū)號來指定,完成磁盤某一個物理塊的訪問要經(jīng)過三個階段:尋道時間Ts、旋轉(zhuǎn)延遲時間Tw和讀寫時間Trw。
尋道時間Ts是磁頭從當(dāng)前磁道移動到目標(biāo)磁道所需要的時間;旋轉(zhuǎn)延遲時間Tw是當(dāng)磁頭停留在目標(biāo)磁道后,目標(biāo)物理塊從當(dāng)前位置旋轉(zhuǎn)到磁頭位置的時間;讀寫時間Trw是目標(biāo)物理塊內(nèi)容與內(nèi)存中對應(yīng)交換的時間。磁盤調(diào)度的原則是公平和高吞吐量,衡量指標(biāo)有訪問時間T和平均訪問時間Ta:
T=Ts+Tw+Trw
Ta=Tsa+Twa+Trwa 尋道時間和旋轉(zhuǎn)延遲時間成為調(diào)度算法的主要考慮因素。減少訪問時間就是要減少尋道時間和旋轉(zhuǎn)延遲時間。
3、設(shè)計要求
(1)設(shè)計一個函數(shù)完成先來先服務(wù)的磁盤調(diào)度功能。
(2)設(shè)計一個函數(shù)完成最短尋道時間優(yōu)先的磁盤調(diào)度功能。(3)設(shè)計一個函數(shù)完成電梯算法的磁盤調(diào)度功能。
(4)從鍵盤輸入一組磁盤訪問序列,選擇三種算法中的一種,輸出其磁頭移動的總的磁道數(shù)
課程設(shè)計三:主存空間的分配與回收
第3頁,共7頁
1、設(shè)計目的
主存是中央處理器能直接存取指令和數(shù)據(jù)的存儲器,能否合理地利用主存,在很大程度上將影響到整個計算機系統(tǒng)的性能。主存分配是指在多道作業(yè)和多進程環(huán)境下,如何共享主存空間。主存回收是指當(dāng)作業(yè)執(zhí)行完畢或進程運行結(jié)束后將主存空間歸還給系統(tǒng)。主存分配與回收的實現(xiàn)是與主存儲器的管理方式有關(guān)。本次設(shè)計主要是為了幫助理解主存空間的分配與回收的幾種算法。
(1)掌握最先適應(yīng)分配算法(2)掌握最優(yōu)適應(yīng)分配算法(3)掌握最壞適應(yīng)分配算法
2、設(shè)計要求
用戶提出內(nèi)存空間請求,系統(tǒng)根據(jù)申請者要求,按照最先適應(yīng)算法的分配策略分析主存空間的使用情況,找出能滿足請求的空閑區(qū),分給申請者,當(dāng)程序執(zhí)行完畢時,系統(tǒng)要收回它所占用的內(nèi)存空間。
建立空閑區(qū)數(shù)據(jù)文件,空閑區(qū)數(shù)據(jù)文件包括若干行,每行有兩個字段:起始地址、內(nèi)存塊大小(均為整數(shù)),各字段以逗號隔開。下面是一個空閑區(qū)數(shù)據(jù)文件的示例:
0,10 10,08 18,10 28,06 34,10 44,09 讀取空閑區(qū)數(shù)據(jù)文件,建立空閑區(qū)表并在屏幕上顯示空閑區(qū)內(nèi)存狀態(tài),空閑區(qū)表記錄了可供分配的空閑內(nèi)存的起始地址和大小,用標(biāo)志位指出該分區(qū)是否是未分配的空閑區(qū)。
接收用戶的內(nèi)存申請,格式為:作業(yè)名、申請空間的大小。
按照內(nèi)存分配算法中的一種方法選擇一個空閑區(qū),分割并分配,修改空閑區(qū)表,填寫內(nèi)存已分配區(qū)表(起始地址、長度、標(biāo)志位),其中標(biāo)志位的一個作用是指出該區(qū)域分配給哪個作業(yè)。
作業(yè)結(jié)束后回收內(nèi)存。分區(qū)表的結(jié)構(gòu)如下: Typedef struct node { Int start;
Int length;
Char tag[20];}job
設(shè)計內(nèi)容: 設(shè)計一個內(nèi)存分配回收的函數(shù)使用最優(yōu)適應(yīng)分配算法 2 設(shè)計一個內(nèi)存分配回收的函數(shù)使用最壞適應(yīng)分配算法 3設(shè)計一個內(nèi)存分配回收的函數(shù)使用最先適應(yīng)分配算法 用戶提出內(nèi)存空間請求,系統(tǒng)根據(jù)申請者要求,分別使用上述算法分析內(nèi)存空間的使用情況,找出合適的空閑區(qū),分給申請者,當(dāng)作業(yè)執(zhí)行完畢后,系統(tǒng)收回它所占用的內(nèi)存空間。
課程設(shè)計四:P,V操作
第4頁,共7頁
設(shè)計要求:
編程模擬實現(xiàn)下列任一問題:
1.桌上有一盤子,可以存放一個水果。爸爸總是放蘋果到盤子中,而媽媽總是放香蕉到盤子中;一個兒子專等吃盤中的香蕉,一個女兒專等吃盤中的蘋果。請用P,V操作實現(xiàn)上述問題的解。
分析:在本題中,爸爸、媽媽、兒子和女兒共用一個盤子,盤子一次只能放一個水果。當(dāng)盤子為空時,爸爸和媽媽都可以試著將一個水果放入盤中,但一次只能有一人成功放入水果。若放入盤子中的是香蕉,則允許兒子吃,女兒必須等待;若放入盤子中的是蘋果,則允許女兒吃,兒子必須等待。
在本題中,應(yīng)設(shè)置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、設(shè)公共汽車上,司機和售票員的活動分別是: 司機的活動:啟動車輛;正常行車;到站停車。
第5頁,共7頁
售票員的活動:關(guān)車門;售票;開車門。
在汽車不斷的到站、停站、行駛過程中,用信號量和P,V操作實現(xiàn)它們的同步。
分析:在汽車行駛過程中,司機活動與售票員活動之間的同步關(guān)系為:售票員關(guān)車門后向司機發(fā)開車信號,司機接到開車信號后啟動車輛,在汽車正常行駛過程中售票員售票,到站時司機停車,售票員在車停后開車門讓乘客下車。因此司機啟動車輛的動作必須與售票員關(guān)車門的動作取得同步;售票員開車門的動作也必須與司機停車取得同步。
在本題中,應(yīng)設(shè)置兩個信號量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);
關(guān)車門;
啟動車輛;
v(s1);
正常行車;
售票;
到站停車;
p(s2);
v(s2);
開車門;
}
上下乘客;
}
}
}
3,、讀者寫者問題(算法略)
4、多個生產(chǎn)者與消費者問題(算法略)
5、哲學(xué)家就餐問題(算法略)
課程設(shè)計五:銀行家算法
第6頁,共7頁
1、設(shè)計目的
(1)了解多道程序系統(tǒng)中,多個進程并發(fā)執(zhí)行的資源分配。
(2)掌握死鎖產(chǎn)生的原因、產(chǎn)生死鎖的必要條件和處理死鎖的基本方法。(3)掌握預(yù)防死鎖的方法,系統(tǒng)安全狀態(tài)的基本概念。
(4)掌握銀行家算法,了解資源在進程并發(fā)執(zhí)行中的資源分配策略。(5)理解避免死鎖在當(dāng)前計算機系統(tǒng)不常使用的原因
2、設(shè)計要求
在多道程序系統(tǒng)中,雖可借助于多個進程的并發(fā)執(zhí)行來改善系統(tǒng)的資源利用率,提高系統(tǒng)的吞吐量,但可能發(fā)生一種危險----死鎖。死鎖是指多個進程在運行中因爭奪資源而造成的一種僵局,當(dāng)進程處于這種僵持狀態(tài)時,若無外力作用,它們都將無法向前推進。銀行家算法是最具有代表性的避免死鎖的算法,它的基本思想是分配資源之前,判斷系統(tǒng)是否是安全的,若是才分配資源。
設(shè)計一個n個并發(fā)進程共享M個系統(tǒng)資源的程序?qū)崿F(xiàn)銀行家算法。要求包含:(1)簡單的選擇界面
(2)能顯示當(dāng)前系統(tǒng)資源的占用和剩余情況
(3)為進程分配資源,如果進程要求的資源大于系統(tǒng)剩余的資源,不予分配并且提示分配不成功。
(4)撤銷作業(yè),釋放資源。
3、算法描述(略)
4、所用的數(shù)據(jù)結(jié)構(gòu)說明(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頁