1. 程式人生 > >作業系統核心原理-6.外存管理(下)檔案系統

作業系統核心原理-6.外存管理(下)檔案系統

一、為何需要檔案系統?

  磁碟具有大容量、低成本以及持久化的特點,即使發生斷電,磁碟上的資料也不會丟失。但是,對於一般使用者而言,使用磁碟是非常苦難的,因為他們不知道如何驅動一個磁碟,以及計算資料在磁碟上的存放位置。從上一篇《磁碟基礎》可以知道,瞭解磁碟的各項技術細節將使使用者不堪重負。

  作業系統是一個魔術師,其提供給使用者的就是各種幻想:抽象。程序抽象的是CPU,虛擬記憶體抽象的是記憶體,對於磁碟來說,作業系統提供給使用者的幫助就是在磁碟外面包裹一層容易使用的抽象,使用者直接與這層抽象打交道,而無需瞭解磁碟的技術細節。在作業系統中,這層為磁碟提供的抽象就是:檔案系統

二、檔案系統的基本概念

2.1 檔案系統是什麼

  檔案系統是作業系統為磁碟和使用者之間提供的一個抽象,它是一個子虛烏有的,看不見摸不著的介面,如下圖所示:

  (1)檔案系統使得使用者能夠很方便的使用磁碟:將使用者從資料存放的細節中解放出來,使用者不需要知道內容存放在什麼地方,也不需要知道如何存放,更不需要知道磁碟到底是如何工作的。

  (2)簡單地說,檔案系統將其接觸的磁碟物理特性轉換為使用者看到的路徑名和檔名。使用者對磁碟進行訪問只需要給出檔名和路徑名即可,而無需知道磁柱、磁軌、扇面、資料塊等資訊

  (3)檔案系統的主要特性就是儲存大量的資訊,多個程序可以同時訪問一個檔案,程序結束也不會影響檔案的持續存在

2.2 檔案系統的目標

  (1)地址獨立

  一個檔案在產生的時候無需擔心其存放的磁碟地址,即檔案資料的產生與檔案將來存放的磁碟地址相互獨立。

  (2)地址保護

地址保護需要對檔案的訪問進行一定的限制,即不是任何人都可以訪問任何檔案。

Difference:檔案系統的地址保護與記憶體管理下的地址保護不同,記憶體管理下地址保護指的是一個程序不能訪問另一個程序空間,而檔案系統下的地址保護不是一個檔案不能訪問另一個檔案空間,而是一個檔案的訪問時有限制的。

2.3 檔案的基本知識

  (1)檔案命名

  檔名可以便於訪問一個檔案,這個檔名既可以是英語名、中文名,也可以是影象名。當用戶給出一個檔名,作業系統就可以根據這個名字找到對應檔案的內容。具體來說,就是找到該檔案存放在磁碟上的所有資料塊

  作業系統將檔名翻譯為其資料塊在磁碟上存放的地址,由於磁碟的定址單位是扇面,而這些磁碟地址實際上就是一個個的扇面號。

  (2)副檔名

  副檔名通常用來表明檔案的型別,如何文字檔案、二進位制檔案等等。例如:file.c 表明該檔案是一個C語言的原始檔。副檔名對檔案類別的指示僅僅是指示性的,並不具有強制性。

  (3)內容定址

  除了給出檔名外,還可以給出檔案的內容,供作業系統查詢使用。資料庫系統是這種實現方式的典型應用。

  (4)檔案訪問

  ①順序訪問:從開頭開始訪問,按照先來後到的順序讀取資料。

  ②隨機訪問:可以按照任意順序讀取資料記錄,就像我們看DVD一樣可以隨機選擇想要觀看的段落。

  (5)檔案屬性

  每個檔案除了一個檔名外,還有許多資訊也是我們感興趣的,所以,檔案還擁有一些屬性。不同的作業系統,檔案的屬性種類和數量都不同,但每一種屬性都有自己的用途,下表列出了常見的檔案屬性:

  (6)檔案操作

  可以對檔案進行操作有:建立/刪除、開啟/關閉、讀寫新增、尋找訪問位置、讀取屬性/設定屬性、重新命名等等。

三、資料夾實現地址獨立

3.1 為何要有資料夾

  我們可以對檔案進行讀寫操作,那麼給一個檔名,作業系統是如何知道從什麼地方讀取檔案內容的呢?換句話說,檔案在磁碟上的什麼位置,作業系統是如何知道的呢?這需要一個數據結構來記錄每個檔案在磁碟上的地址,這個資料結構就是資料夾

  資料夾也稱為目錄夾(Folder),它的角色就是跟蹤檔案,裡面存放的是從檔案到檔案所在磁碟的地址的對映,即“檔名→檔案所在磁碟上的地址”。資料夾對於檔案來說,就相當於從虛擬地址到實際地址的一種翻譯機制。

3.2 資料夾結構

  由於資料夾裡面可以有子資料夾,因此就形成了一個層次結構,這個層次結構的頂端就是根資料夾(也稱為根目錄),如下圖所示:

  根目錄是一個檔案系統的總起點,它在作業系統啟動的時候載入到記憶體。從根目錄開始,該檔案系統裡面的所有檔案都可以找出來。

四、檔案系統的呼叫

4.1 作業系統提供的“介面”

  作業系統為使用者提供的檔案系統介面就是檔案系統呼叫,使用者可以在程式中通過這些系統呼叫來對檔案系統進行讀寫操作。這些系統呼叫包括:開啟檔案、關閉檔案、讀檔案內容、寫檔案內容等等。

4.2 檔案系統呼叫例項

  下圖展示了一個C語言編寫的使用檔案系統呼叫實現檔案拷貝的簡單例項程式:

  上述檔案拷貝程式實現的是開啟原始檔和目標檔案,然後迴圈往復地將原始檔內容讀取到一個緩衝區,然後將緩衝區的內容寫到輸出目標檔案裡。當拷貝結束後,關閉原始檔和目標檔案。

參考資料

鄒恆明,《作業系統之哲學原理》,機械工業出版社

作者:周旭龍

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連結。

相關推薦

作業系統核心原理-6.外存管理檔案系統

一、為何需要檔案系統?   磁碟具有大容量、低成本以及持久化的特點,即使發生斷電,磁碟上的資料也不會丟失。但是,對於一般使用者而言,使用磁碟是非常苦難的,因為他們不知道如何驅動一個磁碟,以及計算資料在磁碟上的存放位置。從上一篇《磁碟基礎》可以知道,瞭解磁碟的各項技術細節將使使用者不堪重負。   作業系統是

作業系統核心原理-6.外存管理磁碟基礎

  計算機是處理資料的機器,而資料就需要有地方存放。在計算機中,可供資料存放的地方並不太多,除了記憶體之外,最主要的儲存資料的媒介就是磁碟。對於大多數計算機領域的人來說,磁碟通常被看做是一種外部裝置。可是,對於現代作業系統來說,磁碟是不可或缺的。雖然早期的作業系統可以基於磁帶,但由於作業系統複雜性和效能的不斷

作業系統核心原理-5.記憶體管理:段式記憶體管理

一、分頁系統的缺點   分頁系統存在的一個無法容忍,同時也是分頁系統無法解決的一個缺點就是:一個程序只能佔有一個虛擬地址空間。在此種限制下,一個程式的大小至多隻能和虛擬空間一樣大,其所有內容都必須從這個共同的虛擬空間內分配。 二、分段管理系統 2.1 何為分段管理   分段管理就是將一個程式按照邏輯單

作業系統核心原理-5.記憶體管理:分頁記憶體管理

  在上一篇介紹的幾種多道程式設計的記憶體管理模式中,以交換記憶體管理最為靈活和先進。但是這種策略也存在很多重大問題,而其中最重要的兩個問題就是空間浪費和程式大小受限。那麼有什麼辦法可以解決交換記憶體存在的這些問題呢?答案是分頁,它是我們解決交換缺陷的“不二法門”。 一、分頁記憶體管理 1.1 解決問題之

作業系統核心原理-5.記憶體管理:基本記憶體管理

  作業系統的兩個角色分別是魔術師和管理者,在管理者這個角色中,除了CPU之外,記憶體是作業系統要管理的另外一個重要資源。記憶體管理需要達到兩個目標:一是地址保護,即一個程式不能訪問另一個程式的地址空間。二是地址獨立,即程式發出的地址應該與物理主存地址無關。這兩個目標就是衡量一個記憶體管理系統是否完善的標準,

ORCAD16.6原理圖DRC檢查

Cadence Orcad DRC 檢查 接ORCAD16.6中原理圖DRC檢查(上) 上次說了電氣規則,下面接著說物理規則。 參考了http://blog.sina.com.cn/s/blog_e0ae98f10101fhg1.html; 5、物理規則 check power pin vi

深入理解作業系統原理之程序管理

一、概述 1、為什麼引入程序 程式併發執行時具有如下特徵: 間斷性 程式在併發執行時,由於它們共享資源或為完成同一項任務而相互合作,使在併發程式之間形成了相互制約的關係。相互制約將導致併發程式具有“執行-暫停-執行”這種間斷性活動規律。 失去封閉性

作業系統核心原理-7.裝置管理:I/O原理

一、I/O的基本知識 1.1 為何要有I/O   前面闡述了作業系統具有程序管理、記憶體管理、外存管理三大核心功能,但是計算機歸根是為人類服務的,這就要求計算機必須提供某種機制使得人們可以向計算機發出命令或操縱計算機。也就是說計算機與人之間必須存在某種溝通的機制,這種溝通的機制就是計算機的輸入輸出機制。輸

第12章,網絡管理網絡基礎配置

linix 網絡管理 更多內容請點擊:Linux學習從入門到打死也不放棄,完全筆記整理(持續更新,求收藏,求點贊~~~~) http://blog.51cto.com/13683480/2095439筆記整理開始時間:2018年5月2日18:52:09 第12章,網絡管理(下)網絡基礎配置 本章內容

九章演算法高階班筆記6.動態規劃

區間類DP Stone Game Burst Ballons Scramble String 匹配類動規 Longest Common Subsequence Edit Distance K Edit Distance Distinct Subqu

十二、Linux虛擬機器管理

本節著重介紹virsh虛擬機器管理命令、建立快照、虛擬機器遷移 - virsh虛擬機器管理命令 virsh list ## 檢視正在執行的虛擬機器 virsh list --all

記憶體管理

五、實體記憶體的管理 在核心初始化完成後,記憶體管理的責任由夥伴系統(高效、高速)承擔。 1、夥伴系統的結構 系統記憶體中的每個實體記憶體頁(頁幀),都對應於一個struct page例項。每個記憶體域都關聯了一個struct zone的例項,其中儲存了用於管理夥伴資料的主要陣列。 1 stru

9.spring:事務管理:宣告式事務管理

宣告式事務管理  sprin的宣告式事務是管理AOP技術實現的事務管理,其本質是是對方法前後進行攔截,然後 在目標方法開始之前建立或者加入一個事務,在執行完成目標方法之後根據執行情況提交或者回滾事務。   宣告式事務管理優點:不需要通過程式設計的方式管理事務,因而不需要在業務邏輯程

作業系統之程序—臨界區管理

1.臨界區管理  臨界區:併發程序中與共享變數有關的程式段  臨界資源:共享變數代表的資源 2.臨界區解決互斥問題 如果能保證程序在臨界區執行時,不讓另一個程序進入臨界區,即各程序對共享變數的訪問是互斥的,就不會造成與時間有關的錯誤 3.臨界區的排程原則 一次至

《逆向工程核心原理》學習總結

介紹 PE檔案是windows作業系統的可執行檔案格式(包括.exe、.scr、.dll、.sys、.obj等檔案),PE檔案指32位的可執行檔案,也稱為PE32。64位可執行檔案稱為PE+或PE32+,是PE32檔案的一種擴充套件形式。 基本結構 P

(萊昂氏unix原始碼分析導讀-36) 快取管理

                                      by cszhao1980 理解了上述內容,下面的這些程式就不難理解了。 首先是函式brelse(buf bp),該函式將傳入的快取歸還到AV佇列中,函式採用尾插法, 即快取會插到AV佇列的隊尾——

[讀書筆記]第七章 專案成本管理

第七章 專案成本管理(下)1.什麼是控制成本,它的輸入輸出是什麼更新專案狀態,以更新專案成本,管理成本基準的過程。它的作用是發現實際與計劃的差異,以便採取糾正措施,降低風險。應重點分析專案資金支出與相應完成的實際工作之間的關係。有效成本控制的關鍵在於,對經批准的成本基準及其變

Azure Devops/TFS測試管理

緊接著 上篇 經過上篇折騰,我們已經有了:①手工測試的流程規範②測試用例的管理  對於開發出身的我,我覺得一個專案上線流程應該主要瓶頸只能是開發本身,因為我認為最複雜過程應該就是開發,而肯定不能是測試。對於測試流程我能接受對新功能測試的時候需要耗費大量時間的說法,但是我不接受迴歸測試需要耗

Linux系統管理Linux系統安裝與修復

linux系統安裝與修復一. Linux多種安裝方式與應用軟件安裝1. Linux的硬盤安裝方式(1) 復制Linux的ISO文件到硬盤某個分區(2) 用Linux安裝啟動盤啟動/DOS啟動盤啟動計算機註: DOS啟動盤中必須要存放加載Linux系統的工具及Linux內核和initrd映像文件,主要文件包括:

Linux用戶管理Linux系統概述

linuxLinux系統概述一. 認識Linux1.Linux的性質Linux為一種源碼公開的自由軟件,是一種真正多任務和多用戶的網絡操作系統。Linux的多用戶和多任務、同時開設多個用戶終端、可以由用戶同時運行多個程序 2. Linux的發展歷史(1) UNIX和Linux的發展:-1968年 美國的k