深入理解linux网络技术内幕读书笔记(一)--简介

基本术语

  • 八个位的量通常称为八位组(octet), 本书使用最常见的术语字节(byte).
  • 术语向量(vector)和数组(array)是交互替换使用的。
  • 在上下文中, 术语“入口数据(ingress)"和”输入数据(input)“会交互使用,
    “出口数据(egress)"和”输出数据(output)“也一样。

本书常用的缩写

表1-1 本书常用的缩写
缩写意义
L2链路层(如ethernet)
L3网络层(如ip)
L4传输层(如tcp/udp/icmp)
BH下半部(Bottom Half)
IRQ中断(事件)
RX接收
TX发送


引用计数

引用计数函数

  • 递增函数: xxx_hold()
  • 递减函数: xxx_release()
    有时候,释放函数被称为xxx_put(),例如net_device结构的释放函数为dev_put().


垃圾回收

内核不用虚拟内存,直接使用物理内存。

异步

定时扫描,把那些可以释放的数据结构释放掉。
常见的准则:释放引用计数为0或null的数据结构。

同步

当内存不足的情况下,直接触发垃圾回收,不用等待同步机制。


函数指针

  • 执行一个函数指针之前,必须先检查其值。避免使用为null的函数指针。


    if (dev->init && dev->init(dev) != 0 ) {
        ...
    }
    


缺点

缺点:使阅读代码稍显困难。


goto语句

使用环境

  • 用于处理函数内的不同返回代码。
  • 用于跳出一层以上的循环嵌套。


捕捉bug

  • BUG_ON(): 参数为真时,打印错误消息,然后内核panic.
  • BUG_TRAP(): 参数为真时, 内核会打印出警告消息。



posted @ 2014-02-15 23:14  mospan  阅读(3042)  评论(0编辑  收藏  举报