Linux
gangjianh
这个作者很懒,什么都没留下…
展开
-
Linux协议栈学习与积累
linux内核对于套接字的管理会用到锁,linux使用如下两个接口进行加解锁lock_sock,release_sock。但是这两个函数不仅仅是完成了加解锁的操作。 lock_sock: 首先尝试拿到获取锁的资格,这个资格由一个变量记录sk->sk_lock.owned,这个变量用spin_lock保护。这个这个变量值不为0,则说明有其它上下文占用了这个锁,则进一步的会将当前进程挂到一个等待队列中,然后主动调度CPU,等待唤醒。被唤醒之后,将sk->sk_lock.owned赋值,然后去执.原创 2020-05-12 22:46:06 · 185 阅读 · 0 评论 -
Linux Fib实现分析
linux内核早先对于ipv4的fib支持Hash与trie两种数据组织方式,后续删除了hash,只留下了trie。 trie是一种最长前缀匹配算法,对于大量路由的情况下查找效率高于hash,但是这种算法会消耗更多的内存、算法更加复杂。 图1 原始数据 图2 trie 将图1中的数据用trie表示那么就可以得到图2的模型。那么是怎么画出这幅图的呢?实际上就是从根节点触发,往左子树走一步则增加一个...原创 2019-12-17 23:05:47 · 1376 阅读 · 0 评论