操作系統(tǒng):進(jìn)程創(chuàng)建與撤消_第1頁
操作系統(tǒng):進(jìn)程創(chuàng)建與撤消_第2頁
操作系統(tǒng):進(jìn)程創(chuàng)建與撤消_第3頁
操作系統(tǒng):進(jìn)程創(chuàng)建與撤消_第4頁
操作系統(tǒng):進(jìn)程創(chuàng)建與撤消_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、操作系統(tǒng)實驗報告試驗一:進(jìn)程創(chuàng)建與撤銷計科112康巖巖2011008142202013/4/10計科康巖巖計科康巖巖201100814220 主窗體(包含所有操作):usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Threading;usingOsTest.os.boject;using

2、OsTest.os.form;usingSystem.Collections;namespaceOsTestpublicpartialclassMainForm:FormpublicMainForm()InitializeComponent();privatevoidbutton2_Click(objectsender,EventArgse)if(this.listView1.SelectedItems.Count1)return;killProcess(this.selectId);privatevoidkillProcess(intid)根據(jù)id從進(jìn)程信息表中得到進(jìn)程信息Hashtable

3、h=ThreadTableid;Threadt=(Thread)hthread;得到id對應(yīng)的線程tryif(t!=null&t.IsAlive)t.Abort();/停止線程catch(Exceptione)MessageBox.Show(e.Message);ThreadTable.Remove(id);/信息表中刪除線程數(shù)據(jù)romoveListViewItem(id);/界面列表中刪除數(shù)據(jù)this.ProcessCount=ThreadTable.Count;/更新進(jìn)程數(shù)intprocessCount=0;publicintProcessCountgetreturnprocessCoun

4、t;setprocessCount=value;processCount;this.toolStripStatusLabel1.Text=進(jìn)程數(shù):+processCount;/III根據(jù)進(jìn)程id刪除列表中相對于的進(jìn)程信息/IIIvparamname=id進(jìn)程idv/paramprivatevoidromoveListViewItem(intid)鎖定列表控件,避免多個線程同時操作lock(this.listView1)foreach(ListViewItemliinthis.listView1.Items)intliId=int.Parse(li.SubItems1.Text.ToString

5、();if(liId!=id)continue;li.Remove();return;/用于存放進(jìn)程數(shù)據(jù)的表/privateDictionaryThreadTable=newDictionary();privatevoidcreateProcess(PCBpcb)/啟動的線程函數(shù)為runParameterizedThreadStartParStart=newParameterizedThreadStart(run);Threadthread=newThread(ParStart);/設(shè)置pcb的起始時間為當(dāng)前時間pcb.StartTime=DateTime.Now.ToFileTime();H

6、ashtablehash=newHashtable();/將線程信息和pcb信息存入hash表hash.Add(thread,thread);hash.Add(pcb,pcb);/將hash表存入記錄線程狀態(tài)的總表this.ThreadTable.Add(pcb.PcbId,hash);thread.Start(pcb);/啟動線程privatedelegatevoidGetNowFileTimeCallBack(intpcbId,longnow);/更新顯示進(jìn)程列表的窗口/privatevoidupdatePcbListTime(intpcbId,longnow)foreach(KeyVal

7、uePairpinThreadTable)PCBpcb=(PCB)p.Valuepcb;if(pcb.PcbId=pcbId)pcb.PcbRuntime=now;/更新運行時間updateListView(pcb);break;/更新列表控件/privatevoidupdateListView(PCBpcb)lock(this.listView1)foreach(ListViewItemliinthis.listView1.Items)intliId=int.Parse(li.SubItems1.Text.ToString();if(liId!=pcb.PcbId)continue;li.S

8、ubItems3.Text=(pcb.PcbRuntime/10000000)+s;return;ListViewItemnewLi=newListViewItem(pcb.PcbName);newLi.SubItems.Add(pcb.PcbId+);newLi.SubItems.Add(pcb.PcbLeve+);newLi.SubItems.Add(pcb.PcbRuntime/10000000+s);this.listView1.Items.Add(newLi);this.ProcessCount=ThreadTable.Count;/線程運行的函數(shù)/IIIvparamname=o具有

9、唯一pcbid的PCB對象,用來標(biāo)示線程,也用來顯示儲存線程運行狀態(tài)v/paramprivatevoidrun(objecto)定義委托,用來調(diào)用函數(shù)顯示某一進(jìn)程的狀態(tài)GetNowFileTimeCallBackcall=newGetNowFileTimeCallBack(updatePcbListTime);PCBpcb=(PCB)o;intpcbId=pcb.PcbId;while(true)得到運行時間longruntime=DateTime.Now.ToFileTime()-pcb.StartTime;回調(diào)信息this.BeginInvoke(call,pcbId,runtime);t

10、ryThread.Sleep(1000);catch(Exceptione)IIIvsummary/關(guān)閉窗口/privatevoidMainForm_FormClosing(objectsender,FormClosingEventArgse)ToolStripMenuItem2_Click(sender,e);/點擊菜單的新建按鈕,創(chuàng)建進(jìn)程/privatevoidToolStripMenuItem1_Click(objectsender,EventArgse)CreateFormcf=newCreateForm();顯示創(chuàng)建PCD對象的窗體if(cf.ShowDialog(this)=DialogResult.OK)PCBpcb=cf.Pcb;/得到對象createProcess(pcb);/創(chuàng)建進(jìn)程intselectId=0;privatevoidlistView1_ItemSelectionChanged(objectsender,ListViewItemSelectionChangedEventArg

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論