操作系統之文件系統的基本概念

目錄

用戶和磁盤視角的文件

文件控制塊(FCB)和索引結點(inode)

文件的操作

創建文件(create系統調用)

寫文件(write系統調用)

讀文件(read系統調用)

重新定位文件

刪除文件(delete系統調用)

截斷文件

文件保護

目的

方法

文件的邏輯結構

無結構文件

有結構文件

文件的物理結構

連續分配

鏈接分配

索引分配

優化機制


用戶和磁盤視角的文件

  • 用戶視角:文件被視為字符流或字節流,用戶通過文件名來訪問文件內容。
  • 磁盤視角:文件是由一系列盤塊組成的集合,每個盤塊包含文件數據的一部分。

文件控制塊(FCB)和索引結點(inode)

  • 文件控制塊(FCB)
    • 作用:存放控制文件所需的信息,實現“按名存取”。
    • 內容:包括文件名、物理位置、邏輯結構、物理結構、存取控制信息和使用信息。
  • 索引結點(inode)
    • 引入原因:減少內存中文件目錄的大小,提高檢索效率。
    • 磁盤索引結點:每個文件有一個唯一的磁盤索引結點,包含文件主標識符、類型、存取權限、物理地址、長度、鏈接計數、存取時間等。
    • 內存索引結點:文件打開時,磁盤索引結點復制到內存,包含索引結點編號、狀態、訪問計數、邏輯設備號、鏈接指針等。

文件的操作

寫文件(write系統調用)

寫文件操作允許用戶將數據寫入到文件中。這個過程包括:

讀文件(read系統調用)

讀文件操作允許用戶從文件中讀取數據。操作步驟如下:

重新定位文件

重新定位文件操作(通常通過lseek系統調用)改變文件的讀寫位置。這包括:

刪除文件(delete系統調用)

刪除文件操作從文件系統中移除指定的文件。這個過程通常涉及:

截斷文件

截斷文件操作將文件的大小減小到用戶指定的大小。這通常包括以下步驟:

  • 創建文件(create系統調用)

    創建文件操作允許用戶在文件系統中生成一個新的文件實體。這個過程通常涉及以下步驟:

  • 檢查權限:系統檢查用戶是否有權限在指定目錄下創建文件。
  • 分配FCB:系統為新文件分配一個文件控制塊(FCB),并在其中填寫文件名、創建時間、文件所有者等信息。
  • 分配inode:系統為新文件分配一個索引結點(inode),記錄文件的物理位置、大小、訪問權限等。
  • 初始化存儲空間:根據文件的物理結構,系統可能會分配一個或多個磁盤塊來存儲文件數據。
  • 定位:系統根據文件指針確定寫入位置。
  • 寫入數據:系統將用戶指定的數據寫入到文件的相應位置。
  • 更新FCB和inode:系統更新文件控制塊和索引結點,以反映文件的新大小和最后修改時間。
  • 分配新塊:如果文件需要更多存儲空間,系統會分配新的磁盤塊。
  • 定位:系統根據文件指針確定讀取位置。
  • 讀取數據:系統從文件的指定位置讀取數據,并將其傳送到用戶指定的緩沖區。
  • 更新文件指針:讀取操作完成后,系統更新文件指針,以便下次操作可以從新的位置開始。
  • 設置文件指針:用戶可以指定新的位置,系統將文件指針移動到該位置。
  • 檢查邊界:系統確保新的位置在文件的合法范圍內。
  • 檢查權限:系統檢查用戶是否有權限刪除該文件。
  • 釋放FCB:系統釋放文件的文件控制塊。
  • 釋放inode:系統釋放文件的索引結點。
  • 釋放存儲空間:系統釋放文件所占用的所有磁盤塊,以便這些塊可以被重新使用。
  • 檢查權限:系統檢查用戶是否有權限修改文件大小。
  • 調整大小:系統將文件大小減小到指定的大小,釋放多余的數據塊。
  • 更新FCB和inode:系統更新文件控制塊和索引結點,以反映文件的新大小。
  • 處理剩余數據:如果文件被縮小,系統會處理剩余的數據塊,可能會將其標記為可用

文件保護

目的
  • 防止文件共享時被破壞或未經允許的修改。
方法
  • 口令保護:訪問文件時需提供口令。
  • 加密保護:文件加密,訪問時需密鑰解密。
  • 訪問控制
    • 訪問控制列表:規定用戶及其所允許的訪問類型。
    • 訪問類型:讀、寫、執行、添加、刪除、列表清單。
    • 用戶訪問權限:與文件屬性共同限制文件訪問。

文件的邏輯結構

無結構文件
  • 數據按順序組織,適合基本信息單位操作不多的文件。
有結構文件
  • 順序文件:通常是定長的,可以順序存儲或鏈式存儲。
  • 索引文件:適用于定長和變長記錄文件,提高檢索效率。
  • 索引順序文件:為順序文件建立索引表,每組第一條記錄有一個索引項。
  • 直接文件或散列文件:通過鍵值或散列函數直接決定記錄的物理地址。

操作系統之文件的邏輯結構-CSDN博客

文件的物理結構

連續分配
  • 每個文件在磁盤上占有一組連續的塊,支持隨機存取,但可能導致外部碎片。
鏈接分配
  • 隱式鏈接:磁盤塊離散分配,每個塊(除最后一個)有指向下一個塊的指針。
  • 顯式鏈接:鏈接指針存放在內存的文件分配表(FAT)中,提高檢索速度,支持隨機訪問。
索引分配
  • 每個文件有一個索引塊,包含指向文件各塊的指針,支持隨機存取。

后面補

優化機制
  • 鏈接方案:多個索引塊鏈接在一起處理大文件。
  • 多層索引:類似多級頁表,處理大型索引塊。
  • 混合索引:結合鏈接分配和索引分配的優點。

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

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

相關文章

如何制作一份出色的公司介紹PPT?

制作一份公司介紹的PPT需要精心設計,以確保內容既專業又吸引人。以下是一個基本的框架和一些建議,幫助您創建一份有效的公司介紹PPT: PPT標題頁 標題:公司全稱(可使用公司Logo作為背景或嵌入標題中)副標題…

springboot項目部署至linux

1.修改pom.xml 確認是否有以下代碼&#xff0c;沒有請進行添加&#xff0c;mainClass改成你的啟動類 <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.ve…

vue.js 使用router-link替代a標簽實現高亮

在Vue.js中&#xff0c;可以使用<router-link>組件來替代<a>標簽實現高亮效果。<router-link>是Vue-Router提供的組件&#xff0c;用于路由導航。 首先&#xff0c;需要在Vue項目中安裝Vue-Router。可以使用以下命令安裝&#xff1a; npm install vue-rout…

FPGA隨記——時鐘時序一些基本知識

原文鏈接&#xff1a;跨時鐘域設計-CSDN博客 前言 CDC&#xff08;clock domain crossing&#xff09;檢查&#xff08;跨時鐘域的檢查&#xff09;是對電路設計中同步電路設計的檢查。非同步時鐘沒有固定的相位關系&#xff0c;這樣Setup/Hold不滿足而產生了亞穩態是無法避免…

實例解析網絡釣魚攻擊的幕后

網絡釣魚是通過大量發送聲稱來自于銀行或其他知名機構的欺騙性垃圾郵件&#xff0c;意圖引誘收信人給出敏感信息&#xff08;如用戶名、口令、帳號ID、ATM PIN碼或信用卡詳細信息&#xff09;的一種攻擊方式。最典型的網絡釣魚攻擊將收信人引誘到一個通過精心設計與目標組織的網…

STM32+WIFI獲取網絡時間+8位數碼管顯示+0.96OLED顯

資料下載地址&#xff1a;STM32WIFI獲取網絡時間8位數碼管顯示0.96OLED 1、項目介紹 主控芯片STM32C8T6 接線&#xff1a;串口1&#xff1a;PA9 PA10 OELD &#xff1a;PB6 PB7 數碼管使用&#xff1a;MAX7219 8位數碼管 Max7219_pinCLK PAout(5) Max7219_pinC…

1688平臺商品關鍵詞搜索的多樣性與Python爬蟲應用實踐

在當今這個信息化、數字化飛速發展的時代&#xff0c;電子商務平臺已經成為人們日常生活中不可或缺的一部分。而1688作為國內知名的B2B電商平臺&#xff0c;憑借其龐大的商品種類和豐富的供應鏈資源&#xff0c;為無數商家和消費者提供了便捷的交易渠道。除了廣受關注的女裝品類…

記錄將springboot的jar包和lib分離,使用docker-compose部署

本文講訴如何把jar里的lib依賴包獨立出來&#xff0c;方便更新服務時&#xff0c;縮小jar的體積&#xff0c;下面以若依的system服務為例&#xff0c;配置中的路徑請酌情修改&#xff0c;主要提供大致配置邏輯 第一步&#xff1a;修改項目的pom.xml&#xff0c;調整build的配…

如何解決Redis中的熱點key問題

Redis中的熱點Key問題是指某些特定的Key被頻繁訪問&#xff0c;導致Redis中某個節點&#xff08;或實例&#xff09;承擔過高的壓力&#xff0c;可能引發性能瓶頸&#xff0c;甚至若緩存承受不住服務壓力掛掉后&#xff0c;仍有大量請求時直接打到DB上&#xff0c;由于DB層相對…

單片機實現模式轉換

[任務] 要求通過單片機實現以下功能&#xff1a; 1.單片機有三種工作模式(定義全局變量MM表示模式&#xff0c;MM1&#xff0c;2&#xff0c;3表示三種不同的模式) LED控制模式 風扇控制模式 蜂鳴器控制模式 2.可以在某一個模式下通過拓展板KEY1按鍵控制設備 (按…

安卓OCR使用(Google ML Kit)

OCR是一個很常用的功能&#xff0c;Google ML Kit提供了OCR能力&#xff0c;用起來也很簡單&#xff0c;本文介紹一下使用方法。 1. 相關概念 名詞概念解釋TextBlock塊一個段落Line行一行文本Element元素單詞&#xff1b;對漢字來說&#xff0c;類似"開頭 (分隔符)中間&…

數據庫(3)--針對列的CRUD操作

1.Create 新增 語法&#xff1a; insert into 表名 &#xff08;列名&#xff09;values &#xff08;列&#xff09;... 創建一個學生表用于演示&#xff1a; create table if not exists student( id bigint comment 編號, name varchar(20) comment 姓名 ); 1.1直接增加…

【設計模式-1】軟件設計模式概述

1. 軟件設計模式的產生背景 “設計模式”這個術語最初并不是出現在軟件設計中&#xff0c;而是被用于建筑領域的設計中。 1977 年&#xff0c;美國著名建筑大師、加利福尼亞大學伯克利分校環境結構中心主任克里斯托夫亞歷山大&#xff08;Christopher Alexander&#xff09;在…

Python爬蟲基礎——認識網頁結構(各種標簽的使用)

1、添加<div>標簽的代碼定義了兩個區塊的寬度和高度均為100px&#xff0c;邊框的格式也相同&#xff0c;只是區塊中顯示的內容不同&#xff1b; 2、添加<ul>和<ol>標簽分別用于定義無序列表和有序列表。<il>標簽位于<ul>標簽或<ol>標簽之…

Spring boot接入xxl-job

Spring boot接入xxl-job 導入maven包加入配置增加配置類創建執行器類&#xff08;寫job的業務邏輯&#xff09;去控制臺中配置job 導入maven包 <dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>…

[Git] git pull --rebase / git rebase origin/master

1. git pull --rebase 這個命令是用來更新當前分支的&#xff0c;它會從遠程倉庫拉取更新&#xff0c;然后將你的本地提交重新應用到更新后的基礎之上。它相當于先執行 git fetch&#xff0c;然后在當前分支上執行 git rebase origin/。使用 --rebase 而不是默認的 merge 可以…

去掉el-table中自帶的邊框線

1.問題:el-table中自帶的邊框線 2.解決后的效果: 3.分析:明明在el-table中沒有添加border,但是會出現邊框線. 可能的原因: 由 Element UI 的默認樣式或者表格的某些內置樣式引起的。比如,<el-table> 會通過 border-collapse 或 border-spacing 等屬性影響邊框的顯示。 4…

空間不足導致Oracle集群內存使用率暴增

一、現象 操作系統內存使用率告警&#xff0c;已達到98%,&#xff0c;告警內容如下&#xff1a; 【全景監控&#xff1a;Oracle主機內存使用監控】 【主機名】&#xff1a;XXXXX11 【主機IP】主機IP&#xff1a;*.126.15 【告警內容】當前內存使用率為98.9%&#xff0c;超警…

spark匯總

目錄 描述運行模式1. Windows模式代碼示例 2. Local模式3. Standalone模式 RDD描述特性RDD創建代碼示例&#xff08;并行化創建&#xff09;代碼示例&#xff08;讀取外部數據&#xff09;代碼示例&#xff08;讀取目錄下的所有文件&#xff09; 算子DAGSparkSQLSparkStreaming…

矩母函數(MGF)

矩母函數&#xff08;MGF&#xff09;簡介 矩母函數&#xff08;Moment Generating Function&#xff0c;MGF&#xff09;是概率統計中描述隨機變量分布特征的重要工具。MGF的主要用途是通過導數來計算隨機變量的矩&#xff08;比如均值、方差等&#xff09;&#xff0c;同時它…