1、前言 最近寫代碼需用到鏈表結構,正好公共庫有關於鏈表的。第一眼看時,覺得有點新鮮,和我之前見到的鏈表結構不一樣,只有前驅和后繼指針,而沒有數據域。后來看代碼注釋發現該代碼來自linux內核,在linux源代碼下include/Lish.h下。這個鏈表具備通用性,使用非常方便。只需要 ...
內核數據結構貫穿於整個內核代碼中,這里介紹 個基本的內核數據結構。 利用這 個基本的數據結構,可以在編寫內核代碼時節約大量時間。 主要內容: 鏈表 隊列 映射 紅黑樹 . 鏈表 鏈表是linux內核中最簡單,同時也是應用最廣泛的數據結構。 內核中定義的是雙向鏈表。 . 頭文件簡介 內核中關於鏈表定義的代碼位於: include linux list.h list.h文件中對每個函數都有注釋,這里就 ...
2013-04-16 13:21 10 17910 推薦指數:
1、前言 最近寫代碼需用到鏈表結構,正好公共庫有關於鏈表的。第一眼看時,覺得有點新鮮,和我之前見到的鏈表結構不一樣,只有前驅和后繼指針,而沒有數據域。后來看代碼注釋發現該代碼來自linux內核,在linux源代碼下include/Lish.h下。這個鏈表具備通用性,使用非常方便。只需要 ...
1、前言 最近寫代碼需用到鏈表結構,正好公共庫有關於鏈表的。第一眼看時,覺得有點新鮮,和我之前見到的鏈表結構不一樣,只有前驅和后繼指針,而沒有數據域。后來看代碼注釋發現該代碼來自linux內核,在linux源代碼下include/Lish.h下。這個鏈表具備通用性,使用非常方便 ...
1、前言 最近項目中用到一個環形緩沖區(ring buffer),代碼是由linux內核的kfifo改過來的。緩沖區在文件系統中經常用到,通過緩沖區緩解cpu讀寫內存和讀寫磁盤的速度。例如一個進程A產生數據發給另外一個進程B,進程B需要對進程A傳的數據進行處理並寫入文件,如果B沒有處理 ...
本篇簡單介紹內核相關的基本概念。 主要內容: 單內核和微內核 內核版本號 1. 單內核和微內核 原理 優勢 劣勢 單內核 整個內核都在一個大內核地址空間上運行 ...
在嘗試內核開發之前,需要對內核有個整體的了解。 主要內容: 獲取內核源碼 內核源碼的結構 編譯內核的方法 內核開發的特點 1. 獲取內核源碼 內核是開源的,所有獲取源碼特別方便,參照以下的網址,可以通過git或者直接下載壓縮好的源碼包。 http ...
內核調試的難點在於它不能像用戶態程序調試那樣打斷點,隨時暫停查看各個變量的狀態。 也不能像用戶態程序那樣崩潰后迅速的重啟,恢復初始狀態。 用戶態程序和內核交互,用戶態程序的各種狀態,錯誤等可以由內核來捕獲並顯示。 而內核是直接和硬件交互的,內核出錯之后整個系統就無法正常運行了,所以要想 ...
存在共享資源(共享一個文件,一塊內存等等)的時候,為了防止並發訪問時共享資源的數據不一致,引入了同步機制。 主要內容: 同步的概念 同步的方法-加鎖 死鎖 鎖的粒度 1. 同步的概念 了解同步之前,先了解另外2個概念: 臨界區 - 也稱為臨界段 ...
參考自:https://blog.csdn.net/zhanglei4214/article/details/6767288 一、hlist結構簡介 hlist_head 和 hlist_node 是位於linux內核中的數據結構,其設計初衷主要是為了減少Hash表的內存消耗 ...