操作系統(tǒng)原理與Linux實(shí)踐教程(第2版)課件 第57講 文件系統(tǒng)功能及實(shí)現(xiàn)_第1頁
操作系統(tǒng)原理與Linux實(shí)踐教程(第2版)課件 第57講 文件系統(tǒng)功能及實(shí)現(xiàn)_第2頁
操作系統(tǒng)原理與Linux實(shí)踐教程(第2版)課件 第57講 文件系統(tǒng)功能及實(shí)現(xiàn)_第3頁
操作系統(tǒng)原理與Linux實(shí)踐教程(第2版)課件 第57講 文件系統(tǒng)功能及實(shí)現(xiàn)_第4頁
操作系統(tǒng)原理與Linux實(shí)踐教程(第2版)課件 第57講 文件系統(tǒng)功能及實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

文件系統(tǒng)功能及實(shí)現(xiàn)主要內(nèi)容一、磁盤信息分區(qū)二、文件操作系統(tǒng)調(diào)用功能實(shí)現(xiàn)三、文件共享一、磁盤信息分區(qū)磁盤分區(qū)經(jīng)常包含如下項(xiàng)目1、引導(dǎo)塊操作系統(tǒng)引導(dǎo)程序。超級(jí)塊包含文件系統(tǒng)的結(jié)構(gòu)和管理信息,如:2、超級(jí)塊inode表所占的盤塊數(shù)文件數(shù)據(jù)所占的盤塊數(shù)主存中登記的空閑塊的物理塊號(hào)在計(jì)算機(jī)啟動(dòng)時(shí),或者首次使用文件系統(tǒng)時(shí),將超級(jí)塊讀入內(nèi)存。主存中登記的空閑inode數(shù)以位示圖或指針列表的形式登記可用磁盤空閑塊3、空閑塊信息表存放每個(gè)文件的inode,inode存放文件的屬性信息4、索引節(jié)點(diǎn)區(qū)存放文件頂級(jí)目錄項(xiàng)5、根目錄存儲(chǔ)文件目錄和文件內(nèi)容6、目錄和文件數(shù)據(jù)區(qū)磁盤存儲(chǔ)空間布局二、文件操作系統(tǒng)調(diào)用功能實(shí)現(xiàn)文件系統(tǒng)提供給用戶程序的一組系統(tǒng)調(diào)用包括1、文件系統(tǒng)調(diào)用種類建立打開讀寫關(guān)閉刪除控制為了避免重復(fù)訪問外存目錄查找文件,系統(tǒng)把常用和正在使用的那些文件目錄項(xiàng)復(fù)制到主存中建立的打開文件表(也稱為活動(dòng)文件表)中。2、打開文件表(外存目錄的緩沖)打開文件時(shí),把該文件的目錄項(xiàng)從外存復(fù)制到內(nèi)存打開文件表中。當(dāng)不再使用該文件時(shí),使用“關(guān)閉”操作切斷用戶進(jìn)程與該文件目錄項(xiàng)的聯(lián)系。用戶打開文件表隸屬于進(jìn)程,位于進(jìn)程PCB結(jié)構(gòu)中,其結(jié)構(gòu)為files_struct,也稱為文件描述符表。表項(xiàng)的序號(hào)是文件描述符(文件在該進(jìn)程中的代號(hào)),每項(xiàng)登記了系統(tǒng)打開文件表的入口指針。通過此系統(tǒng)打開文件表項(xiàng)鏈接到打開文件的活動(dòng)inode節(jié)點(diǎn)。UNIX/Linux設(shè)置了兩種打開文件表用戶打開文件表系統(tǒng)打開文件表為跟蹤多個(gè)用戶進(jìn)程共享文件、父子進(jìn)程共享文件情況,系統(tǒng)設(shè)置系統(tǒng)打開文件表,其數(shù)據(jù)結(jié)構(gòu)為file_struct,表目中存放文件使用信息。打開文件時(shí),通過此表項(xiàng)把用戶打開文件表的表項(xiàng)與文件活動(dòng)inode連接起來,實(shí)現(xiàn)數(shù)據(jù)訪問和信息共享。用戶打開文件表系統(tǒng)打開文件表調(diào)用格式:(1)建立文件(creat)3、部分重要的文件操作系統(tǒng)調(diào)用實(shí)現(xiàn)功能:intcreat(char*filename,intmode);以mode規(guī)定的方式建立文件filename,若成功,則返回文件描述符。建立文件過程:①建立目錄項(xiàng)②初始化活動(dòng)索引節(jié)點(diǎn)為新文件分配磁盤索引節(jié)點(diǎn)和活動(dòng)索引節(jié)點(diǎn)

,將索引節(jié)點(diǎn)編號(hào)與文件名組成新目錄項(xiàng),記到目錄中如置存取權(quán)限i_mode、鏈接計(jì)數(shù)i_nlink置為1等等。③分配打開文件表項(xiàng)為新文件分配用戶打開文件表項(xiàng)和系統(tǒng)打開文件表項(xiàng),置表項(xiàng)初值。如f_flag置寫標(biāo)志,讀寫位移f_offset清“0”。④鏈接打開文件表項(xiàng)及索引節(jié)點(diǎn)將用戶打開文件表項(xiàng)和系統(tǒng)打開文件表項(xiàng)及文件對(duì)應(yīng)的活動(dòng)索引節(jié)點(diǎn)用指針鏈接起來,把文件描述字返回給調(diào)用者調(diào)用格式:(2)打開文件(open)功能:intopen(char*filename,intmode);以mode規(guī)定的方式(讀、寫等)打開文件filename,返回文件描述字。mode:打開方式,即讀(0)、寫(1)或讀寫(2)。打開文件過程:①檢索目錄②核對(duì)參數(shù)mode中的請求訪問權(quán)限是否與索引節(jié)點(diǎn)中記載的訪問權(quán)限沖突,若沖突,則打開失敗將文件的外存索引節(jié)點(diǎn)復(fù)制到內(nèi)存活動(dòng)索引節(jié)點(diǎn)表若該文件未被打開,則執(zhí)行以下步驟:若“打開”合法,則為文件分配用戶打開文件表項(xiàng)和系統(tǒng)打開文件表項(xiàng),建立表項(xiàng)與活動(dòng)索引節(jié)點(diǎn)間的聯(lián)系。向用戶返回文件描述字。③分配打開文件表項(xiàng),建立表項(xiàng)與索引節(jié)點(diǎn)間的聯(lián)系若文件已經(jīng)被其它進(jìn)程打開,則不執(zhí)行步驟①,僅把文件打開數(shù)i_count增1即可。關(guān)閉文件時(shí),則使i_count減1。若i_count=0,則釋放該文件的活動(dòng)inode表項(xiàng)。調(diào)用格式:(3)文件的讀/寫功能:intread(intfd,char*buf,intcount);從文件fd讀取count個(gè)字節(jié)到內(nèi)存buf中讀文件過程:①檢查讀操作合法性②將相應(yīng)的物理塊讀到塊設(shè)備緩沖區(qū)系統(tǒng)根據(jù)f_flag中的訪問類型信息,檢查讀操作的合法性。③將數(shù)據(jù)送到用戶主存區(qū)buf中根據(jù)當(dāng)前位移量f_offset的值、要求讀出的字節(jié)數(shù)count及活動(dòng)索引節(jié)點(diǎn)中i_addr指出的文件物理塊存放地址,把相應(yīng)的物理塊讀到塊設(shè)備緩沖區(qū)中。寫文件調(diào)用格式:功能:intwrite(intfd,char*buf,intcount);將用戶主存區(qū)buf中的count個(gè)字節(jié)信息寫入文件fd中,返回實(shí)際寫入的字節(jié)數(shù)nw二、文件操作系統(tǒng)調(diào)用功能實(shí)現(xiàn)(3)調(diào)用格式:(4)改變文件讀寫位置(lseek)功能:lseek(intfd,longoffset,intwhence);將文件fd的讀寫位置指針f_offset移動(dòng)到offset和whence規(guī)定的位移處調(diào)用格式:(5)刪除文件(unlink)功能:unlink(char*filename);刪除文件filename的目錄項(xiàng),并使其鏈接數(shù)減1,如果鏈接數(shù)變?yōu)?,則刪除該文件調(diào)用格式:(6)關(guān)閉文件(close)功能:close(intfd);關(guān)閉文件fd,不再操作關(guān)閉文件過程:①釋放用戶打開文件表項(xiàng)②減少文件打開數(shù)f_count根據(jù)fd訪問用戶打開文件表項(xiàng)和系統(tǒng)打開文件表項(xiàng),釋放用戶打開文件表項(xiàng)使fd所指向的系統(tǒng)打開文件表項(xiàng)中的文件打開數(shù)f_count減1,若f_count變?yōu)?,則釋放該表項(xiàng);否則返回③減少文件打開數(shù)i_count使fd所指向的活動(dòng)索引節(jié)點(diǎn)中的文件打開數(shù)i_count減“1”若i_count變?yōu)?,則把該活動(dòng)索引節(jié)點(diǎn)中的內(nèi)容復(fù)制回外存上相應(yīng)磁盤索引節(jié)點(diǎn)中后,釋放該活動(dòng)索引節(jié)點(diǎn);否則返回f_counti_countf_count=共用同一個(gè)讀寫位移指針f_offset訪問文件的進(jìn)程數(shù)i_count=文件被同時(shí)打開的次數(shù)f_count與i_count區(qū)別三、文件共享文件共享指不同用戶(進(jìn)程)靜態(tài)或動(dòng)態(tài)地共同使用同一個(gè)文件。文件共享的形式1、靜態(tài)共享2、動(dòng)態(tài)共享3、符號(hào)鏈接共享靜態(tài)共享也稱為文件鏈接,允許多個(gè)文件擁有相同的索引節(jié)點(diǎn)號(hào),這些文件的目錄項(xiàng)指向同一個(gè)索引節(jié)點(diǎn),即同一個(gè)文件。1、靜態(tài)共享靜態(tài)共享就是一個(gè)文件擁有多個(gè)別名或路徑。表示靜態(tài)共享的鏈接關(guān)系獨(dú)立于進(jìn)程而存在,因此稱為靜態(tài)的。靜態(tài)共享時(shí),被共享文件擁有多個(gè)不同的名字,它們互為別名。原理思想將不同目錄項(xiàng)的索引結(jié)點(diǎn)號(hào)指定為同一文件的索引結(jié)點(diǎn)。就是多個(gè)目錄或文件共享已存在文件的索引節(jié)點(diǎn)。實(shí)現(xiàn)方法鏈接的實(shí)質(zhì)link(char*file1,char*file2)為文件file2建立一個(gè)目錄項(xiàng),其索引節(jié)點(diǎn)值與file1的相同,并使索引節(jié)點(diǎn)的連接計(jì)數(shù)i_nlink增1。文件鏈接的系統(tǒng)調(diào)用形式功能unlink(char*file)將文件file的索引節(jié)點(diǎn)的鏈接數(shù)i_nlink減1,并刪除文件file的目錄項(xiàng)。解除文件鏈接的調(diào)用形式功能若i_nlink值變?yōu)?,則刪除該文件。因此,解除鏈接包含文件刪除功能,兩者執(zhí)行同一系統(tǒng)調(diào)用代碼文件動(dòng)態(tài)共享是指系統(tǒng)中不同進(jìn)程并發(fā)訪問同一文件。原理思想2、動(dòng)態(tài)共享文件動(dòng)態(tài)共享關(guān)系隨著進(jìn)程的存在而存在,一旦進(jìn)程消亡,其動(dòng)態(tài)共享關(guān)系自動(dòng)消失。多個(gè)進(jìn)程共享同一文件且共用讀寫指針時(shí),它們的用戶打開文件表指向系統(tǒng)打開文件表中的同一表項(xiàng)。系統(tǒng)打開文件表表項(xiàng)的讀寫指針共享計(jì)數(shù)器f_count值等于共用一個(gè)讀寫指針訪問一個(gè)文件的進(jìn)程數(shù)。動(dòng)態(tài)共享文件時(shí)的讀寫位置相同不同共用讀寫指針共享文件實(shí)例當(dāng)多個(gè)進(jìn)程共享同一文件但讀寫指針不同時(shí),它們各自的用戶打開文件表指向系統(tǒng)打開文件表中的不同表項(xiàng),每個(gè)表項(xiàng)中的位移指針值可

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論