哈希表的构造方法
1.直接定址法
2.数字分析法
3.折叠法
4.除留余数法
哈希表的处理冲突方法
1.开放定址法
2.再哈希法
3.链地址法
4.建立一个公共溢出区
公共溢出区是指另外设立存储空间来处理哈希冲突。假设哈希函数的值域为[0,m-1],则设向量HashTable[0, m-1]为基本表,另外设立存储空间向量OverTable[0, v]用以存储发生冲突的记录。
ARM Linux中哈希表使用实例
在Linux内核中,需要从进程PID推导出对应的进程描述符指针。为了加快查找,ARM Linux引入了pidhash哈希表来进行快速定位。
根据所请求的PID类型的不同,在Linux内核中,一共有4种哈希表。
在Linux中采用链地址法来处理哈希冲突,每一个表项是由冲突的进程描述符组成的双向链表。
在Linux中,attach_pid函数用于将进程的PID号插入到对应的哈希表中,若出现冲突,则再调用hlist_add_head函数,如下所示:
hlist_add_head函数代码如下所示
Linux中所使用的哈希函数是pid_hashfn,如下所示: