日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux内核探秘读书笔记

發(fā)布時間:2025/4/14 linux 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux内核探秘读书笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

(Linux內(nèi)核探秘(高劍林著 )讀書筆記)


Linux 文件系統(tǒng)探秘



一 文件系統(tǒng)基本概念
1.1 VFS
? ? Linux內(nèi)核通過虛擬文件系統(tǒng)(VFS)管理文件系統(tǒng)。
? ? 對每個具體文件系統(tǒng)的訪問要通過VFS定義的接口來實現(xiàn)。
? ?VFS定義了幾個重要的結(jié)構(gòu),dentry, inode, super_block,通過這些結(jié)構(gòu)將一個真實的硬盤文件系統(tǒng)抽象到內(nèi)存,通過管理這幾個對象就可以完成對文件系統(tǒng)的一些操作。


1.2 超級塊super_block
? ? 超級塊代表了整個文件系統(tǒng)本身。
? ? 文件系統(tǒng)內(nèi)所有的inode也都要鏈接到超級塊的鏈表頭。
? ? 超級塊是對應(yīng)文件系統(tǒng)自身的控制塊結(jié)構(gòu)。
? ? 超級塊結(jié)構(gòu)給出了文件系統(tǒng)的全局信息:文件系統(tǒng)的塊大小,文件系統(tǒng)中最大文件的尺寸,指向file_system_type結(jié)構(gòu)的指針,魔術(shù)數(shù)字,指向文件系統(tǒng)根dentry的指針,
? ? 超級塊對象還定義了一些鏈表頭,用來鏈接文件系統(tǒng)內(nèi)的重要成員:s_inodes指向文件系統(tǒng)內(nèi)所有的inode, s_dirty指向所有dirty的inode對象,s_bdev指向文件系統(tǒng)存在的塊設(shè)備指針;
? ? 超級塊結(jié)構(gòu)包含一些函數(shù)指針,super_operations提供了最重要的超級塊操作。


1.3 目錄項dentry
? ? 在VFS里,目錄本身也是一個文件;每個文件都有一個dentry,這個dentry鏈接到上級目錄的dentry。層層鏈接,形成一顆dentry樹。
? ? 為了加快對dentry的查找,內(nèi)核使用了hash表來緩存dentry,稱為dentry cache。
? ? dentry結(jié)構(gòu)的成員:d_inode指向一個inode結(jié)構(gòu);d_subdirs是子項的鏈表頭;d_child是dentry自身的鏈表頭;d_parent指向父dentry結(jié)構(gòu);d_hash; d_name保存文件或目錄的名字;d_mounted用來指示dentry是否是一個掛載點。


1.4 索引節(jié)點inode
? ? inode代表一個文件。
? ? dentry和inode代表一個文件?事實基本如此。


1.5 文件

? ? 文件對象的作用是描述進(jìn)程和文件交互的關(guān)系。硬盤上并在存在一個文件結(jié)構(gòu);進(jìn)程打開一個文件,內(nèi)核就動態(tài)創(chuàng)建一個文件對象。


設(shè)備的概念和總體架構(gòu)


一 設(shè)備的配置表
? ? 以PCI設(shè)備為準(zhǔn)說明。
? ? PCI設(shè)備本身就包含一個配置表。
? ? 配置表包含設(shè)備制造商填充的廠商信息、設(shè)備屬性等通用配置信息。設(shè)備廠商還應(yīng)該提供設(shè)備的控制寄存器信息。設(shè)備還可能配備了內(nèi)存。
? ? 設(shè)備本身有一些配置信息,如設(shè)備ID、制造商ID等。
? ? 設(shè)備寄存器基址,可以將其看作一個地址,對這個地址寫指令就可以控制設(shè)備。
? ? PCI總線規(guī)范定義的PCI設(shè)備配置空間總長度為256字節(jié),配置信息按一定的順序和大小依次存放。配置空間的前64字節(jié)稱為配置頭。配置頭的主要功能是用來識別設(shè)備、定義主機(jī)訪問PCI卡的方式。其余192字節(jié)稱為本地配置空間,主要定義卡上局部總線的特性、本地空間基地址及范圍等。


為設(shè)備服務(wù)的特殊文件系統(tǒng)sysfs



kobject結(jié)構(gòu)
? ? sysfs創(chuàng)建目錄時,傳遞的參數(shù)就是一個kobject結(jié)構(gòu)。可以認(rèn)為kobject代表sysfs文件系統(tǒng)的一個目錄。
1 kobject和kset的關(guān)系
? ? kset結(jié)構(gòu)里封裝了一個kobject結(jié)構(gòu),同時包括一個鏈表頭,屬于這個kset的所有kobject都要鏈接到kset的鏈表頭。
2 總線的注冊
? ? 總線的注冊使用platform_bus_init函數(shù)。
? ? bus_register的作用是把總線對象注冊到內(nèi)核。
? ? bus對象內(nèi)含兩個kset,一個是devices,另一個是drivers。

serio總線


? ? 驅(qū)動之間可以嵌套。一種類型的總線可以架構(gòu)在另一種類型的總線之上。
一 總線適配器
? ? 網(wǎng)卡、聲卡、顯卡、SCSI卡等設(shè)備很多都是以PCI卡的形式出現(xiàn),并插入計算機(jī)的PCI插槽。聲卡顯卡加載驅(qū)動后,就可以直接讀寫操作。SCSI卡本身又可以連接


SCSI硬盤,因此加載SCSI卡的PCI驅(qū)動后,必須進(jìn)行SCSI總線掃描,發(fā)現(xiàn)SCSI硬盤設(shè)備,才能正確地讀寫硬盤。這里,SCSI卡就擔(dān)任了總線橋的任務(wù),它提供了總線


之間的協(xié)議轉(zhuǎn)換和互操作。像SCSI卡這樣的設(shè)備,稱為主機(jī)總線適配器(HBA),它一方面是PCI設(shè)備,另一方面它又管理SCSI總線的設(shè)備。


二 向serio總線注冊設(shè)備
? ? serio總線建筑在platform總線之上,它們分工合作,共同提供了完整的驅(qū)動功能。
? ? 從架構(gòu)的角度看,serio總線這種總線嵌套使用模式類似于總線適配器的模式。


1 注冊端口登記事件
? ? serio_register_port函數(shù)的作用是注冊serio總線。
? ? serio_register_port函數(shù)的輸入?yún)?shù)serio設(shè)置了端口類型。
? ? serio_queue_event函數(shù)首先遍歷內(nèi)核的serio_event_list鏈表。同一個端口只能注冊一次。然后創(chuàng)建一個serio_event結(jié)構(gòu),設(shè)置這個serio_event結(jié)構(gòu)的類型為端口注冊,喚醒處理這個事件的任務(wù)。


2 遍歷總線的驅(qū)動
? ? serio_add_port函數(shù)的關(guān)鍵部分是device_add函數(shù)。
? ? serio總線的match函數(shù)定義在serio.c文件。serio_bus_match函數(shù)在設(shè)備注冊時多次調(diào)用,它的輸入?yún)?shù)是serio總線上注冊的每一個驅(qū)動,需要逐個檢查端口設(shè)備serio和驅(qū)動的匹配情況。


3 注冊input設(shè)備
? ? 調(diào)用input_register_device注冊input設(shè)備。


三 虛擬鍵盤驅(qū)動

PCI總線


一 深入理解PCI總線
? ? 當(dāng)PCI總線掃描到PCI設(shè)備后,已經(jīng)為設(shè)備設(shè)置了DMA信息、中斷信息和I/O端口、I/O內(nèi)存信息。
1.1 PCI設(shè)備工作原理
? ? PCI設(shè)備具有自己的設(shè)備配置信息,也具備I/O端口和I/O內(nèi)存,這些端口和內(nèi)存構(gòu)成一個獨(dú)立的地址空間,就是PCI總線地址空間。
? ? CPU要通過主橋才能訪問PCI地址空間,PCI設(shè)備也要通過主橋才能訪問主存。
? ? 主橋可以直接產(chǎn)生一條PCI總線,這條總線也是主橋管理的第一條總線,也是0號PCI總線。在內(nèi)核代碼中,會直接使用這條0號總線。
? ? 從該總線還可以擴(kuò)展出一系列的PCI總線,稱為PCI橋,以主橋為根節(jié)點,這些橋和設(shè)備形成了一顆PCI樹。
? ? 一條PCI總線上,最多只能掛載256個PCI設(shè)備。
1.2 PCI總線域
? ? PCI設(shè)備具有一個8 bit的總線號,一個5bit的設(shè)備編號以及一個3bit的功能編號。
? ? 一個主橋下最多擁有256個總線,對大型系統(tǒng)而言這是不夠的,為此Linux引入PCI域的概念。
1.3 PCI資源管理
? ? 為了管理PCI設(shè)備的I/O端口和I/O內(nèi)存,內(nèi)核定義了一個resource結(jié)構(gòu)。

總結(jié)

以上是生活随笔為你收集整理的Linux内核探秘读书笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产美女91呻吟求 | 欧美做受高潮动漫 | 免费视频污 | 中文在线日本 | 亚洲日本中文字幕在线 | 一区二区三区中文字幕在线观看 | 久久五月视频 | 在线观看污视频网站 | 国产精品老熟女一区二区 | 乱淫的女高中暑假调教h | 日本福利在线 | 中国免费一级片 | 大片视频免费观看视频 | 打美女白嫩屁屁网站 | 久草中文在线视频 | 孕期1ⅴ1高h| 久久国产加勒比精品无码 | 红桃视频一区二区三区免费 | 欧美激情在线免费 | 欧美裸体xxxx极品少妇 | 看了下面会湿的视频 | 成人黄色电影网址 | 爱情岛论语亚洲入口 | 日本不卡视频在线 | 天天躁日日躁狠狠躁免费麻豆 | 撸啊撸在线视频 | 亚洲精品久久久久久久久 | 9人人澡人人爽人人精品 | 男女激情视频网站 | 日韩av无码一区二区三区 | 一级片在线播放 | 国产欧美久久久久 | 人人干人人搞 | 狠狠五月天 | 国产精品毛片一区二区三区 | 国产精品爽爽久久久久久 | 中文一二三区 | 丰满少妇在线观看网站 | 大肉大捧一进一出视频 | 91精品国产综合久久香蕉922 | 91视频污在线观看 | 国产伦精品一区二区三区网站 | 鲁一鲁色一色 | 91蜜桃传媒精品久久久一区二区 | 国内老熟妇对白hdxxxx | 人妻少妇偷人精品久久久任期 | 日韩久久影院 | 91人妻一区二区 | 99伊人| xxx日本少妇 | 日日碰狠狠添天天爽无码 | 瑟瑟视频在线观看 | 毛片1000部免费看 | 日韩成人av片 | 神马午夜伦理影院 | 变态 另类 国产 亚洲 | 99视频在线观看视频 | 善良的公与媳hd中文字 | 青青草免费在线观看视频 | 午夜久久视频 | 亚洲国产精品成人va在线观看 | 国精品一区二区 | 国产又粗又猛又爽又黄91 | 91不卡视频 | 国产精品资源在线观看 | 动漫涩涩免费网站在线看 | 久久中文av | 日韩少妇诱惑 | 夜夜春很很躁夜夜躁 | 国产丰满农村老妇女乱 | 91在线观看成人 | 亚洲春色在线观看 | 日韩欧美国产另类 | 丰满少妇在线观看网站 | av资源在线播放 | 日本精品少妇 | 亚洲一区二区三区蜜桃 | 老色鬼av | 国产污视频 | 伊人av在线播放 | 日韩专区第一页 | 亚洲天堂小视频 | 国产精品偷乱一区二区三区 | 轮番上阵免费观看在线电影 | 久久艹国产 | 国产女上位 | 神马午夜dy888 | 岛国av网站| 在线免费国产 | 久久久久久一区二区三区 | 肉嫁高柳在线 | 国产调教在线 | 91正在播放 | 午夜视频一区二区 | a资源在线观看 | 日韩欧美成人免费视频 | 射久久 | 国产欧美日韩一区二区三区 | 日韩一区二区三区在线看 |