檔案IO的學習

sanjiudemiao發表於2024-05-07

IO程式設計

概述

瞭解FAT32 和 NTFS

檔案系統是作業系統用於明確磁碟或者分割槽上檔案的方法和資料結構。

一塊硬碟就像一個塊空地,檔案就像不同的材料,我們首先得在空地上建起倉庫(分割槽),並且指定好(格式化)倉庫對材料的管理規範(檔案系統),這樣才能將材料運進倉庫保管。

檔案系統是對應硬碟的分割槽的,而不是整個硬碟,不管是硬碟只有一個分割槽,還是幾個分割槽,不同的分割槽可以有著不同的檔案系統!

  • 1.FAT32是一種較舊的檔案系統,具有有限的檔案大小和分割槽大小功能,而NTFS支援更大的檔案和分割槽。
  • 2.NTFS提供了FAT32所缺乏的更好的安全功能,例如檔案加密訪問許可權
  • 3.NTFS支援高階功能,如磁碟配額檔案壓縮,而FAT32不提供這些選項。
NTFS(New Technology File System) FAT32(File Allocation Table 32)
儲存檔案大小 4GB-2TB的單個檔案 小於4GB的單個檔案
讀寫速度 大於FAT32 不及NTFS
適用裝置 大容量磁碟 容量較小的快閃記憶體裝置
EFS檔案加密系統 支援 不支援
檔案壓縮(系統) 支援 不支援
磁碟配額 支援 不支援
設定許可權 支援 不支援
產生的磁碟碎片 較少 適中
常用平臺 Windows Linux、Mac或Android系統平臺上通用(相容性好)

NTFS與FAT32

MMU 記憶體管理單元

記憶體管理單元1
記憶體管理單元2

MMU(Memory Management Unit)主要用來管理虛擬儲存器、物理儲存器的控制線路,同時也負責虛擬地址對映為實體地址,以及提供硬體

機制的記憶體訪問授權、多工多程序作業系統。

  • MMU是負責把虛擬地址對映為實體地址,但凡"對映"都要解決兩個問題:對映的最小單位(粒度)和對映的規則。

分頁機制
MMU中VA到PA對映的最小單位稱為頁(Page),對映的最低粒度是單個虛擬頁到物理頁,頁大小通常是4K,即一次最少要把4K大小的VA頁塊整體對映到4K的PA頁塊(從0開始4K對齊劃分頁塊),頁內偏移不變,如VA的一頁0x300040000x30004fff被對映到PA的一頁0x000080000x00008fff,當CPU執行單元訪問虛擬地址0x30004008,實際訪問的實體地址是0x00008008(0x30004008和0x00008008分別位於虛實兩套地址空間,互不相干,不存在重疊和衝突)。以頁為最小單位,就是不能把VA中某一頁劃分成幾小塊分別對映到不同PA,也不能把VA中屬於不同頁的碎塊對映到PA某一頁的不同部分,必須頁對頁整體對映。

簡述Linux核心的作用

red-hat

img
  • 記憶體管理

    • 記憶體分配呼叫:包括靜態分配方式、動態分配方式;
    • 記憶體保護:確保每個程式在自己的記憶體空間執行、互不干擾。方法是使用界限暫存器或儲存保護鍵;
    • 地址對映:實現程式的邏輯地址與儲存器的實體地址之間的對映功能;
    • 記憶體擴充::從邏輯上擴充實體記憶體,以允許比實體記憶體更大的程式在機器內執行,為此作業系統必須具有:請求調入功能與置換功能
  • 程序管理

    • 程序控制:包括程序建立、程序撤銷、程序阻塞、程序喚醒
    • 程序協調:由於程序執行的非同步性,因此程序同步到任務是對諸程序的執行協調,包括兩種方式:程序互斥方式與程序同步方式;
    • 程序通訊:主要完成同一臺機器上不同程序間通訊和不同機器上程序間的通訊,以共同完成一相同的任務;
    • 程序排程:作業系統按照一定的規則對等待執行的多道程式進行排程,以保證每個程式都能有機會得到執行,並最終完成。
  • 檔案管理

    • 檔案儲存空間的管理:為每一檔案分配必要的外存空間。為提高外部儲存空間的利用率,系統應設定相應的資料結構,用於記錄檔案儲存空間的使用情況;
    • 目錄管理:為了方便對使用者的檔案進行管理,對檔案系統建立一定結構的目錄結構,同時要求快速的目錄查詢手段;
    • 檔案的讀、寫管理和存取控制:利用一定的系統呼叫對檔案進行讀寫操作。同時,為防止系統中的檔案被非法訪問和竊取,檔案系統中必須提供有效存取控制功能;
  • 裝置管理

    • 緩衝管理:管理各種型別的緩衝區,如字元緩衝區和塊緩衝區,以緩和CPU和I/O速度不匹配的矛盾,最終達到提高CPU和I/O裝置的利用率,進而提高系統吞吐量的目的;
    • 裝置分配:根據使用者的I/O請求,為之分配其所需要的裝置;
    • 裝置處理:R又稱為裝置驅動程式,任務是實現CPU和裝置控制器之間的通訊;
    • 裝置獨立性和虛擬裝置:一方面保證使用者程式獨立於物理裝置,另一方面保證多個程序能併發地共享同一個裝置;
    image-20240507203704037

請簡述Linux系統的啟動過程

image-20240507104159880

瞭解Linux目錄和檔案

  • 檔案的組成

    在 Linux 中,檔案本質上是由 inode資料塊構成的。

    inode 是檔案的後設資料,包括了檔案的所有者、許可權、大小、建立和修改的時間戳等資訊,以及指向實際儲存檔案資料的資料塊的指標。每個 inode 有一個唯一的編號,系統透過這個編號來識別檔案。

    資料塊則是儲存了檔案的實際內容,比如文字、圖片、影片等。

    所以,一個檔案在檔案系統中的存在,實際上就是一個 inode 和一系列資料塊的組合。inode 提供了關於檔案的後設資料和找到檔案資料的路徑,資料塊則儲存了檔案的實際內容。檔名和目錄項則是在目錄的資料結構中定義的。目錄包含了一組目錄項,每個目錄項都是一個檔名和一個inode 編號的對應關係。透過這種方式,使用者可以透過檔名來訪問檔案,而系統透過檔名找到對應的 inode,進而找到檔案的資料。

  • 目錄的組成

在 Linux 中,目錄本質上也是由 inode 和資料塊構成的。

不過,目錄和檔案的資料塊中儲存的內容是不同的:檔案的資料塊中儲存的是檔案的實際內容,比如文字、圖片、音訊、影片等。

目錄的資料塊中儲存的是一系列目錄項。每一個目錄項包含一個檔名和一個inode 號。這樣,使用者可以透過檔名找到檔案,系統則透過 inode號找到實際的檔案內容。

  • Linux的檔案型別 / 七類檔案
    • - 規則檔案 regular
    • l 連結檔案 link
    • d 目錄檔案 directory
    • p 管道檔案 pipe
    • s 套接字檔案 socket
    • c 字元裝置檔案 character
    • b 塊裝置檔案 block