(1) 建立文件。
在建立一個新文件時,系統首先要爲新文件分配必要的外存空間,並在文件系統的目錄中,爲之創建一個目錄項。
目錄項中應記錄新文件的文件名及其在外存的地址等屬性。
|
(2) 刪除文件。
當已再也不須要某文件時,可將它從文件系統中刪除。在刪除時,系統應先從目錄中找到要刪除文件的目錄項,使之成爲空項,而後回收該文件所佔用的存儲空間。
|
(3) 讀文件。
在讀一個文件時,須在相應系統調用中給出文件名和應讀入的內存目標地址。此時,系統一樣要查找目錄,找到指定的目錄項,從中獲得被讀文件在外存中的位置。在目錄項中,還有一個指針用於對文件的讀/寫。
|
(4) 寫文件。
在寫一個文件時,須在相應系統調用中給出該文件名及該文件在內存中的(源)地址。
爲此,也一樣須先查找目錄,找到指定文件的目錄項,再利用目錄中的寫指針進行寫操做。
|
(5) 截斷文件。
若是一個文件的內容已經陳舊而須要所有更新時,一種方法是將此文件刪除,再從新建立一個新文件。
但若是文件名及其屬性均無改變時,則可採起另外一種所謂的截斷文件的方法,此即將原有文件的長度設置爲0,或者說是放棄原有的文件內容。
|
(6) 設置文件的讀/寫位置。
前述的文件讀/寫操做都只提供了對文件順序存取的手段,即每次都是從文件的始端讀或寫。
設置文件讀/寫位置的操做,用於設置文件讀/寫指針的位置,以便每次讀/寫文件時,不是從其始端而是從所設置的位置開始操做。也正因如此,才能改順序存取爲隨機存取。
|
當前OS所提供的大多數對文件的操做, 其過程大體都是這樣兩步:
第一步是經過檢索文件目錄來找到指定文件的屬性及其在外存上的位置;
第二步是對文件實施相應的操做,如讀文件或寫文件等。
當用戶要求對一個文件實施屢次讀/寫或其它操做時,每次都要從檢索目錄開始。
爲了不屢次重複地檢索目錄,在大多數OS中都引入了「打開」(open)這一文件系統調用
當用戶第一次請求對某文件進行操做時,先利用 open系統調用將該文件打開。
所謂「打開」 ,是指系統將指名文件的屬性(包括該文件在外存上的物理位置)從外存拷貝到內存打開文件表的一個表目中,並將該表目的編號(或稱爲索引)返回給用戶。
之後,當用戶再要求對該文件進行相應的操做時,即可利用系統所返回的索引號向系統提出操做請求。
系統這時即可直接利用該索引號到打開文件表中去查找,從而避免了對該文件的再次檢索。
這樣不只節省了大量的檢索開銷,也顯著地提升了對文件的操做速度。
若是用戶已再也不須要對該文件實施相應的操做時,可利用「關閉」(close)系統調用來關閉此文件,OS將會把該文件從打開文件表中的表目上刪除掉。
|
也就是說程序語言中的IO
不只僅要解決溫飽問題(經過操做系統讀取文件)
還要解決奔小康的問題(可以對各類來源,各類數據文件 更便捷的進行操做)
|
邏輯功能使用上須要盡最大可能的照顧到開發者
|
實現上儘量的高效 |