




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課程編號:B080000070操作系統實驗報告班級指導教師石凱實驗名稱操作系統實驗開設學期2016-2017 第二學期開設時間第11周第18周報告日期2017年7月3日評定成績評定人石凱評定 日 期2017年7月5日東北大學軟件學院實驗一進程的同步與互斥實驗題目:通過學習和分析基礎例子程序.使用windows進程和線程編程(也可以采用Java或 Unix/Linux的POSIX線程編程)實現一個簡單的生產者/消費者問題的程序。關鍵代碼:import java.util.ArrayList;public class Produce public Object object;public Arra
2、yList list;/用list存放生產之后的數據.最大容量為1public Produce(Object object,ArrayList list )this.object = object;this. list = list;)public void produce。synchronized (object) /*只有list為空時才會去進行生產操作*/try while (!list.isEmpty()System. out.println (生產者+Thread. currentThread().getName() + waiting);object.wait();)int val
3、ue = 9999;list.add(value);System. out.println(生產者+Thread. currentThreadQ.getName()+ Runnable);object.notifyAll();/然后去喚醒因object調用wait方法處于阻塞狀態的線程catch (InterruptedException e) e.printStackTrace();)import java.util.ArrayList;public class Consumer public Object object;public ArrayList list;/用list存放生產之后的
4、數據.最大容量為1public Consumer(Object object,ArrayList list )this.object = object;this. list = list;)public void consmer() synchronized (object) try /*只有list不為空時才會去進行消費操作*/while (list.isEmpty()System. out.println(消費者+Thread. currentThread().getName() + waiting);object.wait();)list.clear();System. out.prin
5、tln(消費者+Thread. currentThreadQ.getName()+Runnable);object.notifyAll();/然后去喚醒因object調用wait方法處于阻塞狀態的線程catch (InterruptedException e) e.printStackTrace();)實驗結果:_ Probleimf 卜,比 K-. Dclaratlui m Can笛口真 總 Wciik叩ace Mlgra七口小JAX-WS AnnoiatiaHS 總 JPA AiHKiiarWrE嗎必小“加3( Mm (Jjvj applicmt幻n匚Mpp師理匚即式由口2塊口f 粗口加限
6、jdk5 w。掄油也g_i2gin曬van 2017Wf-l 下午&汨;回:產失生產舌2 hmahlc看 上,; TT 1 迎3 K 芍=Runnable消景著HI鑰昔1 K.jiting: h3itLhg生F fer n 1 Rubble生F 士生j ci 1 tjai-ti.r.E消費者省才2 Runnabls注 )/,,:; wnitinc小;三 l KflitiHE生產者生產者2 faiwublE-?):二/;: 1 WiitirE消一舌消叫:T1 Runnable:臺 產 Hi n式ting漕.號捎叫u2 baiting生產者生,甘L Ruckle生產餐生產者1 waitbie正日之
7、 ri J Runnable貓“,棺: H 2 wa it LHg泊百 a rA ,ti mitiriB思考題:(1)如何控制進程間的相互通信?答:主要有:管道.信號.共享內存.消息隊列(2)什么是進程的同步?什么是進程的互斥?分別有哪些實現方式?答:進程互斥是進程之間的間接制約關系。當一個進程進入臨界區使用臨界資源時.另一個進程必須等待。只有當使用臨界資源的進程退出臨界區后.這個進程才會解除阻塞狀態。進程同步也是進程之間直接的制約關系.是為完成某種任務而建立的兩個或多個線程 這個線程需要在某些位置上協調他們的工作次序而等待、傳遞信息所產生的制約關系。進程間的直接制約關系來源于他們之間的合作。
8、可以利用信號量來實現進程的同步與互斥。實驗二處理機調度實驗題目:設計一個按優先權調度算法實現處理器調度的程序數據結構及符號說明:typedef struct pb 每個進程char pname5;/進程的名字char status8;/進程的狀態int time;/要求運行時間int pri;進程的優先權int cputime;/cpu時間struct pb *p;/隊列結構.它的下一個。pbc, *pbcp;流程設計:關鍵代碼:void attemper(pbcp pbca) pbcp pItem = pbca-p;pbcp pIterator = pbca-p;while (pIterat
9、or!= NULL) if (pItem-pri pri&pIterator-time != 0) pItem = pIterator;) pIterator = pIterator-p;)if (pItem-time -二 1)二= 0) pItem-cputime += 1;pItem-pri -= 1;strcpy(pItem-status, finish);)else strcpy(pItem-status, run); pItem-cputime += 1;pItem-pri -= 1;strcpy(pItem-status, run);)pIterator = pbca-p;whi
10、le (pIterator != NULL) if (pIterator-cputime != 0&pIterator!=pItem&pIterator-time!=0) pIterator-cputime += 1;strcpy(pIterator-status, ready); ) pIterator = pIterator-p;)printPbc(pbca);)運行結果:利蛤比進也去據發請輸人進程塞后:5清傳人進每名,運行時目,加生世P1 2 J請輸入進程名,運行時司.優先輒P2 3 5消輸人進苣號運行時旬優先皺,9 1 號金轄入進程各運行時間憂元坂P4 2 4他輸入進卷卷運行時間,優先
11、較他程卻cpu時間運行時間優先如狀態PI 02 rtady進程名/時間.,運行時間/ft先鎏狀者P?035rwadr送程卻cpu時間運行時間優先如秋態Pi03ready進程名,“時間/運行時間優先而狀態P4024rga 小冏程包/cpu時間運行時間優先如狀態PS042readyTIUE1域程名pu時間運行時間優先馥,狀態P102rwadr進程卷5時間/運行時間緡先纏/狀態P2124rimU CAMndDM上竽值面32比ecLexe X進程名.印u時IH運行時間 優先藪.狀態P5 042 readrTIME1進程名,鼻。時間運行時間優先緩,狀態Pl D 2 radv進程名,CPU時間迂行時間優先
12、俎:狀態P2L24nm進程名.pu時間運行時間優先裹.狀態P3Q3rtady進程名/cpuBl間運亍時間,優無攀,猶升P4024readr電程名/cpu時間W行時間世先扳狀態P5042i*advTIME2進程名,匚PU時間迂行時間優先貌:狀態PL D 2 L-=adr進程名.pu時間運行時間優先裹.狀態P2224rtady進程力/cpuEl-l R運行時間優先巍狀態Pi03readr進行名/cpu時間,運行時間.優先級;狀態P413rim進程名,鼻。時間運行時間優先緩,狀態P5D42L-tiidTTIME?進程名.pu時間運行時間優先裹.狀態PL Q 2 rtadvS CzWAinHclUHk
13、systiEnnIZ/irdjexE X進程名.ce時間 運行時間 優先敏 KWP5 042 reidvTIME3進程名總叫時間運行時間優先破.狀志Pl02radv進程名/匚叫時間透行時間優先貌f狀態P233nm進程名,Mu時間運行時間優先緩,狀者P3Q3rtady進程名餐阻時間運廳時間.優先酬狀態P428readr迸程名,cpu時間運行時間優先魏,狀態PiQ42rtadyTIUE4進程名/匚叫時間 透行時間 優先貌f狀態FLQ2L-sadj-進程名,Mu時間運行時間優先緩,狀者P243rtady進程右左四刖問三行時間/優先翻/狀態PJ08readr迸程名北口口時皿運行時間/優先綠狀態P430
14、2finish進程名,&u時閏嗨行時間哦先豺狀杳P5042readyTIMES進程名/中u時間/運行時間峨先豺狀態F1 021 read?U CAMndDM上竽值面32比ecLexe X進程名.印u時IH運行時間 優先藪.器內P5 042 eadrTIMES進程名,3u時間運行時間優先緩,狀態Pl D 2 radv進程名,CPU時間迂行時間優先俎:狀態P25-3rwadv進程名.pu時間運行時間優先輟.狀浩P3102finish進程名/cpuBl間運亍時間,仔爨,狀盛P4302finjsh電程名/cpu時間W行時間優先飄狀態P5042i*advTIMES進程名,匚PU時間迂行時間優先貌:狀態P
15、LD2i-=ady進程名.pu時間運行時間優先輟.狀浩P2602finish進程力/cpuBl間運行時間優先巍狀態P31cl2 finjsh進行.a七pu時間,運行時間.優先級;狀態P4202finish進程名,3u時間運行時間優先緩,狀態P5D42L-tiidTTIME?進程名.pu時間運行時間優先裹.狀態PL Q 2 rtady31 2AWindn!i,1stenil2cirbcLcMe XPJ L 02 finish進程名Apu時間 運行時間 優先如狀態P4302finish進程名.Xpu時間運行時間.優先獻狀春PSS20radvTIME10進程告u時間運行時間.優先破.,狀志P120r
16、*adv進程名兒叫時間 運行時間 優先如狀態P2602il-isb進程S &u時間,運行時間優先初狀態P31a2finish進程名fcpu時間迂行時間優先如狀態P4&02finish進程名u時間/運行時間.,優先繳3狀態Pi 4- run-TIME11后程名:邛u時間.,運行時間.優先圾,狀態PL 3 a- finish進程名/QiRl同店:亍時用優先球狀態P2.602 finish進程名,W時間,足行時間.優先繃狀態P3102finish進程名/CPUH1間運行時間/優先豺狀態P4302fin jsh進程暫cpu時間遷有時間優先初狀態Pi 5- ready孱授任意裙奉段.思考題:(1)處理機
17、調度的目的?答:主要還是為了優化軟件的運行。(2)你實現優先權調度算法的思想?答:遍歷一次.取出優先權最高的.判斷該進程是否還要運行.要允許就運行它。實驗三存儲管理實驗題目:模擬分頁式存儲管理中硬件的地址轉換和產生缺頁中斷。 用先進先出下0)頁面調度算法處理缺頁中斷。數據結構及符號說明:int paper_table75 char *oper_char12 int oper_table122 int fifo_table4int static count = 0;/7乘5的頁表每次操作/指令序列的單元號和操作存儲/先進先出表.記錄那幾個在內存中/記下哪個先來的流程設計:核心代碼:void sc
18、heduler(void)(int i, page, page_block, page_move;for (i = 0; ic&in3kZcm(l esie在內存口-決號;馬保巷步二70;物理地址F:F口謂皮簞法頁需排序F 123710在內存口-央號:B:偏巷步: 50:物理地址FIFO調度算法頁表排序力12 J1074在內存中,塊號:制偏存Hj 15:物理地址FIFO調度算法頁表排序:。12 31167在內存Q-決號:I.偏卷#:2:;將理地址FIFO例度算法頁表排序:。123149在內存中.塊號 5:偏程置 56;物理地址FIF 0調度算法頁表排序:。123猊四口妹-版哲弟的四號為:標至倍
19、強存快顯 換入內存成功.塊號 5一偏移髭 4口:的理地址:680. FlFCli尋度篁法班志排序節L 2 3坡更o游-娘.音投的頁號.為:L頁權宜超普企換入內存成功,表號 S.Mgfti 53:狗建地址:1酬7.FIF口詢度算法貝方排序6i 2 J31 2AWmdciiA*5,L5Y5tern22Vcmd-exe!1得春成功,塊號:8:: 53:樹理地址:1077;FIFO遁境具法Jil怠排于6 42 J斷春曳 內遍 頁入西 尿換FI.裱音報衿頁號為:J頁拔直接替換 成功.塊號:9:偏移通EM:物理地址:算法網云徘字6 45 J1177:走頁中喻,被昔掛前頁號為:3一頁被直接苦方地 3門由,i
20、.塊導1節移什::::1,理地電1砧;F 可遁境真法Jil怠排于6451威頁中喻,裱音報衿頁號為:6一頁被直接替或 換人內在成功,塊爭譏1B移: 7冊捌理地由718;HF。遍里算日網云徘序2 4 6 1在內存中,塊號亂侑林L物理地址 1期5F【K詼度算法頁定排44 ?、 1走頁口至,被普掛前頁號為: 三頁被直接苦企提入內存成功.塊號 3:偏移起叫:物理地址 1108:FIFO詼度莫法貝定排序26 三1酎HU*U CAWmdow5)teni22jcm(l.exe1- X最后運行完的貝表貝號匚|許志 0主存塊號 0遇盆位置11修改徐志 0111121151300021000220-19230112
21、10仔同田瓦衣tiT下耳一但移量0701502153210弼640營位4535S3存13772?8416S4請按任意鍵婁建.思考題:(1)先進先出頁面調度算法的思想?答:基本思想:先進入內存的頁面先淘汰.后進入 內存的后淘汰(2)最近最少用(LRU)頁面調度算法思想?答:基本思想:最近用的最少的最先淘汰。(3)比較兩種調度算法的效率(哪種調度算法使產生缺頁中斷的次數少)?答:從作業題我感覺最近最少使用優于先進先出。(4)分析在什么情況下采用哪種調度算法更有利?答:如果頁訪問高度隨機的話.不見得LRU好.LRU是根據最近最少使用的來決定哪個 頁表被替換.但過去很多時候不能代表未來。/主文件目錄/
22、文件名/是否可讀可寫可執行/文件長度/用戶文件目錄/用戶名/打開文件目錄.即運行文件目錄/文件ID實驗四文件系統實驗題目:用高級語言編寫和調試一個簡單的文件系統.模擬文件管理的工作過程。數據結構及符號說明:struct TYPE_UFD (string File_Name;bool Read;bool Write;bool Execute;int Length_File;);struct TYPE_MFD (string User_Name;TYPE_UFD *Pointer;);struct TYPE_AFD (int File_ID;bool Read;bool Write;bool Ex
23、ecute;int Pointer;);class TYPE_FILE_SYSTEM文件系統類( public:void Initial(void); void Start(void);private:int_Number_Users;/用戶數int_Number_Files;/文件數int_MaxNumber_Open_Files;/最大打開文件數TYPEMFD*_MFD;TYPEUFD*_UFD;TYPEAFD*_AFD;);流程設計:關鍵代碼:void TYPE_FILE_SYSTEM:Start(void) (int User_ID;int i, temp_int;string tem
24、p;char choice;int Number_Open_Files;string User_Name;string Command;TYPE_UFD *UFD;do(do(cout 已創建指令有:create delete open dir diropen write read logout shutdown nn;cout User_Name;for (User_ID = 0; User_ID_Number_Users; User_ID+) (if (_MFDUser_ID.User_Name = User_Name) break;)if (User_ID = _Number_Users
25、)cout 用戶名錯誤.請再次輸入. endl; while (User_ID = _Number_Users);cout 歡迎登錄, User_Name ! endl;UFD = _MFDUser_ID.Pointer;for (i = 0; i_MaxNumber_Open_Files; i+)(_AFDi.File_ID =-1;)Number_Open_Files = 0;do(cout C: User_Name ;cin Command;if (Command = dir)(cout endl;cout 打開用戶 User_Name 的文件 endl;cout t Statet Le
26、ngtht File name endl;for (i = 0; i_Number_Files; i+) (if (UFDi.Length_File != -1) (cout t;if (UFDi.Read 二二 true) cout R;elsecout -;if (UFDi.Write = true) cout W;elsecout -;if (UFDi.Execute 二二 true)cout E;elsecout -;cout t;cout UFDi.Length_File;cout t;cout UFDi.File_Name endl;)cout endl;)else if (Com
27、mand 二=diropen)(cout endl;cout 打開用戶 User_Name 的文件 endl;cout t Statet Open File name endl; for (i = 0; i_MaxNumber_Open_Files; i+) (if (_AFDi.File_ID != -1) (cout t;if (_AFDi.Read = true)cout R;elsecout -;if (_AFDi.Write 二二 true)cout W;elsecout -;if (_AFDi.Execute = true)cout E;elsecout -;cout t;cout
28、 UFD_AFDi.File_ID.File_Name endl; )cout endl;)else if (Command 二=create)(for (i = 0; i_Number_Files; i+)if (UFDi.Length_File =二-1)break;if (i 二二 _Number_Files)cout Error:已有名為 _Number_Files 的文件. endl; else (cout 請輸入新文件信息: endl;cout temp;UFDi.File_Name = temp;cout 文件權限:;cout Read (y/n):;do(choice = ge
29、tch(); while (choice != y & choice != n);if (choice 二二y)UFDi.Read = true;elseUFDi.Read = false;cout endl;cout Write (y/n):;do(choice = getch(); while (choice != y & choice != n);if (choice =y)UFDi.Write = true;elseUFDi.Write = false;cout endl;cout Execute (y/n):;do(choice = getch(); while (choice !=
30、 y & choice != n);if (choice =y)UFDi.Execute = true;elseUFDi.Execute = false;cout endl;cout temp_int;if (temp_int 0)UFDi.Length_File = temp_int;cout 新文件 UFDi.File_Name 已建立! endl;)else if (Command 二=delete)(cout temp;for (i = 0; i_Number_Files; i+)if (UFDi.Length_File != -1) & (UFDi.File_Name 二二 temp
31、) break;if (i 二二 _Number_Files)cout 文件名錯誤.請再次輸入. endl;else(UFDi.Length_File =-1;cout 文件 UFDi.File_Name 已刪除. endl;)else if (Command 二=open)(if (Number_Open_Files =二 _MaxNumber_Open_Files)cout Error:你已經打開了 Number_Open_Files 文件. endl;else(cout temp;for (i = 0; i_Number_Files; i+)if (UFDi.Length_File !=
32、 -1) & (UFDi.File_Name = temp) break;if (i = _Number_Files)cout 文件名錯誤.請再次輸入. endl;else(Number_Open_Files+;for (temp_int = 0; temp_int_MaxNumber_Open_Files; temp_int+) if (_AFDtemp_int.File_ID 二二-1)break;_AFDtemp_int.File_ID = i;_AFDtemp_int.Pointer = 0;cout 請定義打開方式: endl;if (UFDi.Read 二二 true)cout R
33、ead (y/n):;do( choice = getch(); while (choice != y & choice != n);if (choice 二二y)_AFDtemp_int.Read = true;else_AFDtemp_int.Read = false;cout endl;)else_AFDtemp_int.Read = false;if (UFDi.Write = true)(cout Write (y/n):;do( choice = getch(); while (choice != y & choice != n);if (choice =y)_AFDtemp_in
34、t.Write = true;else_AFDtemp_int.Write = false;cout endl;)else_AFDtemp_int.Write = false;if (UFDi.Execute 二二 true)(cout Execute (y/n):;do( choice = getch(); while (choice != y & choice != n);if (choice =y)_AFDtemp_int.Execute = true;else_AFDtemp_int.Execute = false;cout endl;)elseAFDtemp_int.Execute;
35、cout 文件 temp 已打開. endl;)else if (Command 二=logout)(cout 再見, User_Name ! endl;break;)else if (Command 二=close)(cout temp;for (i = 0; i_Number_Files; i+)if (UFDi.Length_File != -1) & (UFDi.File_Name 二二 temp) break;if (i 二二 _Number_Files)cout 文件名錯誤.請再次輸入. endl;else(for (temp_int = 0; temp_int_MaxNumber
36、_Open_Files; temp_int+) if (_AFDtemp_int.File_ID 二二 i)break;if (temp_int = _MaxNumber_Open_Files)cout 文件 temp 未打開. endl;else(_AFDtemp_int.File_ID = -1;Number_Open_Files-;cout 文件 temp 已關閉. endl;)else if (Command 二=read)(cout temp;for (i = 0; i_Number_Files; i+)if (UFDi.Length_File != -1) & (UFDi.File_Name 二二 temp) break;if (i 二二 _Number_Files)cout 文件名錯誤.請再次輸入. endl;else(for (temp_int = 0; temp_int_MaxNumber_Open_Files; temp_int+) if (_AFDtemp_int.File_ID 二二 i)break;if (temp_in
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025監理工程師《合同管理》知識點合同違約責任
- (高清版)DB3301∕T 0365-2022 放心消費商圈創建與管理規范
- 2025版權法律服務合同示范文本
- 《電動汽車智能座椅加裝》課件
- 2025年進出口商品購銷合同
- 商業特許經營培訓
- 《精確數據展示》課件
- DB1311T 084-2025 抗旱谷子品種選育技術規程
- 學生宿舍建設項目可行性分析報告
- 探索集中儲能項目的可行性與未來潛力
- 未來趨勢與職業前景智慧樹知到期末考試答案章節答案2024年聯盟推+薦
- 2024年福建省泉州市中考二模物理試題
- 水生產企業(自來水公司)安全生產風險分級管控和隱患排查治理雙體系方案全套資料(2021-2022版)
- (正式版)JBT 14449-2024 起重機械焊接工藝評定
- 2020混凝土結構加固修復用聚合物水泥砂漿施工及驗收規程
- 化妝培訓課件版
- 營地指導員基礎教程
- 初級電工證考試試題庫電工證考試題庫
- 潔凈廠房設計方案
- 北京市通州區2021-2022學年高二下學期期中地理試題(解析版)
- 企業財務共享中心成熟度研究-以海爾集團為例
評論
0/150
提交評論