基本分段存儲管理系統_第1頁
基本分段存儲管理系統_第2頁
基本分段存儲管理系統_第3頁
基本分段存儲管理系統_第4頁
基本分段存儲管理系統_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 目錄一、 課程設計的目的2二、 課程設計的內容及要求2三、 實驗原理2四、 地址換算變換過程結構2五、關鍵算法實現流程圖3六、程序代碼4七、運行結果及分析7八、心得體會9九、參考文獻9一、 課程設計的目的操作系統課程設計是重要的實踐課程,課程開設的目的是讓學生學習完計算機操作系統課程后,進行一次全面的綜合訓練,讓學生更好地掌握操作系統的原理及實現方法,加深對操作系統基礎理論和重要算法的理解,加強學生的動手能力。二、 課程設計的內容及要求基本分段存儲管理系統的設計要求:(1)建立段表(2)設計地址變換機構(3)將變換后的結果顯示出來三、 實驗原理為了實現從進程的邏輯地址到物理地址的變換功能,在

2、系統中設置了段表寄存器,用于存放段首地址,段長和段表長度TL。首先建立段表,段表內容包括段首地址,段長和段表長度。在建立段表時,應判斷段表地址是否沖突(如第一個段的首地址為1,段長為50,在建立第二個段的時候,段首地址應大于1+50),若不沖突,該段建立成功,否則重新建立該段。然后進行地址變換,在進行地址變換時,系統將邏輯地址中的段號與段表長度進行比較。若S>TL,表示段號太大,是訪問越界,于是產生越界中斷信號;若未越界,則根基段表的首地址和該段的段號,計算出該段在在段表項的位置,從中讀出該段在內存中的首地址,然后,再檢查,段內地址d是否超過該段的段長SL。若超過,即d>SL,同樣

3、發出越界中斷信號;若未越界則將該段的基址與段內地址相加,即可得到要訪問內存的物理地址。最后,再將得到的物理地址顯示出來。四、 地址換算變換過程結構五、關鍵算法實現流程圖地址換算程序流程圖六、程序代碼/*#include<stdio.h>#include<stdlib.h>typedef struct segtable /段表結構說明int segadd256;/段首地址int seglen256;/段長int len;/表的長度segtable;struct segtable st;/定義一個段表/*/段表的建立void create()char ch;int i=0;

4、printf("建立段表n");st.len=0;printf("請輸入第1個段首地址:");scanf("%d",&st.segadd0);printf("請輸入第1個段的長度:");scanf("%d",&st.seglen0);st.len=1;i=1;while(i<256)fflush(stdin);printf("是否繼續輸入(y/n)?n");ch=getchar();if(ch='n') break;printf(&quo

5、t;第%d個段首地址應大于%dn",i+1,st.segaddi-1+st.segleni-1);printf("請輸入第%d個段首地址:",i+1);scanf("%d",&st.segaddi);if(st.segaddi<=st.segaddi-1+st.segleni-1) printf("地址沖突,請重新輸入:"); scanf("%d",&st.segaddi);printf("請輸入第%d個段的長度:",i+1);scanf("%d&quo

6、t;,&st.segleni);st.len+;i+;/*/地址換算int segment(int sn,int sd)/sn為邏輯地址,sd為段內地址int i,add;if(sn>st.len)printf("段號%d大于段表長度%d,越界中斷n",sn,st.len);return 0;else if(sd>st.seglensn-1)printf("段內地址%d大于段長,越界中斷n",sd);return 0;elseprintf("根據段號找到段首地址為%dn",st.segaddsn-1);printf

7、("物理地址=段首地址%d+段內地址%dn",st.segaddsn-1,sd);add=st.segaddsn-1+sd;return (add);/*void main()int x,y;/x表示段號,y表示段內地址int add;char ch='y'create();while(ch='y')printf("地址換算n");printf("請輸入段號:");scanf("%d",&x);printf("請輸入段內地址:");scanf("

8、%d",&y);add=segment(x,y);if(add!=0)printf("換算后的物理地址為:%dn",add);fflush(stdin);printf("是否繼續進行地址換算(y/n)?n");scanf("%c",&ch);if(ch='n')printf("程序運行結束!n");七、運行結果及分析1.建立段表第一個段的物理地址為12-61,在建立第二個段的時候,輸入的段首地址與第一個沖突,所以需要重新輸入,70>61,所以該段建立成功2.建立的段表

9、如下3.地址換算地址換算的時候需要輸入邏輯地址的段號和段內地址因為段號大于段表長度5,所以越界中斷段號滿足要求,但是段內地址大于段表中對應段的段長,所以越界中斷地址換算成功八、心得體會通過這次課程設計,不僅讓我對操作系統這門課程有了更深刻的了解,而且增強了我的動手能力。對操作系統這門課程,經過了一個學期的學習,我們主要學習了操作系統的一些功能,如進程管理,設備管理,存儲器管理等等,看似學了很多東西,實際上只是學到了一些皮毛,只是對對這門課程的大概有了一些大概了解。以后如果有機會,我會繼續深入對操作系統這門課程的學習。由于時間的倉促,這次課程設計做的很粗糙,但是我依然學到了很多實用性知識。除了對分段存儲管理 有了更深刻的了解,還加深了我對C

溫馨提示

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

評論

0/150

提交評論