看板 LinuxDev 關於我們 聯絡資訊
在 Understanding the Linux kernel 3rd, 章節 3.2.3.1 讀到 為了有效率的從 PID 找出 process descriptor,因而使用 hash table 將 32 bit 的 PID 排進 2048 個entry 的表格。 hash function 是: index = PID * 0x9e370001 >> 21 書中解釋 0x9e370001 是選擇接近 2^32 黃金分割的質數 --> 魔術常數 我對於 hash 及 linux kernel都只有初淺知識,所以不太了解: 為何不簡單的取 PID 的 LSB 11 bits當 index? 能指點其中原因嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.73.49.155 ※ 編輯: zstar 來自: 203.73.49.155 (01/22 13:09)
zwai:也許這樣hash table會比較均勻? 01/22 22:55
zstar:想了幾天後,我想,這個hash應該不是很critical的部分, 01/24 11:16
zstar:乘"魔術質數"可讓碰撞發生條件不規則一些,不用太深究~~ 01/24 11:20