“操作系統(tǒng)概論”習(xí)題解答之文件管理

字號:

第4章 習(xí)題解答
    1.什么叫文件?
    答:所謂文件是指邏輯上具有完整意義的信息集合。在計(jì)算機(jī)系統(tǒng)中,很多東西都是以文件的形式存放在輔存中供用戶使用,其中包括作業(yè)的源程序、目標(biāo)程序、數(shù)據(jù)以及各類軟件程序等等。
    2.文件系統(tǒng)應(yīng)具有哪些功能?
    答:為了正確地按名存取,文件系統(tǒng)具有如下功能:
    ①實(shí)現(xiàn)從邏輯文件到物理文件間的轉(zhuǎn)換。
    ②有效地分配文件的存儲空間。
    ③建立文件目錄。
    ④提供合適的存取方法以適應(yīng)各種不同的應(yīng)用。
    ⑤實(shí)現(xiàn)文件的共享、保護(hù)和保密。
    ⑤提供一組文件操作。
    3.什么是文件的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)?
    答:用戶是從使用的角度來組織文件,用戶把能觀察到的且可以處理的信息根據(jù)使用要求構(gòu)造成文件,這種構(gòu)造方式稱為文件的邏輯結(jié)構(gòu)。文件系統(tǒng)是從文件的存儲和檢索的角度來組織文件,在存儲媒介上的文件構(gòu)造方式稱為文件的存儲結(jié)構(gòu)。
    4.解釋順序文件、鏈接文件和索引文件。
    答:(1)順序結(jié)構(gòu)
    將一個文件邏輯上連續(xù)信息存放在存儲介質(zhì)(磁盤)中相鄰的塊上,這種存儲結(jié)構(gòu)保證了邏輯記錄順序和物理塊順序相一致。磁帶上的文件只能是順序結(jié)構(gòu)的,因?yàn)榇艓C(jī)本身就是個順序存取的設(shè)備。
    (2)鏈接結(jié)構(gòu)(串聯(lián)結(jié)構(gòu))
    文件所占用的存儲介質(zhì)物理塊不再要求連續(xù)(相鄰)的,可以分散在存儲媒介上。在結(jié)構(gòu)上,采用鏈表的結(jié)構(gòu)方式,將每一塊的最后一個單元用來存放下一個物理塊的地址,形成指針鏈。最后一塊的最后一個單元為0表示結(jié)束。
    (3)以索引結(jié)構(gòu)
    和鏈接結(jié)構(gòu)一樣,也是一個非連續(xù)存儲的結(jié)構(gòu),但它不采用鏈接方式,而是為每一個文件建立一張索引表,索引表中存放文件中每一個記錄存放的物理地址。
    5.解釋記錄的成組和分解
    答:當(dāng)文件的一個邏輯記錄的長度小于一個物理塊的長度的時候,我們可以把若干個邏輯記錄合并成一組存到一個物理塊中,這個工作稱為成組。訪問某個記錄的時候,需要把這個記錄從它所在的塊中的一組記錄中分離出來,這一工作稱為分解。記錄的成組和分解可以提高存儲空間的利用率,并且可以減少存儲設(shè)備的啟動次數(shù)。
    6.假定某個文件由長度為80個字符的100個邏輯記錄組成,磁盤存儲空間被劃分成長度為2048個字符的塊,為有效地使用磁盤空間,你可采用成組方式把文件存放到磁盤上,回答下列問題:
    ①該文件至少占用多少磁盤存儲塊?
    ②若該文件是以鏈接結(jié)構(gòu)形式在磁盤上的,現(xiàn)用戶要求使用第28個邏輯記錄,寫出系統(tǒng)為滿足用戶要求而應(yīng)做的主要工作。
    答:①每塊能存放的記錄個數(shù)為「2048/80」=25個。一共需要 100/25=4塊。
    ②首先系統(tǒng)計(jì)算出第28個記錄在第2個物理塊上,然后系統(tǒng)通過文件目錄讀出第一塊物理塊,在該塊最后單元找到第二物理塊的地址,讀出第二物理塊,再經(jīng)過肇按第28個記錄在第二塊中的位置讀出該記錄。
    7.舉一例說明數(shù)據(jù)的分解操作過程。
    答:就以上題為例,假定某個文件由長度為 80個字符的 100個邏輯記錄組成,磁盤存儲空間被劃分成長度為2048個字符的塊,為有效地使用磁盤空間,采用成組方式把文件存放到磁盤上,現(xiàn)用戶要求每次讀一個邏輯記錄到他的工作區(qū)中,當(dāng)對該邏輯記錄處理后,要求把下一個邏輯記錄讀人到工作區(qū),直到連續(xù)讀出8個記錄。
    由于主存儲器與外存之間的信息交換是以塊為單位的,所以應(yīng)當(dāng)在主存中開辟一個2048字節(jié)的緩沖區(qū)。由上題可知每塊中含有25個記錄,文件一共占用4塊,用戶在指明了要讀人記錄的記錄號N后,根據(jù)公式[N/25」得到該記錄應(yīng)該在4塊的哪一塊中,將該塊讀人到緩沖區(qū)中,并根據(jù)公式(N/25)得到該記錄是塊內(nèi)的第幾個記錄(式中[]表示取整,()表示取余數(shù)),將該記錄從緩沖區(qū)拷貝到用戶工作區(qū),然后 N+l,如果[(N+1)/25]=[N/25],則將緩沖區(qū)中的下一個記錄拷貝到用戶工作區(qū),而無需啟動 I/O操作,否則,按照新的塊號將一個數(shù)據(jù)塊讀進(jìn)緩沖區(qū),并將記錄從緩沖區(qū)拷貝到用戶工作區(qū)。
    8.頁式存儲管理中用位示圖表示主存空間的分配情況,磁盤存儲空間的分配也可用位示圖來表示,兩者能合用一張位示圖嗎?
    答:不行,主存空間和磁盤存儲空間是兩種不同的存儲空間,應(yīng)該使用不同的位示圖來表示分配情況。
    9.為了實(shí)現(xiàn)按名存取,文件目錄應(yīng)包含哪些內(nèi)容?
    答:為了實(shí)現(xiàn)按名存取,文件目錄至少要包括文件的名字和文件存放的物理地址,除此之外,目錄中還可以包含其他的控制和管理文件的信息,如:文件類型、記錄長度、記錄個數(shù)、口令、建立日期、保存期限、上次修改時間等。
    10.怎樣才能防止不同的用戶可能給各自的文件取了相同的名字而造成混亂?
    答:可以采用二級目錄或多級目錄結(jié)構(gòu)。在主目錄中登記每個用戶的名字和用戶文件目錄的存放地址;在第二級用戶文件目錄中登記用戶的每個文件的文件名及文件存放位置。這樣,不同的用戶有同名文件時,由于文件的路徑是不一樣的,所以不會產(chǎn)生混亂。多級目錄是在二級目錄的基礎(chǔ)上,在用戶目錄下,根據(jù)項(xiàng)目和應(yīng)用領(lǐng)域再建立子目錄和孫目錄,這樣可以避免同一個用戶的同名文件造成的混亂。
    11.有一個文件可供兩個用戶共享,但這兩個用戶卻對這個文件定義了不同的名字,為了保證兩個用戶都能存取該文件,應(yīng)怎樣設(shè)置文件目錄?簡單畫出目錄結(jié)構(gòu)關(guān)系且解釋之。
    答:采用二級目錄結(jié)構(gòu)。如圖4-3所示,用戶 zhangshan和用戶 lisi對一個共享文件分別定義了不同的名字ww和pw,只要在它們各自的目錄表中把相應(yīng)的文件存放地址填上共享文件在存儲介質(zhì)上的起始位置,當(dāng)用戶zhangshan存取ww文件,用戶lisi存取pw文件時,文件系統(tǒng)按照目錄查找文件時得到相同的文件存放位置。于是各用戶使用了不同的文件名,卻仍能共享同一文件。
    12.總結(jié)文件的存取方法、文件的存儲結(jié)構(gòu)、存儲設(shè)備類型之間的關(guān)系。
    答:文件的存取方法有兩種:順序存取和隨機(jī)存取。文件的存取方法決定了文件的存儲結(jié)構(gòu),它們的關(guān)系如表4-1所示。
    13.文件系統(tǒng)提供的主要文件操作有哪些?
    答:文件系統(tǒng)提供的主要文件操作有以下幾種:
    ①‘建立“操作。用戶要求把一個新文件存放到存儲介質(zhì)上時,首先要向系統(tǒng)提出”建立“要求。系統(tǒng)在接到用戶的”建立“要求后,在文件目錄中尋找空目錄項(xiàng)進(jìn)行登記
    ②“打開”操作。用戶要使用存放在存儲介質(zhì)上的文件前,必需提出“打開 ”要求。系統(tǒng)在接到用戶的“打開”要求后,找到該用戶的文件目錄,如果文件目錄在外存上,還要把它調(diào)入到主存,然后從文件目錄中找到與用戶的需求相符合的目錄項(xiàng),取出文件存放的物理地址。如果是索引文件,還要將這個文件的索引表也調(diào)入到主存中,這樣,后繼的讀操作能夠很快地進(jìn)行。
    ③“讀/寫”操作。用戶調(diào)用這個操作來讀/寫文件,系統(tǒng)只允許用戶對已經(jīng)過“打開”或“建立”操作的文件進(jìn)行讀/寫。對順序存取方式的文件,用戶只需給出讀/寫的文件名,而無需給出讀/寫記錄的編號,系統(tǒng)執(zhí)行本操作的時候,每次順序讀/寫一個或幾個邏輯記錄。對于采用隨機(jī)方式的文件,用戶除了要給出需讀/寫的文件名外,還要給出需讀/寫記錄的編號(或主鍵),系統(tǒng)執(zhí)行讀操作的時候,按指定的記錄號(或鍵)查索引表,得到記錄存放的物理地址后,按地址將記錄讀出;執(zhí)行寫操作的時候,在索引表找到一個空登記項(xiàng)且找一個空閑的存儲塊,把記錄存人找到的存儲塊中,同時在索引表中登記
    ④“關(guān)閉”操作。經(jīng)過“打開”或“建立”的文件,在讀/寫完畢后,需要執(zhí)行“關(guān)閉”操作。執(zhí)行關(guān)閉操作時要檢查讀到主存儲器中的文件目錄或索引表是否被改變,如果改過,則應(yīng)把修改過的文件目錄或索引表重新保存好。一個關(guān)閉后的文件不能再使用,如果要使用,必須重新執(zhí)行“打開”操作。用戶提出“關(guān)閉”要求時,必須說明關(guān)閉哪個文件。
    ⑤“刪除”操作。用戶用本操作向系統(tǒng)提出刪除一個文件的要求,系統(tǒng)執(zhí)行時把指定文件的名字從目錄和索引表中除取,并收回它所占用的存儲區(qū)域。
    14.文件系統(tǒng)中為什么要設(shè)置“建立”、“打開”和“關(guān)閉”操作?
    答:要把一個文件存放到存儲介質(zhì)上或使用一個已經(jīng)建立在某存儲介質(zhì)上的文件前,首先應(yīng)該把文件的屬性(文件名、文件類型、可訪問性、記錄大小等),文件的管理信息(口令、建立日期、保存期限等)以及存取方式,通過特定的形式告訴文件系統(tǒng)。“建立”?!按蜷_”和“關(guān)閉”操作就是為此目的而設(shè)置的。
    用“建立”操作向系統(tǒng)提出生成一個新文件的要求。
    用“打開”操作向系統(tǒng)申請讀一指定文件的權(quán)力。
    用“關(guān)閉”操作表示已經(jīng)不再要讀/寫某個文件了,向系統(tǒng)歸還使用文件的權(quán)力。
    15.當(dāng)用戶要讀一個尚未打開的文件的時候,系統(tǒng)怎么處理?
    答:當(dāng)用戶要讀一個文件的時候,系統(tǒng)先要驗(yàn)證該用戶是否有使用權(quán)力,所以任何一個用戶如果要讀文件前都要執(zhí)行“打開”操作。系統(tǒng)不允許隱式使用,那么當(dāng)讀一個還沒有打開的文件,系統(tǒng)不會執(zhí)行讀操作,而是返回一個“文件未打開”的錯誤信息。如果系統(tǒng)允許隱式使用,那么系統(tǒng)將會替用戶做打開文件的工作。
    16.文件系統(tǒng)能允許用戶去“關(guān)閉”一個不是自己“打開”或“建立”的文件嗎?
    答:不能!一個不是自己“打開‘域”建立“的文件,是沒有權(quán)力使用和強(qiáng)行關(guān)閉的。