“你,听过双向链表吗?”
“恩恩,最简单的线性数据组织……”
“装逼,知道它的优缺点吗”
“恩恩,插入删除快速,遍历比较慢,而且……”
“行了,知道内核链表吗”
“恩恩,传统链表没有实现逻辑分离,因此操作接口……”
“喂!你真的是一个,应届生?”
“恩恩。”
“你,明天过来找人事部的张小姐签……”
“签你妹!每次打断我说话,滚!”
“……”一脸懵逼的面试官
废话少讲,传统链表如下:
特点:
节点既包含了后续节点的指针,也包含了前趋节点的指针,而且一般都设计成循环,这样就可以非常方便地从链表的任意一个位置开始遍历整个链表。
内核链表如下:
特点:
把传统链表中的“链”抽象出来,使之成为一条只包含前后指针的纯粹的双循环链表,这样的链表由于不含有特殊的数据,因此它实质上就是链表的抽象。最后将这样的标准链表镶嵌到具体节点里面。
内核链表通过将数据与逻辑分离,实现了统一管理Linux内核中成千上万种节点的操作,这种抽象方法在内核各个子系统中都有应用,比如设备模型管理,比如网络子系统等。