深入理解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) !=  ) {
    ...
    }

缺点

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

goto语句

使用环境

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

捕捉bug

  • BUG_ON(): 参数为真时,打印错误消息,然后内核panic.
  • BUG_TRAP(): 参数为真时, 内核会打印出警告消息。
上一篇:深入理解linux网络技术内幕读书笔记(四)--通知链


下一篇:VisualStudio2010中创建ASP.Net WebService