




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、操作系統實驗報告一:實驗題目:1 模擬分頁式存儲管理中硬件的地址轉換和用先進先出調度算法處理中斷2 模擬二級目錄結構的磁盤文件操作二: 實驗環境 : windows2000, windowsnt 利用 c+ 開發環境編程, 采用 visual c+ 。三:實驗目的操作系統是一門工程性很強的課程, 它不僅要求我們掌握操作系統的工作原理和知識, 也要求培養我們的實際動手能力. 四: 實驗要求選擇一個自己熟悉的計算機系統和程序設計語言, 模擬操作系統基本功能的設計方法及其實現過程 .通過上機實驗, 熟練地掌握計算機的操作方法, 使用各種軟件工具, 加強對實驗內容的理解 . 五: 實驗內容實驗一 :
2、模擬頁式虛擬存儲管理中硬件的地址轉換和缺頁中斷,并用先進先出調度算法(fifo) 處理缺頁中斷。1) 實驗算法及說明為了裝入一個頁面而必須調出一頁時,如果被選中調出的頁面在執行中沒有修改過則不必把該頁重寫到磁盤上。因此在頁表中可以增加是否修改過的標志,當執行“存”指令,“寫”指令時把對應的修改標志置成“1”表示該頁修改過,否則為“0“表示該頁未修改過。頁表格式如表所示:頁號標志主存塊號修改標志在磁盤上的位置2)程序流程圖3)程序清單第一題:模擬分頁式存儲管理中硬件的地址轉換和用先進先出調度算法處理中斷* 程序如下:#include stdlib.h #include stdio.h #defi
3、ne totalpage 7 /* 作業實際所需的的頁總數 */ #define saveblocks 4 /* 分配給作業的主存塊數 */ #define blocksize 1024 /* 主存的每塊大小 */ #include math.h #include stdio.h struct cpageform int pagenumber, biaozh ,kuai ,xgbz ,cpwz; ; struct cwork char caoz; int pagenumber,pageaddress; cpageform pageform= 0,1,5,0,0 x11, 1,1,8,0,0 x
4、12, 2,1,9,0,0 x13, 3,1,1,0,0 x21, 4,0,0,0,0 x22, 5,0,0,0,0 x23, 6,0,0,0,0 x121 ; cwork work= +,0,0 x70,+,1,0 x50, *,2,0 x15,s,3,0 x21, f,0,0 x56,-,6,0 x40, m,4,0 x53,+,5,0 x23, s,1,0 x37,f,2,0 x78, +,4,0 x01,s,6,0 x84 ; const int m=4; int p=0,1,2,3; void fifo1(int p,int,int&,int); void main() in
5、t k=0; int l; int j=0; int i; for( i=0;i12;i+) l=worki.pagenumber; cout l100: j=0; while (l!=pageformj.pagenumber&j7) j=j+1; if (pageformj.biaozh!=1) coutinterrupt: * fifo1( p,l,k,j); goto l100; long int address; address=1024*pageformj.kuai; address=address*worki.pageaddress; if (worki.caoz=s) p
6、ageformj.biaozh=1; coutpagenumber: coutin:fna,fna)=0) /文件唯一性檢查 printf(n同名文件不能建立!); return; j=5; a=rand(); /模擬找到的磁盤空閑塊strcpy(myn.uofj-fna,fna); /登記到打開文件目錄strcpy(myn.ufdj-fna,fna); /登記到用戶文件目錄myn.ufdj-relong=myn.uofj-relong=m; myn.ufdj-fat=myn.uofj-fat=a; myn.ufdj-fadd=a; strcpy(myn.uofj-sta,cj); myn.u
7、ofj-write=j; printf(n文件建立成功 !); void open(char *fna,char a) /打開文件函數 int i,j,h; for(i=0;i if(strcmp(myn.ufdi-fna,fna)!=0) ; /查用戶文件目錄else h=i;break; if(i=l) printf(文件不存在不能打開!n); return; for(i=0;ifna,fna)=0) break; if(strcmp(myn.uofi-sta,cj)=0) printf(正在建立不能打開!n); else printf(文件已打開 !n); return; if(i=s)
8、 if(myn.uofi-fat!=a) /檢查文件操作屬性 printf(操作不合法 , 不能打開 !n); return; strcpy(myn.uofi-fna,fna); /登記到打開文件表myn.uofi-relong=myn.ufdh-relong; myn.uofi-fat=a; myn.uofi-read=myn.uofi-write=myn.ufdh-fadd; printf(打開文件成功!); void read(char *fna,int l) /讀文件操作 int k; for (int i=0;i if (strcmp(myn.uofi-fna,fna)!=0) pr
9、intf(n文件未打開,不能讀!); return; else k=i; printf(%dn,myn.uofk-read); myn.uofk-read=+l; printf(n讀文件成功 !); void write(char *fna,int r) /寫文件操作 int k; char g; for(int i=0;i if(strcmp(myn.uofi-fna,fna)!=0) printf(n文件尚未建立或打開,不能寫!); return; else k=i; if (strcmp(myn.uofk-sta,cj)=0) /檢查文件是否為建立狀態 printf(%dn,myn.uo
10、fk-write); /輸出寫指針模擬寫文件myn.uofk-write=+myn.uofk-relong+r; /修改寫指針printf(n寫文件成功 !); return; if ( myn.uofk-fat=r) printf(n操作不合法,不能寫!); return; else printf(n是否順序修改 ?(y/n); scanf(%c,&g); /選擇修改方式if (g=y|g=y) myn.uofk-write=+myn.uofk-relong; /順序修改else printf(%dn,myn.uofk-write); /顯示寫指針模擬隨機修改printf(n寫文件成
11、功 !); void close(char *fna) /關閉文件操作 int i,k,f; for(i=0;i if(strcmp(myn.uofi-fna,fna)=0) k=i; break; /找文件在打開文件目錄中的登記位置if(strcmp(myn.uofk-sta,cj)=0) |(f=strcmp(myn.uofk-sta,dk)=0) /檢查文件狀態 myn.uofk-read=myn.uofk-write=0; /清空登記strcpy(myn.uofk-fna, ); strcpy(myn.uofk-sta, ); myn.uofk-relong=0; printf(n文件
12、關閉成功 !); if(f!=0) printf(n文件已關閉 !); void dele(char *fna) /撤消文件操作 int i,k; for(i=0;i if(strcmp(myn.ufdi-fna,fna)!=0) / 檢查用戶文件目錄是否有要關閉的文件 printf(n文件已撤消 !); return; for(i=0;i if(strcmp(myn.uofi-fna,fna)=0) /清空打開文件目錄中的登記 strcpy(myn.uofi-fna, ); strcpy(myn.uofi-sta, ); k=i; break; myn.ufdk-fadd=0; /清空用戶文
13、件目錄中的登記strcpy(myn.ufdk-fna, ); printf(n文件已撤消 !); void main() char userna8,filena10; int i,c,flag,record; while(1) while(1) printf(n輸入用戶名 :); scanf(%s,&userna); for(i=0;i if(flag=strcmp(userna,myi.userna)=0) /檢查用戶合法性 c=screen(); n=i; break; if(flag!=0) printf(n無此用戶 !); getchar(); else break; swit
14、ch(c) case 1: printf(n輸入文件名 :); scanf(%s,&filena); printf(n輸入記錄長度 :); scanf(%d,&size); getchar(); printf(n輸入文件屬性 :); scanf(%c,&atr); create(filena,size,atr); break; case 2: printf(n輸入打開文件名:); scanf(%s,&filena); getchar(); printf(輸入操作類型:); scanf(%c,&atr); open(filena,atr); break; case 3: printf(n輸入要關閉文件名:); scanf(%s,&filena); close(filena); break; case 4: printf(n請輸入文件名及讀長度:); scanf(%d,&size); read(filena,size); break; case 5: printf(n請輸入文件名 :);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 信息紕漏管理制度
- 信用內部管理制度
- 信訪來客管理制度
- 信貸風控管理制度
- 公司停車場管理制度
- 公司庫存車管理制度
- 公司禮品卡管理制度
- 醫院120管理制度
- 合伙小公司管理制度
- 學校生活區管理制度
- 2025年四川省涼山州中考數學試卷真題及解析答案
- 2025年江蘇省金陵中學英語八下期末學業質量監測試題含答案
- DB31-T 1545-2025 衛生健康數據分類分級要求
- 【薪智】2025地產建筑業行業白皮書人力核心指標行業報告系列
- 2025年全釩液流電池行業調研分析報告
- 2025年二級建造師考試《礦業工程管理與實物》真題及答案
- 2025年Python數據分析試題及答案
- 植物保護通論重點復習題
- 兒童抽動障礙共患焦慮抑郁障礙診治2025
- 建辦質202463號危險性較大的分部分項工程專項施工方案嚴重缺陷清單宣貫(雄安)
- 2025慢性阻塞性肺病(GOLD)指南更新要點解讀課件
評論
0/150
提交評論