以太网驱动的流程浅析(三)-ifconfig的-19错误最底层分析

作者:heaven 发布于:2019-12-27 15:22 分类:Linux内核分析

此文衔接上一节  以太网驱动的流程浅析(二)-Ifconfig的详细代码流程

阅读全文>>

评论(1) 浏览(13466)

以太网驱动的流程浅析(一)-Ifconfig主要流程

作者:heaven 发布于:2019-12-6 15:50 分类:Linux内核分析

以太网的知识非常多,我这里是工作中遇到了一个很奇怪的以太网问题,因此便通读了一遍以太网的加载流程,分享出来供大家阅读。如有不准确的地方还请指出,非常感谢

阅读全文>>

评论(11) 浏览(14326)

RCU(2)- 使用方法

作者:沙漠之狐 发布于:2019-5-24 19:36 分类:内核同步机制

本文介绍RCU的使用方法。

阅读全文>>

标签: 无锁编程

评论(1) 浏览(18343)

RCU(1)- 概述

作者:沙漠之狐 发布于:2019-5-24 19:30 分类:内核同步机制

本文介绍RCU。

阅读全文>>

标签: 无锁编程

评论(0) 浏览(14565)

Linux内核的自旋锁

作者:沙漠之狐 发布于:2019-5-17 19:11 分类:内核同步机制

自旋锁用于处理器之间的互斥,适合保护很短的临界区,并且不允许在临界区睡眠。申请自旋锁的时候,如果自旋锁被其他处理器占有,本处理器自旋等待(也称为忙等待)。

进程、软中断和硬中断都可以使用自旋锁。

自旋锁的实现经历了3个阶段:

(1)     最早的自旋锁是无序竞争的,不保证先申请的进程先获得锁。

(2)     2个阶段是入场券自旋锁,进程按照申请锁的顺序排队,先申请的进程先获得锁。

(3)     3个阶段是MCS自旋锁。入场券自旋锁存在性能问题:所有申请锁的处理器在同一个变量上自旋等待,缓存同步的开销大,不适合处理器很多的系统。MCS自旋锁的策略是为每个处理器创建一个变量副本,每个处理器在自己的本地变量上自旋等待,解决了性能问题。

阅读全文>>

标签: Linux 自旋锁

评论(13) 浏览(22420)

浅谈Cache Memory

作者:smcdef 发布于:2019-5-2 21:14 分类:内存管理

今天探究的主题是cache。我们围绕几个问题展开。为什么需要cache?如何判断一个数据在cache中是否命中?cache的种类有哪些,区别是什么?

阅读全文>>

评论(53) 浏览(48816)

内存一致性模型

作者:passerby 发布于:2019-3-24 14:22 分类:内存管理

早期的CPU是通过提高主频来提升CPU的性能,但是随着频率“红利”越来越困难的情况下,厂商开始用多核来提高CPU的计算能力。多核是指一个CPU里有多个核心,在同一时间一个CPU能够同时运行多个线程,通过这样提高CPU的并发能力。

 内存一致性模型(memory consistency model)就是用来描述多线程对共享存储器的访问行为,在不同的内存一致性模型里,多线程对共享存储器的访问行为有非常大的差别。这些差别会严重影响程序的执行逻辑,甚至会造成软件逻辑问题。在后面的介绍中,我们将分析不同的一致性模型里,多线程的内存访问乱序问题。

阅读全文>>

标签: 内存一致性模型

评论(12) 浏览(20846)

copy_{to,from}_user()的思考

作者:smcdef 发布于:2019-1-27 19:03 分类:内存管理

我们对copy_{to,from}_user()接口的使用应该是再熟悉不过吧。基本Linux书籍都会介绍它的作用。毕竟它是kernel space和user space沟通的桥梁。所有的数据交互都应该使用类似这种接口。所以,今天我们一起探究下copy_{to,from}_user()接口的作用。通过本文可以解答以下问题。

  1. 为什么需要copy_{to,from}_user(),它究竟在背后为我们做了什么?
  2. copy_{to,from}_user()和memcpy()的区别是什么,直接使用memcpy()可以吗?
  3. memcpy()替代copy_{to,from}_user()是不是一定会有问题?

阅读全文>>

标签: copy_to_user

评论(15) 浏览(21554)

编译乱序(Compiler Reordering)

作者:smcdef 发布于:2019-1-23 22:59 分类:内核同步机制

编译乱序(Compiler Reordering)

编译器(compiler)的工作就是优化我们的代码以提高性能。这包括在不改变程序行为的情况下重新排列指令。因为compiler不知道什么样的代码需要线程安全(thread-safe),所以compiler假设我们的代码都是单线程执行(single-threaded),并且进行指令重排优化并保证是单线程安全的。因此,当你不需要compiler重新排序指令的时候,你需要显式告诉compiler,我不需要重排。否则,它可不会听你的。本篇文章中,我们一起探究compiler关于指令重排的优化规则。

阅读全文>>

标签: barrier

评论(14) 浏览(15906)

CFS调度器(6)-总结

作者:smcdef 发布于:2019-1-1 12:37 分类:进程管理

CFS调度器-总结

经过前面一系列的文章描述,我们已经对CFS调度器有了一定的认识。那么本篇文章就作为一篇总结和思考。我们就回忆一下CFS调度器的那些事。我们就以问题的形式重新回顾一遍CFS调度器设计的原理。现在开始,我们问题来了。


阅读全文>>

标签: CFS

评论(7) 浏览(14848)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog