今天我看了一个守护进程的man手册,加深了我对linux的理解,这个守护进程就是netplugd,它主要就是检测网络接口的状态,一旦一个网卡接口接通了,那么就会调用ifup,相反down掉了就会调用ifdown,这里涉及两个问题,第一,用户守护进程netplugd怎么检测到网络接口的状态;第二,用户进程netplug怎么知道检测到接口变化以后要怎么做。对于第一个问题,答案就是netlink套接字,内核肯定知道网络接口的实时状态,一旦知道了状态就会用netlink通知用户空间的netplugd守护进程,内核只管通知,而根本不管用户守护进程会怎么做,从而我们知道内核提供机制,而用户守护进程提供策略,对于第二个问题,答案就是配置文件,当守护进程netplugd接收到netlink的信息后,自己只管接收到而不管具体怎么做,它只是内核机制和真正策略的二传手,真正的策略需要配置文件来定义,它实际上调用了/etc/netplug.d/netplug脚本来执行策略,这里我们知道netplugd守护进程提供机制,而脚本配置文件提供策略。从而我总结出,在linux中,一般的内核机制都会存在一个用户进程,而一个用户进程一般都会有一个配置文件,分层次地体现机制和策略的思想,用户进程作为内核机制的策略和用户配置的机制相当于一个二传手存在。

接下来的第二个收获就是海森堡式错误,这是在内核邮件列表中的一个朋友的回复中学到的,有位朋友问wake_up和printk有什么关系?为什么他调用printk就可以正常执行,而不调用printk内核线程就会锁在那里,我感觉他肯定是在写代码时造成了终端的竞争,因为printk可能要用到终端打印,但是我还是感觉这二者不应该有什么实质性的关系的,后来另一位朋友发言了,这个论点十分精辟,他的回答如下:“海森堡形bug, 来自海森堡测不准原理 当你测试的时候就没有发生相应的bug。因为测试的代码带来一些时间的消耗, 内存/cache的副作用...等待 导致结果正确。50%是跟臆断代码执行的先后关系有关. printk() 仅仅是消耗了一些时间,

使得异步执行的语句的顺序跟你原来编码时臆想的一样, 结果就正确了.”有了这个回答的原文,我就不多说什么了,呵呵,很有趣的。

本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1273952

今天的两个收获--linux的特性和海森堡式错误相关推荐

  1. Linux SVA特性分析

    Linux SVA特性分析 -v0.1 2019.9.15 Sherlock init -v0.2 2019.9.18 Sherlock update数据结构和动态分析 -v0.3 2019.10.1 ...

  2. 【Linux 内核】Linux 内核特性 ( 组织形式 | 进程调度 | 内核线程 | 多平台虚拟内存管理 | 虚拟文件系统 | 内核模块机制 | 定制系统调用 | 网络模块架构 )

    文章目录 一.Linux 内核特性 1.Linux 内核组织形式 2.Linux 进程调度 3.Linux 内核线程 4.Linux 内核多平台虚拟内存管理 5.Linux 虚拟文件系统 6.Linu ...

  3. C++ Primer 5th笔记(chap 19 特殊工具与技术)两种不可移植的特性之“位域”

    两种不可移植的特性: 位域和 volatile 1. 位域 ( bit-field ) 类可以将其( 非静态) 数据成员定义成位域 , 在一个位域中含有一定数量的二进制位. 位域的类型必须是整型或枚举 ...

  4. linux ubuntu fadora,两大主流Linux版本Ubuntu 18.04和Fedora 28的对比

    以下为你带来当前两大主流Linux版本Ubuntu 18.04和Fedora 28它们之间的对比,这两个版本都有自身独自的的包管理,Ubuntu使用的是DEB,而Fedora使用RPM,不过它们都共同 ...

  5. 两款【linux字符界面下】显示【菜单】,【选项】的powershell脚本模块介绍

    两款[linux字符界面下]显示[菜单],[选项]的powershell脚本模块介绍 powershell linux  ps1 menu choice Multiselect 传教士 菜单 powe ...

  6. clear linux安装教程,Clear Linux OS特性介绍,附下载地址

    Clear Linux OS是一个开源的滚动发布Linux发行版,针对性能和安全性进行了优化,专为定制和可管理性而设计,提供有Clear Linux* OS Desktop/Server版本下载. C ...

  7. GitHub 超全机器学习工程师成长路线图,开源两日收获3700+Star!

    作者 | 琥珀 出品 | AI科技大本营(ID:rgznai100) 近日,一个在 GitHub 上开源即收获了 3700+ Star 的项目,引起了业界的注意.据介绍,该项目以 TensorFlow ...

  8. Linux系统如何解决Navicat for MySQL 1045错误

    Linux系统如何解决Navicat for MySQL 1045错误 使用环境: Windows下使用navicat连接VMware下的Ubuntu虚拟机的MySQL. 发现在连接的时候出现1045 ...

  9. [C++]Linux之Ubuntu下编译C程序出现错误:“ stray ‘\302‘或者‘\240‘ in program”的解决方案

    [C++]Linux之Ubuntu下编译C程序出现错误:" stray '\302'或者'\240' in program"的解决方案 参考文章: (1)[C++]Linux之Ub ...

  10. Linux下安装Nginx完整教程及常见错误解决方案

    Linux下安装Nginx完整教程及常见错误解决方案 参考文章: (1)Linux下安装Nginx完整教程及常见错误解决方案 (2)https://www.cnblogs.com/chenxiaoch ...

最新文章

  1. Windows10快捷应用指令
  2. error: Upgrade DB using Essex release first.
  3. Java:main()函数调用类中方法的限制
  4. python 格式化工具_小而美的 Python 格式化工具--black
  5. Android开发笔记(二)
  6. #pragma once 和 #ifndef ... #define ... #endif 的区别
  7. 格式化 SQL 来提高效率
  8. FreeMarker语言【页面静态】
  9. [转载] python.day02笔记
  10. Linux下Socket编程的端口问题( Bind error: Address already in use )
  11. 【原】SDWebImage源码阅读(一)
  12. triz矛盾矩阵_怎样利用项目TRIZ矛盾定义法,突破产品“创
  13. Unity 3D DevLog-WebGL
  14. Android作业四
  15. 图像3尺度全小波包分解matlab,小波包分解
  16. 怎么完全卸载赛门铁克_如何无密码卸载Symantec杀毒软件
  17. SpringBoot上传文件到服务器
  18. Via板载声卡底噪严重、播放卡顿及耳机与扬声器音源切换问题【解决方法】
  19. js初级动态随机抽人事件运用 计时器和超时期应用 解决用on事件onclick多次点击不能停止的问题
  20. 梅科尔工作室-梁嘉莹-鸿蒙笔记2

热门文章

  1. Android事件分发机制综述
  2. 阿里云上构建php mysql_手把手教你如何在阿里云服务器上搭建PHP环境?
  3. cocos creator--DragonBones 骨骼动画入门
  4. Python open和with open的区别
  5. 计算机添加启动程序,电脑如何设置开机启动项
  6. 公众号引流怎么做?怎么样给公众号引流?公众号前期如何涨粉?
  7. unipus iTEST考试助手---写脚本与反脚本的拉锯战
  8. 速成应用免费教你如何制作开发预约类型的美容美发行业微信小程序「教程」
  9. npm install 停在下载某个包的地方不动
  10. 解决Windows照片查看器加载慢和颜色问题