版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、陜西省高等教育自學(xué)考試 操作系統(tǒng) 課程實踐環(huán)節(jié)考核報告準(zhǔn)考證號: 考生姓名: 所學(xué)專業(yè): 計算機(jī)及應(yīng)用 專業(yè)層次: 本科 考核地點: 西安電子科技大學(xué) 考核時間: 2015/11/22 實踐考核評語及成績評定(由指導(dǎo)教師填寫)教師簽名:年 月 日主考院校:西安電子科技大學(xué)實驗內(nèi)容實驗一、模擬分頁式存儲管理中硬件的地址轉(zhuǎn)換和用先進(jìn)先出調(diào)度算法(FIFO)處理缺頁中斷。#include "stdio.h"#define size 1024struct plistint number; int flag; int block; int modify; int location;
2、;struct plist p17=0,1,5,0,010,1,1,8,0,012,2,1,9,0,013,3,1,1,0,021,4,0,-1,0,022,5,0,-1,0,023,6,0,-1,0,121;struct ilistchar operation10;int pagenumber;int address;struct ilist p212="+",0,70,"+",1,50,"*",2,15,"存",3,21,"取",0,56,"-",6,40,"移
3、位",4,53,"+",5,23,"存",1,37,"取",2,78,"+",4,1,"存",6,84;main()int i,lpage,pflage,replacedpage,pmodify;/int p4=0,1,2,3;int k=0;int m=4;long memaddress;printf("n 操作 t 頁號 t頁內(nèi)地址 標(biāo)志 絕對地址 修改頁號 主存塊號 絕對地址n"); for(i=0;i<12;i+)lpage=p2i.pagenumbe
4、r;pflage=p1lpage.flag;if(pflage=0)replacedpage=pk;pmodify=p1replacedpage.modify;pk=lpage;k=(k+1)%m;p1lpage.flag=1;/標(biāo)志位改為1p1lpage.block=p1replacedpage.block;p1replacedpage.block=-1;p1replacedpage.flag=0;p1replacedpage.modify=0;memaddress=p1lpage.block*size+p2i.address;if(p2i.operation="save"
5、;)p1lpage.modify=1;printf(" %st",p2i.operation);printf(" %dt",p2i.pagenumber);printf(" %dt",p2i.address);printf(" %dt",pflage);if(pflage=1)printf(" %dt",memaddress);elseprintf(" *%dt",p2i.pagenumber);if(pflage=1)printf(" t");elsep
6、rintf(" %d->%dt",p2i.pagenumber,replacedpage);printf(" %dt",p1lpage.block);printf(" %dt",memaddress);printf("n");實驗二、模擬采用二級目錄結(jié)構(gòu)的磁盤文件系統(tǒng)中的文件操作。1、數(shù)據(jù)結(jié)構(gòu)設(shè)計通過分析設(shè)計題目,具體設(shè)計出主要的三個數(shù)據(jù)結(jié)構(gòu)。UFD:通過結(jié)構(gòu)體,將文件名,文件屬性,記錄長度和文件的地址結(jié)合在一體。UOF:同樣是通過結(jié)構(gòu)體,將文件名,文件屬性,記錄長度,當(dāng)前狀態(tài),讀指針,寫指針以及最后一塊的指
7、針結(jié)合在一起。MFD:通過一個類來實現(xiàn)其功能。類中包括用戶名,UFD及UOF中的文件個數(shù),以及與用戶相對應(yīng)的UFD和UOF。另外還包括兩個初始化函數(shù)。模擬二級目錄結(jié)構(gòu)時,第一級為主文件目錄MFD,第二級為用戶文件目錄UFD。假定系統(tǒng)可同時管理N個用戶的文件,每個用戶最多在磁盤上保存L個文件,則二級目錄結(jié)構(gòu)可用如下形式表示:用戶名用戶文件目錄文件名文件屬性記錄長度文件地址 N L欄 欄主文件目錄MFD 用戶文件目錄UFD整個系統(tǒng)只有一張主文件目錄表,但有N張用戶文件目錄表。用戶文件UFD中的“文件屬性”規(guī)定文件的使用權(quán)限為“只可讀”或“只可寫”或“可讀可寫”。 可為每個用戶設(shè)置一張“用戶已打開文
8、件表(UOF)”,用以說明該用戶當(dāng)前正在使用文件的情況。如果用最多同時打開或建立S個文件,那么,用戶已打開文件表UOF應(yīng)該有S個登記欄,其結(jié)構(gòu)如下:文件名文件屬性記錄長度狀態(tài)(打開/建立)讀指針寫指針S欄 用戶請求打開或建立一個文件時,相應(yīng)的文件操作把在關(guān)該文件的信息登記到UOF中,讀指針和寫指針用于指出對文件的進(jìn)行存取的當(dāng)前位置。2、程序流程設(shè)計1、程序結(jié)構(gòu)框圖:文件系統(tǒng)提供的文件操作有建立文件(create),打開文件(open),關(guān)閉文件(close),讀文件(read),寫文件(write)和撤消文件(delete)。在模擬程序中可從鍵盤上輸入文件操作命令來模擬各用戶程序中所調(diào)用的各種
9、文件操作,用一個結(jié)束命令(end)停止程序的執(zhí)行,其程序的結(jié)構(gòu)圖如下:開 始初始化已有的用戶或新建用戶初始化文件表輸入用戶名MFD中是否有該用戶輸入命令分析命令顯示:無此用戶關(guān) 閉顯示:命令錯誤無有建立打開關(guān)閉讀寫撤消立2、用輸入命令來模擬用戶程序中調(diào)用的文件操作,這些命令的格式和處理要求如下:(1)建立文件:create(文件名,記錄長度,文件屬性)模擬文件系統(tǒng)進(jìn)行“建立文件”的處理流程如下:“建立文件”模擬流程:顯示:建立成功在該用戶的UOF 中登記狀態(tài):=建立 寫指針:=d在UFD登記欄中文件地址:=d找一磁盤空閑塊D:=找到的塊號在UFD和UOF中登記文件名,記錄長度,文件屬性在UFD
10、和UOF中找空登記欄UFD中有該文件查該用戶的UFD開 始顯示:同名文件不能建 立返回返 回(2)打開文件:open(文件名,操作類型)其中操作類型指出文件打開后用戶將對文件進(jìn)行讀還是寫。約定操作類型與文屬性不符合或正處于“建立”狀態(tài)的文件不允許打開,處理流程如下:“打開文件”模擬流程開 始查用戶UFDUFD中有該文件嗎?查用戶UOF該文件為“建立”狀態(tài)?顯示:文件已打開返 回顯示:正在建立不能打開UOF中有該文件?文件屬性與操作類型相符?登記UOF:文件名,記錄長度,文件屬性狀 態(tài):=“打開”讀指針:=UFD中文件地址寫指針:=UFD中文件地址顯示:“打開”成功返 回顯示:不存在該文件,打開
11、失敗返 回顯示:非法操作,不能打開返 回有無有無否否是是(3)讀文件:Read(文件名,讀文件)文件打開后,可用“讀文件”操作請求讀指定文件中的若干記錄,既可順序讀寫也可隨機(jī)讀。這里約定總是順序讀文件中的記錄本,讀長度表示本次操作需計的記錄個數(shù)。處理流程如下:“讀文件”模擬流程:開 始查用戶UOF文件已打開?否是顯示:文件未打開,不能讀從“讀指針”得到當(dāng)前起始地址返 回按讀長度把把信息讀出傳送給用戶(用顯示物理塊號來模擬)修改“讀指針”顯示:“讀文件”成功返 回否(4)關(guān)閉文件:close(文件名)對某個文件不需要再讀或?qū)憰r,用戶應(yīng)關(guān)閉文件。若關(guān)閉一個新建立的文件,則要建立文件的結(jié)束標(biāo)志。對鏈
12、接文件來說,最后一塊中的鏈接字應(yīng)為“0”。關(guān)閉文件的工作流程如下:“關(guān)閉文件”模擬流程開 始查用戶UOF文件為“建立”狀態(tài)?是否置文件結(jié)束標(biāo)志文件為“打開”狀態(tài)?消除該文件在UOF中的登記欄否顯示:“關(guān)閉文件”成功顯示:文件已關(guān)閉返 回是 是 (5)刪除文件:delete(文件名)把請求撤消的文件從用戶文件目錄表中除名,收回該文件占用的存儲區(qū)域。處理流程如下:“刪除文件”模擬流程 開 始查該用目錄表UFDUFD中有該文件?是顯示:文件已撤消查該用戶的UOF否UOF中有該文件?返 回是否在UOF中清除該文件的登記欄歸還文件所占的存儲區(qū)域在UFD中清除該文件登記欄(6)寫文件:write(文件名,
13、記錄號)執(zhí)行寫文件操作時要區(qū)分兩種情況,第一種是在執(zhí)行create后要求寫。第二種是在執(zhí)行open后要求寫的。對第二種情況可認(rèn)為用戶要對一個已建立好的文件進(jìn)行修改。一個文件可以分多次寫,既可按記錄順序?qū)懸部呻S機(jī)寫一個記錄,采用順序?qū)憰r可省略記錄號。模擬寫文件操作的工作的流程圖如下: “寫文件”模擬流程顯示:文件尚未建立或打開,不能寫文件屬性為“只讀”?找出存放指定記錄的塊號取出“寫指針”指出的塊號查用戶的UOF開 始UOF中有該文件否是該文件為“建立”狀態(tài)?返 回是是把記錄信息寫到“寫指針”指出的物理塊中(用顯示物理塊號來模擬)顯示:操作不合法,不能寫是否順序修改?返 回是是把修改后的信息寫入
14、找到的物理塊中修改“寫指針”顯示:“寫文件”成功返 回是是是是是注:流程圖中“尋找空閑塊”的工作可以用取一個隨機(jī)數(shù)來模擬,取到的隨機(jī)靈敏即為空閑塊號五:源程序及注釋如下:#define S 10#define L 20#define N 30#include"stdio.h"#include"string.h"#include"stdlib.h"struct UFD char fname20; char shuxing20; int length; int addr; ;struct UOF char fname20; char sh
15、uxing10; int length; char state10; int *w,*r; ;struct MFD char uname25; struct UFD ufdL; struct UOF uofS; ;struct MFD mfdN;create(int x);open(int x);close(int x);Read(int x);write(int x);delete(int x);main() char namestr20,order20; int i,j; /*chu shi hua MFD*/ /*/ strcpy(mfd0.uname,"zhangjian&q
16、uot;); strcpy(mfd0.ufd0.fname,"wenjian1"); strcpy(mfd0.ufd0.shuxing,"read"); mfd0.ufd0.length=25; mfd0.ufd0.addr=6120;/* printf("uname:%s,fname:%s,shuxing:%s,length:%d,address:%dn",mfd0.uname,mfd0.ufd0.fname,mfd0.ufd0.shuxing,mfd0.ufd0.length,mfd0.ufd0.addr);*/ strcpy(m
17、fd0.ufd1.fname,"wenjian2"); strcpy(mfd0.ufd1.shuxing,"rw"); mfd0.ufd1.length=20; mfd0.ufd1.addr=0; strcpy(mfd0.ufd2.fname,"wenjian3");strcpy(mfd0.ufd2.shuxing,"rw"); mfd0.ufd2.length=20; mfd0.ufd2.addr=1000; strcpy(mfd1.uname,"hey"); strcpy(mfd1.ufd0
18、.fname,"wenjian5"); strcpy(mfd1.ufd0.shuxing,"read"); mfd1.ufd0.length=30; mfd1.ufd0.addr=4020; strcpy(mfd1.ufd1.fname,"wenjian8"); strcpy(mfd1.ufd1.shuxing,"rw"); mfd1.ufd1.length=21; mfd1.ufd1.addr=1; /*chu shi hua UOF*/strcpy(mfd0.uof0.fname,"wenjian1&
19、quot;); strcpy(mfd0.uof0.shuxing,mfd0.ufd0.shuxing); mfd0.uof0.length=mfd0.ufd0.length; strcpy(mfd0.uof0.state,"open"); mfd0.uof0.w=mfd0.ufd0.addr; mfd0.uof0.r=mfd0.ufd0.addr; strcpy(mfd0.uof1.fname,"wenjian3"); strcpy(mfd0.uof1.shuxing,mfd0.ufd2.shuxing); mfd0.uof1.length=mfd0.u
20、fd2.length; strcpy(mfd0.uof1.state,"open"); mfd0.uof1.w=mfd0.ufd2.addr; mfd0.uof1.r=mfd0.ufd2.addr; /* printf("w=%d",mfd0.uof0.w); */ /*/shuru:printf("Initial has finished.Please input your name to login:n");scanf("%s",namestr);for(i=0;i<N;i+) if(!strcmp(na
21、mestr,mfdi.uname) /*xiang deng*/break; /*for*/ if(i>=N) printf("The name you have inputed is wrong!n"); goto shuru; instructions:printf("Welcome!Input your instruction:n");printf("create create a filen");printf("open open a filen");printf("close close
22、a filen");printf("read read a filen");printf("write write a filen");printf("delete delete a filen");printf("end quit the systemn");printf("-And your choice is-n");scanf("%s",order);if(!strcmp(order,"create") create(i); goto i
23、nstructions;else if(!strcmp(order,"open") open(i); goto instructions;else if(!strcmp(order,"close") close(i); goto instructions;else if(!strcmp(order,"read") Read(i); goto instructions;else if(!strcmp(order,"delete") delete(i); goto instructions;else if(!strcm
24、p(order,"write") write(i); goto instructions;else if(!strcmp(order,"end") printf("You have canceled this operation!n");return(0); else printf("Wrong instruction!Please input the right one!n");goto instructions; /*-zhu han shu-*/*=create()= */create(int x) char
25、 filename20; int j; int length; char prority20; int address; rand();/*chu shi hua sui ji han shu*/ printf("You have chose to create a new file!n"); printf("Please input the name of the file:n"); scanf("%s",&filename); for(j=0;j<L;j+) if(!strcmp(mfdx.ufdj.fname,fi
26、lename)/*yi cun zai*/ printf("The name has exist!n"); break;/*if*/ else if(strlen(mfdx.ufdj.fname)=0) /*bu cun zai*/ strcpy(mfdx.ufdj.fname,filename); printf("Input the information of the new file!n"); printf("Input its length below:n"); scanf("%d",&length
27、); mfdx.ufdj.length=length; printf("Input its prority below:read,write or rwn"); scanf("%s",&prority); strcpy(mfdx.ufdj.shuxing,prority); mfdx.ufdj.addr=rand(); mfdx.uofj.w=mfdx.ufdj.addr; strcpy(mfdx.uofj.state,"create"); printf("You have created a file succes
28、sful!n"); break;/*else*/ /*for*/*=create=*/*=open()=*/open(int x) int j,k; char filename20; printf("You have chose to open a new file!n"); printf("Please input the name of the file:n"); scanf("%s",&filename); for(j=0;j<L;j+) if(!strcmp(mfdx.ufdj.fname,filena
29、me)/*yi cun zai*/*if*/ for(k=0;k<S;k+) if(!strcmp(mfdx.uofk.fname,filename)/*cun zai uof*/ if(!strcmp(mfdx.uofk.state,"create") /*zai jian li*/ printf("The file is being created!You can not open it.n"); else printf("The file has opened!n"); break; /* cun zai uof*/ el
30、se if(strlen(mfdx.uofk.fname)=0)/*bu cun zai uof*/ printf("The prority of the file is:n"); printf("%sn",mfdx.ufdj.shuxing); if(strcmp(mfdx.ufdj.shuxing,"rw")=0|strcmp(mfdx.ufdj.shuxing,"read")=0|strcmp(mfdx.ufdj.shuxing,"write")=0|strcmp(mfdx.ufdj.sh
31、uxing,"rw")=0) strcpy(mfdx.uofk.fname,filename); mfdx.uofk.length=mfdx.ufdj.length; strcpy(mfdx.uofk.shuxing,mfdx.ufdj.shuxing); strcpy(mfdx.uofk.state,"open"); mfdx.uofk.w=mfdx.ufdj.addr; mfdx.uofk.r=mfdx.ufdj.addr; printf("You have opened the file you need!n"); /* da
32、kai cheng gong*/else printf("You don't have the right to open this file!n");break; /*bu zai uof*/ /*for k*/ break; /*if*/ else if(strlen(mfdx.ufdj.fname)=0) /*mei you gai wen jian*/ printf("The file don't exist!n"); break; /*wai for*/*=open=*/*=close()=*/close(int x) int
33、j; char filename20; printf("You have decided to close a file!Please input the file's name:n"); scanf("%s",filename); for(j=0;j<S;j+) if(!strcmp(mfdx.uofj.fname,filename)/*UOF zhong you*/ if(!strcmp(mfdx.uofj.state,"create")/*wei jian zai jian li*/ strcpy(mfdx.uof
34、j.state,"open"); else strcpy(mfdx.uofj.fname,""); strcpy(mfdx.uofj.fname,""); strcpy(mfdx.uofj.shuxing,""); strcpy(mfdx.uofj.state,""); mfdx.uofj.length=0; printf("Close the file successful!n"); break; else if(strlen(mfdx.uofj.fname)=0) pri
35、ntf("The file doesn't exist in your UOF table !n"); break; /*for*/*=close=*/*=read()=*/Read(int x) int j; int length; char filename20; printf("You have decided to read a file!Please input the file's name:n"); scanf("%s",filename); for(j=0;j<S;j+) if(!strcmp(m
36、fdx.uofj.fname,filename)/*UOF zhong you*/ if(!strcmp(mfdx.uofj.state,"open")/*wei jian yi da kai*/ printf("Reading the file.length(%d):n",mfdx.uofj.length); for(length=0;length<mfdx.uofj.length;length+) printf("%5d",mfdx.uofj.r); mfdx.uofj.r+; printf("n");
37、printf("Reading is finished successful!n"); else printf("The file doesn't open!You can't read it.n"); break; /*UOF zhong you*/ else if(strlen(mfdx.uofj.fname)=0) printf("The file doesn't exist in your UOF table !n"); break; /*for*/*=read=*/*=write()=*/write(
38、int x) int j,k; char filename20; printf("You have chose to write a file!n"); printf("Please input the name of the file:n"); scanf("%s",&filename); for(k=0;k<S;k+) if(!strcmp(mfdx.uofk.fname,filename)/*cun zai uof*/ if(!strcmp(mfdx.uofk.state,"create") /
39、*zai jian li*/ printf("Writing the file,please wait.n"); for(j=0;j<mfdx.uofk.length;j+)printf("%5d ",mfdx.uofk.w+); printf("n"); printf("Writing is successful!n"); /*jian li zhuang tai*/ else if(!strcmp(mfdx.uofk.shuxing,"read")/*wei zhi du*/ prin
40、tf("Illeagle instructions!You don't have the right to write!n"); else printf("Writing the file,please wait.n"); for(j=0;j<mfdx.uofk.length;j+)printf("%5d ",mfdx.uofk.w+); printf("n"); printf("Writing is successful!n"); break;/*uof cun zai you*
41、/ else if(strlen(mfdx.uofk.fname)=0)/*bu cun zai uof*/ printf("The file doesn't exist in uof,you can not write.n"); break; /*bu zai uof*/ /*for k*/*=write=*/delete(int x) int j,k,l; char filename20; l=0; printf("You have chosen to delete a file!n"); printf("Please input the name of the file:n"); scanf("%s",&filename); for(j=0;j<L;j+) if(!strcmp(mfdx.ufdj.fname,filename)/*yi cun zai UFD*/*if*/ for(k=0;k<S;k+) if(!strcmp(mfdx.uofk.fname,filename)/*cun zai uof*/ strcpy(mfdx.uofk.fname,""); strcpy(mfdx.uofk.shuxing,"");
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度并購重組項目法律盡職調(diào)查與合規(guī)評估合同3篇
- 2025年度油氣田勘探鉆井工程總承包合同4篇
- 2025年度鐵藝制品定制加工及現(xiàn)場安裝服務(wù)協(xié)議3篇
- 二零二五年度文化演藝中心承包經(jīng)營合同3篇
- 二零二五年度汽車維修配件批發(fā)合同規(guī)范4篇
- 二零二五版創(chuàng)業(yè)公司股東退股及創(chuàng)業(yè)團(tuán)隊激勵機(jī)制協(xié)議3篇
- 二零二五年度礦產(chǎn)資源開發(fā)合作擔(dān)保書3篇
- 二零二五年度定制化傳單派發(fā)與宣傳效果評估協(xié)議書4篇
- 2025年度木方模板購銷與知識產(chǎn)權(quán)保護(hù)協(xié)議3篇
- 2025年度美容院美容院美容院美容院美容院美容院客戶滿意度調(diào)查合同4篇
- C及C++程序設(shè)計課件
- 帶狀皰疹護(hù)理查房
- 公路路基路面現(xiàn)場測試隨機(jī)選點記錄
- 平衡計分卡-化戰(zhàn)略為行動
- 國家自然科學(xué)基金(NSFC)申請書樣本
- 幼兒教師干預(yù)幼兒同伴沖突的行為研究 論文
- 湖南省省級溫室氣體排放清單土地利用變化和林業(yè)部分
- 材料設(shè)備驗收管理流程圖
- 培訓(xùn)機(jī)構(gòu)消防安全承諾書范文(通用5篇)
- (完整版)建筑業(yè)10項新技術(shù)(2017年最新版)
- 第8期監(jiān)理月報(江蘇版)
評論
0/150
提交評論