kernel
文章平均质量分 68
wax5798
此人很懒,是一条咸鱼无疑了
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux 系统调用简析
Release log:2021-06-02 三: 完成初版原文地址参考《庖丁解牛 Linux 内核分析》用户态、内核态和中断现代 CPU 一般都有几种不同的指令执行级别,在高的执行级别下,代码可以执行特权指令,访问任意的物理内存。Intel x86 CPU 有 4 种不同的执行级别,分别是 0、1、2、3,数字越小,权限越高。Linux 操作系统中只采用了其中的 0 和 3 两种特权级别,分别对应内核态和用户态。用户态和内核态很显著的区分方法就是 CS:EIP 的指向范围。在 32 位 x原创 2021-06-02 09:55:52 · 237 阅读 · 0 评论 -
并发与竞态——除了锁之外的办法
Release log:2021-05-30 日: 完成初版原文地址在某些情况下,原子的访问可以不需要完整的锁免锁算法经常用于免锁的生产者/消费者任务的数据结构之一是循环缓冲区。内核中有一个通用的循环缓冲区实现,参阅<linux/kfifo.h>原子变量如果共享的资源是一个简单的整数值,则可以使用原子变量 atomic_t一个 atomic_t 变量可以用来保存一个 int 值,但它不能记录大于 24 位的整数对应的函数// 初始化原子变量void atomic_se.原创 2021-05-30 17:37:25 · 295 阅读 · 0 评论 -
并发与竞态——completion
Release log:2021-05-10 一: 完成初版原文地址内核编程中常见的一种模式是,在当前线程之外初始化某个活动,然后等待该活动的结束。这个活动可能是,创建一个新的内核线程或者新的用户空间进程、对一个已有进程的某个请求,或者某种类型的硬件动作,等等。在这种情况下,我们可以使用信号量来同步这两个任务。然而,内核中提供了另外一种机制—— completion 接口。completion 是一种轻量级的机制,他允许一个线程告诉另一个线程某个工作已经完成。completion 的初始化为了原创 2021-05-10 21:26:13 · 280 阅读 · 0 评论 -
并发与竞态——自旋锁
Release log:2021-05-07 五: 完成初版2021-05-10 一: 添加自旋锁和信号量的对比原文地址Linux 内核中自旋锁的使用在 Linux 内核中,要使用自旋锁需要包含的文件 <linux/spinlock.h>,锁的数据类型为 spinlock_t。自旋锁的声明以及初始化void spin_lock_init(spinlock_t *lock);自旋锁的获取以及释放void spin_lock(spinlock_t *lock);void s原创 2021-05-10 20:54:52 · 224 阅读 · 0 评论 -
并发与竞态——信号量与互斥体
说明前一段时间学习了《LINUX 设备驱动程序》中的“并发与竞态”章节,没过多久在阅读代码时,看到了 spin_lock_bh 这个函数,然后一脸瞢逼,这个函数后缀有啥意义来着?所以决定对这一章节做一个简单整理,一是为了加深印象,二是为了后续的快速回顾以及查找未完待续。。。哈哈...原创 2021-04-24 22:02:22 · 207 阅读 · 0 评论
分享