第一篇: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頁