




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
system數(shù)據(jù)結(jié)構(gòu)Boot_BLK:引導(dǎo)塊:包括可用Inode,datablock的個(gè)數(shù)Super_BLK:基本塊大小,根inode位置Inode:文件名、塊位置、塊個(gè)數(shù)、創(chuàng)建時(shí)間、文件大小Dir:目錄名、文件名、索引節(jié)點(diǎn)號(hào)….Open_file_table:維護(hù)打開的文件的表N_file:一般文件:文件路徑、內(nèi)容、文件名全局變量File*f:模擬磁盤Boolisnew:該磁盤是新建的還是已存在的各數(shù)據(jù)結(jié)構(gòu)都有一個(gè)全局變量基本函數(shù)voidGET_BLK(void*buf,intblk_no,intsize)獲得塊號(hào)為blk_no的大小為size字節(jié)的內(nèi)容存到buf中,voidPUT_BLK(void*buf,intblk_no)把buf中的數(shù)據(jù)放到blk_no的塊中值得注意:GET要有size,否則會(huì)把整個(gè)塊的數(shù)據(jù)都GET到,buf可能會(huì)爆掉,影響其他變量,出現(xiàn)未知錯(cuò)誤。位圖Datablockbitmap:640個(gè)文件640位80字節(jié)80個(gè)元素的char數(shù)組Inodebitmap:80個(gè)Inode,10字節(jié)10個(gè)元素的char數(shù)組但實(shí)際上我們?nèi)祟愔庇^認(rèn)識(shí)上char[640]和char[80]是更好理解的,因此我們?cè)诔绦蛑幸彩鞘褂眠@種更好理解的方式來(lái)操作要這樣的話就需要一個(gè)轉(zhuǎn)換函數(shù),把char[640]轉(zhuǎn)變成char[80],char[80]轉(zhuǎn)變成char[10],以及反向轉(zhuǎn)換Bit2char():80->640char2bit():640->80例如使用了1、2inode,那么位圖中的第一個(gè)char的Ascii碼應(yīng)為00000011,之后通過(guò)(char)3來(lái)實(shí)現(xiàn)賦值所有操作的前戲(intmain中)FILE*apply_room(char*sys_name)創(chuàng)建磁盤并返回指針里面有一些函數(shù)access,fseek等自己查一下如果是新的(isnew=true)Init()初始化引導(dǎo)塊、超級(jí)塊、兩個(gè)位圖、目錄全局變量d0int*findBLK(char*str,int*inum)找到絕對(duì)路徑為str的文件所占的塊號(hào),把這些塊號(hào)放到一個(gè)數(shù)組里,返回這個(gè)數(shù)組,并且在這個(gè)過(guò)程中把inum賦值為該文件的inode號(hào)中間函數(shù),方便查找一個(gè)文件的。創(chuàng)建文件操作
voidCreateFile(char*str,char*cont)intsplit(chardst[][80],char*str,constchar*spl):把絕對(duì)路徑str以分隔符spl分隔,并把各部分存到dst解析絕對(duì)路徑、判斷文件名長(zhǎng)度692-730行一層一層地找目錄最終找到直接的父目錄PUT_NFILE:找到合適位置與個(gè)數(shù)的塊,更新位圖,把全局變量n_file放進(jìn)去,并返回其inode號(hào)把上邊得到的inode號(hào)與文件名插入直接父目錄(dir_insert函數(shù)),并將更新完的父目錄寫回()打開文件
voidopenfile(char*filename)有沒(méi)有打沒(méi)打開更新全局的table關(guān)閉文件
voidclosefile(char*filename)有沒(méi)有打沒(méi)打開更新刪除文件
voiddelFile(char*str,intmode)Mode=1刪除普通文件mode=2刪除目錄普通和目錄的區(qū)別:刪除前是否要關(guān)閉這個(gè)文件刪除目錄的話目錄里的東西也都找不到了判斷有沒(méi)有更新引導(dǎo)塊和位圖889-921行得到直接父目錄從父目錄中刪除目錄項(xiàng)dir_del寫文件
voidwriteNFile(char*str,char*cont)有沒(méi)有打沒(méi)打開刪除文件delfile()mode=1創(chuàng)建新文件,文件名和內(nèi)容為上面的參數(shù)打開文件讀文件
voidreadFile(char*str)判斷有沒(méi)有判斷打沒(méi)打開解析地址后逐層去找,直到找到這個(gè)文件的inode,從而找到這個(gè)文件占哪些塊,分別讀出內(nèi)容注:實(shí)際上這里復(fù)雜了,findBLK直接就可以返回塊號(hào),實(shí)際上沒(méi)必要下邊寫一堆代碼自己去找的…復(fù)制文件
voidcopyFile(char*dest,char*str)把str路徑的文件復(fù)制到dest路徑的文件中把str路徑的文件讀出來(lái),放到緩沖區(qū)調(diào)用createfile創(chuàng)建即可不一定要和本系統(tǒng)在同一個(gè)文件夾,電腦的任何一個(gè)位置的文件都可以復(fù)制,如d:/test.txtexit不解釋創(chuàng)建目錄文件
voidCreateDir(char*str)解析地址根據(jù)絕對(duì)路徑逐層查找,直到其直接父目錄調(diào)用PUT_DIR把要?jiǎng)?chuàng)建的d0目錄找到合適的塊放進(jìn)去,并返回Inode_num更新其直接父目錄,插入目錄項(xiàng),并將父目錄寫回刪除目錄
delFile()mode=2類似刪除普通文件只不過(guò)不用事先關(guān)文件查看目錄
voidlookdir(ch
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度應(yīng)屆大學(xué)生人力資源實(shí)習(xí)合同
- 二零二五年度股票投資風(fēng)險(xiǎn)控制與合規(guī)監(jiān)督協(xié)議
- 二零二五年度個(gè)人債權(quán)轉(zhuǎn)讓協(xié)議書(關(guān)于專利權(quán)轉(zhuǎn)讓)
- 高管二零二五年度勞動(dòng)合同及離職交接程序
- 二零二五年度路橋工程土地征用與拆遷合同
- 美容院合伙人投資回報(bào)與風(fēng)險(xiǎn)控制協(xié)議書(2025年度)
- 2025年度金融借款合同違約起訴流程及費(fèi)用結(jié)算合同
- 2025年度餐飲企業(yè)跨界合作合伙經(jīng)營(yíng)合同
- 2025年度租房押金保險(xiǎn)產(chǎn)品推廣合同
- 2025年度荒山承包生態(tài)移民安置合同
- 部編版《道德與法治》六年級(jí)下冊(cè)第6課《探訪古代文明》精美課件(第1課時(shí))
- (正式版)CB∕T 4548-2024 船舶行業(yè)企業(yè)相關(guān)方安全管理要求
- 部編版八年級(jí)物理(上冊(cè))期末試卷(帶答案)
- 《衡水內(nèi)畫》課程標(biāo)準(zhǔn)
- DB32T 4400-2022《飲用水次氯酸鈉消毒技術(shù)規(guī)程》
- 化學(xué)品(氬氣+二氧化碳混合氣)安全技術(shù)使用說(shuō)明書
- 煤層氣開發(fā)-第2章-煤層氣地質(zhì)
- 美羅華(利妥昔單抗)課件
- 稅務(wù)簡(jiǎn)易注銷課件
- 人教版五年級(jí)數(shù)學(xué)下冊(cè)第六單元分層作業(yè)設(shè)計(jì)
- 肺葉切除術(shù)和全肺切除術(shù)的麻醉課件
評(píng)論
0/150
提交評(píng)論