linux 3 10 Pid hash 鍊錶

2021-09-27 21:21:11 字數 829 閱讀 4527

pid,即process id,程序id。

核心在初始化的時候有乙個函式為pidhash_init,這個函式要做什麼呢?

我們都知道,我們可能在很多情況下,都想知道程序的一些狀態,在這種情況,核心必須能夠從程序的pid匯出對應的程序描述符指標,這樣我們才能獲取我們想要的程序資訊!

程序有自己單獨的鍊錶叫程序鍊錶,其原理是乙個雙向鍊錶!但是如果查詢的時候用雙向鍊錶的話,效率比較低,所以使用pidhash雜湊表提高查詢效率!

start_kernel

-------------->pidhash_init

看看pidhash_init 的原始碼:

void __init pidhash_init(void)

hash表的問題之一會產生hash衝突,核心中使用鍊錶來處理衝突的pid,每乙個表項是由衝突的程序描述符的程序描述組成的雙向鍊錶。但同時也規定最大的pid數量,即核心不能無限制的來建立程序。

start_kernel

------------->pidmap_init

看一下pidmap_init函式:

void __init pidmap_init(void)

pid_max: default: 32768 minimum: 301

上述**的意思利用kzalloc函式為程序位圖提供乙個物理上的頁框,並且此頁框被實現初始化為0,這樣,乙個大小為4k的物理頁框,可以表示的程序號個數為=4*1024*8=32768.但是由於程序號0的特殊性,我們事先將其設定為不可用,也就是將位圖的0號位設定為1,並把相應表示目前可用的pid號再-1.

編譯Linux 3 10核心

2.解壓到本地 home zombie file linux 3.10.105 4.將 home zombie file linux 3.10.105 makefile 檔案中arch 和 cross compile值進行修改 如果編譯x86平台的應該可以不用設定,本人編譯的是arm的 原始內容如下...

3 10Linux檔案基本操作管理

複製檔案 目錄 cp 原始檔 資料夾 目標檔案 資料夾 常用引數 r 遞迴複製整個目錄樹 v 顯示詳細資訊 移動 重新命名檔案或目錄 通過mv命令移動或者重新命名檔案或目錄 mv 檔案 目標目錄 如果指定檔名,則可以重新命名檔案 建立 刪除檔案 通過touch命令可以建立乙個空檔案或 更新檔案時間 ...

基於linux 3 10的yaffs2移植

git clone git cd yaffs2 patch ker.sh c m linux3.10 mini24402.然後在linux的源 fs中多了乙個yaffs2的資料夾,到此yaffs2檔案系統就已經新增到linux3.10中了。在linux核心源 根目錄執行 make menuconfi...