<Linux>(極簡關鍵、省時省力)《Linux操作系統原理分析之文件管理(1)》(22)

《Linux操作系統原理分析之文件管理(1)》(22)

  • 7 文件管理
    • 7.1 文件與文件系統
      • 7.1.1 文件
      • 7.1.3 文件系統及其功能
    • 7.2 文件的組織結構
      • 7.2.1 文件的邏輯結構
      • 7.2.2 文件的物理結構
        • 一、順序結構(順序文件或連續文件)
        • 二、鏈接結構(鏈接文件或串聯文件)
        • 三、索引結構(索引文件)

7 文件管理

7.1 文件與文件系統

7.1.1 文件

文件:具有文件名的一組信息組合,包括兩部分:
文件體:文件本身的信息;
文件說明:文件存儲和管理信息;如:文件名、文件內部標識、文件存儲地址、訪問權限、訪問時間等;

7.1.2 文件的種類
文件系統在管理文件時還要識別和區分文件的類型,如果是文件系統所確認的文件類型,則可根據類型對文件進行合理的操作。
(1)按用途分類
系統文件、庫文件和用戶文件。
(2)按保護級別分類
根據限定的使用文件的權限:執行文件、只讀文件和讀寫文件等。
(3)按信息流向分類
物理設備的特性決定了文件信息的流向:輸入文件、輸出文件和輸入輸出文件。
(4)按文件的性質分類
根據文件的性質分:普通文件、目錄文件、設備文件等。
(5)按文件的組織結構分類
由用戶組織的文件稱邏輯文件:流式文件和記錄式文件。
文件在存儲介質上的組織方式稱文件的物理結構(物理文件):順序文件、鏈接文件和索引文件等。

7.1.3 文件系統及其功能

  1. 文件系統:操作系統中管理文件的機構,提供文件存儲、提供文件在外存中的組織方式,以及文件訪
    問控制等功能。文件系統的三個部分:管理軟件、被管理軟件、相關的數據結構
  2. 文件系統的功能 :
    (1)目錄管理

文件目錄是實現按名存取的一種手段。 建立一個新文件,應把與該文件有關的一些屬性登記在文件目錄中;
讀一個文件,應從文件目錄中查找指定文件是否存在并核對是否有權使用。
一個好的目錄結構應既能方便檢索,又能保證文件的安全。

(2)文件的組織

用戶按信息的使用和處理方式組織文件,稱為文件的邏輯結構或稱為邏輯文件。把邏輯文件保存到存儲介質上的工作由文件系統來做,這樣可減輕用戶的負擔。根據用戶對文件的存取方式和存儲介質的特性,文件在存儲介質上可以有多種組織形式。把文件在存儲介質上的組織方式稱為文件的物理結構或稱為物理文件。因此,當用戶要求保存文件時,文件系統必須把邏輯文件轉換成物理文件,而當用戶要求讀文件時,文件系統又要把物理文件轉換成邏輯文件。

(3)文件存儲空間的管理

要把文件保存到存儲介質上時,必須記住哪些存儲空間已被占用,哪些存儲空間是空閑的。文件只能保存到空閑的存儲空間中,否則會破壞已保存的信息。當文件沒有必要再保留而被刪除時,該文件所占的存儲空間應成為空閑空間。

(4)文件操作

為了保證文件系統正確地存儲和檢索文件,規定了在一個文件上可執行的操作,這些可執行的操作統稱為“文件操作”。文件系統提供的基本文件操作有建立文件、打開文件、讀文件、寫文件、關閉文件和刪除文件等。“文件操作”是文件系統提供給用戶使用文件的一組接口,用戶調用“文件操作”提出對文件的操作要求。

(5)文件的共享、保護和保密

在多道程序設計的系統中,有些文件是可以共享的,例如,編譯程序、庫文件等。實現文件共享既節省文件的存放空間,又可減少傳送文件的時間,但必須對文件采取安全保護措施。既要防止有意或無意地破壞文件,又要避免隨意地剽竊文件。

7.2 文件的組織結構

7.2.1 文件的邏輯結構

邏輯結構:它是用戶所觀察到的文件組織形式,是用戶可以直接處理的數據及結構,它獨立于物理特性,又稱為文件組織(file organization)。
分類:
a. 有結構記錄式文件(數據庫):包含若干順序排列的記錄
👉 變長記錄:數據項/字段不同;數據項本身不同。
👉 定長記錄:文件長度=記錄總個數×記錄長。
b. 無結構字符流式文件:文件的信息不組成記錄,文件的長度即為字符總個數。(源程序、文本文件)

7.2.2 文件的物理結構

  1. 物理結構:文件在外存上的實際的組織形式。
    1) 物理塊:以物理塊為基本單位分配和傳輸信息,物理塊大小由存儲設備和 OS 確定。
    2) 物理塊大小與邏輯記錄大小之間不一定一致。
  2. 文件物理結構的幾種形式:1)順序結構件 2)鏈接結構 3)索引結構
一、順序結構(順序文件或連續文件)

一個文件在邏輯上連續的信息被存放到磁盤上依次相鄰的塊上。邏輯記錄順序與磁盤塊的順序相一致。
例:在這里插入圖片描述

優點:存取速度快、結構簡單、支持順序存取和隨機存取。
存在的問題:
(1)磁盤存儲空間的利用率不高,容易產生碎片。
(2)對輸出文件很難估計需多少磁盤塊。
(3)影響文件的擴展。

二、鏈接結構(鏈接文件或串聯文件)

基本思想:將文件存放在外存中若干個物理塊中,這些物理塊不必連續。每個物理塊的最后一個單元用作指針,指向下一個物理塊的地址。最后一塊中的指針可用特殊字符(例如“-1”)表示文件到此結束, 從而將同一個文件的物理塊鏈接起來。
優點:解決了順序結構中的所有問題。
在這里插入圖片描述

磁盤上所有空閑塊都可以被利用;
建立文件時也不必事先考慮文件的長度,文件可繼續擴展;
便于在文件的任何位置插入一個記錄或刪除一個記錄。
缺點:采用隨機存取方式是低效的。文件只能按指針鏈接順序訪問,故存取速度慢;
可靠性問題,如指針出錯。
鏈接指針占用一定的空間。
讀出一塊信息時,應將其中的指針分離出來,保證用戶使用信息的正確性。

三、索引結構(索引文件)

基本思想:為每一個文件建立一張索引表,每一表項記錄文件所在的一個物理塊。

在這里插入圖片描述

優點:能方便地實現文件的擴展、記錄的插入和刪除。
缺點:必須增加索引表占用的空間和讀寫索引表的時間。索引表的查找策略對文件系統效率影響很大.
索引表的管理:當索引表非常大時,需要多個磁盤塊存放,各磁盤塊之間可用指針鏈起來。當隨機存取某個記錄時,可能要沿鏈搜索才能找到該記錄的存放地址,很費時間。
解決方案:多級索引、混合索引(下例適用 Unix System V)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207815.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207815.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207815.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java來實現二叉樹算法,將一個二叉樹左右倒置(左右孩子節點互換)

文章目錄 二叉樹算法二叉樹左右變換數據 今天來和大家談談常用的二叉樹算法 二叉樹算法 二叉樹左右變換數據 舉個例子: Java來實現二叉樹算法,將一個二叉樹左右倒置(左右孩子節點互換)如下圖所示 實現的代碼如下:以…

ECharts的顏色漸變

目錄 一、直接配置參數實現顏色漸變 二、使用ECharts自帶的方法實現顏色漸變 一、兩種漸變的實現方法 1、直接配置參數實現顏色漸變 橫向的漸變: //主要代碼 option {xAxis: {type: category,boundaryGap: false,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yA…

云上巴蜀丨云軸科技ZStack成功實踐精選(川渝)

巴蜀——古政權必爭之地 不僅擁有優越的戰略位置 而且擁有豐富的自然資源,悠久的歷史文化 如今的川渝經濟、人口發展迅速 2023年前三季度,四川與重慶GDP增速均超過國家平均線,為6.5%為5.6% 川渝經濟發展帶動數字化發展浪潮 云軸科技ZSt…

打造專屬小程序,喬拓云模板平臺助力商家搶占先機

打造專屬小程序,喬拓云模板平臺助力商家搶占先機!該平臺涵蓋全行業小程序模板,一鍵復制即可上線。 想要快速創建高效實用的小程序,喬拓云小程序模板開發平臺為您提供了解決方案!我們為您提供一系列精心設計的小程序模板…

LeetCode Hot100 131.分割回文串

題目: 給你一個字符串 s,請你將 s 分割成一些子串,使每個子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正著讀和反著讀都一樣的字符串。 方法:靈神-子集型回溯 假設每對相鄰字符之間有個逗號,那么就看…

[c++]—string類___深度學習string標準庫成員函數與非成員函數(string的增刪查改函數)

沉淀,沉淀,再沉淀. 👩🏻?💻作者:chlorine 👉上一篇:string標準庫成員函數和非成員函數(上) 目錄 🍭構造和析構的實現 🍭 string→c類型的字符串數組 🍭operator[]類對象元素的訪…

c語言-動態內存管理

文章目錄 一、為什么會有動態內存管理二、申請內存函數1、malloc2、free3、calloc4、realloc 三、常見的動態內存的錯誤四、練習 一、為什么會有動態內存管理 1.我們一般的開辟空間方式: int a 0;//申請4個字節空間 int arr[10] { 0 };//申請40個字節空間2.這樣…

解決在Linux中進行redis的主從復制時出現的從機可以獲取到主機的信息,主機獲取不到從機的信息~

主機: 從機1: 從機2: 出現上述的原因是我在redis.conf中設置了密碼,那么就導致了我在進行主從復制時,需要進行密碼驗證,然后我在網上查閱了很多資料,有的說讓在從機中指定密碼,有的說…

一對多聊天室

多人聊天包 由于要先創建服務面板,接收客戶端連接的信息,此代碼使用順序為先啟動服務端,在啟動客戶端,服務端不用關,不然會報錯。多運行幾次客戶端,實現單人聊天 創建服務面板 package yiduiduo;import j…

【頭歌系統數據庫實驗】實驗7 SQL的復雜多表查詢-1

目錄 第1關:求各顏色零件的平均重量 第2關:求北京和天津供應商的總個數 第3關:求各供應商供應的零件總數 第4關:求各供應商供應給各工程的零件總數 第5關:求重量大于所有零件平均重量的零件名稱 第6關&#xff1…

初識人工智能,一文讀懂人工智能概論(1)

🏆作者簡介,普修羅雙戰士,一直追求不斷學習和成長,在技術的道路上持續探索和實踐。 🏆多年互聯網行業從業經驗,歷任核心研發工程師,項目技術負責人。 🎉歡迎 👍點贊?評論…

Python Django-allauth: 構建全面的用戶身份驗證系統

更多資料獲取 📚 個人網站:ipengtao.com Django-allauth是一個功能強大的Django插件,旨在簡化和定制Web應用程序中的用戶身份驗證和管理。本文將深入介紹Django-allauth的核心功能、基本用法以及實際應用場景,通過豐富的示例代碼…

AWTK 串口屏開發(1) - Hello World

1. 功能 這個例子很簡單,制作一個調節溫度的界面。在這里例子中,模型(也就是數據)里只有一個溫度變量: 變量名數據類型功能說明溫度整數溫度。范圍 (0-100) 攝氏度 2. 創建項目 從模板創建項目,將 hmi/…

挑選在線客服系統的七大注意事項

越來越多的企業開始注重客戶服務,所以在線客服系統也逐漸成為了電商企業不可或缺的一部分。然而在挑選在線客服系統的過程中,蠻多企業會遇到各種各樣的問題,這就導致了最終選擇的系統并不適合自己企業的需求。接下來我將提醒大家挑選在線客服…

網絡運維與網絡安全 學習筆記2023.12.4

網絡運維與網絡安全 學習筆記 第三十四天 今日目標 訪問存儲設備、配置yum源、使用yum管理軟件 LAMP部署及測試、systemctl系統控制、SELinux-Firewall防護 訪問存儲設備 掛載/卸載設備 什么是掛載? 掛載,裝載 將光盤/U盤/分區/網絡存儲等設備裝到某個Linux目…

mysql中IGNORE 關鍵字段用法

在MySQL中,IGNORE 關鍵字通常與數據修改語句(如INSERT、UPDATE和DELETE)一起使用,其作用是使得操作在遇到錯誤時不會終止執行,而是忽略錯誤并繼續處理后續的數據。這對于處理可能包含重復鍵值或某些違反約束的批量操作…

ssm(springboot“昭愿”甜品店銷售管理系統 蛋糕商城系統Java

ssm(springboot“昭愿”甜品店銷售管理系統 蛋糕商城系統Java(code&LW) 開發語言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服務器:tomcat 數據庫:mysql 5.7(或…

FastAPI如何返回文件字節流?并且附帶一些json參數

文章目錄 GET方法 StreamingResponsePOST方法 StreamingResponse其他關于壓縮 GET方法 StreamingResponse 服務器: from fastapi import FastAPI from fastapi.responses import StreamingResponse from starlette.responses import FileResponse from pydantic i…

pycharm debug的時候變量顯示不出來,一直Collecting data...問題解決

問題描述: 如圖所示:一直加載不出來變量,顯示Collecting data 解決辦法: 在setting中給下圖中的選項打勾 這下就可以了。 應該是調試時候有線程沖突,具體我也不太懂。