Linux操作系統:文件概念與文件的分類

文件

文件(File)是被命名的相關信息的集合體。它通常存放在外存(如磁盤、磁帶)上,可以作為一個獨立單位存放和實施相應的操作(如打開、關閉、讀、寫等)。例如用戶編寫的一個源程序、經編譯後生成的目標代碼程序、初始數據和運行結果等,均可以文件形式保存。所以,文件表示的對象相當廣泛。

一般地,文件是由二進制代碼、字節、行或記錄組成的序列,它們由文件創建者或用戶定義。

文件中的信息由創建者定義。很多不同類型的信息都可存放在文件中,如源程序、目標程序、可執行程序、數值數據、文本、工資單、圖形圖像、錄音等。根據信息類型,文件具有一定的結構。如文本文件是一行一行(或頁)的字符序列;源文件是子程序和函數序列,它們又有自己的構造,如數據說明和後面的執行語句;目標文件是組成模塊的字節序列,系統鏈接程序知道這些模塊的作用;而可執行文件是由一系列代碼段組成的,裝入程序可把它們裝入內存,然後運行。


Linux操作系統:文件概念與文件的分類


文件類型

為便於管理和控制文件,常把文件分成若干類型。由於不同系統對文件的管理方式不同,因而對文件的分類方法也有很大差異。下面是常用的幾種文件分類方法。

  • 按用途分類

(1)系統文件—— 由操作系統及其他系統程序的信息所組成的文件。這類文件對用戶不直接開放,只能通過操作系統提供的系統調用為用戶服務。

(2)庫文件—— 由標準子程序及常用的應用程序組成的文件。這類文件允許用戶使用,但用戶不能修改它們。

(3)用戶文件—— 由用戶創建、管理的文件,如源程序、目標程序、原始數據、計算結果等。這類文件可由創建者(即文件主)或被授權者進行適當的讀、寫或其他操作。

  • 文件中的數據形式分類

(1)源文件—— 從終端或輸入設備輸入的源程序和數據所構成的文件,它通常由ASCII碼或漢字組成。

(2)目標文件—— 源程序經過相應語言的編譯程序進行編譯後,尚未經過鏈接處理的目標代碼所形成的文件。它屬於二進制文件。

(3)可執行文件—— 經過編譯、鏈接之後所形成的可執行目標文件。

  • 按存取權限分類

(1)只讀文件—— 僅允許對其進行讀操作的文件,不允許寫操作。

(2)讀寫文件—— 允許文件主和被授權用戶對其進行讀或寫操作的文件。

(3)可執行文件

—— 允許被授權用戶執行它,但通常不允許讀或寫。

  • 按保存時間分類

(1)臨時文件—— 用戶在一次解題過程中建立的“中間文件”,它只保存在磁盤上,當用戶退出系統時,它也隨之撤消。

(2)永久文件—— 長期保存的有價值的文件,以備用戶經常使用。

  • 在UNIX/Linux和MS-DOS系統中,按文件的內部構造和處理方式分類

在這些系統中文件類型主要有普通文件、目錄文件和特殊文件。

(1)普通文件—— 由表示程序、數據或文本的字符串構成,內部沒有固定的結構。這類文件包括一般用戶建立的源程序文件、數據文件、目標代碼文件,也包括各種系統文件(如操作系統本身的眾多代碼文件)和庫文件(如標準I/O文件和數學函數文件)。

(2)目錄文件—— 由下屬文件的目錄項構成的文件。它類似於人事管理方面的花名冊—— 本身不記錄個人的檔案材料,僅僅列出姓名和檔案分類編號。對目錄文件可進行讀、寫等操作。

(3)特殊文件—— 特指各種外部設備。為了便於統一管理,系統把所有I/O設備都作為文件對待,按文件格式提供用戶使用,如目錄查找、存取權限驗證等方面與普通文件相似,而在具體讀、寫操作上,要針對不同設備的特性進行相應處理。特殊文件分為字符特殊文件和塊特殊文件。前者是有關輸入/輸出的設備,如終端、打印機和網絡等;後者是存儲信息的設備,如硬盤、軟盤和磁帶等。

普通文件通常分為ASCII文件和二進制文件。ASCII文件由只包含ASCII字符的正文行組成,每個正文行以回車符或換行符終止,各行的長度可以不同。ASCII文件又稱文本文件,常用來存儲資料、程序源代碼和文本數據。文本文件的最大特點是可以直接顯示和打印,可用普通文本編輯器進行編輯加工。

二進制文件所包含的每個字節可能有256種值。因此,對於表達信息來說,二進制文件是一種更為有效的方式,但它不能在終端上直接顯示出來。大家最熟悉的二進制文件恐怕就是可執行文件。

可執行文件與一般文本文件不同,都有內部結構。在UNIX/Linux系統中它有5個區,依次是文件頭、正文段、數據段、重定位區和符號表區。

文件頭結構由幻數(標誌可執行文件的特徵),正文段長度,數據段長度,BSS段(Block Started by Symbol,存放未初始化的數據)長度,符號表長度,入口單元及各種標誌組成。重定位時利用重定位區,而符號表用於調試程序;

存檔文件是二進制文件的另一示例。在UNIX/Linux系統中,它由編譯過、但未鏈接的庫過程(模塊)集合組成。每個存檔文件的結構是在其目標模塊之前有一個文件頭,這個文件頭由模塊名、創建日期、文件擁有者、保護代碼和文件長度等項組成。文件頭全是二進制數碼;


Linux操作系統:文件概念與文件的分類

所有操作系統都必須至少識別一種文件類型—— 它自己的可執行文件。有些操作系統可以識別多種文件類型。一般情況下,對文件進行操作時必須注意其類型,特別是不同操作系統所識別的文件類型是不一致的。

文件的命名

文件是抽象機制,提供在磁盤上存放信息和以後從中讀出的方法。用戶不必瞭解信息如何存放、存放在何處、磁盤如何實際工作等細節。抽象機制最重要的特性就是“按名”管理對象。用戶對文件也是“按名存取”的。

很多操作系統支持的文件名都由兩部分構成:文件名和擴展名。二者間用圓點分開,如prog.c。擴展名也稱為後綴,利用擴展名可以區分文件的屬性。

Linux操作系統:文件概念與文件的分類



分享到:


相關文章: