《操作系統(tǒng)設(shè)計(jì)一個(gè)二級(jí)文件系統(tǒng)報(bào)告.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《操作系統(tǒng)設(shè)計(jì)一個(gè)二級(jí)文件系統(tǒng)報(bào)告.doc(15頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
操作系統(tǒng)(2014年秋季學(xué)期)
序號(hào):8
實(shí) 驗(yàn) 報(bào) 告
系別:計(jì)算機(jī)科學(xué)與技術(shù)
班級(jí):信安12-1班
姓名:李勇
學(xué)號(hào):07101020112
實(shí)驗(yàn)名稱:進(jìn)程調(diào)度
總成績(jī):
評(píng)語:
日期:
《操作系統(tǒng)》實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)名稱
進(jìn)程調(diào)度
實(shí)驗(yàn)序號(hào)
1
實(shí)驗(yàn)日期
2014.1.2
實(shí)驗(yàn)人
李勇
一、實(shí)驗(yàn)?zāi)康?、要求與環(huán)境
1.目的:
編寫一個(gè)簡(jiǎn)單的二級(jí)文件系統(tǒng)實(shí)現(xiàn)程序,加深對(duì)文件系統(tǒng)的內(nèi)部功能和內(nèi)部實(shí)現(xiàn)的理解。
2.要求:
(1)用C語言(或其它語言,如Java)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的二級(jí)文件系統(tǒng)設(shè)計(jì),加深對(duì)文件系統(tǒng)的內(nèi)部功能和內(nèi)部實(shí)現(xiàn)的理解。要求模擬采用二級(jí)目錄結(jié)構(gòu)的磁盤文件系統(tǒng)的文件操作, 實(shí)現(xiàn)用戶的創(chuàng)建、查詢、登錄、刪除,和文件的添加、刪除、打開、關(guān)閉、讀、寫等基本命令,用在屏幕上輸入命令來模擬用戶程序中調(diào)用的文件操作。
(2)為了清楚地觀察文件的管理過程,程序應(yīng)將每個(gè)文件操作的結(jié)果顯示出來。
(3)分析程序運(yùn)行的結(jié)果,談一下自己的收獲。
3.環(huán)境:
1. 硬件設(shè)備:PC機(jī)一臺(tái)
2. 軟件環(huán)境:安裝Windows操作系統(tǒng)或者Linux操作系統(tǒng),并安裝相關(guān)的程序開發(fā)環(huán)境,如C \C++\Java 等編程語言環(huán)境。
二、相關(guān)背景知識(shí)
最基本的文件操作
(1)創(chuàng)建文件
在創(chuàng)建一個(gè)新文件時(shí),系統(tǒng)首先要為新文件分配必要的外存空間,并在文件系統(tǒng)的目錄中,為之建立一個(gè)目錄項(xiàng)。目錄項(xiàng)中應(yīng)該記錄新文件的文件名及其在外存的地址等屬性。
(2)刪除文件
當(dāng)已不再需要某文件時(shí),可將它從文件系統(tǒng)中刪除。在刪除時(shí),系統(tǒng)應(yīng)該先從目錄中找到要?jiǎng)h除的文件的目錄項(xiàng),使之成為空項(xiàng),然后回收該文件所占用的存儲(chǔ)空間。
(3)讀文件
在讀一個(gè)文件時(shí),須在相應(yīng)的系統(tǒng)調(diào)用中給出文件名和應(yīng)該讀入的內(nèi)存目標(biāo)地址。此時(shí),系統(tǒng)同樣要查找目錄,找到制定的目錄項(xiàng),從中得到被讀文件在外存中的位置。在目錄項(xiàng)中,還有一個(gè)指針用于對(duì)文件的讀/寫。
(4)寫文件
在寫一個(gè)文件時(shí),須在相應(yīng)的系統(tǒng)調(diào)用中給出該文件名及該文件在內(nèi)存中的(源)地址。為此,也同樣須先查找目錄,找到指定文件的目錄項(xiàng),在利用目錄中的寫指針進(jìn)行寫操作。
(5)截?cái)辔募?
如果一個(gè)文件的內(nèi)容已經(jīng)陳舊而需要全部更新文件的內(nèi)容時(shí),一種方法是將此文件刪除,再重新創(chuàng)建一個(gè)新文件。但如果文件名及其屬性均無改變時(shí),則可采取另一種所謂的截?cái)辔募姆椒?,此即將原有文件的長(zhǎng)度設(shè)置為0,或說放棄原有的文件內(nèi)容。
(6)設(shè)置文件的讀/寫位置
前述的文件讀/寫操作,都只提供了對(duì)文件順序存取的手段,即每次都是從文件的始端讀或?qū)?。設(shè)置文件讀/寫位置的操作,用于設(shè)置文件讀/寫指針的位置,以便每次讀/寫文件時(shí),不是從其始端而是從所設(shè)置的位置開始操作。也正因如此,才能改順序存取為隨機(jī)存取。
三、實(shí)驗(yàn)設(shè)計(jì)說明
(寫你實(shí)驗(yàn)相關(guān)的設(shè)計(jì),別寫這么少,多寫點(diǎn)。。。。。。。)
本次實(shí)驗(yàn)采用C語言模擬二級(jí)文件系統(tǒng),可以在多用戶環(huán)境下實(shí)現(xiàn)用戶的創(chuàng)建、查詢、登錄、刪除,和文件的添加、刪除、打開、關(guān)閉、讀、寫等基本操作,很好地模擬了操作系統(tǒng)對(duì)文件的管理過程。
四、實(shí)驗(yàn)設(shè)計(jì)的流程圖
(寫你實(shí)驗(yàn)相關(guān)的設(shè)計(jì)流程圖,下面的流圖是有問題的。。。。。。。)
選擇操作命令及命令對(duì)象文件
實(shí)施該命令
輸出錯(cuò)誤信息
顯示已經(jīng)完成操作的信息
開始
進(jìn)行該用戶的下個(gè)操做
直到退出該用戶權(quán)限
結(jié)束
有操作權(quán)限?
是否要?jiǎng)?chuàng)建新文件?
退出?
輸入文件名等信息;
顯示已經(jīng)完成操作的信息
Y
N
Y
N
N
Y
選擇用戶
四、程序代碼
(換上你自己的程序代碼,下面的程序代碼是有問題的。)
#include "stdlib.h"
#include
#define NULL 0
int count=0;
struct file{
char name[10];
int code;//保護(hù)碼
int size;
char pwrite;//讀寫指針
};
struct user{
char name[10];
struct file *list;//目錄指針
};
/////////////////////////////////////////////////////////////
struct file one[10]={{"a1",0,10,0},{"a2",2,10,0},{"a3",1,10,0},
{"a4",2,10,0},{"a5",2,10,0},{"a6",2,10,0},{"a7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file two[10]={{"b1",0,10,0},{"b2",2,10,0},{"b3",1,10,0},
{"b4",2,10,0},{"b5",2,10,0},{"b6",2,10,0},{"b7",2,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file three[10]={{"c1",0,10,0},{"c2",2,10,0},{"c3",1,10,0},
{"c4",2,10,0},{"c5",2,10,0},{"c6",2,10,0},{"c7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file four[10]={{"d1",0,10,0},{"d2",2,10,0},{"d3",1,10,0},
{"d4",2,10,0},{"d5",2,10,0},{"d6",2,10,0},{"d7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file fine[10]={{"e1",0,10,0},{"e2",2,10,0},{"e3",1,10,0},
{"e4",2,10,0},{"e5",2,10,0},{"e6",2,10,0},{"e7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file six[10]={{"f1",0,10,0},{"f2",2,10,0},{"f3",1,10,0},
{"f4",2,10,0},{"f5",2,10,0},{"f6",2,10,0},{"f7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file seven[10]={{"g1",0,10,0},{"g2",2,10,0},{"g3",1,10,0},
{"g4",2,10,0},{"g5",2,10,0},{"g6",2,10,0},{"g7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file eight[10]={{"h1",0,10,0},{"h2",2,10,0},{"h3",1,10,0},
{"h4",2,10,0},{"h5",2,10,0},{"h6",2,10,0},{"h7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file nine[10]={{"j1",0,10,0},{"j2",2,10,0},{"j3",1,10,0},
{"j4",2,10,0},{"j5",2,10,0},{"j6",2,10,0},{"j7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file ten[10]={{"k1",0,10,0},{"k2",2,10,0},{"k3",1,10,0},
{"k4",2,10,0},{"k5",2,10,0},{"k6",2,10,0},{"k7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file UFD[10];
struct file AFD[5]={{"0",0,0,0},{"0",0,0,0},{"0",0,0,0},{"0",0,0,0},{"0",0,0,0}};
///////////////////////////////////////////////////////////////
struct user use[10]={{"number1",one},{"number2",two},{"number3",three},{"number4",four},
{"number5",fine},{"number6",six},{"number7",seven},{"number8",eight},{"number9",nine},
{"number10",ten}};
struct user MFD[1]={{"0",0}};
///////////////////////////////////////////////////////////////////
void running();
void delet();
void write();;
void open();
void close();
void bye();
void read();
void create();
void input();
///////////////////////////////////////////////////////////////////
using namespace std;
void main()
{ input();
running();
cout<<"操作己結(jié)束"<>order;
switch(order)
{ case c : create();break;
case d : delet();break;
case o : open();break;
case s : close();break;
case r : read();break;
case w : write();break;
case b : bye();break;
case t : input();break;
default : cout<<"輸入命令出錯(cuò),請(qǐng)重輸"<>name;
flag=0;
for(i=0;i<10;i++)
{ if(strcmp(UFD[i].name,name))//如果沒有這個(gè)文件
{
flag=1;
//break;
}
else
{ flag=0;
strcpy(UFD[i].name,"0");//清空文件
UFD[i].code=0;
UFD[i].pwrite=0;
UFD[i].size=0;
cout<<"該文件己被刪除"<>name;
flag=0;
for(i=0;i<10;i++)
{ if(strcmp(UFD[i].name,name))//如果沒有這個(gè)文件
{
flag=1;
//break;
}
else
{ flag=0;
break;
}
}
if(flag==1)
cout<<"無此文件,請(qǐng)重新輸入"<>name;
flag=0;
for(j=0;j<5;j++)
{ if(strcmp(AFD[j].name,name))//如果沒有這個(gè)文件
{
flag=1;
//break;
}
else
{ flag=0;
strcpy(AFD[j].name,"0");//清空文件
AFD[j].code=0;
AFD[j].pwrite=0;
AFD[j].size=0;
cout<<"運(yùn)行隊(duì)列中的該文件己被關(guān)閉"<>name;
for(j=0;j<5;j++)
{
if(!strcmp(AFD[j].name,name))//如果AFD有這個(gè)文件
{ flag=1; break;
}
}
if(flag==1)
if(AFD[j].code==0||AFD[j].code==2)
{ AFD[j].pwrite=R;
cout<<"文件的狀態(tài)是正在讀"<>name;
for(j=0;j<5;j++)
{
if(!strcmp(AFD[j].name,name))//如果AFD有這個(gè)文件
{ flag=1; break;
}
}
if(flag==1)
if(AFD[j].code==1||AFD[j].code==2)
{ AFD[j].pwrite=W;
cout<<"文件的狀態(tài)是正在寫"<9)
{ cout<<"文件夾己滿,請(qǐng)先刪除"<>name;
flag=0;
for(i=0;i<10;i++)
{ if(!strcmp(UFD[i].name,name))//如果有重名的文件
{ cout<<"文件名重復(fù),請(qǐng)重新輸入"<>UFD[i].code;
if(UFD[i].code!=0&&UFD[i].code!=1&&UFD[i].code!=2)
cout<<"輸入錯(cuò)誤,重新輸入保護(hù)碼"<>UFD[i].size;
cout<<"己建立文件"<>name;
switch(name)
{ case 1: for(i=0;i<10;i++)UFD[i]=one[i];MFD[0]=use[1];running();break;
case 2: for(i=0;i<10;i++)UFD[i]=two[i];MFD[0]=use[1];running();break;
case 3: for(i=0;i<10;i++)UFD[i]=three[i];MFD[0]=use[2];running();break;
case 4: for(i=0;i<10;i++)UFD[i]=four[i];MFD[0]=use[3];running();break;
case 5: for(i=0;i<10;i++)UFD[i]=fine[i];MFD[0]=use[4];running();break;
case 6: for(i=0;i<10;i++)UFD[i]=six[i];MFD[0]=use[5];running();break;
case 7: for(i=0;i<10;i++)UFD[i]=seven[i];MFD[0]=use[6];running();break;
case 8: for(i=0;i<10;i++)UFD[i]=eight[i];MFD[0]=use[7];running();break;
case 9: for(i=0;i<10;i++)UFD[i]=nine[i];MFD[0]=use[8];running();break;
case 0: for(i=0;i<10;i++)UFD[i]=ten[i];MFD[0]=use[9];running();break;
default : cout<<"輸入用戶名出錯(cuò)"<
下載提示(請(qǐng)認(rèn)真閱讀)
- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
文檔包含非法信息?點(diǎn)此舉報(bào)后獲取現(xiàn)金獎(jiǎng)勵(lì)!
下載文檔到電腦,查找使用更方便
9.9
積分
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
-
操作系統(tǒng)
設(shè)計(jì)
一個(gè)
二級(jí)
文件系統(tǒng)
報(bào)告
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書面授權(quán),請(qǐng)勿作他用。
鏈接地址:http://www.szxfmmzy.com/p-7854849.html