最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux內(nèi)核設(shè)備驅(qū)動(dòng)之虛擬文件系統(tǒng)筆記整理

 更新時(shí)間:2018年12月17日 11:58:56   作者:Engineer-Bruce_Yang  
今天小編就為大家分享一篇關(guān)于Linux內(nèi)核設(shè)備驅(qū)動(dòng)之虛擬文件系統(tǒng)筆記整理,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
/********************
 * 虛擬文件系統(tǒng)VFS
 ********************/

(1)VFS介紹

虛擬文件系統(tǒng)VFS作為內(nèi)核的子系統(tǒng),為用戶(hù)空間程序提供了文件系統(tǒng)的相關(guān)接口。

VFS使得用戶(hù)可以直接使用open()等系統(tǒng)調(diào)用而無(wú)需考慮具體文件系統(tǒng)和實(shí)際物理介質(zhì)。

VFS提供了一個(gè)通用的文件系統(tǒng)模型,該模型囊括了我們所能想到的文件系統(tǒng)的常用功能和行為。通過(guò)這個(gè)抽象層,就可以實(shí)現(xiàn)利用通用接口對(duì)所有類(lèi)新的文件系統(tǒng)進(jìn)行操作。

a.調(diào)用模型

write(): 用戶(hù)空間 -->

sys_write(): VFS -->

文件系統(tǒng)的寫(xiě)方法: 文件系統(tǒng) -->

物理介質(zhì)

(2)VFS采用的主要對(duì)象

VFS采用了面向?qū)ο蟮乃悸?,采用一組數(shù)據(jù)結(jié)構(gòu)來(lái)代表通用的文件對(duì)象。

這些結(jié)構(gòu)體在包含數(shù)據(jù)的同時(shí)也包含了操作這些數(shù)據(jù)的指針。

VFS中包括了四個(gè)主要的對(duì)象類(lèi)型。

a.超級(jí)塊對(duì)象super_block

所有文件系統(tǒng)都必須實(shí)現(xiàn)超級(jí)塊,該對(duì)象用于存儲(chǔ)特定文件系統(tǒng)的信息,通常存儲(chǔ)在磁盤(pán)的特定扇區(qū)中,每個(gè)文件系統(tǒng)只有一個(gè)超級(jí)塊。

對(duì)于不基于磁盤(pán)的文件系統(tǒng),比如基于內(nèi)存的文件系統(tǒng)sysfs,linux會(huì)在使用現(xiàn)場(chǎng)創(chuàng)建超級(jí)塊并將其保存到內(nèi)存中。

超級(jí)塊的結(jié)構(gòu)體為super_block,定義在<linux/fs.h>。

超級(jí)塊的操作方法結(jié)構(gòu)體為super_operations,也定義在fs.h中。

創(chuàng)建、管理和銷(xiāo)毀超級(jí)塊對(duì)象的代碼位于/fs/super.c。

在文件系統(tǒng)安裝時(shí),內(nèi)核會(huì)調(diào)用alloc_super()函數(shù)從磁盤(pán)讀取文件系統(tǒng)超級(jí)塊,并將其信息填充到內(nèi)存中的超級(jí)塊對(duì)象中。

b.索引節(jié)點(diǎn)對(duì)象inode

索引節(jié)點(diǎn)對(duì)象包含了內(nèi)核在操作文件或目錄是需要的全部信息,如文件的訪(fǎng)問(wèn)控制權(quán)限,大小,擁有者,創(chuàng)建時(shí)間等。

系統(tǒng)把這些信息存儲(chǔ)在一個(gè)單獨(dú)的數(shù)據(jù)結(jié)構(gòu)中,稱(chēng)為索引節(jié)點(diǎn)。

一個(gè)文件在內(nèi)存中只有一個(gè)索引節(jié)點(diǎn)對(duì)象,特殊文件(比如管道和設(shè)備文件)也有其對(duì)應(yīng)的索引節(jié)點(diǎn)。

inode結(jié)構(gòu)體定義在<linux/fs.h>,其對(duì)應(yīng)的操作函數(shù)結(jié)構(gòu)體為inode_operations

c.目錄項(xiàng)對(duì)象dentry

每個(gè)目錄項(xiàng)對(duì)象代表一個(gè)路徑中的特定部分,比如路徑/bin/vi,/、bin和vi都屬于目錄項(xiàng)對(duì)象。

目錄項(xiàng)對(duì)象沒(méi)有對(duì)應(yīng)的磁盤(pán)結(jié)構(gòu),VFS根據(jù)字符串形式的路徑名現(xiàn)場(chǎng)創(chuàng)建。每個(gè)文件只對(duì)應(yīng)一個(gè)dentry對(duì)象。

dentry結(jié)構(gòu)體定義在<linux/dcache.h>中,對(duì)應(yīng)的目錄項(xiàng)操作函數(shù)結(jié)構(gòu)體dentry_operations也定義在<linux/dcache.h>中。

d.文件對(duì)象file

文件對(duì)象表示進(jìn)程已經(jīng)打開(kāi)的文件。這個(gè)對(duì)象在open的時(shí)候創(chuàng)建,在close的時(shí)候銷(xiāo)毀。

因?yàn)槎鄠€(gè)進(jìn)程可以同時(shí)打開(kāi)和操作一個(gè)文件,所以一個(gè)文件可能在內(nèi)存中有多個(gè)file對(duì)象。

文件對(duì)象由file結(jié)構(gòu)體表示,定義在<linux/fs.h>中。file對(duì)象的操作函數(shù)結(jié)構(gòu)體為file_operations,定義在<linux/fs.h>中。

這個(gè)函數(shù)集非常重要,其中包括了對(duì)文件的實(shí)際操作函數(shù),用戶(hù)空間調(diào)用write,最終會(huì)調(diào)用到file_operations里的write。

我們要實(shí)現(xiàn)一個(gè)char類(lèi)型的字符設(shè)備,也就是要實(shí)現(xiàn)file_operations中支持的函數(shù)。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • Linux磁盤(pán)設(shè)備與LVM管理命令示例詳解

    Linux磁盤(pán)設(shè)備與LVM管理命令示例詳解

    這篇文章主要給大家介紹了關(guān)于Linux磁盤(pán)設(shè)備與LVM管理命令的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Linux系統(tǒng)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • CentOS修改服務(wù)器登錄密碼的詳細(xì)指南

    CentOS修改服務(wù)器登錄密碼的詳細(xì)指南

    在日常使用?Linux?服務(wù)器時(shí),修改用戶(hù)登錄密碼是維護(hù)系統(tǒng)安全性的重要環(huán)節(jié),本文將詳細(xì)介紹如何在?CentOS?系統(tǒng)中修改用戶(hù)密碼,包括可能遇到的常見(jiàn)問(wèn)題及其解決方案,需要的朋友可以參考下
    2024-10-10
  • Linux如何關(guān)閉無(wú)用端口

    Linux如何關(guān)閉無(wú)用端口

    本文介紹了如何在Linux系統(tǒng)中關(guān)閉無(wú)用端口,以提高系統(tǒng)安全性,以關(guān)閉111端口為例,詳細(xì)說(shuō)明了查看監(jiān)聽(tīng)端口、確定服務(wù)、查看服務(wù)詳細(xì)信息、關(guān)閉服務(wù)并設(shè)置開(kāi)機(jī)不啟動(dòng),最后提供了關(guān)閉其他端口的總結(jié)
    2024-12-12
  • centos中nginx按日期自動(dòng)分割訪(fǎng)問(wèn)日志的方法

    centos中nginx按日期自動(dòng)分割訪(fǎng)問(wèn)日志的方法

    本篇文章主要介紹了centos中nginx按日期自動(dòng)分割訪(fǎng)問(wèn)日志的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Linux學(xué)習(xí)之CentOS(二十二)--進(jìn)入單用戶(hù)模式下修改Root用戶(hù)的密碼

    Linux學(xué)習(xí)之CentOS(二十二)--進(jìn)入單用戶(hù)模式下修改Root用戶(hù)的密碼

    這篇文章主要介紹了Linux學(xué)習(xí)之CentOS(二十二)--進(jìn)入單用戶(hù)模式下修改Root用戶(hù)的密碼,有需要的可以了解一下。
    2016-11-11
  • 2018值得選用的五個(gè)Linux服務(wù)器發(fā)行版

    2018值得選用的五個(gè)Linux服務(wù)器發(fā)行版

    Linux發(fā)行版很少互相復(fù)制。從以下5個(gè)最流行的Linux服務(wù)器發(fā)行版來(lái)看,這一點(diǎn)很明顯,它們各有不同的優(yōu)缺點(diǎn),這篇文章給大家?guī)?lái)了2018值得選用的五個(gè)Linux服務(wù)器發(fā)行版,需要的朋友參考下吧
    2018-01-01
  • Linux測(cè)試端口連通性的5種方法

    Linux測(cè)試端口連通性的5種方法

    在Linux系統(tǒng)中,測(cè)試端口通不通是非常常見(jiàn)的情況之一,比如我們進(jìn)行網(wǎng)絡(luò)調(diào)試的時(shí)候就需要測(cè)試驗(yàn)證對(duì)應(yīng)的端口是否正常,那么Linux中測(cè)試端口通不通的方法是什么?以下是詳細(xì)內(nèi)容介紹
    2024-06-06
  • Linux之常見(jiàn)漏洞修復(fù)

    Linux之常見(jiàn)漏洞修復(fù)

    這篇文章主要介紹了Linux中的常見(jiàn)漏洞修復(fù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Linux下如何使用gdb調(diào)試core文件

    Linux下如何使用gdb調(diào)試core文件

    這篇文章主要介紹了Linux下如何使用gdb調(diào)試core文件,幫助大家更好的理解和學(xué)習(xí)Linux,感興趣的朋友可以了解下
    2020-08-08
  • ubuntu16.04搭建nfs服務(wù)的方法

    ubuntu16.04搭建nfs服務(wù)的方法

    今天小編就為大家分享一篇關(guān)于ubuntu16.04搭建nfs服務(wù)的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03

最新評(píng)論

喜德县| 高邮市| 蒙山县| 城固县| 安塞县| 鄂托克前旗| 仙桃市| 鸡泽县| 盐城市| 德兴市| 铜川市| 广灵县| 西丰县| 宁化县| 崇义县| 丽江市| 甘泉县| 岳池县| 梓潼县| 三亚市| 衡阳市| 武隆县| 梅河口市| 孟津县| 碌曲县| 乐业县| 儋州市| 普宁市| 邻水| 右玉县| 乌拉特前旗| 奎屯市| 贵德县| 卢湾区| 萝北县| 凌云县| 台南县| 昌邑市| 买车| 镇平县| 顺义区|