檔案系統程式設計 基礎知識

2021-08-05 19:39:30 字數 1540 閱讀 3796

1、系統呼叫:所有的作業系統都提供多種服務的入口點,程式由此向核心請求服務。這些可直接進入核心的入口點被稱為系統呼叫。

2、作業系統提供的服務:程序控制、檔案系統控制、記憶體管理、網路管理、使用者管理、程序間通訊。

在linux中,為了更好地保護核心空間,程式的執行空間分為核心空間和使用者空間(也就是常稱的核心態和使用者態),它們分別執行在不同的級別上,在邏輯上是相互隔離的。因此,使用者程序在通常情況下不允許訪問核心資料,也無法使用核心函式,它們只能在使用者空間操作使用者資料,呼叫使用者空間的函式。

3、檔案:系統資源(記憶體、硬碟、一般裝置、程序間通訊的通道等)的乙個抽象, 對系統資源進行訪問的乙個通用介面。

對資源提供通用的操作介面,可以極大地簡化系統程式設計介面的設計。

檔案型別:

普通檔案 一般意義上的檔案,作為資料儲存在磁碟中,可以隨機訪問檔案的內容。linux系統中的檔案是面向位元組的,檔案的內容以位元組為單位進行儲存和訪問。

目錄檔案 目錄是一種特殊的檔案,目錄可以像普通檔案一樣開啟、關閉以及進行相應的操作。

管道檔案 管道是linux中的一種程序間通訊的機制。

裝置檔案 裝置檔案沒有具體的內容,對裝置檔案的讀寫操作實際上與某個裝置的輸入輸出操作關聯在一起。

符號鏈結 符號鏈結的內容是指向另乙個檔案的路徑。當對符號鏈結進行操作時,系統會根據情況將這個操作轉移到它所指向的檔案上去,而不是對它本身進行操作。

檔案描述符:所有執行i/o操作的系統呼叫使用檔案描述符來表示開啟的檔案。 檔案描述符是乙個非負整數。檔案描述符可以表示各種型別的開啟的檔案。對檔案的操作只要使用檔案描述符即可指定所操作的檔案。

4、檔案操作過程:開啟檔案,開啟成功後,應用程式將獲得檔案描述符。 應用程式使用檔案描述符對檔案進行讀寫等操作。全部操作完畢後,應用程式需要將檔案關閉以釋放用於管理開啟檔案的記憶體。

幾個檔案操作函式:

open()

#include 

#include

#include

int open(const

char *pathname, int flags);

int open(const

char *pathname, int flags, mode_t mode);

read()

#include 

ssize_t read(int fd, void *buf, size_t count);

write()

#include 

ssize_t write(int fd, const

void *buf, size_t count);

close()

#include 

int close(int fd);

lseek()

#include 

#include

off_t lseek(int fildes, off_t offset, int whence);

系統程式設計之檔案系統程式設計

系統呼叫 所有的作業系統都提供多種服務的入口點,程式由此向核心請求服務。這些可直接進入核心的入口點被稱為系統呼叫。不同作業系統提供了自己的一套系統呼叫,所以系統呼叫無法實現跨平台使用。而且頻繁地系統呼叫,在使用者態和核心態之間切換,很耗費資源,效率不高。c標準庫提供了操作檔案的標準i o函式庫,與系...

linux檔案系統基礎知識

2012 02 06 13 15 標籤 linux 基礎知識 分類 file system 1 linux檔案系統分配策略 塊分配 block allocation 和 擴充套件分配 extent allocation 塊分配 磁碟上的檔案塊根據需要分配給檔案,避免了儲存空間的浪費。但當檔案擴充時,...

linux檔案系統基礎知識

1 linux檔案系統分配策略 塊分配 block allocation 和 擴充套件分配 extent allocation 塊分配 磁碟上的檔案塊根據需要分配給檔案,避免了儲存空間的浪費。但當檔案擴充時,會造成檔案中檔案塊的不連續,從而導致過多的磁碟尋道時間。每一次檔案擴充套件時,塊分配演算法就...