随笔分类 -  内核机制

Futex-3—Noraml Futex驱动分析
摘要:基于 Linux-5.15,下文中进程和线程同指向。 一、Noraml Futex驱动简介 futex驱动提供一种内核阻塞用户空间进程的机制。futex系统调用提供了三种配对的调用接口,满足不同使用场合的,分别为 noraml futex,pi-futex,requeue-pi。本文只讲解 fute 阅读全文

posted @ 2022-11-16 21:37 Hello-World3 阅读(622) 评论(0) 推荐(0) 编辑

Linux内核机制—percpu
摘要:一、per-cpu变量简介 在多处理器系统中,每处理器变量为每个cpu都生成一个变量的副本,每个处理器使用自己的副本,从而避免了处理器之间的互斥和同步,提高了程序的执行速度。每处理器变量分为静态per-cpu变量和动态per-cpu变量。 二、静态per-cpu变量 1. 静态per-cpu变量使用 阅读全文

posted @ 2022-07-23 21:00 Hello-World3 阅读(1313) 评论(0) 推荐(0) 编辑

Linux内核中各种鉴权
摘要:一、编译阶段 1. BUILD_BUG 系列 主要定义在 include/linux/build_bug.h 文件中,若编译期发现不合法就报错并中止编译。 (1) BUILD_BUG_ON(condition) #define BUILD_BUG_ON(condition) BUILD_BUG_ON 阅读全文

posted @ 2022-07-09 17:19 Hello-World3 阅读(936) 评论(0) 推荐(0) 编辑

Linux内核机制—spin_lock
摘要:一、spin_lock概述 1. spin lock 是一种不可休眠锁,可用于原子上下文。当获取不到锁的时候会spin等待,此时是running状态。 2. spin lock 的发展到现在经历了四个阶段 (1) CAS 锁只有一个原子变量,执行单个 compare-and-swap 指令来获取锁。 阅读全文

posted @ 2022-06-12 14:57 Hello-World3 阅读(954) 评论(0) 推荐(0) 编辑

Linux内核机制—percpu_rwsem
摘要:一、相关资料 1. kernel-5.10/Documentation/locking/percpu-rw-semaphore.rst percpu rw 信号量是一种新的读写信号量设计,针对读取锁定进行了优化。 传统的读写信号量的问题在于,当多个内核读取锁时,包含信号量的cache-line在内核 阅读全文

posted @ 2022-06-10 15:41 Hello-World3 阅读(996) 评论(0) 推荐(0) 编辑

Linux内核机制—semaphore
摘要:一、信号量相关结构 1. 信号量描述结构体 struct semaphore { /* 保护信号量的spinlock锁 */ raw_spinlock_t lock; /* * 对于二值信号量,为1表示没有任务在临界区,为0表示只有1个任 * 务在临界区,没有任务等待 在改信号量上,为-n表示有n个 阅读全文

posted @ 2022-05-22 20:10 Hello-World3 阅读(891) 评论(0) 推荐(0) 编辑

Linux内核机制—mutex
摘要:一、Mutex锁简介 1. mutex是具有严格语义的简单、直接的互斥锁: (1) 一次只能有一个任务持锁(2) 只有锁的持有者才能释放锁(3) 不允许多次释放锁(4) 不允许递归持锁(5) 必须通过 API 初始化锁(6) 不能通过 memset 或拷贝来初始化锁(7) 任务不应该在持锁的情况下退 阅读全文

posted @ 2022-05-09 23:23 Hello-World3 阅读(2537) 评论(1) 推荐(1) 编辑

导航