zoukankan      html  css  js  c++  java
  • 深入理解linux网络技术-P179

    上锁

    net_device结构的组织一节可知,dev_base列表以及dev_name_head和dev_name_index两张hash表由dev_base_list锁保护。然而,该锁只用于对列表和hash表的访问予以串行化,而不是对net_device数据结构内容变更予以串行化。net_device内容的变更是由Routing Netlink信号量(rtnl_sem)负责;而此锁的取得和释放分别通过rtnl_lock和rtnl_unlock完成。此信号量可用于net_device实例的变更的串行化,而这些变更来自于:

    运行期间事件

      例如,当连接状态变更时(例如,网络电缆插入或者拔除时),内核也必须通过修改dev-flags改变设备状态。

    配置变更

      当用户应用来自net-tools套件的ifconfig和route命令,或者来自IPROUTE2套件的ip命令改变配置时,内核会通过ioctl命令和Netlink套接字的ip命令改变配置时,内核会通过ioctl命令和NetLink套接字接收到通知。由这些接口启用的函数都必须使用锁。

    net_device数据结构包括一些可用于上锁的字段

    ingress_lock

    queue_lock

      当处理入口和出口流量调度是,分别由流量控制使用。

    xmit_lock

    xmit_lock_owner

      用于同步设备驱动程序hard_start_xmit函数的访问。

  • 相关阅读:
    disconf使用小结
    关于spring aop Advisor排序问题
    关于tomcat WEB-INF/lib下类加载顺序
    Netty5客户端源码解析
    巧用命令行工具 redis-cli
    redis学习总结
    聊聊Redis的持久化
    Git管理代码
    RabbitMQ连接池、生产者、消费者实例
    java处理节假日和工作时间的工具类
  • 原文地址:https://www.cnblogs.com/flintlovesam/p/5118486.html
Copyright © 2011-2022 走看看