VC++mfc 操作系統(tǒng)課程設(shè)計(jì) 頁式存儲(chǔ)管理 報(bào)告_第1頁
VC++mfc 操作系統(tǒng)課程設(shè)計(jì) 頁式存儲(chǔ)管理 報(bào)告_第2頁
VC++mfc 操作系統(tǒng)課程設(shè)計(jì) 頁式存儲(chǔ)管理 報(bào)告_第3頁
VC++mfc 操作系統(tǒng)課程設(shè)計(jì) 頁式存儲(chǔ)管理 報(bào)告_第4頁
VC++mfc 操作系統(tǒng)課程設(shè)計(jì) 頁式存儲(chǔ)管理 報(bào)告_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、青島理工大學(xué)操作系統(tǒng)課程設(shè)計(jì)報(bào)告院(系): 計(jì)算機(jī)工程學(xué)院 專業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)專業(yè) 學(xué)生姓名: 胡松朝 班級(jí): 計(jì)算073 學(xué)號(hào): 200707046 題目:模擬頁式存儲(chǔ)管理方案中內(nèi)存空間的管理和分配 起迄日期: 2010年7月5日2010年7月15日 設(shè)計(jì)地點(diǎn): 計(jì)算機(jī)工程學(xué)院實(shí)驗(yàn)室 指 導(dǎo) 教 師: 李 蘭 200920010年度 第 2 學(xué)期完成日期: 2010 年 7 月 15 日課程設(shè)計(jì)目的操作系統(tǒng)是一門重要的專業(yè)基礎(chǔ)課,是涉及較多硬件知識(shí)的計(jì)算機(jī)系統(tǒng)軟件課程。在計(jì)算機(jī)軟硬件課程的設(shè)置上,它起著承上啟下的作用。操作系統(tǒng)對(duì)計(jì)算機(jī)系統(tǒng)資源實(shí)施管理,是所有其他軟件與計(jì)算機(jī)硬件的唯一接

2、口,所有用戶在使用計(jì)算機(jī)時(shí)都要得到操作系統(tǒng)提供的服務(wù)。操作系統(tǒng)課程設(shè)計(jì)的主要任務(wù)是研究計(jì)算機(jī)操作系統(tǒng)的基本原理和算法,掌握操作系統(tǒng)的進(jìn)程管理、存儲(chǔ)管理、文件管理和設(shè)備管理的基本原理與主要算法。目的是使學(xué)生掌握常用操作系統(tǒng)(如DOS、Windows或Linux)的一般管理方法,了解它是如何組織和運(yùn)作的,對(duì)操作系統(tǒng)的核心概念和算法有一個(gè)透徹的理解,并對(duì)系統(tǒng)運(yùn)行的機(jī)制有一個(gè)全面的掌握,從而充分理解系統(tǒng)調(diào)用與程序設(shè)計(jì)之間的關(guān)系。本題的目的是通過對(duì)頁式存儲(chǔ)管理方案中內(nèi)存空間的管理和分配的模擬,了解和認(rèn)識(shí)操作系統(tǒng)對(duì)資源的離散分配方法,它不要求作業(yè)或進(jìn)程的和程序段和數(shù)據(jù)在內(nèi)存中連續(xù)存放,從而有效地解決了碎片

3、問題。這既提高了內(nèi)存的利用率,又有利于組織多道程序執(zhí)行。課程設(shè)計(jì)內(nèi)容 模擬頁式存儲(chǔ)管理方案中內(nèi)存空間的管理和分配。(包括位示圖法、空閑表法) 內(nèi)存被劃分成2048塊(頁)。用32位字長(zhǎng)的字存放位示圖,為0的位表示該塊尚未分配,為1的位表示該塊已分配。輸出位示圖和頁表。系統(tǒng)分析與設(shè)計(jì)1、系統(tǒng)分析存儲(chǔ)器是計(jì)算機(jī)系統(tǒng)的重要組成部分。近年來,存儲(chǔ)器容量雖然一直在不斷擴(kuò)大,但仍不滿足現(xiàn)代軟件發(fā)展的需要,因此,存儲(chǔ)器仍然是一種寶貴的而又緊俏的資源,如何對(duì)它加以有效地管理,不僅直接影響到存儲(chǔ)器的利用率,而且還對(duì)系統(tǒng)性能有重大的影響。存儲(chǔ)器管理的主要對(duì)象是內(nèi)存。充分利用內(nèi)存,為多道程序并發(fā)執(zhí)行提供存儲(chǔ)基礎(chǔ),盡

4、可能方便用戶使用。采用基本也是存儲(chǔ)管理方式為每道程序分配內(nèi)存空間,提高存儲(chǔ)器的利用率,以減少不可用的內(nèi)存空間;允許正在運(yùn)行的程序申請(qǐng)附加的內(nèi)存空間,以適應(yīng)程序和數(shù)據(jù)動(dòng)態(tài)增長(zhǎng)的需要。頁式存儲(chǔ)管理該技術(shù)近年來已廣泛用于微機(jī)系統(tǒng)中,支持頁式想念管理的硬件部件通常稱不“存儲(chǔ)管理部件”。邏輯地址:目標(biāo)程序中的地址所形成的地址范圍稱為“地址空間”,其中的地址叫邏輯地址。物理地址:內(nèi)存中的一系列單元所限定的地址范圍稱“內(nèi)存空間”,其中的地址稱為物理地址。地址映射:將地址空間中的邏輯地址轉(zhuǎn)換為內(nèi)存空間中與之對(duì)應(yīng)的物理地址。基本原理:允許作業(yè)存放在若干個(gè)不相鄰的分區(qū)中,既可免去移動(dòng)內(nèi)存信息而產(chǎn)生的工作量,又可充

5、分利用主存空間,盡量減少主存碎片。離散分配方式:將一個(gè)進(jìn)程直接分散地分配到許多不相鄰的分區(qū)中。離散分配三種方式:分頁存儲(chǔ)管理(考慮存儲(chǔ)器利用率)分段存儲(chǔ)管理(考慮用戶要求)段頁式存儲(chǔ)管(考慮存儲(chǔ)器利用率和用戶要求)基本分頁存儲(chǔ)管理方式:在分頁存儲(chǔ)管理方式中,如果不具備頁面對(duì)換功能,則是基本分頁存儲(chǔ)管理方式,或稱為純分頁存儲(chǔ)管理方式。存儲(chǔ)管理部件首先把內(nèi)存分成大小相等的許多區(qū),把每個(gè)區(qū)稱不“塊”,塊是進(jìn)行主存空間分配的物理單位。同時(shí),要求程序中的邏輯地址也進(jìn)行分頁,頁的大小與塊的大小一致辭。這樣,就可把程序信息按頁存放到塊中。于是,頁式存儲(chǔ)品提供編程使用的邏輯地址由兩部分組成:頁號(hào)和頁內(nèi)地址。其

6、格式為頁號(hào)頁內(nèi)地址頁式存儲(chǔ)的地址結(jié)構(gòu)確定了內(nèi)存分塊的大小,也就決定了頁面的大小。為了實(shí)現(xiàn)頁式存儲(chǔ)管理,系統(tǒng)要提供一對(duì)硬件的頁表控制寄存器,即頁表始址寄存器和頁表長(zhǎng)度寄存器,另外還需要高速緩沖存儲(chǔ)器的支持。頁表始址寄存器,用于保存正在運(yùn)行進(jìn)程的頁表在內(nèi)存的首地址,當(dāng)進(jìn)程被調(diào)度程序選中投入運(yùn)行時(shí),系統(tǒng)將其頁表首地址從進(jìn)程控制塊中取出送入該寄存器。頁表長(zhǎng)度寄存器,用于保存正在運(yùn)行進(jìn)程的頁表的長(zhǎng)度,當(dāng)進(jìn)程被選中運(yùn)行時(shí),系統(tǒng)將它從進(jìn)程控制塊中取出送入該寄存器。頁表指出該程序邏輯地址中的頁號(hào)與所占用的主存塊號(hào)之間的對(duì)應(yīng)關(guān)系。頁表的長(zhǎng)度由程序擁有的頁面數(shù)而定,故每個(gè)程序的頁表長(zhǎng)度可能不是不同的。頁表又是硬件

7、進(jìn)行地址轉(zhuǎn)換的依據(jù),每執(zhí)行一條指令時(shí)按邏輯地址中的頁號(hào)查頁表。若頁表中無此頁號(hào),則產(chǎn)生一個(gè)“地址錯(cuò)”的程序性中斷事件。若頁表中有此頁號(hào),則右得到對(duì)應(yīng)的主存塊號(hào),按計(jì)算公式可轉(zhuǎn)換成訪問的主存的物理地。物理地址的計(jì)算公式為: 物理地址=內(nèi)存塊號(hào)*塊長(zhǎng)+頁內(nèi)地址快表只存放當(dāng)前進(jìn)程最活躍的少數(shù)幾頁,隨著進(jìn)程的推進(jìn),快表的內(nèi)容動(dòng)態(tài)進(jìn)行更新。實(shí)際上,查找快表和查找內(nèi)存頁表是并行進(jìn)行的,一旦發(fā)現(xiàn)快表中有與所查頁號(hào)一致的邏輯頁號(hào)就停止查找內(nèi)存頁表,而直接利用快表中的邏輯頁號(hào)。采用快表后,地址轉(zhuǎn)換的時(shí)間大大下降。假定訪問主存的時(shí)間為200納秒,訪問高速緩沖存儲(chǔ)器的時(shí)間為40納秒,高速緩沖存儲(chǔ)器為16個(gè)單元時(shí),查

8、快表的命中率為90%。于是,按邏輯地址轉(zhuǎn)換成約對(duì)地址進(jìn)行存取的平均訪問時(shí)間為:(200+40)*90%+(200+200)*10%=256(納秒)不使用快表需兩次訪問主存的時(shí)間:200*2=7400納秒??梢娛褂每毂砼c不使用快表相比,訪問時(shí)間下降了36%。特點(diǎn):不具有支持實(shí)現(xiàn)虛擬存儲(chǔ)器的功能;要求把每個(gè)作業(yè)全部裝入內(nèi)存后方能運(yùn)行。2、系統(tǒng)設(shè)計(jì):系統(tǒng)設(shè)計(jì)方案:1)建立一個(gè)數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)用來表示一個(gè)進(jìn)程的進(jìn)程號(hào),進(jìn)程所需空間,進(jìn)程占用的每個(gè)空間在內(nèi)存中的位置,指向下一個(gè)進(jìn)程的指針。2)添加進(jìn)程,如果進(jìn)程所申請(qǐng)的內(nèi)存空間不大于空閑的內(nèi)存,則可以為止分配資源,同時(shí)更改全局變量table的值,用來

9、標(biāo)示內(nèi)存空間已經(jīng)被占用的位置,將已經(jīng)分配的進(jìn)程加入鏈表。3)查詢進(jìn)程,輸入進(jìn)程號(hào),查找進(jìn)程號(hào)是否在鏈表中,如果在則輸出這個(gè)進(jìn)程的相關(guān)信息,如進(jìn)程表,進(jìn)程所占空間。4)撤銷進(jìn)程,輸入進(jìn)程號(hào),查找進(jìn)程號(hào)是否在鏈表中,如果在,這刪除這個(gè)進(jìn)程節(jié)點(diǎn),同時(shí)更改內(nèi)存空閑空間,更改table表,來標(biāo)示內(nèi)存狀態(tài)。5)增加功能,比如自動(dòng)生成進(jìn)程并為之分配內(nèi)存,單步生成進(jìn)程并為之分配內(nèi)存。3、模塊設(shè)計(jì): 圖1 主程序流程圖類定義如下:CmyApp():class CMyApp : public CWinApppublic:CMyApp();CaboutDlg:class CAboutDlg : public CDi

10、alogpublic:CAboutDlg();CmyDlg:class CMyDlg : public CDialogpublic:void page_show(Pros *p);void CurrentWST();void InitWST();void OneStep();void process_show();int generating;CPAGE page;enum IDD = IDD_MY_DIALOG ;CEditm_result;CEditm_WST;CListCtrlm_List_Pinfo;CListCtrlm_List_Page;intm_JCH;intm_YS;prote

11、cted:virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnButtonStep();afx_msg void OnButtonReset();afx_msg void OnButtonAutorun();afx_msg void OnButtonStop();afx_msg void OnButtonBuild();afx_msg void O

12、nButtonInquiry();afx_msg void OnButtonRepeal();afx_msg void OnClickListPinfo(NMHDR* pNMHDR, LRESULT* pResult);afx_msg void OnTimer(UINT nIDEvent);CPAGE:class CPAGE : public CDocumentpublic:void Init();node:typedef struct nodeint process_num;int process_space;int processPages;struct node *next;Pros;

13、圖2 各函數(shù)間的調(diào)用關(guān)系4、數(shù)據(jù)結(jié)構(gòu)說明:設(shè)計(jì)中所用到的數(shù)據(jù)結(jié)構(gòu)或抽象數(shù)據(jù)類型的說明,以及在程序中的作用數(shù)據(jù)結(jié)構(gòu)typedef struct nodeint process_num;int process_space;int processPages;struct node *next;Pros;分別表示進(jìn)程號(hào),進(jìn)程所占空間,進(jìn)程在內(nèi)存中存在的位置,指向下一個(gè)節(jié)點(diǎn)的指針。一個(gè)節(jié)點(diǎn)包含了一個(gè)進(jìn)程相應(yīng)的信息,然后把節(jié)點(diǎn)連接起來,形成線性鏈表,便于在進(jìn)程添加、查找和撤銷的操作。5、算法流程圖: 圖3 程序模塊及函數(shù)調(diào)用關(guān)系 圖4 進(jìn)程連接和內(nèi)存分配關(guān)系四、模塊調(diào)試與系統(tǒng)測(cè)試1、模塊調(diào)試1)新建進(jìn)程模

14、塊輸入的形式和輸入值的范圍如果要新建進(jìn)程,本程序需用戶在主窗體的編輯框中輸入進(jìn)程號(hào)和進(jìn)程申請(qǐng)的內(nèi)存空間大小,進(jìn)程號(hào)和內(nèi)存空間都是整形。進(jìn)程號(hào)不允許與已知的進(jìn)程號(hào)重復(fù),所申請(qǐng)的內(nèi)存空間不允許為0。輸出的形式主窗體的進(jìn)程列表顯示出新建的進(jìn)程信息,位視圖的編輯框中更新位視圖,把最新的內(nèi)存占用情況標(biāo)示出來。進(jìn)程號(hào)重復(fù),輸出相關(guān)提示。程序所能達(dá)到的功能由用戶指定進(jìn)程號(hào)和進(jìn)程申請(qǐng)的內(nèi)存空間,來創(chuàng)建響應(yīng)進(jìn)程,進(jìn)程信息會(huì)顯示在進(jìn)程列表中,以便用戶查看。同時(shí),位視圖也及時(shí)更新,標(biāo)示內(nèi)存占用情況。2)查詢進(jìn)程模塊輸入形式和輸入值的范圍在主窗體的進(jìn)程號(hào)編輯框中輸入要查詢的進(jìn)程號(hào),進(jìn)程號(hào)位整形數(shù)據(jù)。輸出的形式如果進(jìn)程

15、存在,則會(huì)在頁表列表中顯示出進(jìn)程的頁表,同時(shí),進(jìn)程信息編輯框中會(huì)顯示出進(jìn)程號(hào)和進(jìn)程占用的內(nèi)存空間大小。如果進(jìn)程不存在,系統(tǒng)會(huì)提示沒有相關(guān)進(jìn)程。程序所能達(dá)到的功能輸入進(jìn)程號(hào),系統(tǒng)會(huì)查詢?cè)撨M(jìn)程的相關(guān)信息。如果進(jìn)程存在,則輸入進(jìn)程頁表,和相關(guān)信息,否則,輸出沒有該進(jìn)程的提示。3)撤銷進(jìn)程模塊輸入的形式和輸入值的范圍在主窗體的進(jìn)程號(hào)編輯框中輸入要撤銷的進(jìn)程的進(jìn)程號(hào),進(jìn)程號(hào)為整形數(shù)據(jù)。輸出的形式如果撤銷成功,則更新進(jìn)程列表,清空頁表列表,同時(shí)更新位視圖。如果沒有該進(jìn)程,則彈出對(duì)話框,提示沒有該進(jìn)程。程序所能達(dá)到的功能可以撤銷已經(jīng)分配了資源的進(jìn)程,釋放和回收內(nèi)存,同時(shí)更新顯示的相關(guān)信息。2、系統(tǒng)測(cè)試測(cè)試方

16、法 分別在三個(gè)模塊中輸入數(shù)據(jù),進(jìn)行一一測(cè)試。測(cè)試數(shù)據(jù)及測(cè)試報(bào)告: 圖5 輸入非法數(shù)據(jù)時(shí)的處理截圖圖6 創(chuàng)建及查詢正確結(jié)果截圖圖7 創(chuàng)建進(jìn)程時(shí)進(jìn)程大小輸入錯(cuò)誤截圖圖8 創(chuàng)建進(jìn)程時(shí)進(jìn)程號(hào)重復(fù)提示截圖 圖9 撤銷 圖6 中創(chuàng)建的進(jìn)程正確結(jié)果截圖圖10 撤銷不存在的進(jìn)程提示截圖3、調(diào)試分析:1)顯示位視圖時(shí)對(duì)編輯框的操作錯(cuò)誤。開始用初始化位視圖編輯框的方法進(jìn)程一次替換來更新位視圖,這樣會(huì)出現(xiàn)閃屏,要閃1024次才能更新一次,效果很不好。后來改用每個(gè)位逐個(gè)查看替換的方法,雖然消除了閃屏現(xiàn)象,但對(duì)每行32個(gè)數(shù)據(jù)的換行操作沒有成功。最后使用把行作為一個(gè)整體,逐行替換的方法,這樣消除了閃屏現(xiàn)象,也正確換行了,

17、執(zhí)行的速度大大提高了。m_WST.SetSel(r*WordLength+r,r*WordLength+WordLength+r+1);注意在計(jì)算一行的起始地址時(shí),要把“n”考慮到,作為一個(gè)字符。2)在OneStep()函數(shù)里,用到三重for循環(huán)結(jié)構(gòu),但忽視了內(nèi)存空閑大小是否滿足分配新進(jìn)程所申請(qǐng)的內(nèi)存空間,出現(xiàn)錯(cuò)誤。最后在最外層for循環(huán)外加if判斷結(jié)構(gòu),判斷p-process_space 點(diǎn)擊創(chuàng)建;查詢進(jìn)程信息:輸入進(jìn)程號(hào)點(diǎn)擊查詢;撤銷正在運(yùn)行的進(jìn)程:輸入進(jìn)程號(hào)點(diǎn)擊查詢;單步隨機(jī)生成進(jìn)程:點(diǎn)擊STEPRUN;自動(dòng)生成進(jìn)程并演示運(yùn)行狀態(tài):點(diǎn)擊AUTORUN;停止自動(dòng)運(yùn)行:點(diǎn)擊STOP;復(fù)位:點(diǎn)

18、擊RESET;本程序制作信息:點(diǎn)擊ABOUT退出本模擬程序:點(diǎn)擊QUIT;六、程序清單void CMyDlg:OnButtonReset() /清空所有page.Init();m_List_Page.DeleteAllItems();m_List_Pinfo.DeleteAllItems(); m_result.SetWindowText();CurrentWST();m_JCH=0;m_YS=0;UpdateData(false);void CMyDlg:OnButtonAutorun() /自動(dòng)產(chǎn)生進(jìn)程并分配內(nèi)存,直到內(nèi)存已滿 SetTimer(1,1000,NULL);/將間隔時(shí)間設(shè)為1

19、svoid CMyDlg:OnButtonStop() /終止自動(dòng)運(yùn)行KillTimer(1); void CMyDlg:OnButtonBuild() /響應(yīng)“創(chuàng)建”按鈕,按用戶要求添加進(jìn)程并為之分配內(nèi)訓(xùn)存int p_sp;int p_num;int i,j;int ans=1;Pros *p=0;Pros *w=0;w=new Pros;p=new Pros;int ready=0; UpdateData();if(m_YSnext;while(w!=NULL)if(w-process_num=m_JCH)MessageBox(進(jìn)程號(hào)重復(fù),請(qǐng)更改后重試!);ans=0;break;else

20、w=w-next;if(ans)p_sp=m_YS;p_num=m_JCH;if(p_spprocess_num=p_num;p-process_space=p_sp;for(int k=0;kprocess_space;k+)i=0;j=0;for(i=0;iWordNum;i+)for(j=0;jprocessk=i*WordLength+j;tableij=1;/記錄進(jìn)程在內(nèi)存中的位置,修改位視圖表/把節(jié)點(diǎn)加入線性鏈表的表頭后面p-next=head-next;head-next=p;m_List_Pinfo.DeleteAllItems();process_show();elseMes

21、sageBox(發(fā)生越界中斷,請(qǐng)檢查輸入數(shù)據(jù)的合法性!);void CMyDlg:OnButtonInquiry() /查詢指定進(jìn)程,顯示出相關(guān)信息:進(jìn)程號(hào),所占內(nèi)存空間,頁表Pros *p;int p_num;p=new Pros;p=head-next;CString str;char temp_num15;char temp_sp15;UpdateData(true);p_num=m_JCH;while(p!=NULL)if(p-process_num=p_num)/將進(jìn)程號(hào),進(jìn)程所占頁數(shù),首頁位置顯示在編輯框中,itoa(p-process_num,temp_num,10);itoa(

22、p-process_space,temp_sp,10);str=進(jìn)程號(hào):rn;str+=temp_num;str+=rn進(jìn)程所占頁數(shù):rn;str+=temp_sp;m_result.SetWindowText(str);goto S;elsep=p-next;if(p=NULL)m_result.SetWindowText(沒有查詢到該進(jìn)程的相關(guān)信息!);else/將頁表顯示頁表列表中S:page_show(p);void CMyDlg:OnButtonRepeal() /銷毀進(jìn)程,即刪除相關(guān)進(jìn)程的節(jié)點(diǎn),清空位視圖表相關(guān)位置/ TODO: Add your control notificat

23、ion handler code herePros *p,*q;int n,i,j,k;int p_num;int p_sp;p=new Pros;q=new Pros;UpdateData(true);p_num=m_JCH;p=head-next ;q=head;while(p!=NULL)if(p-process_num=p_num)goto U;elsep=p-next;q=q-next;if(p=NULL)MessageBox(沒有該進(jìn)程,刪除失?。?;elseU:p_sp=p-process_space;for(k=0;kprocess_space;k+)n=p-processk;

24、i=n/WordLength;j=n%WordLength;tableij=0;Free+=p_sp;/釋放內(nèi)存空間q-next=p-next;delete p;/更新相關(guān)視圖/先清空以前的數(shù)據(jù)m_List_Pinfo.DeleteAllItems();/清空進(jìn)程信息列表m_List_Page.DeleteAllItems();/清空頁表列表m_result.SetWindowText();/清空編輯框process_show();void CMyDlg:OnClickListPinfo(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your con

25、trol notification handler code herePOSITION iPos = m_List_Pinfo.GetFirstSelectedItemPosition(); int nItem = m_List_Pinfo.GetNextSelectedItem(iPos);*pResult = 0;void CMyDlg:process_show()/顯示進(jìn)程信息:進(jìn)程號(hào) 所占空間Pros *p1=0;p1=new Pros;p1=head-next;int i=0;char temp115;char temp215;while(p1!=NULL)itoa(p1-proce

26、ss_num,temp1,10);itoa(p1-process_space,temp2,10);m_List_Pinfo.InsertItem(i,temp1);m_List_Pinfo.SetItemText(i,1,temp2);p1=p1-next;i+; CurrentWST();/顯示當(dāng)前位視圖void CMyDlg:OneStep()/隨機(jī)生成進(jìn)程并為之分配內(nèi)存int i,j;int k;Pros *p=0;p=new Pros;int ready=0; srand(unsigned)time(NULL);p-process_space=rand()%50+1;/產(chǎn)生的進(jìn)程的空間

27、大小限制在1-50頁p-process_num=rand()%200;/隨機(jī)產(chǎn)生進(jìn)程號(hào),限制在200以內(nèi)while(!ready)if(p-process_space process_space;for(k=0;kprocess_space;k+)i=0;j=0;for(i=0;iWordNum;i+)for(j=0;jprocessk=WordLength*i+j;tableij=1;p-next=head-next;head-next=p;ready=1;m_List_Pinfo.DeleteAllItems();process_show();void CMyDlg:OnTimer(UIN

28、T nIDEvent) / TODO: Add your message handler code here and/or call defaultOneStep();CDialog:OnTimer(nIDEvent);void CMyDlg:InitWST()/初始化位視圖,全為0CString strEdit;for(int r=0;rWordNum;r+)for(int c=0;cWordLength;c+)m_WST.GetWindowText(strEdit);m_WST.SetSel(0,-1);strEdit+=0;m_WST.ReplaceSel(strEdit);m_WST.

29、GetWindowText(strEdit);m_WST.SetSel(0,-1);strEdit+=n;m_WST.ReplaceSel(strEdit);void CMyDlg:CurrentWST()/顯示當(dāng)前的位視圖到位視圖編輯框中char bit1;CString strEdit;char wst_r135;char wst_r235;for(int r=0;rWordNum;r+)for(int c=0;cWordLength;c+)if(c=0)itoa(tablerc,bit,10);strEdit=bit;elseitoa(tablerc,bit,10);strEdit+=b

30、it;strEdit+=n;m_WST.SetSel(r*WordLength+r,r*WordLength+WordLength+r+1);/注意每行實(shí)際33個(gè)位,m_WST.GetLine(r,wst_r1);m_WST.ReplaceSel(strEdit);m_WST.GetLine(r,wst_r2);void CMyDlg:page_show(Pros *p)/顯示頁表信息int k,y;char yh10;char kh10;for(int g=0;gprocess_space;g+)k=p-processg;/塊號(hào)y=p-processg/WordLength;/頁號(hào)itoa(y,yh,10);itoa(k,kh,10);m_List_Page.InsertItem(g,yh,0);m_List_Page.SetItemText(g,1,kh);七、體會(huì)與自我評(píng)價(jià)通過這課程設(shè)計(jì),提高了使用VC+編寫成程序的能力,

溫馨提示

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

評(píng)論

0/150

提交評(píng)論