孟靜++唐志敏
摘要:在“定義”的定義和“操作系統”的定義的基礎上,針對“文件”這個計算機學科基本名詞,詳細分析了其概念內涵,指出了國內外常見教材和詞典工具書中相關定義存在的問題,并給出了能揭示概念本質特性的新定義。
關鍵詞:名詞,定義,文件,操作系統
中圖分類號:N04;TP3文獻標識碼:A文章編號:1673-8578(2015)06-0037-04
引言
在參考文獻[1-2]中,筆者提出了關于“定義”的定義:“A的定義應是能足以用來判斷任何一個東西(事物)是A或不是A的判斷工具和依據。”或者說,“A的定義一定要能揭示A的唯一性——能把A與非A(這世上所有其他事物)區分開來的唯一性。”所以(達標的)定義一定要明確、清晰、嚴格到能夠作為上述判斷工具或區分工具的程度,否則就只能算是解釋或描述(或者說定義未達標)。
據此“定義”的定義,筆者在參考文獻[1,3]中提出了“計算機操作系統”的定義:“操作系統是計算機中最重要和最底層的系統軟件,是這樣的一組系統程序的集成:這些系統程序在整個計算機系統和所有用戶程序的運行過程中(包括用戶程序的裝入、啟動、運行、結束和退出的完整過程中),負責完成所有硬件相關、應用無關的基本使用工作,為使計算機系統能高效、安全、可靠、方便地運轉,而從最底層統一提供所有通用的幫助和統一的管理。”
下面將以上述兩個定義為基礎來探討和分析關于計算機“文件”的定義。
一計算機“文件”與日常“文件”的含義是否相同
很多計算機名詞都是在計算機領域才開始出現和使用的,例如“內存”和“外存”等。但“文件”屬于另一類名詞,它在計算機最早出現之前就已經在日常生活和工作的很多領域(如政治、軍事、經濟、法律等領域)廣泛使用多年了,如機密文件、密碼文件、遺囑文件、合同文件等。那么,計算機領域使用的“文件”這個名詞(稱為“計算機文件”),與日常生活和工作領域使用的“文件”名詞(稱為“日常文件”),其含義是否完全相同?
曾有計算機專業人員認為二者的含義完全相同,甚至據此提出不應在計算機領域中再將“文件”列為計算機專業術語,更不必在計算機領域對“文件”做出專門的解釋和定義。
但有更多的計算機專業人士和筆者觀點相同,認為二者的含義并不完全相同,甚至有很大的不同。例如,可以將 100份薄薄的紅頭政策文件合放在一個計算機文件中,或者將一份厚厚的政策白皮書文件分放在5個計算機文件中(每章一個計算機文件);再例如,日常生活和工作中通常不會將一本小說書或一張唱片稱為一份文件,但此書或唱片存入計算機中則作為計算機文件存在。
《辭海》中對文件一詞的解釋:“1.機關、部隊、團體、企業事業單位對外發出的和內部使用的一種書面材料,例如法規文件、行政文件等;2.計算機的一個專用名詞(1)指由若干相關的記錄構成的集合(2)指磁盤、磁帶、紙帶或卡片存儲的內容。”[4]
正如下文所述,在計算機領域中,計算機文件是有其特定含義和定義的。
二計算機領域常見的“文件”定義
在計算機領域,和“操作系統”一樣,文件這個基本名詞,也是一個所有人都很熟悉但都不能準確描述的那一類名詞。以下是國內外計算機領域常見辭典和教材上給出的“文件”定義:
“文件是同類記錄的集合”;
“文件是有組織的數據的集合”等,例如: Organized collection of related data or material in a computer(計算機中相關數據的有組織的集合);
“字符序列”,例如文件是一個具有符號的一組相關聯元素的有序序列;
“按名存取”,例如計算機百科全書中的“文件”詞條:文件使“用戶不再需要了解文件存放的物理位置和物理結構,可實現‘按名存取,由文件系統根據用戶給出的文件名自動地完成數據傳輸操作,旨在使用方便、安全可靠、便于共享”。
筆者認為,這些定義至少對計算機專業工作者來說或者在計算機專業課程(如操作系統原理課程等)中并不適用,因為它們含糊得讓人無從判斷與區分(不能用以判斷A是或不是文件,不能用以區分文件與非文件,不能揭示文件的唯一性):例如對于“同類記錄的集合”定義,比如一個文件f1中有100條記錄,那么其中前40條記錄形成的子集叫不叫文件?再如100個學生的信息(每個學生的信息是一條記錄)分放在兩個文件f1和f2中,每個文件放50個記錄,那么這100條記錄形成的集合叫不叫文件?這兩個例子都是“同類記錄的集合”。最關鍵的是,文件作為操作系統提供的一個重要界面機制,上述“同類記錄的集合”的定義并沒有揭示出這個界面機制的本質。
再例如“按名存取”特性,它確實是文件的一個重要特性,但它不能作為文件的定義,因為有其他數據存取單位也是按名存取的,例如目錄也是按名存取的,“按名存取”特性不能把文件與目錄等其他按名存取的機制區分開來,按名存取并非文件獨家特有的特性,所以“按名存取”不能揭示文件的唯一性。
三關于計算機“文件”的定義
在筆者提出對“文件”所給出的定義之前,先來看一下文件的一些有關的特性:
首先,我們在使用Windows或Linux等操作系統時都知道,可以把一組學生的情況放在一個文件中,一組教師的情況放在另一個文件中,也可以把這兩種數據合放在一個文件中,還可以把學生情況分放在兩個文件中(比如共1萬個學生,前5000個放在一個文件中,后5000個學生放在另一個文件中)。其他很多類型的信息,如軟件、信件等也是一樣。例如一個軟件可能由多個文件組成(即分放在多個文件中),也可能由一個文件組成;一封信可以形成一個文件,也可以由兩個文件組成,或反過來兩封信也可以放在一個文件中,等等。照此看來,文件的內容劃分是非常靈活的,完全由用戶根據應用要求來確定。打個比方,文件就像個“容器”——存放數據的“容器”,這“容器”放什么、放多少,是由用戶根據需要來靈活決定的。但是,計算機系統中外存上的數據“容器”,并不止文件一種,還有目錄、分區、外存介質、記錄等,而且這些數據“容器”或數據集合的內容也是可以由用戶根據需要靈活決定的,那么文件與外存的上述其他數據“容器”(集合)間有區別嗎?有著什么樣的區別?是只有量上、規模上的區別,還是有著什么根本的區別?endprint
讓我們進一步再來看文件的另一特性:雖然文件內容可以由用戶根據需要靈活決定,但是,一旦放在了一個文件里,在下次修改之前,文件中的內容的連續順序關系就固定了。比如把一封信放在一個文件中之后,到用戶再修改該信的內容之前,這封信里的內容,也就是字句之間的前后順序關系也固定了,甚至哪個地方空幾個空格或空行,也都固定了。由此看來,雖然文件的內容可以由用戶靈活存放,但在用戶對文件內容的兩次存放或修改之間,文件中的內容是固定的,具有固定的連續順序關系。進一步再來看一個例子:如果把1萬個學生的情況放在一個文件中,每個學生的情況都占10字節,那么用戶在編程順序讀取該文件內容時,每讀取下一個學生的情況,都可以通過將文件內當前讀寫指針順序后移10字節(有些系統是自動后移的),再讀就得到了下一個學生的情況。這就意味著用戶認為這1萬個學生情況在外存上是連續存放的。而實際上,這1萬組數據在外存上的物理存放位置卻不一定連續的。
那么外存其他數據“容器”有這種固定的連續順序關系嗎?讓我們再通過一個例子來看一下:如果把1萬個學生的情況分放在兩個文件中,每個文件5000個,那么在取下一學生的情況時,前5000條仍舊移動指針,但在從第5000個到第5001個時,用戶卻知道這時不能靠移動指針,而是重新打開另一個文件取出第一個,接下來又開始指針移動。這說明用戶雖然認為這兩個文件各自內部都是連續的,但不認為兩個文件間存在連續關系,雖然從第5000個到第5001個在純邏輯上是連續的。這里要注意,也許有時可以勉強認為放在一個目錄里的不同文件間具有順序關系(根據dir或ls這樣的命令顯示的順序關系),但不會在操作上體現出來這兩個文件間具有連續關系,因此用戶也不會這么認為。
因此,筆者早在1997年和2000年就提出“文件”的定義應是:文件是外存上的一種數據存放單元或單位,是由操作系統提供的、在用戶觀點中其內容是連續順序存放的最大邏輯數據空間[3,9]。
或者也可以這樣表達:文件是外存上的由操作系統提供的具有以下特性的一種數據容器、數據空間、數據集合、數據存放單元或單位:(1)在用戶眼中(亦即在邏輯上),文件的內容是連續順序的;(2)但實際上在外存物理空間中不一定是連續存放的;(3)比文件更大的容器都不具有上述(1)的連續特性。
對于上述新定義,筆者給出以下強調和解釋:
1.對于定義中的“連續順序特性”,眾所周知只是用戶觀點中的特性,實際上文件在外存即物理存放時并不一定是,而且經常不是連續順序的(外存物理空間利用率的原因)。因此,文件的連續順序特性,就起到了掩蓋底層物理硬件細節的作用,從而使其上層的軟件和用戶操作是硬件無關的。這就說明了,文件作為操作系統的一個重要界面機制,恰在“硬件相關、應用無關”與“硬件無關、應用相關”的分界線上。這種固定的連續順序關系,恰是文件(及其子集“容器”——例如記錄)的特有本質。比文件更大的、更上層的容器,例如目錄等,都不具有這種連續順序特性。
2.定義中的“最大”二字,就將文件與記錄區分開來:記錄雖然具有“連續順序特性”,但不是“最大的”;文件是用戶認為在外存上連續順序存放數據的最大單位。
3.定義中的“空間”二字,在這里用的是“空間”而不是“集合”。這是因為,嚴格來說,文件不能說成是一種數據集合,因為通常提到集合的時候,集合中的內容是無序的,而上面的事實卻說明文件中的內容是有嚴格的連續順序關系(在兩次修改之間),所以應該說文件是一種數據空間——一種具有連續順序特性的數據空間。
4.定義中的“由操作系統提供的”,把文件與操作系統之外的上層應用軟件提供的連續順序空間區別開來。操作系統之外的上層應用軟件提供進一步的文件結構(有結構的文件,二維或多維結構文件等,都建立在一維順序連續空間結構基礎上)、文件類型、文件間關系、數據庫等,這些都是硬件無關、應用相關的。
5.此定義能否用于非計算機專業的用戶和讀者,尚需斟酌。以下解釋似乎更適用于非計算機專業:“文件是計算機系統中用于在外存上存放數據的一種數據容器或集合、一種數據空間、一種數據存放單元或單位。人們通常把邏輯意義上相對完整或獨立的一組數據放在一個文件中,或把格式相同或格式可統一管理的一組數據放在一個文件中。例如,一篇文章是一個文件,一張照片是一個文件,等。”
四結語
上述為在參考文獻[1-3]關于“定義”的定義和“操作系統”定義的基礎上,探討和分析了關于文件的定義。
此外,在筆者多年編寫的操作系統原理教材各版(參考文獻[3,9-14]為其中一部分)和操作系統教學探討論文中(參考文獻[1-2,15]),對內存、虛存、文件子系統、鏈接、緩沖等大量名詞,都在定義達標方面做了大量努力,并在教材各章末尾通過作者提出的“內存四空間模型”等各章總結模型,對這些定義做了系統化的比較、聯系、分析、總結。因篇幅所限,在此不一一細述。
筆者學疏識淺,水平有限,上述定義必定有待改進之處,本文旨在拋磚引玉,若有意見、建議或異議,歡迎共同探討。
參考文獻
[1] 孟靜,唐志敏. 關于計算機操作系統的定義[J]. 中國科技術語,2014,16(4):35-39.
[2] 孟靜. OS教學之我思我做[J].煙臺大學學報,2007(20):12-18.
[3] 孟靜. 計算機操作系統教程[M]. 北京:中國人民大學出版社,1997.
[4] 辭海[M].上海:上海辭書出版社,1989.
[5] Andrew S. Modern Operating Systems [M].3rd ed. New York: Prentice Hall, 2008.
[6] William S. Operating Systems: Internals and Design Principles [ M ]. 7th ed. New York: Prentice Hall, 2012.
[7] 牛津高階英漢雙解詞典[M]. 4版. 北京:商務印書館,1997.
[8] 計算機科學技術百科全書[M].2版. 北京:清華大學出版社,2005.
[9] 孟靜. 操作系統原理教程[M]. 北京:清華大學出版社,2000.
[10] 孟靜. 操作系統教程——原理和實例分析[M].2版. 北京:高等教育出版社,2006.
[11] 孟靜. 作業系統導論[ M]. 臺北: 博碩文化出版公司,2007.
[12] 孟靜,唐志敏. 操作系統教程[M]. 北京:人民郵電出版社,2009.
[13] 孟靜. 操作系統實驗教程[M].北京:高等教育出版社,2002.
[14] 孟靜. 操作系統教程——原理和實例分析[M].北京:高等教育出版社,2001.
[15] Meng J. A Reformed Scheme of Teaching Memory Management in Operating System Courses [EB/OL].[2015-09-25] http://www.micsymposium.org/mics_2001/meng.pdf .endprint