檔案的概念

2021-08-15 13:58:06 字數 4214 閱讀 6482

---------檔案的定義:

檔案是作業系統中的乙個重要概念。檔案是以計算機硬碟為載體

計算機以程序為基本單位進行資源的排程和分配而在使用者進行的輸入、輸出中,則以檔案為基本單位。大多數應用程式的輸入都是通過檔案來實現的,

其輸出也儲存在檔案中,以便資訊的長期儲存及將來的訪問。當使用者將檔案用於應用程式的輸入、輸出時,還希望可以訪問檔案、修改檔案和儲存檔案等,實現

檔案的維護管理,這就需要系統提供乙個檔案管理系統,作業系統的檔案系統就是用於實現使用者的這些管理要求。

從使用者的角度看,檔案系統是作業系統的重要部分之一。使用者關心的是如何命名、分類和查詢檔案,如何保證檔案資料的安全性以及對檔案可以進行哪些操作

等。而對其中的細節,如檔案如何儲存在輔存上、如何管理檔案輔存區域等關心甚少。

檔案系統提供了與二級儲存相關的資源的抽象,讓使用者能在不了解檔案的各種屬性、檔案儲存介質的特徵以及檔案在儲存介質上的具體位置等情況下,方便快捷

地使用檔案。

使用者通過檔案系統建立檔案,提**用程式的輸入、輸出,對資源進行管理。首先了解檔案的結構,我們通過自底向上的方式來定義:

(1)、資料項。資料項是檔案系統中最低階的資料組織形式,可分為以下兩種型別:

基本資料項:用於描述乙個 物件的某種屬性的乙個值,如姓名、日期或證件號等,是資料中可命名的最小邏輯資料單位,即原子資料。

組合資料項:由多個基本資料項組成。

(2)、記錄。記錄是一組相關的資料項的集合,用於描述乙個物件在某方面的屬性,如乙個考生報名記錄包括姓名、出生日期、報考學校代號、身份證等

一系列域。

(3)、檔案。檔案是指由建立者所定義的一組相關資訊的集合,邏輯上可分為有結構檔案無結構檔案兩種。在有結構檔案中,檔案由一組相似記錄組成,

如報考某學校的所有考生的報考資訊記錄,又稱為記錄式檔案;而無結構檔案則被看成是乙個字元流,比如乙個二進位制檔案或字元檔案,又稱為流式檔案

雖然上面給出了結構化的表述,但實際上關於檔案並無嚴格的定義。通常在作業系統中將程式和資料組織成檔案。檔案可以是數字、字母或二進位制**,基本

訪問單元可以是位元組、行或記錄。檔案可以長期儲存於硬碟或其他二級儲存器中,允許可控制的程序間共享訪問,能夠被組織成複雜的結構

-------檔案屬性:

檔案有一定的屬性,這根據系統的不同而有所不同,但是通常都包括如下屬性。

(1)、名稱。檔名稱唯一,以容易讀取的形式儲存。

(2)、識別符號。標識檔案系統內檔案的唯一標籤,通常為數字,它是對人不可讀的一種內部名稱。

(3)、型別。被支援不同型別的檔案系統所使用。

(4)、位置。指向裝置和裝置上檔案的指標。

(5)、大小。檔案當前大小(用位元組、字或塊表示),也可包含檔案允許的最大值。

(6)、保護。對檔案進行保護的訪問控制資訊。

(7)、時間、日期和使用者標識。檔案建立、上次修改和上次訪問的相關資訊,用於保護、安全和跟蹤檔案的使用。

所有檔案的資訊都儲存在目錄結構中,而目錄結構也儲存在外存上。檔案資訊當需要時再調入記憶體。通常,目錄條件包括檔名臣及其唯一識別符號,而

識別符號定位其他屬性的資訊。

--------檔案的基本操作:

檔案屬於抽象資料型別。為了恰當地定義檔案,就需要考慮有關檔案的操作。作業系統提供系統呼叫,它對檔案進行建立、寫、讀、定位和截斷。

(1)、建立檔案。建立檔案有兩個必要步驟,一是在檔案系統中為檔案找到空間;二是在目錄中為新檔案建立條目,該條目記錄檔名稱、在檔案

系統中的位置及其其他可能資訊。

(2)、寫檔案。為了寫檔案,執行乙個系統調動,指明檔名稱和要寫入檔案的內容。對於給定檔名稱,系統搜尋檔案目錄以查詢檔案位置。系統

必須為該檔案維護乙個寫位置的指標。每當發生寫操作,便更新寫指標。

(3)、讀檔案。為了讀檔案,執行乙個系統呼叫,指明檔名稱和要讀入檔案塊的記憶體位置。同樣,需要搜尋目錄以找到相關目錄項,系統維護乙個

讀位置的指標。每當發生讀操作時,更新讀指標。乙個程序通常只乙個檔案讀或寫,所以當前操作位置可作為每個程序當前檔案位置指標。由於

讀和寫操作都使用同一指標,節省了空間也降低了系統複雜度。

(4)、檔案重定位(檔案定址)。按某條件搜尋目錄,將當前檔案位置設為給定值,並且不會讀、寫檔案。

(5)、刪除檔案。先從目錄中找到要刪除檔案的目錄項,使之稱為空項,然後**該檔案所占用的儲存空間。

(6)、截斷檔案。允許檔案所有屬性不變,並刪除檔案內容,即將其長度設為 0 並釋放其空間。

補充:這6個基本操作可以組合到執行其他檔案操作。例如,乙個檔案的複製,可以建立行檔案、從舊檔案讀出並寫入新檔案。

--------檔案的開啟與關閉:

因為許多檔案操作都涉及為給定檔案搜尋相關目錄條目,許多系統要求在首次使用檔案時,使用系統呼叫 open,將指明檔案的屬性(包括該檔案在外存上

的物理位置)從外存拷貝到記憶體開啟檔案目錄表的乙個表目中,並將該錶目的編號(或稱為索引)返回給使用者。作業系統維護乙個包含所有開啟檔案資訊的表

(開啟檔案表,open-file table) 。當使用者需要乙個檔案操作時,可通過該錶的乙個索引指定檔案,就省略了搜尋環節。當檔案不再使用時,程序可以關閉它,

作業系統從開啟檔案表中刪除這一條目。

大部分作業系統要求在檔案使用之前就被顯式開啟。操作 open 會根據檔名搜尋目錄,並將目錄條目複製到開啟檔案表。如果呼叫 open 的請求(建立、

唯讀、讀寫、新增等)得到允許,程序就可以開啟檔案,而 open 通常返回乙個指向開啟檔案表中的乙個條目的指標。通過使用該指標(而非檔名)進行

所有的 i / o 操作,以簡化步驟並節省資源。

注意,open 呼叫完成之後,作業系統對該檔案的任何操作,都不再需要檔名,只需要 open 呼叫返回的指標。

整個系統表包含程序相關資訊,如檔案在磁碟的位置訪問日期和大小。乙個程序開啟乙個檔案,系統開啟檔案表就會為開啟的檔案增加相應的條目。當另乙個

程序執行 open 時,只不過是在其程序開啟表中增加乙個條目,並指向整個系統表的相應條目。通常,系統開啟檔案表的每個檔案時,還用乙個檔案開啟計數器(open

count ),以記錄多少程序開啟了該檔案。每個關閉操作 close 則使得  count  遞減,當開啟計數器為 0 時,表示該檔案不再使用。系統將**分配給該檔案的記憶體空

間等資源,若檔案被修改過,則將檔案寫回外存,並將系統開啟檔案表中相應條目刪除,最後釋放檔案的檔案控制塊(fcb)。

每個開啟檔案都有如下關聯資訊:

》檔案指標:系統跟蹤上次讀寫位置作為當前檔案位置指標,這種指針對開啟檔案的某個程序來說是唯一的,因此必須與磁碟檔案屬性分開儲存。

》檔案開啟計數器:檔案關閉時,作業系統必須重用其開啟檔案表條目,否則表內空間不夠用。因為多個程序可能開啟同乙個檔案,所以系統在刪除開啟檔案條目

之前,必須等待最後乙個程序關閉檔案。該計數器跟蹤開啟和關閉的數量,當該計數為  0 時,系統關閉檔案,刪除該條目。

》檔案磁碟位置:絕大多數檔案操作都要求系統修改檔案資料。該資訊儲存在記憶體中,以免為每個操作都從磁碟中讀取。

》訪問許可權:每個程序開啟檔案都需要有乙個訪問模式(建立、唯讀、讀寫、新增等),該資訊儲存在程序的開啟檔案表中,以便作業系統能允許或拒絕之後的

i / o 請求。

檔案的概念

昨天老師講了c 檔案的操作 訪問的方式 順序讀寫檔案 隨機讀取檔案 檔案流是以外村為輸入輸出物件的資料流 輸出檔案流 從記憶體流向磁碟檔案的資料 輸入檔案流 從磁碟檔案流向記憶體的資料 1.開啟檔案 流類 物件名 檔名,方式 ifstream infile d 1.dat ios in ofstre...

檔案操作概念

檔案讀寫api fgetc fputc 按照字元讀寫檔案 fputs fgets 按照行讀寫檔案 讀寫配置檔案 fread fwrite 按照塊讀寫檔案 大資料塊遷移 1.標準檔案的讀寫 1.1檔案的開啟fopen 檔案的開啟操作表示將給使用者指定的檔案在記憶體分配乙個file結構去,並將該結構的指...

python 檔案概念

1 檔案 file 檔案是用於資料儲存的單位 檔案通常用來長期儲存資料 檔案中的資料是以位元組為單位進行順序儲存的 2 檔案模式 文字模式 把檔案的位元組碼自動轉換為字串,換行符會自動轉換為 n 二進位制模式 通過位元組串 位元組陣列 進行讀寫 3 檔案的操作流程 開啟檔案 讀 寫檔案 關閉檔案 注...